W związku, że automatyka domowa coraz szybciej staje się standardem i moje lenistwo, które poprawia komfort życia - tak więc lenistwo, które za mną przemawiało - postawiłem na zmiany w moim gospodarstwie domowym.. Do zabaw wykorzystałem router w moim przypadku Lenovo D2 1200AC posiadający 512MB pamięci,a dzięki USB dodatkowe 32GB na przestrzeń - skryptów (wcześniej TP-Link WDR-4300 750N 2xUSB 128MB RAM). Zrezygnowałem z Supla ponieważ działała głównie online, a było trzeba mi systemu offline z dostępem po WAN.
Padł wybór na router z USB w/w, którego zakupiłem za 120 zł w promocji Ebay - leciał do mnie 2 tygodnie Chiny -> Holandia -> Polska. Obecnie do wyhaczenia na Ebay za 140 zł z darmową wysyłką. |
Wybór z uwagi na pamięć i procesor 2 rdzeniowy.
Co dalej? Jestem zwolennikiem otwartego oprogramowania Openwrt (w tym Gargoyle, DD-WRT), które udowadnia przeciętnemu Kowalskiemu - że ograniczone możliwości nie posiada router, a jego użytkownik. Oprócz tego, że mamy dostęp do w pełni odblokowanego routera - to największą rodzynką, moim zdaniem jest skrypt Adblock - który blokuje wszelkie dziadostwo (szpiegi, niechciane strony, reklamy od strony DNS) nie pobierając transferu (to dobra informacja dla użytkowników GSM, którzy posiadają limity).
Jednak wracając do Smartnego Domu. Na routerze zainstalowałem bez problemu i zbędnych poradników Domoticz (póki co tylko on wspierany). Zaraz po instalacji skrypt pojawił się pod adresem routera IP:8080.
Trochę problemów sprawił serwer MQTT, bo było go trzeba zainstalować z uwagi na BRIDGE RF. Polski poradnik Cezarego z Eko one - zawierał podstawowe informacje - lecz nie wystarczające do pracy z domoticzem i bridge rf. Należało doinstalować (podczas instalacji pakiet mosquitto-ssl, który zawierał manager haseł). Całą operację należało wykonać z konsoli shell (np przez aplikację putty lub telnet).
https://eko.one.pl/?p=openwrt-mosquitto - poradnik Cezarego jak założyć Brokera, przed zamknięciem shella wpisać polecenie mosquitto_passwd -c /etc/mosquitto/passwd logindonald
Oraz wymazać plik konfiguracji mosquitto.conf i utworzyć oto taki prosty:
port 1883
allow_anonymous false
password_file /etc/mosquitto/passwd
a następnie wsłuchać się, w konsoli co piszczy w trawie, w moim przypadku (nasłuchiwanie -t "#" nasłuchuje całego mosquitto - robi to tak samo domoticz)
mosquitto_sub -h localhost -p 1883 -t "#" -u "logindonald" -P "hasloduck"
---
mając pewność, że serwer mosquitto stoi, domoticz stoi - trzeba było skonfigurować Bridge RF, na niezależnym oprogramowaniu i jedynym w miarę mądrym - Tasmota Bridge RF (ubolewam, że ESPEasy nie wspiera oraz Espurna która jest mało czytelna i chyba najgorsza z modów OpenMQTTgateway).
proces zmiany oprogramowania jest pod adresem:
https://github.com/arendst/Sonoff-Tasmota/wiki/Sonoff-RF-Bridge-433
oczywiście, są tam 2 firmware - jeden dla układu ESP (wifi i ta opcja nas interesuje), oraz dla układu EFM - układ odpowiedzialny za kompatybilność z pilotami różnych marek
nas interesuje oprogramowanie TASMOTA (sonoff-pl.bin)
https://s2.ifotos.pl/img/tasmotajp_qwqaher.jpg
od razu uprzedzam - nie będą nam działać przyciski od 1 do 16 z uwagi, nie wiem dlaczego - MQTT wysyła komunikat nieczytelny nawet dla mnie, a właściwie musimy wywołać żądane działanie
w czym problem? problem taki, że Bridge RF tasmota po kliknięciu kanału 1 wysyła, RFKey1 Learned Send(skopiowany klucz, a nie wyznaczone polecenie), z kolei wciskając przycisk na pilocie uzyskujemy oczekiwaną treść
Aktywny
{"RfReceived":{"Sync":9980,"Low":370,"High":960,"Data":"001492","RfKey":1}}
{"idx":22,"nvalue":0,"svalue":"5266","Battery":63,"RSSI":10}
{
"Battery" : 63,
"RSSI" : 10,
"description" : "",
"dtype" : "Usage",
"id" : "82022",
"idx" : 22,
"name" : "Przekaznik RF",
"nvalue" : 0,
"stype" : "Electric",
"svalue1" : "5266",
"unit" : 1
} {"RfKey1":"Learned sent"}
sam Bridge RF konfigurujemy w taki sposób, aby Konfiguracja MQTT zawierała informacje naszego serwera czyli w tym przypadku routera, ze wcześniej skonfigurowanym loginie i haśle z poziomu konsoli shell.
patrz screen -> http://prntscr.com/n4smt4
następnie ustawiamy domoticz - tj logujemy się na domoticza i tworzymy połączenie z MQTT oraz sprzęt Dummy
patrz screen -> http://prntscr.com/n4snj0
patrz screen -2 -> https://prnt.sc/n4sovr
następnie tworzymy wirtualne urządzenie (na dummy) - ale nie tworzymy przycisku, tylko w tym przypadku Licznik Energi - który pojawi się nam w zakładce użytkowe
patrz screen --> http://prntscr.com/n4sr4e
mając taką konfigurację spisujemy IDX (identyfikator urządzenia), który będzie nam potrzebny do Bridge RF Tasmota
- patrz screen -> http://prntscr.com/n4ssns
wchodzimy do naszej tasmoty i ustawiamy konfigurację Domoticza i wpisujemy idx wszędzie - inaczej nie będzie nam działać kontrola z pilota na poszczególne urządzenia WI-FI
patrz screen -> http://prntscr.com/n4st3j
konfigurację Tasmoty pod kątem domoticz mqtt mamy za sobą, co dalej... czas na naukę pilota z konsoli Bridge RF (przechodzimy do Konsola w Bridge RF), poleceniem rfkey1 2 - programujemy 1 przycisk w tasmocie, wpisując rfkey2 2 programujemy drugi przycisk w tasmocie itd
po wpisaniu nie trzeba w panicznie bezpośrednim sąsiedztwie mieć pilota ale maks pół metra i u mnie działało bez problemu
20:28:44 CMD: rfkey2 2
20:28:44 MQT: stat/bridgerf1/RESULT = {"RfKey2":"Start learning"}
20:28:48 MQT: stat/bridgerf1/RESULT = {"RfKey2":"Learned"}
20:28:57 MQT: tele/bridgerf1/RESULT = {"RfReceived":{"Sync":9960,"Low":380,"High":960,"Data":"001492","RfKey":1}}
20:28:57 MQT: domoticz/in = {"idx":22,"nvalue":0,"svalue":"5266","Battery":63,"RSSI":8}
I jak widzimy - komenda wywołała nam polecenie nauki klawisz 2 - learning - nauka , zaraz 4 sekundy później Bridge RF nauczyło się klucza z pilota i teraz co najważniejsze - po ponownym naciśnięciu pilota - tasmota musi nam wysłać polecenie domoticz/in oraz parametr svalue (w moim przypadku 5266) - nie może być ta wartość zerowa - należy ponownie wywołać naukę pilota, lub sprawdzić czy konfiguracja MQTT i Domoticza w tasmocie jest tak jak wyżej wspominałem.
nie przejmujcie się, że macie tam napis battery - lepsze to, niż zakładać internetowy serwer node i inne do transkrypcji komunikatów MQT - jeżeli domoticz odbierze ten komunikat to zobaczycie w użytkowych informację - 5266 Watt
patrz screen -> http://prntscr.com/n4sxyx
świetnie - jeżeli jest tak jak Ci piszę (mamy konfigurację dwukierunkową), to możemy stworzyć zdarzenie Blocky aby sterować poszczególnym urządzeniem
więc wchodzimy w zakładkę konfiguracja -> więcej opcji -> zdarzenia i tworzymy zdarzenie
Skrypt Blocky rozpoznaje nam kod 5266(musimy go wpisać), sprawdza czy mamy załączone czy wyłączone urządzenie i wywołuje odwrotne działanie przekaźnika -widać na skrypcie poszczególne urządzenia. Czas ustawiony 0.1 - ustawiony na 0 w ogóle nie reaguje, zapisujemy pod dowolną nazwą (zaznaczamy Zdarzenie aktywne) i od teraz cieszymy się bramką RF z pilotem RF, który steruje nam urządzenia RF ( w moim przypadku Kanał 1 to kanał z 4CH bez modułu RF)
Oczywiście z Domoticz w androidze dalej steruję tym co chcę (ja zdalnie, żona lokalnie - obawiała się problemów z brakiem internetu, że automatyka przestanie działać). RF sterują mi po szczególnymi urządzeniami (dodatkowo).
Mamy serwer lokalnie (router) , ale możemy zarządzać przesyłem danych będąc u kumpla popijając napoje procentowe. Z podglądem do wszelkich zdarzeń.
Macie pomysł jak usprawnić, przyśpieszyć działanie zachowując lokalne działanie bez internetów - proszę dać znać. Nałożymy poprawki na artykuł.
dzięki kolego @kpisiek dobra robota , szkoda tylko że na routerze 🙂 za 150 zł można mieć malinę w wersji 3b+ do tego mały SSD i robisz co chcesz a wsparcie nieporównywalne. Odpal na tym routerze MotionEye tylko z jedną kamerą a zobaczysz dlaczego tak uważam.
no i dobrze;)
a teraz pytanie, dlaczego musimy wpisac wszedzie ten sam idx (inaczej nie będzie nam działać kontrola z pilota na poszczególne urządzenia WI-FI) co to dokladnie oznacza? oraz czy mozemy uczyc/sterowac 16 kanalami?
no i dobrze;)
a teraz pytanie, dlaczego musimy wpisac wszedzie ten sam idx (inaczej nie będzie nam działać kontrola z pilota na poszczególne urządzenia WI-FI) co to dokladnie oznacza? oraz czy mozemy uczyc/sterowac 16 kanalami?
zauważyłem, że jak czegoś tam nie wpisałem to domoticz nie zawsze wyłapywał pakiet
dzięki kolego @kpisiek dobra robota , szkoda tylko że na routerze 🙂 za 150 zł można mieć malinę w wersji 3b+ do tego mały SSD i robisz co chcesz a wsparcie nieporównywalne. Odpal na tym routerze MotionEye tylko z jedną kamerą a zobaczysz dlaczego tak uważam.
myślę nad tym, bo w sumie malinka już mi chodzi od kilku lat po głowie - ale jakoś nie potrafię zmotywować się
Bardzo dobra robota. Sam ostatnio też migrowałem z leciwego WDR4300 na Newifi 3 - ta sama ścieżka, tyle, że ja zapłaciłem 136zł.
Pomimo dużego potencjału tego routera, automatykę pozostawiam na Raspberry, bo:
- Ja akurat używam OpenHAB i mocno się do niego przywiązałem.
- OH stoi na Raspberry Pi 3 i wykorzystuję 8 lokalnych GPIO (za chwilę dodam kolejnych 4), a na routerze tego nie zrobię.
- Funkcjonalnie to są różne sprawy i nie ma zysku z integrowania wszystkiego na jednym urządzeniu, ale są zagrożenia (aktualizować trzeba obydwa, a restarty routera zwykle są częściej niż OH - tak wiem, że na w statystykach EKO.ONE.PL niektórzy mają czas nieprzerwanej pracy ponad 2 lata, ale to raczej nie świadczy o bardzo rzetelnym administrowaniu tym sprzętem).
- Koszty eksploatacji Raspberry są znikome (mniejszy pobór prądu niż Newifi), a wsparcie światowe wszelkich rozwiązań jest wręcz nieskończone.
Nie zmienia to faktu, że podziwiam Twój kawał dobrej roboty.
ba to byla na tyle wartosciowa robota, ze az zakupilem na wschodzie RF Bridge;)!!!, do tej pory nie bardzo widzialem sensowne zastosowanie, ten wpis duzo zmienil...
i tez sie przesiadam na Raspberry, doslownie na dniach, ale powod jest troszke inny, u mnie zwyczajnie w domu pozenilem juz tyle urzadzen/zasad/zaleznosci, ze trudno teraz byloby bez tego ogarniac chalupe, a aktualnie Domo stoi na virtualnym Ubuntu na dysku sieciowym Qnapa, coz dysk moze zawsze "strzelic", czyli dojrzalem juz do backupu...
nie chce zakladac kolejnego watku, to moze tu podpytam, jaki system polecacie na raspberry? podstawa oczywiscie bedzie automatyka, ale aby komputerek sie nie nudzil, to na pewno bedzie tam Kodi i teraz czy instalowac predefiniowane np: OSCM, LibreElec, czy klasyczny Stretch (Kodi ma zajmowac interfejs graficzny zaraz po starcie) lub moze cos innego jest bardziej wygodne?
Ja bym odradzał dokładanie wszystkiego do Raspberry Pi 3. Sam używam go tylko do OpenHAB i o ile na początku rzeczywiście malinka się głównie nudziła, to teraz już trochę ma roboty. Zajętość procesora ciągła to 5% a chwilowa dochodzi do 70%, ale głównym hamulcem jest dostępność RAM, gdyż na świeżo po restarcie jest to niby tylko 40% zajętości, ale po miesiącu ciągłej pracy przekracza 80%. W sumie próbuję ustalić co jest przyczyną, bo mnie to trochę złości, ale na razie zrobiłem obejście ewentualnego problemu regułą, kiedy zajętość RAM przekroczy 90% to wykonaj restart usługi OpenHab2.
Moim zdaniem automatyka domowa musi być przede wszystkim niezawodna, a to powoduje, że nie powinno się tam wrzucać usług rozrywkowych, dla których niezawodność nie jest kluczowym wymaganiem, a jednocześnie mają one wysokie wymagania mocowe. Nie mówię, że to się nie uda, ale na pewno będzie powodowało chwilowe zacięcia, co może negatywnie wpłynąć na wykonywanie reguł. Poza tym nastąpi szybsze zużycie karty pamięci.
moze na RAM taka linijka wystarczy?, wpisana do crona...
<sync && echo 3 > /proc/sys/vm/drop_caches>
coz co do reszty to sie poobserwuje, najwyzej skoncze na minidlna i tez bedzie fajnie;D
nadal czekam na propozycje, ktory soft wybrac na maline?;)
Dzięki z propozycję oczyszczania kesza, nie pomyślałem o tym - sprawdzę.
Co do propozycji, to ja działam na gotowej dystrybucji OpenHabian i bardzo sobie chwalę. Za wyjątkiem tego RAMu nie mam absolutnie żadnych problemów, działa to bardzo stabilnie i jest responsywne pomimo wielu różnych technologii stosowalnych w moim projekcie do sterowania, zbierania danych itd.
Do tego OpenHAB jest całkowicie darmowy, zarówno serwer, jak i aplikacja na wszelkie platformy, a przede wszystkim ma ogromne wsparcie społeczności.
Jak już to raczej
sudo sysctl -w vm.drop_caches=3
a dlaczego ? bo w którymś momencie może być
bash: /proc/sys/vm/drop_caches: Brak dostępu
Tylko po co sokoro w razie zwiększonego zapotrzebowania na pamięć operacyjną kernel i tak zwolni cache i bufory aby zmieścić inne programy, a niewykorzystany ram to zmarnowany ram.
Teoretycznie masz @isom rację, ale w praktyce coś jest lekko nie tak, bo zajętość pamięci ciągle narasta, a nie spada.
Trudno to dokładnie zbadać, bo trzeba długo poczekać na uzyskanie dużej zajętości, a jak już taka jest, to przeważnie brak czasu na zajęcie się zgłębianiem, a trzeba odzyskać utracone funkcjonalności.
Mój problem jest bardziej złożony, ponieważ zebrane statystyki nie przedstawiają rzeczywistego przebiegu problemu.
Fakt jak ciągle narasta to jakiś problem jest , ale nie lecz skutków tylko przyczynę fabryka RBPi jest uboga może wrzuć
sudo apt-get install htop
uruchamiasz z terminala
htop
Szybko powinieneś przefiltrować co tak gryzie ten ram
to Ty nie potrzebujesz maliny, Tobie kalkulator wystarczy;P
no gdyby miał własne GPIO to spokojnie by mi wystarczył