Opisywałem już projekt Supla Virtual Device kolegi Łukasza (nick na forum Supla: Beku) używany przeze mnie do odczytów temperatury i wilgotności z kilku czujników (zobacz tutu). Łukasz jest również autorem innego ciekawego projektu: Supla Pushover. Program ten ma za zadanie wysyłać wiadomości Push na nasz smartfon, informujące o różnych zdarzeniach na czujnikach i urządzeniach wykonawczych zarejestrowanych na naszym koncie Supla Cloud. Program ten, podobnie jak Supla Virtual Device uruchomiony jest na Raspberry Pi Zero W (oczywiście tym samym). Osoby zainteresowane wszystkimi funkcjonalnościami Supla Pushover odsyłam na GitHub Łukasza. Ja opisuję instalację i konfigurację tego programu oraz niezbędną elektronikę do realizacji powiadomień o nowej korespondencji włożonej do naszej tradycyjnej skrzynki pocztowej.

Supla (Cloud oraz aplikacja) nie wspiera jeszcze powiadomień Push (stan na dzień pisania tego artykułu). Należy więc posiłkować się innymi rozwiązaniami. Jednym z wielu jest system Pushover (https://pushover.net). Zaczniemy więc od założenia bezpłatnego konta w tym systemie (jeśli jeszcze nie posiadamy), niezbędnej konfiguracji na koncie oraz zapisania niezbędnych danych potrzebnych do dalszej konfiguracji skryptu Supla Pushover. Temat jest na tyle prosty, że przedstawię go w formie „obrazkowej”. Oczywiście musimy również pobrać i zainstalować aplikację Pushover na naszym smartfonie i połączyć ją z założonym wcześniej kontem.

 

INSTALACJA I KONFIGURACJA Supla Pushover

Logujemy się na nasze Raspberry Pi Zero W i wykonujemy polecenia:

sudo apt-get update
git clone https://github.com/lukbek/supla-pushover.git
cd supla-pushover
./install.sh

W następnym kroku edytujemy plik konfiguracyjny programu poleceniem:

nano supla-pushover-config.yaml

Zawartość pliku:

supla:
  port: 2016
  host: 'srvX.supla.org'
  email: 'XXXXXXXX'
  protocol_version: 10

pushover:
  user: 'XXXXXXXX'
  token: 'XXXXXXXX'

notifications:
  - trigger: 'onchange'
    condition: '%channel_1% == 1'
    message: 'Masz nową korespondencję w skrzynce pocztowej!'

gdzie:
host – adres serwera, na którym mamy założone konto Supla Cloud,
email – adres e-mail, na którym mamy założone konto Supla Cloud,
user – zapisany przy konfiguracji konta Pushover nasz User Key,
token – zapisany przy konfiguracji nowej aplikacji na koncie Pushover nasz API Token,
channel_1 – w miejsce 1 wpisujemy numer kanału w Supla Cloud, dla którego chcemy sprawdzać warunki oraz wysyłać powiadomienia (na razie pozostawmy 1).

Program Supla Pushover jest wirtualnym smartfonem na naszym koncie Supla Cloud, dlatego też musimy przed uruchomieniem programu włączyć rejestrację nowych klientów w zakładce Smartfony w Supla Cloud. Możemy od razu skonfigurować działający na naszym RPi Zero W program Supervisor, aby Supla Pushover uruchamiał się automatycznie.

sudo nano /etc/supervisor/conf.d/supla-pushover.conf
[program:supla-pushover]
command=/home/pi/supla-pushover/supla-pushover
directory=/home/pi/supla-pushover
autostart=true
autorestart=true
user=pi
sudo service supervisor restart

Po restarcie na naszym koncie Supla Cloud w zakładce Smartfony powinno pojawić się urządzenie Supla pushover. Możemy w tym kroku wyłączyć aktywną rejestrację nowych smartfonów.

 

SKRZYNKA POCZTOWA – ELEKTRONIKA I OPROGRAMOWANIE

Ze względu na odległość skrzynki pocztowej od mieszkania zastosowanie komunikacji Wi-Fi nie było u mnie możliwe. Przez pewien czas testowałem Moteino z radiem RFM69 na częstotliwości 868 MHz. Niestety moja skrzynka pocztowa umieszczona jest w tzw. wiatrołapie, który to jest oddzielony od klatki schodowej solidnymi, metalowymi drzwiami. Drzwi te na ogół są otwarte, jednak zdarza się – przede wszystkim w okresie zimowym – że któryś z mieszkańców zamknie te drzwi. Ich zamknięcie powoduje znaczne ograniczenie zasięgu radiowego. Tak więc i to rozwiązanie nie zdało u mnie egzaminu.
Zastosowałem więc ciekawe urządzenia radiowe pracujące na częstotliwości 433 MHz ze zmiennym kodowaniem, produkcji polskiej firmy GORKE Electronic z Pszczyny. Dwukanałowy nadajnik NRP-102W umieszczony w skrzynce pocztowej został pozbawiony regulatora napięcia zasilającego. Elektronika NRP-102W potrzebuje do poprawnej pracy napięcia 3.8V. Pominięcie układu regulatora z 12V na 3.8V pozwoliło na zastosowanie zasilania w postaci jednego akumulatora 18650. Nadajnik NRP-102W ma jeszcze jedną ciekawą cechę doskonale sprawdzającą się w tym zastosowaniu. Wyzwolenie transmisji następuje po rozwarciu (przerwaniu obwodu) wejścia danego kanału. Ta cecha nadajnika pozwala zastosować jako czujniki dostarczenia i odebrania korespondencji pocztowej standardowe kontaktrony używane w systemach alarmowych.
Druga strona „radiolinii” to dwukanałowy odbiornik radiowy tej samej firmy, model RSU-K02 H2. Część zasilająca odbiornika radiowego także została przerobiona poprzez usunięcie regulatora napięcia 12V na 5V, więc odbiornik jest zasilany z tego samego zasilacza co Raspberry Pi Zero W. W odbiorniku zostały usunięte również dwa przekaźniki wyjściowe. Sygnały sterujące przekaźnikami zostały podłączone do dwóch GPIO w RPi.

Obsługę sprawdzania stanu wejść GPIO oraz opcjonalnej diody LED sygnalizującej stan skrzynki pocztowej zrealizowałem w języku Python.

cd
mkdir supla-mailbox
cd supla-mailbox
nano mailbox.txt (zawartość pliku to cyfra 0 w pierwszym wierszu)
nano mailbox.py

Zawartość skryptu mailbox.py:

import RPi.GPIO as GPIO
from time import sleep

GPIO.setmode(GPIO.BCM)
GPIO.setup(12, GPIO.OUT) #Do GPIO12 można opcjonalnie podłączyć diodę LED (z rezystorem) sygnalizującą obecność korespondencji w skrzynce pocztowej
GPIO.setup(5, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Pierwszy kanał z odbiornika radiowego - sygnalizacja o włożeniu korespondencji do skrzynki
GPIO.setup(6, GPIO.IN, pull_up_down=GPIO.PUD_UP) #Drugi kanał z odbiornika radiowego - kasowanie statusu obecności korespondencji w skrzynce pocztowej

try:
    while True:
        sleep(0.1)
        State1 = GPIO.input(5)
        State2 = GPIO.input(6)
        if State1 == 0:
            GPIO.output(12,GPIO.HIGH)
            f = open("sensor_0.txt")
            if f.read() == "0":
                f = open("mailbox.txt", "w")
                f.write("1")
                f.close()
        if State2 == 0:
            GPIO.output(12,GPIO.LOW)
            f = open("mailbox.txt")
            if f.read() == "1":
                f = open("mailbox.txt", "w")
                f.write("0")
                f.close()

except KeyboardInterrupt:
    GPIO.output(12, GPIO.LOW)
    GPIO.cleanup();
    f = open("mailbox.txt", "w")
    f.write("0")
    f.close()

Dodanie automatycznego uruchamiania skryptu:

cd
sudo nano /etc/supervisor/conf.d/supla-mailbox.conf

Zawartość:

[program:supla-mailbox]
command=python3 ./mailbox.py
directory=/home/pi/supla-mailbox
autostart=true
autorestart=true
user=pi

Restart Supervisor’a:

sudo service supervisor restart

Zasada działania całości jest bardzo prosta. Wyzwolenie pierwszego kanału w nadajniku (kontaktron podniesienia klapki celem włożenia korespondencji do skrzynki) powoduje chwilową zmianę stanu logicznego na GPIO5 na 0. Zapala się dioda świecąca, a do pliku mailbox.txt zapisywana jest wartość 1. Wyzwolenie kanału drugiego w nadajniku (kontaktron otwarcia drzwiczek skrzynki w celu wyciągnięcia korespondencji) powoduje chwilową zmianę stanu logicznego na GPIO6 na 0. Dioda LED gaśnie, a do pliku mailbox.txt zapisywana jest wartość 0. Plik tekstowy mailbox.txt musi zostać jeszcze odczytywany przez Supla Virtual Device jako kanał GATEWAYSENSOR.

 

Zatrzymujemy więc działanie programu Supla Virtual Device poleceniem:

supervisorctl stop supla-virtual-device

Edytujemy plik supla-virtual-device.cfg.

nano supla-virtual-device/supla-virtual-device.cfg

Dodajemy w tym pliku kanał (w miejsce X wpisujemy kolejny numer kanału).

[CHANNEL_X]
function=GATEWAYSENSOR
file=/home/pi/supla-mailbox/mailbox.txt

Włączamy w Supla Cloud rejestrację nowych urządzeń i uruchamiamy ponownie Supla Virtual Device poleceniem:

supervisorctl start supla-virtual-device

W Supla Cloud w naszej BRAMCE LB-SVD powinien pojawić się nowy kanał, który konfigurujemy jako czujnik poczty.  Odczytujemy ID tego kanału. Będzie nam potrzebne do zakończenia konfiguracji Supla Pushover. Możemy też wyłączyć rejestrację nowych urządzeń.

Zatrzymujemy działanie Supla Pushover poleceniem:

supervisorctl stop supla-pushover

Edytujemy plik supla-pushover-config.yaml.

nano supla-pushover/supla-pushover-config.yaml

W linii 12 zmieniamy numer kanału z 1 na ten odczytany wcześniej w Supla Cloud, zapisujemy konfigurację i uruchamiamy ponownie Supla Pushover poleceniem:

supervisorctl start supla-pushover

Od tej chwili powinniśmy otrzymywać powiadomienie o nowej korespondencji po wyzwoleniu w nadajniku pierwszego kanału radiowego.

Części mechanicznej skrzynki pocztowej (montaż kontaktronów, itp.) nie będę opisywał, gdyż jest ona zależna od typu posiadanej skrzynki pocztowej. Poniżej przedstawiam zdjęcia mojego rozwiązania.

 

 

Spodobał Ci się artykuł? Udostępnij go.

2 komentarze

Dodaj komentarz

Twój adres email nie zostanie opublikowany. Pola, których wypełnienie jest wymagane, są oznaczone symbolem *