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 tu i tu). Ł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.
Ten skrypt, 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.
ZAŁOŻENIE KONTA PUSHOVER.net
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.
Klikamy w pole zaznaczone ramką. Klikamy w pole zaznaczone ramką. Wypełniamy niezbędne dane i po założeniu konta weryfikujemy się klikając w link otrzymany na podany w formularzu adres e-mail. Tworzymy nową aplikację na potrzeby Supla Pushover. W tym miejscu możemy dodać ikonkę, która będzie wyświetlana przy powiadomieniu na smartfonie. Zapisujemy w notatniku wygenerowany API Token. Zapisujemy do notatnika swój User Key i klikamy w link Create an Application/API Token. Widok na panel konta (bez dodanego smartfona).
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ść pliku konfiguracyjnego:
[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.
Czesc,
Świetny projekt – gratuluję wykonania.
Jak długo wszystko działa na tym akumulatorze?
Pozdrawiam
Dziękuję za miłą opinię. Uruchomiłem czujnik poczty ok. 6 lub 7 kwietnia 2020 i jak do tej pory wszystko działa poprawnie. Więc będzie to już prawie miesiąc czasu.
Także gratuluję realizacji projektu, zaangażowania i wiedzy. Należysz do ścisłej czołówki wsparcia i wiedzy na forum + możliwie szczegółowe i przystępne opisy z realizacji projektów na swojej stronie. Dziękuję.
Dzięki 🙂
Czy Supla Pushover zadziała na ESP8266?
To rozwiązanie opisane przeze mnie jest tylko na Raspberry Pi. Natomiast widziałem na https://forum.supla.org opis uruchomienia powiadomień Pushover na ESP8266. Tak więc zapraszam na Forum 🙂 .
Witam,
pożyteczny poradnik :-). Mam problem z konfiguracją pushovera. Wpisuję numer kanału mojego czujnika zalania, czyli 0. Po zmianie stanu nie dzieje się nic. Nie wiem czemu, ale na serwerze supla mam co najmniej cztery urządzenia z numerem kanału “0”. Czy może to stanowić problem? Jak temu zaradzić?
Odpowiedź prześlę na podany adres e-mail.
Bardzo dziękuję za odpowiedź. Sczytywałem nieprawidłowy numer :-).
Witam.
Potrzebuje schemat połączeń i soft do sterowania rolet pod wemos D1 mini . Z góry dziękuję.
Nie robiłem samodzielnie sterowników do rolet na bazie Wemosa. Zakupiłem SRW-01, które sprawdzają się doskonale. Ale na https://forum.supla.org widziałem takie projekty.
Czy jest możliwość zastosowania powiadomień z pushover na sonoffie z wgraną suplą?
W jaki sposób to dokonać?
Proszę zerknąć na https://forum.supla.org Tam pojawiły się takie projekty.
Dzień dobry
Czy jest możliwość pokazania które regulatory napięć pominąć, w jaki sposób i gdzie się wpiąć z tym napięciem 3.8V w nadajniku i 5V w odbiorniku? Nie jestem elektronikiem i mogę to wykonać za pomocą poradnika ale sam nie będę wiedział. Z góry dziękuję i szacunek za pomysł oraz pracę
Dzień dobry,
Niestety nie posiadam żadnych zdjęć płytek nadajnika i odbiornika. Całość jest zamontowana i trochę ciężko to rozbierać aby zrobić zdjęcia. Jeśli dysponuje Pan zdjęciami płytek nadajnika i odbiornika, to proszę o podesłanie. Wrysuję, co należy zrobić.
Dziękuję za wiadomość. Oczywiście rozumiem, że nie ma możliwości zdjęć z pracującego zestawu. Ja nie mam tych modułów bo nie byłem pewny czy sobie poradzę
Zastanawiam się czy mogę wykorzystać zamiennie radiolinię Elmes:
http://www.elmes.pl/pl/produkty/radiopowiadomienie-czterokanalowe-o-zasiegu-do-500-metrow
Są tańsze i nadajnik może natywnie pracować na bateriach tak więc może odpaść tej modyfikacji.
Pozdrowienia 🙂
Tak, jak najbardziej można wykorzystać produkt Elmes. Będą jeszcze dwa dodatkowe kanały do dyspozycji 🙂