Cześć wszystkim! No nareszcie już trochę sprzętu mam, czas go rozgryźć!
Mój zestaw, Raspbery Pi 3B+, Domoticz, Mosquito, NodeMCU + 4 przekaźniki (na tą chwilę)
Stworzyłem sobie wirtualne przełączniki do każdego z osobna. Mam przełącznik p1, p2, p3, p4 który wyzwala odpowiedni stan na przekaźniku 1,2,3,4. Logiczne 🙂
Chciałbym jednak osiągnąć 2 zamiary bezpośrednie.
Pierwszy zamiar jest taki. Aby móc sterować odpowiednio przełącznikiem wyboru i odpowiednio:
dla Level0 => p1,p2,p3,p4 = OFF,
dla Level1 => p1=ON & p2,p3,p4 = OFF,
dla Level2 => p2,p3 = ON & p1, p4 = OFF
dla Level3 => p1,p4 = ON & p2, p3 = OFF
Jak mam to zrobić, naprawdę nie wiem.
Drugim zamiarem bezpośrednim jest dodanie fizycznego przycisku (monostabilnego), który będzie przełączał się odpowiednio:
z Level 0 na Level1, z Level1 na Level2, z Level2 na Level3 itd... ale również, dłuższe przyciśnięcie w dowolnym momencie powoduje Level0 czyli wszystko na 0
@fb_-janmatuszak ambitny plan jak na początki 🙂 ale ok jak to zrobić ? Można to zrobić na kilka sposobów ale chyba najprostszy i dość uniwersalny bo można go wykorzystać do przełączników wirtualnych opartych na GPIO samej maliny, będzie skrypt bash.
Podam przykład dla trzech przełączników gdzie dwa są włączane a jeden wył , przełączniki o IDX 50, 51, 52
Logujesz się przez ssh i edytujesz swój skrypt czyli
sudo nano scena1.sh
"scena1" to dowolna nazwa skryptu , która nie ma nic wspólnego z przełącznikami możesz nazwać jak chcesz do pustego okna wklejasz to co poniżej
#!/bin/bash curl "http://192.168.x.xxx:8084/json.htm?type=command¶m=switchlight&idx=50&switchcmd=On" curl "http://192.168.x.xxx:8084/json.htm?type=command¶m=switchlight&idx=51&switchcmd=On" curl "http://192.168.x.xxx:8084/json.htm?type=command¶m=switchlight&idx=52&switchcmd=Off"
Oczywiście adres IP to adres Twojej maliny i port taki jak masz ustawiony , IDX musisz odczytać ze swoich przełączników
Zapisujesz wciskając Ctrl + X i ENTER
Nadajesz prawa wykonalności
sudo chmod +x scena1.sh
i sprawdzasz
./scena1.sh
Jak dostaniesz status OK dla wszystkich komend to jesteś w domu
Potem do przełącznika wyboru w miejscu "Akcje wyboru" np dla poziomu 10 wstawiasz
script:///home/pi/scena1.sh
I masz dla poziomu 10 przełącznika załączenie dwóch i wyłączenie jednego przełącznika
Drugi twój zamiar mogę opisać w temacie zdarzeń domoticza Blockly
Hm.... bardzo fajne rozwiązanie, ale..... co jeśli przekaźniki podpięte są do ESP? (NodeMCU na wersji ESP-12F)
Czy skrypt można przerobić na:
#!/bin/bash
curl "http://ip_esp/contorl?cmd=GIPIO,NUMER_PINU,Stan_Pinu"
curl "http://ip_esp/contorl?cmd=GIPIO,NUMER_PINU,Stan_Pinu"
curl "http://ip_esp/contorl?cmd=GIPIO,NUMER_PINU,Stan_Pinu"
Do obsługi ESP -> wrzuciłem esp-easy mega, dzięki czemu raportuje on do Domoticza stan aktualnego pinu.
Przy tym rozwiązaniu które zaproponowałem nie ważne do czego są podpięte przekaźniki , ponieważ skrypt wykorzystuje IDX urządzenia więc czy to będzie GPIO 2 czy 12 nie ma znaczenia . Jeżeli użyjesz w skrypcie komend dla softu espeasy czyli
http://192.168.x..xxx/control?cmd=GPIO,x,1
http://192.168.x..xxx/control?cmd=GPIO,x,0
to też oczywiście będzie działać , ale nie zadziała już dla GPIO wykorzystanego bezpośrednio z RBPi , lub z softem AFE wgranym do tego samego modułu .
Teraz pomyśl jak rozbudujesz system i nagle zapragniesz zmienić soft a skrypty tego softu nie obsłużą , to musisz oprócz zmiany oprogramowania edytować wszystkie skrypty . Sposób który zaproponowałem zadziała z każdym softem
Hm.... mamy to już za sobą, bardzo prosto tworzy się zdarzenia w Domoticz. Wybór odpowiedniego poziomu na przycisku już rozwiązałem. Pacz screen poniżej. Pozostaje teraz temat, wykrycia stanu pinu do którego przypniemy włącznik mono stabilny. Może jakieś podpowiedzi?
@fb_-janmatuszak skoro tak dobrze sobie radzisz to masz tu trzecią możliwość , sceny tworzy się równie prosto jak zdarzenia a można dodatkowo zarządzać czasem załączenia poszczególnych przekaźników.