środa, 9 maja 2018

Tasmota i MQTT w Domoticz

Dzień dobry. A może dobry wieczór?

W jednym z poprzednich wpisów opisałem sposób załadowania alternatywnego (albo głównego - zależy od podejścia) oprogramowania do sprzętów Sonoff. Piszę sprzętów, ponieważ ich oferta jest dość bogata i stale się powiększa. Sonoff Basic, Sonoff TH (z termometrem), Sonoff Pow (z pomiarem energii), Sonoff G1 (z miejscem na kartę SIM, dla kontaktu w miejscach bez WiFi), gniazda Sonoff S20, Sonoff Touch (naścienne włączniki zdalne), sterowane uchwyty do żarówek - 'żyć, nie umierać', jak to mówią.

Do roboty!

Po pierwsze, jak zawsze, aktualizujmy nasz system. Ja ciągle opieram się na raspbian Jessie, w tym przypadku różnic jednak nie powinno być.

sudo apt-get update
sudo apt-get upgrade

I teraz chwila wstępu. Czym jest MQTT i czemu jest używany? Cytując Wikipedię : 'oparty o wzorzec publikacja/subskrypcja, ekstremalnie prosty, lekki protokół transmisji danych. Przeznaczony jest do transmisji dla urządzeń niewymagających dużej przepustowości. Poprzez ograniczenie prędkości transmisji, protokół zapewnia większą niezawodność. Protokół ten idealnie sprawdza się przy połączeniach maszyna-maszyna, w internecie rzeczy (IoT), w urządzeniach mobilnych, oraz tam, gdzie wymagana jest oszczędność przepustowości, oraz energii.'

Tasmota korzysta akurat z MQTT.

Czyli jest serwis, który nasłuchuje, oczekuje i wysyła pewne komunikaty. W Domoticz obsługa tego protokołu jest zaimplementowana w szczątkowy sposób, ale jest. Jeżeli chcielibyśmy z niego korzystać w większym stopniu, musimy się przygotować do przejścia na Home Assistant.

Przystępujemy do instalacji Mosquitto, najpopularniejszego brokera na Raspberry Pi.

sudo apt-get install mosquitto mosquitto-clients

W sumie tyle - już działa :)

Wystarczy skonfigurować użytkownika, nadać mu hasło za pomocą komendy:

sudo mosquitto_passwd -c /etc/mosquitto/passwd [username]

I możemy 'podsłuchiwać' co się dzieje na naszym kanale.

Komenda która podsłucha wszystkie kanały to:

mosquitto_sub -h localhost -t "#" -u "username" -P "password" -v

'#' Oznacza wszystkie w tym przypadku.

Przy okazji - ponownie podziękowania dla Macieja za pomoc przy ogarnięciu tematu.


Jak widać - komunikaty już sobie 'latają'. Obrazek trochę wyprzedza późniejszą konfigurację - bez skonfigurowania MQTT na Sonoff żaden komunikat oczywiście nie zostanie wysłany...

Skonfigurujmy Domoticz, aby obsługiwał MQTT.

Zaczynamy od Hardware, dodajemy 'MQTT Client Gateway with LAN interface', podając tam dane brokera MQTT. Podajemy IP, port (domyślnie 1883), wcześniej założonego użytkownika i hasło. Publish Topic zostawiamy na Out.


W sekcji Hardware (ponownie) tworzymy kolejny element typu Dummy, z jego poziomu tworzymy Virtual Switch i zapamiętujemy jego IDX. Można również wykorzystać już istniejące. U mnie są ogólnie nazwane ESP.



Jak widać, Domoticz już wysyła komunikaty:


Teraz skupimy się na naszym włączniku Sonoff i wgranym sofcie Tasmota.

Wchodzimy, przez stronę, w konfigurację i wybieramy Configure MQTT. Dla pewności - adres IP naszego Sonoff (jak i innych sprzętów możemy znaleźć za pomocą na przykład za pomocą programu Advanced IP Scanner - http://www.advanced-ip-scanner.com). Ten adres IP musimy później podać w przeglądarce internetowej.




Podajemy nasze parametry MQTT.


Następnie Configure Domoticz i w Idx 1 podajemy IDX naszego Switcha. Jeżeli macie inne wersje Sonoff (z termometrem, licznikiem zużycia energii, itp.) musicie podać Wasze IDX odpowiednich czujników w Domoticz.


Po zapisaniu od razu można użyć przełącznika w Domoticz, będzie współpracował z MQTT.

Mission accomplished!

Ku pamięci (bardziej mojej). Można stworzyć pliki konfiguracyjne, jeżeli ich potrzebujecie.

sudo nano /etc/mosquitto/conf.d/mosquitto.conf

I kopiujemy:

# Config file for mosquitto
#
# See mosquitto.conf(5) for more information.

user mosquitto
max_queued_messages 200
message_size_limit 0
allow_zero_length_clientid true
allow_duplicate_messages false

listener 1883
autosave_interval 900
autosave_on_changes false
persistence true
persistence_file mosquitto.db
allow_anonymous true
password_file /etc/mosquitto/passwd

25 komentarzy:

  1. Pozostaje kwestia uaktualnienia statusu sonoffa w domoticz, któremu w czasie braku łączności z serwerem zostal zmieniony status przyciskiem fizycznym.
    Masz na ti jakieś rozwiązanie?
    Pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Hmmm. Nie jestem (jeszcze) specem w MQTT, ale czy on na bieżąco nie wysyła statusów urządzeń? Sprawdzę z chęcią

      Usuń
  2. Według mnie urządzenie powinno co jakiś czas wysyłać status do serwera (cos na zasadzie timera) a w tej chwili tak nie jest.
    Spróbuj tak:
    Ustaw sonoffa aby domoticz wyswietal aktualny status urzadzenia.

    Odłącz serwer domoticz aby nie miał komunikacji z urzadzeniem.

    Jezeli jestes pewien, że brak jest polaczenia zmień stan urzadzenia przyciskiem fizycznym.

    Wznów połączenie z serwerem.

    Sprawdz status-bedzie inny niz na urzadzeniu.

    Dopiero po dwukrotnym kliknieciu aktualizuje się prawidlowy status.

    OdpowiedzUsuń
  3. U mnie status po ponownym podłaczeniu do sieci sie sam aktualizuje

    OdpowiedzUsuń
  4. Jak przesłać dane w drugą stronę? Z domoticza do esp tak żeby widoczne były jako wirtualny sensor.

    OdpowiedzUsuń
    Odpowiedzi
    1. Cześć. Kolega Łukasz opisał to dobrze w tym wpisie: https://blog.jokielowie.com/2016/04/domoticz-cz-3-1-esp-easy-na-esp8266-dodajemy-wyswietlacz-oled-dht22-oraz-bh1750/

      Usuń
  5. Jak wchodzimy do "Wchodzimy, przez stronę, w konfigurację i wybieramy Configure MQTT." Skąd mam widzieć jaki ma adress IP?

    OdpowiedzUsuń
    Odpowiedzi
    1. Ja używam Advanced IP Scanner: http://www.advanced-ip-scanner.com/, ale każdy znajdzie program, który my najbardziej pasuje. Możesz nawet użyć w konsoli sudo arp-scan -l i dostaniesz listę adresów IP z adresami MAC.

      Usuń
  6. Ten komentarz został usunięty przez autora.

    OdpowiedzUsuń
  7. A dla czego nie użyłeś softu Easyesp?

    OdpowiedzUsuń
    Odpowiedzi
    1. Hmmm. Aby spróbować Tasmota. W innych projektach użyłem EasyEsp, na przykład w czujniku smogu.

      Usuń
  8. Witam Czarku, mam problem otóż tworząc 'MQTT Client Gateway with LAN interface',nie mam zakładki do utworzenia Virtual Switch. Czy coś spartoliłem czy coś innego mógł byś mi podpowiedzieć. Pozdrawiam Piotr

    OdpowiedzUsuń
    Odpowiedzi
    1. Dobry wieczór. Zgubił mnie 'skrót myślowy'. Virtual Switch nie tworzysz z poziomu MQTT Gateway, a jakiegokolwiek innego Hardware - ja sobie go nazwałem na po prostu ESP. Zaktualizowałem wpis, aby wszystko było jasne.

      Usuń
  9. Cześć
    W swoim przepisie podajesz:
    "Zaczynamy od Hardware, dodajemy 'MQTT Client Gateway with LAN interface', podając tam dane brokera MQTT. Podajemy IP,"
    Rozumiem że to jest przykład ale... czy to ma być adres IP Domoticza (mam na Raspberry) czy może zostanie wykreowany nowy interfejs na Raspberry i do obsługi MQTT będzie używany ten ekstra adres.

    Pozdrawiam

    OdpowiedzUsuń
    Odpowiedzi
    1. Wszystko zależy od tego, gdzie zainstalowałeś Mosquitto.

      Usuń
  10. Czy jest możliwość wysłania danych z Tasmota do dwóch domoticzów?
    Na Espeasy można, ale nie wiem jak to zrobić na Tasmota

    OdpowiedzUsuń
    Odpowiedzi
    1. Osobiście nie potrafię, ale może ktoś będzie mógł doradzić.

      Usuń
  11. Wchodzimy, przez stronę, w konfigurację i wybieramy Configure MQTT
    Ale gdzie i jak,wiele osób zaczynających w tym temacie to raczej nie dojdzie co z czym,sam jestem ciekaw gdzie mam wejść,na jaka stronę ???

    OdpowiedzUsuń
    Odpowiedzi
    1. Dzień dobry. Dziękuję za sugestię! Uzupełniłem wpis. Ja osobiście korzystam z programu Advanced IP Scanner (http://www.advanced-ip-scanner.com)

      Usuń
  12. Witam
    A jesli ktoś ma gotowy obraz ze strony https://www.smartnydom.pl/domoticz-obraz/ to jak skonfigurować brokera żeby podłaczyć sonoffa na sofcie tasmota?

    OdpowiedzUsuń
    Odpowiedzi
    1. Z opisu na stronie wynika, że wszystko powinno tam być skonfigurowane...

      Usuń
  13. Potrzebuję z domoticz wysterować 5 przekaźników na tasmota.
    Sterowanie chćę zrobić na mqtt.
    Sterowanie przekaźnikami skonfigurowane, ale mqtt mogę dodać tylko do 4 przekaźników. Piąty już się nie pokazuje na liście konfiguracji domoticza, gdzie się podaje idx wirtualnego przełącznika.

    OdpowiedzUsuń
  14. u mnie status aktualizuje się po ponownym podłączeniu do sieci

    OdpowiedzUsuń
  15. potrzebuje pomocy w skonfigurowaniu tasmoty i domoticz. Ustawiłem tasmota mqtt na parametrach dla domoticz i pomimo tego nie odbiera nic. Wskazania ciągle 0. staram się wysłać dane z esp tasmota Waga hx711- na tasmota podaje wskazania ale konfiguracja w domoticzu nic nie odbiera.

    OdpowiedzUsuń
  16. Ten wpis jest dla mnie bardzo interesujący

    OdpowiedzUsuń