Tasmota to oprogramowanie dla urządzeń IoT, które powstało z myślą o lokalnej i pełnej kontroli z kompletnym pominięciem jakiegokolwiek tworzenia kont w usługach chmurowych. Jak urządzenia z Tasmotą zintegrować z Home Assistant? Wyjaśniamy!
W sklepie Techwish znajdziecie wiele produktów marki NOUS wykorzystujących oprogramowanie Tasmota. Są to urządzenia z kategorii IoT, które wyróżniają się na tle swojej konkurencji. Sprzęty te działają w oparciu o specjalne, otwartoźródłowe oprogramowanie Tasmota.
Tasmota to oprogramowanie stosowane głównie w inteligentnych urządzeniach IoT, takich jak gniazdka, żarówki czy przełączniki. Tasmota umożliwia użytkownikom pełną kontrolę nad swoimi urządzeniami poprzez sieć lokalną, eliminując konieczność korzystania z chmury dostawcy. Dzięki Tasmocie użytkownicy mogą dostosować funkcje i zachowanie swoich urządzeń zgodnie z własnymi preferencjami. Oprogramowanie to cieszy się popularnością w społeczności entuzjastów domowej automatyzacji.
Po uruchomieniu takiego urządzenia z Tasmotą możecie się zaskoczyć – otóż producent nie poprosi Was o instalację dedykowanej aplikacji i utworzenie konta w jego usłudze chmurowej. Zamiast tego, sprzęt utworzy własną sieć WiFi, z którą należy się połączyć, aby następnie to urządzenie wpiąć do domowej sieci. Po połączeniu wystarczy wpisać lokalny adres IP urządzenia w pasku przeglądarki internetowej, aby uzyskać pełny dostęp do funkcji sprzętu.
Jak więc widzimy, jest to oprogramowanie sprawiające, że urządzenie IoT działa w pełni lokalnie, bez potrzeby łączenia z usługami chmurowymi. Co więcej, do obsługi wystarczy zwykła przeglądarka internetowa na dowolnym urządzeniu (chociażby na smartfonie, komputerze czy tablecie) i nie trzeba instalować żadnych aplikacji.
Tasmota współpracuje z wieloma systemami automatyki domowej, co zawdzięcza wsparciu dla otwartych protokołów komunikacji, o czym powiemy sobie później.
W przeciwieństwie do innych integracji, połączenie urządzeń Tasmota z Home Assistantem nie jest bezpośrednie. Do działania wymagany jest broker MQTT oraz integracja MQTT, o czym powiemy sobie za chwilę.
Aby skonfigurować urządzenie Tasmota z Home Assistantem potrzebujemy:
Do połączenia Home Assistanta z urządzeniem Tasmota wykorzystamy protokół MQTT. Czym on jest?
MQTT (Message Queuing Telemetry Transport) to lekki protokół komunikacyjny stosowany w Internet of Things (IoT) do przesyłania wiadomości między urządzeniami. Protokół ten jest zaprojektowany z myślą o efektywnym i niezawodnym przesyłaniu danych w warunkach o ograniczonych możliwościach sieci i zasobach urządzeń. MQTT działa na zasadzie publikowania i subskrybowania, gdzie urządzenia mogą publikować (wysyłać) wiadomości do konkretnego „tematu”, a inne urządzenia mogą subskrybować (odbierać) te wiadomości, co umożliwia skuteczną komunikację między nimi.
Protokół MQTT ma zalety w postaci lekkości, szybkości, prostoty i otwartości. Tym samym pozwala na łatwą implementację w oprogramowaniu oraz pełną obsługę urządzeń z poziomu Home Assistanta. Tym samym korzystając z Tasmoty i MQTT w Home Assistant nie tracimy żadnych funkcjonalności.
MQTT do działania wymaga wcześniej wspomnianego brokera. Broker MQTT to pewnego rodzaju przekaźnik, do którego dane są wysyłane i z którego dane są odbierane. Broker jest więc swego rodzaju „bramką”, ale taką wirtualną. Bo tak, broker MQTT musimy zainstalować. W naszym przypadku będzie to aplikacja Mosquitto, która jest darmowa i Open Source. Sposób działania protokołu MQTT został przedstawiony na poniższym diagramie.
Proces połączenia inteligentnego gniazdka elektrycznego rozbijemy na dwie części główne – najpierw zainstalujemy broker MQTT, a później skonfigurujemy połączenie. Stopień trudności tego poradnika określiłbym na średnio-zaawansowany, ponieważ choć nasza praca będzie wymagała kilku komend w terminalu Linuksa, tak są one bardzo proste.
Tak jak zostało wspomniane, naszym wyborem brokera MQTT będzie aplikacja Mosquitto. Możemy ją zainstalować na wiele sposobów, ale warto go dopasować do wersji Home Assistanta. To znaczy, jeśli mamy Home Assistanta w wersji Docker, to powinniśmy zainstalować Mosquitto Dockerem, a jak mamy Yunohost, to wersję Yunohost. Natomiast jak ktoś korzysta z Home Assistant OS (HAOS), to Mosquitto jest dostępny jako wtyczka Add-on (nie mylić z HACS!).
W tym poradniku pominiemy wersje Yunohost oraz HAOS, ponieważ są to specyficzne odmiany pakietu Mosquitto, które zostały przygotowane specjalnie pod te platformy. Przedstawię za to wersje uniwersalne, które zadziałają niezależnie od wersji Home Assistanta, a także platformy i systemu operacyjnego.
W instalacji dockerowej wykorzystany został Docker wraz z narzędziem Docker Compose. Logujemy się do konsoli urządzenia, na którym chcemy mieć broker MQTT (nie musi to być ten sam sprzęt, na którym mamy Home Assistanta) i tworzymy kilka katalogów oraz plik YAML zgodnie z poniższymi komendami.
mkdir mqtt
touch mqtt/compose.yaml
mkdir mqtt/mosquitto/config
touch mqtt/mosquitto/config/mosquitto.conf
Utworzyliśmy folder dedykowany wszystkiemu co związane z Mosquitto. Następnie stworzyliśmy pusty plik YAML z definicją kontenera oraz podkatalog z pustym plikiem konfiguracyjnym. Wypełnijmy więc plik YAML. Przejdźmy do katalogu projektu oraz otwórzmy plik YAML do edycji.
cd mqtt
nano compose.yaml
Następnie wypełnijmy ten plik poniższą definicją.
version: "3.3"
services:
mosquitto:
image: eclipse-mosquitto
container_name: mosquitto
restart: unless-stopped
volumes:
- ./mosquitto:/mosquitto
- ./mosquitto/data:/mosquitto/data
- ./mosquitto/log:/mosquitto/log
ports:
- 1883:1883
- 9001:9001
networks: {}
Zapisujemy plik naciskając Ctrl+S
oraz wychodzimy Ctrl+X
. Musimy jeszcze wypełnić plik konfiguracyjny. dlatego też otwieramy go do edycji.
nano mosquitto/config/mosquitto.conf
Następnie wpisujemy poniższą konfigurację.
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous true
Zapisujemy plik naciskając Ctrl+S
oraz wychodzimy Ctrl+X
. Następnie możemy uruchomić Mosquitto za pomocą poniższej komendy.
sudo docker compose up -d
Po chwili uruchomi się aplikacja Mosquitto. W zasadzie w tym momencie możemy ją sparować z Home Assistantem, jednakże dodamy sobie obsługę identyfikacji dla zwiększenia bezpieczeństwa. Dlatego wejdziemy do konsoli kontenera i utworzymy profil oraz hasło. Wpisujemy w terminalu komendę wyświetlającą listę kontenerów oraz pobieramy ID kontenera zawierającego Mosquitto.
sudo docker ps -a
Wydruk będzie wyglądał podobnie do poniższego.
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0e3787d63f91 eclipse-mosquitto "/docker-entrypoint.…" 31 minutes ago Up 2 minutes 0.0.0.0:1883->1883/tcp, :::1883->1883/tcp, 0.0.0.0:9001->9001/tcp, :::9001->9001/tcp
W moim przypadku ID to 0e3787d63f91
. Dlatego też kopiuję ten ciąg znaków i wpisuję komendę pozwalającą wejście do konsoli kontenera.
docker exec -it 0e3787d63f91 /bin/sh
po wejściu możemy utworzyć login oraz hasło. Posłuży nam do tego dedykowana komenda.
mosquitto_passwd -c /mosquitto/config/passwd.txt techwish
Uwaga: słowo techwish
w powyższej komendzie to nazwa użytkownika. Co ważne, po kliknięciu Enter
program dwa razy zapyta nas o podanie hasła do nowego konta. Po podaniu możemy wyjść z konsoli kontenera.
exit
Musimy jeszcze zmienić zawartość pliku konfiguracyjnego. Dlatego otwieramy ten plik.
nano mosquitto/config/mosquitto.conf
Starą konfigurację podmieniamy na poniższą.
persistence true
persistence_location /mosquitto/data/
log_dest file /mosquitto/log/mosquitto.log
listener 1883
allow_anonymous false
password_file /mosquitto/config/passwd.txt
Zapisujemy plik naciskając Ctrl+S
oraz wychodzimy Ctrl+X
. Teraz możemy ponownie uruchomić kontener.
sudo docker compose stop
sudo docker compose up -d
Na tym kroku kończy się konfiguracja Mosquitto w wersji Docker.
Snap to menedżer pakietów również wykorzystujący zasady sandboksingu i rozwijany jest przez firmę Canonical, twórców Ubuntu. Dlatego też Snap jest dostępny na start przede wszystkim w Ubuntu, ale jego instalacja w innych dystrybucjach jest bardzo prosta. W tym poradniku uznam, że nasz system już ma zainstalowany ten menedżer pakietów.
Uruchamiamy terminal i wpisujemy komendę instalującą Mosquitto.
sudo snap install mosquitto
Następnie przechodzimy do folderu Mosquitto i tworzymy plik konfiguracyjny, po czym uruchamiamy go do edycji.
sudo su
cd /var/snap/mosquitto/common/
touch mosquitto.conf
nano mosquitto.conf
Plik wypełnimy bardzo podobnymi danymi, co w przypadku Dockera.
persistence true
listener 1883
allow_anonymous false
password_file /var/snap/mosquitto/common/passwd.txt
Zapisujemy plik naciskając Ctrl+S
oraz wychodzimy Ctrl+X
. Jak jednak widzimy, plik konfiguracyjny wskazuje na plik tekstowy z hasłem do utworzonego użytkownika, ale jeszcze tego kroku nie wykonaliśmy. Dlatego też wpisujemy poniższą komendę.
mosquitto_passwd -c /var/snap/mosquitto/common/passwd.txt techwish
Co ważne, słowo techwish jest nazwą użytkownika. Po wpisaniu tej komendy program dwa razy zapyta nas o podanie hasła. Po wykonaniu tego kroku musimy jeszcze zrestartować proces Mosquitto.
sudo snap restart mosquitto
I to już! Mosquitto w wersji Snap jest gotowy do używania!
Teraz uruchamiamy przeglądarkę internetową i przechodzimy do interfejsu urządzenia Tasmota. Aby to zrobić, należy podać lokalny adres IP tego sprzętu. Adres ten poznaliśmy przy pierwszej konfiguracji, o czym wspomniałem wcześniej.
Kolejno wybieramy: Configuration
oraz Configure Other
. Zaznaczamy tutaj opcję MQTT enable
. Następnie zapisujemy (przyciskiem Save
) i wracamy do menu konfiguracji przyciskiem Configuration
.
Przechodzimy do opcji Configure MQTT
. Wyświetli nam się formularz do wypełnienia danymi.
192.168.1.195
.techwish
.Następnie możemy zapisać przyciskiem Save
.
Teraz przechodzimy do Home Assistanta. Włączamy Ustawienia
i wybieramy zakładkę z listą wszystkich integracji. Klikamy Dodaj integrację
i wyszukujemy MQTT. Klikamy w pozycję MQTT
i ponownie w MQTT
.
Zostaniemy poproszeni o podanie pewnych danych, które ustaliliśmy w trakcie konfiguracji Mosquitto.
localhost
.techwish
.Klikamy Zatwierdź
, aby zapisać.
I to w zasadzie już! Home Assistant sam wykryje urządzenia Tasmota komunikujące się poprzez ten broker. W bloku Wykryte
w Home Assistant pojawi się integracja „Tasmota”, którą możemy swobodnie dodać wraz z wykrytymi urządzeniami.
Ten poradnik przybliżył dwie bardzo ważne rzeczy, które wykorzystywane są w świecie IoT – protokół MQTT oraz oprogramowanie Tasmota. Konfiguracja brokera MQTT jest wymagana, aby połączyć urządzenie Tasmota z Home Assistantem. Za pierwszym razem może wydawać się to procesem trudnym i nieco żmudnym. Jednakże jest to coś, co robimy tylko jeden raz. Wraz z dokupowaniem kolejnych urządzeń z Tasmotą wystarczy, że dane brokera MQTT podamy w konfiguracji tego sprzętu, a ten samoczynnie pojawi się w Home Assistant, bez żadnych dodatkowych kroków.
Na pierwszy rzut oka działanie Tasmoty może wydawać się być nieintuicyjne, jednak z czasem oprogramowanie wykazuje swoje ogromne zalety, chociażby wszechstronność oraz elastyczność. Jest to też firmware świetnie integrujący się z Home Assistantem oraz działający w pełni lokalnie.
Kategoria: Inspiracje technologiczne