Conectarea unor dispozitive antiefracție la platforma OpenHab

Utilizând o instalare standard a platformei OpenHab vom adăuga sistemului de tip Home Automation o serie de dispozitive antiefracție îmbogățind astfel funcționalitatea sistemului. Cele mai simple și ieftine dispozitive de securitate sunt furnizate de sistemele de alarmă fără fir domestice: senzor de deschidere a ușii, senzor de mișcare (PIR), senzor de vibrație pentru protecția ferestrelor, senzor de fum sau chiar de inundație. Avantajul acestor dispozitive este costul scăzut, disponibilitatea de a fi achiziționate separat de un sistem de securitate complet (ca piese de schimb sau componente de extindere a sistemelor de securitate existente) și de ce nu, avantajul unor dispozitive gata realizate și ușor de integrat într-un sistem personalizat propriu.

1

Un material interesant despre integrarea acestui tip de dispozitive în cadrul unei sistem de alarmă bazat pe platforma Arduino este proiectul Home Watch din cadrul cărții ”10(zece) proiecte cu Arduino”:

https://books.google.ro/books?id=aMB8BgAAQBAJ

Dispozitivele de securitate de acest tip funcționează pe baza comunicației radio în bandă ISM de 433MHz modulație ASK și pot fi ”interceptate” utilizând un receptor radio foarte ieftin și ușor de utilizat atât în combinație cu platforma Arduino cât și cu placa de dezvoltare Raspberry Pi:

2

https://www.robofun.ro/wireless/wireless-433/receptor_radio

 Conectarea receptorului radio la placa de dezvoltarea Raspberry Pi necesită realizarea a trei conexiuni:

  • Pinul de GND al modulului radio la pinul 6 (GND) al plăcii Raspberry Pi;
  • Pinul Data al modului radio la pinul 11 al plăcii Raspberry Pi;
  • Pinul Vcc al modului radio la pinul 2 (5V) al plăcii Raspberry Pi. 3

 

Pentru mai multe detalii legate de conectarea modului radio la placa Raspberry Pi se pot consulta și următoarele resurse on-line:

pi-switch: Send and receive 433MHZ signals with a Raspberry Pi

http://lexruee.ch/2015/07/31/pi-switch:-Send-and-receive-433MHZ-signals-with-a-Raspberry-Pi.html

Decode 433 MHz signals w/ Raspberry Pi & 433 MHz Receiver

http://www.princetronics.com/how-to-read-433-mhz-codes-w-raspberry-pi-433-mhz-receiver/

 

Pentru implementarea comunicației între modulul radio și placa de dezvoltare Raspberry Pi vom instala suita de utilitare 433Utils bazată pe biblioteca rc-switch. Pentru acest lucru vom rula următoarele comenzi (se presupune că avem instalat utilitarul git, dacă nu vom rula și instrucțiunea sudo apt-get install git-core):

cd /opt

sudo git clone –recursive git://github.com/ninjablocks/433Utils.git

cd 433Utils/RPi_utils/

sudo make

sudo ./RFSniffer

Rularea utilitarului RFSniffer ne va permite să vizualizăm codurile transmise de dispozitivele antiefracție cu care dorim să lucrăm:

4

Pentru a putea face legătura între utilitarul RFSniffer (între codurile radio transmise de dispozitivele de securitate) și platforma OpenHab trebuie să transformăm utilitarul într-un serviciu al sistemului de operare – să-l facem să pornească odată cu sistemul și să ruleze în fundal în mod continuu.

Primul pas este modificarea codului sursă al utilitarului (RFSniffer.cpp) după cum urmează:

linia 20:

printf(“Received %i\n”, mySwitch.getReceivedValue() );

se va modifica în

printf(“%i\n”, mySwitch.getReceivedValue() );

iar înainte de linia 28 (instrucțiunea mySwitch.resetAvailable();) vom insera instrucțiunea:

fflush(stdout);

La final vom recompila utilitarul cu ajutorul comenzii make prezentă în succesiunea de comenzi anterioară apoi vom crea un director în care vom muta utilitarul RFSniffer și vom crea scripturile de legătură cu platforma OpenHab.

cd /opt

sudo mkdir 433

sudo cp /opt/433Utils/RPi_utils/RFSniffer /opt/433

sudo chmod -R 755 433

Pentru a porni în mod automat vom crea în directorul /etc/init.d/ fișierul RFSniffer cu următorul conținut:

#! /bin/sh

# /etc/init.d/RFSniffer

 

### BEGIN INIT INFO

# Provides:     RFSniffer

# Required-Start: $all

# Required-Stop:  $all

# Default-Start: 2 3 4 5

# Default-Stop: 0 1 6

# Short-Description: RFSniffer log

# Description:  RFSniffer log

### END INIT INFO

 

case “$1” in

    start)

        echo “Starting RFSniffer”

        /opt/433/RFSniffer > /opt/433/sniff.txt &

        ;;

    stop)

        echo “Stopping RFSniffer”

        killall RFSniffer

        ;;

    *)

        echo “Usage: /etc/init.d/RFSniffer  {start|stop}”

        exit 1

        ;;

esac

și vom integra acest script în sistemul de inițializare a sistemului de operare:

sudo chmod 755 /etc/init.d/RFSniffer

sudo update-rc.d RFSniffer defaults

Acum, la repornirea sistemului, utilitarul RFSniffer va rula în fundal în mod automat și va trimite toate codurile radio primite în fișierul /opt/433/sniff.txt .

Pentru exemplificare vom integra cu platforma OpenHab doi senzori de ușă. Un astfel de senzor, bazat pe un red-switch – un întrerupător de proximitate, emite un anumit cod radio în poziția deschis semnalizând astfel deschidere ușii pe care a fost montat.

5

Vom utiliza doi senzori pentru a prinde atât poziția de deschis cât și cea de închis – ușa închisă va declanșa un senzor iar ușa deschisă va declanșa celălalt senzor. Cu alte cuvinte vom avea două coduri radio pe care le vom interpreta în platforma OpenHab.

Pentru a face acest lucru vom crea fișierul sniff în directorul /opt/433/ cu următorul conținut:

aux=$(tail -n 1 /opt/433/sniff.txt);

if [ $aux == “6049804” ]; then

    echo “OPEN”;

elif [ $aux == “6049984” ]; then

    echo “CLOSE”;

fi

Acest fișier script are rolul de a transforma codurile numerice (6049804 – codul transmis de senzorul ce indică ușă deschisă, 6049984 – senzorul ce indică ușă închisă) în cuvintele cheie OPEN și CLOSE. Acest script va fi apelat de fișierele de configurare ale platformei OpenHab. Astfel în fișierul /etc/openhab/configurations/items/casamea.items vom adăuga următoarea linie:

String    USA       “Usa intrare [%s]” 

{exec=”<[/bin/bash@@-c@@/opt/433/sniff:3000:REGEX((.*?))]”}

iar în fișierul /etc/openhab/configurations/sitemaps/casamea.sitemap :

Frame label=”Securitate” {

                Text item=USA icon=”door-closed”

        }

Pentru ca apelul scriptului extern să funcționeze este necesară instalarea componentei suplimentare binding-exec specifică platformei OpenHab:

sudo apt-get install openhab-addon-binding-exec

La accesarea interfeței OpenHab noul element (USA) se va regăsi sub forma următoare:

6

7

După același principiu se pot integra și alte tipuri de senzori specifici sistemelor de alarmă domestice ce funcționează în bandă radio ISM.

Bineînțeles, posibilitățile funcționale ale platformei OpenHab nu se limitează la această simplă aplicație dar sperăm că prezentarea acestui exemplu să trezească interesul pentru această platformă extrem de puternică. Câteva exemple de alte proiecte ce utilizează platforma OpenHab:

Building a Home Automation System with OpenHAB to Control LEDs Wirelessly

http://makezine.com/projects/building-a-home-automation-system-with-openhab-to-control-leds-wirelessly/

$20 Wireless Arduino Home Automation w/ OpenHAB

https://hackaday.io/project/1720-20-wireless-arduino-home-automation-w-openhab

Home automation using RF mesh network and arduino

https://hackaday.io/project/5691-home-automation-using-rf-mesh-network-and-arduino

Arduino openHAB Garage Door Control

https://hackaday.io/project/4027-arduino-openhab-garage-door-control

Hacking the Wink Hub to be more user-friendly for use with OpenHab and other home automation stacks

https://hackaday.io/project/4368-winkhub-integration

MQTT WiFi controlled mains halogen dimmer

https://hackaday.io/project/9093-mqtt-wifi-controlled-mains-halogen-dimmer

My openHAB Raspberry Pi Arduino XBee Led Zeppelin

https://hackaday.io/project/8487-my-openhab-raspberry-pi-arduino-xbee-led-zeppelin

A story of home automation with openHAB, Z-Wave, and MQTT

http://jpmens.net/2014/01/14/a-story-of-home-automation/

5 Open Source Home Automation Projects We Love

https://www.fastcompany.com/3038442/elasticity/5-open-source-home-automation-projects-we-love

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out / Change )

Twitter picture

You are commenting using your Twitter account. Log Out / Change )

Facebook photo

You are commenting using your Facebook account. Log Out / Change )

Google+ photo

You are commenting using your Google+ account. Log Out / Change )

Connecting to %s