Objavljeno:

Tasmotizacija pametnih stikal Sonoff

Sonoff je blagovna znamka poceni pametnih stikal za domačo uporabo, ki jih proizvaja kitajsko podjetje ITEAD Studio. Sonoff pametna stikala lahko povežemo z brezžičnim omrežjem WiFi in jih nato nadzorujemo prek mobilne aplikacije, oziroma jih integriramo z različnimi platformami za pametni dom. Žal je strojna programska oprema na Sonoff pametnih stikalih zaprtokodna, a na srečo obstaja rešitev z imenom Tasmota. V osrčju stikala namreč teče čip ESP8266, tega pa se s pomočjo Tasmote da osvoboditi okovov zaprtokodne programske opreme.

Tasmota je odprtokodna strojna programska oprema (angl. firmware) za različne naprave, ki temeljijo na čipih ESP8266 in ESP32. Z njo te naprave osvobodimo zaprtokodne programske opreme, kar pomeni, da nad svojimi napravami pridobimo nadzor in možnost prilagajanja ter nekaj novih funkcij, ki jih originalna strojna programska oprema ne ponuja. In se hkrati znebimo še klicev v oblak.

Postopku nalaganja odprtokodne strojne programske opreme Tasmota na pametne naprave hekerji rečejo tudi tasmotizacija. Postopek tasmotizacije je bil včasih nekoliko zapleten, danes pa je zelo enostaven. V nadaljevanju si bomo pogledali, kako ga izvedemo.

Kaj potrebujemo?

Najprej strojna oprema:

  • podprto napravo, na katero želimo namestiti Tasmoto, v našem primeru je to pametno stikalo Sonoff Basic;
  • programator - FTDI232 serijski adapter s 3,3V izhodom;
  • štiri Dupont kable (M-F različica);
  • USB kabel za povezavo serijskega vmesnika na računalnik.
FTDI232 programator

FTDI232 programator.

Sam sem FTDI serijski adapter kupil na Aliexpressu, najdemo ga pod imenom FT232RL FTDI USB 3.3V 5.5V to TTL Serial Adapter Module for Arduino, stane pa okrog 2 EUR. Je pa zelo priporočljivo, da izhod kupljenega adapterja preverimo z voltmetrom, saj imajo nekateri kitajski serijski adapterji izhod v resnici nastavljen na 5V (oz. se izhodno napetost lahko nastavlja s tim. mostičkom (angl. jumper), česar pa za ESP čip ne bo najbolje prenesel.

Morda še opomba glede Sonoff stikal. Sonoff Basic zdrži električni tok do 10 amperov, če boste na to stikalo priključili kakšnega večjega porabnika, bo stikalo pregorelo, mimogrede pa lahko povzročite tudi električni požar! Zato so ta osnovna stikala primerna za kakšen žarnice ali podobne manjše porabnike. Ta stikala zato nikakor niso namenjena priklapljanju npr. bojlerjev ali podobnih velikih porabnikov električne energije! Sonoff ima na voljo tudi močnejšo različico, MINI R3, ki zmore do 16 A, na voljo pa so tudi druga pametna stikala, ki so namenjena priklopu večjih porabnikov. Treba je tudi vedeti, da vrednost 10 A predstavlja maksimum, pri poceni kitajskih izdelkih pa se mimogrede lahko zgodi, da bodo v resnici zdržali nekoliko manj.

Sledi namestitev Tasmotizatorja. Tasmotizator je na voljo za različne operacijske sisteme, v Linuxu pa je najbolj enostavna namestitev preko pip:

  • posodobimo pip in wheel pakete: pip3 install --upgrade pip wheel
  • namestimo Tasmotizator: pip3 install tasmotizer

Zdaj iz Tasmotine spletne strani prenesemo datoteko s Tasmota strojno programsko opremo (angl. firmware), tasmota.bin in si jo shranimo na računalnik.

Postopek Tasmotizacije Sonoff stikala

Najprej opozorilo: med nalaganjem strojne programske opreme stikalo ne sme biti vključeno v elektriko! Če je stikalo povezano v električno omrežje, bo prišlo do kratkega stika s katerim ne boste uničili samo Sonoff stikala, pač pa tudi programator, najverjetneje pa tudi računanik. In ne nazadnje - v em primeru lahko resno poškodujete tudi sebe ali koga drugega. Zato še enkrat: med nalaganjem strojne programske opreme stikalo ne sme biti vključeno v elektriko.

Pametno stikalo Sonoff in programator

Pametno stikalo Sonoff in programator.

Ker je za nalaganje strojne programske opreme potreben fizičen dostop do čipa, mopramo stikalo najprej razdreti. Obstaja tudi postopek nalaganja strojne programske opreme preko WiFi povezave, tim OTA (over-the-air), a ne deluje za vse naprave (za OTA postopek pa potrebujemo tudi ustrezno strojno opremo).

Zdaj na stikalu poiščemo luknjice za priklop GND, TX, RX in 3V3 kablov. Programator (serijski adapter) povežemo s Sonoff stikalom in sicer po naslednji shemi:

Serijski adapter - Sonoff stikalo
             VCC - 3.3V (rdeč kabel)
              TX - RX (zelen kabel)
              RX - TX (rumen kabel)
             GND - GND (črn kabel)
Priklop programatorja na ESP čip

Priklop programatorja na ESP čip.

Da bi zagotovili stalen fizičen stik kablov, je potrebno kable med celotnim postopkom nalaganja strojne programske opreme držati tako, da ne pride do fizične prekinitve povezave.

Nato začnemo nalaganje strojne programske opreme. Na stikalu pritisnemo in tiščimo (edini) gumb, s čimer čip na stikalu prestavimo v programabilni način (programming mode oz flash mode). Pritisk na gumb v resnici povzroči fizično povezavo pina GPIO0 in mase (GND).

Zdaj serijski vmesnik s pomočjo USB kabla priključimo na računalnik. S tem bo tudi ESP čip na stikalu dobil napajanje. Ko se serijski vmesnik zažene (na njem začnejo svetiti lučke oz. čez nekaj sekund), gumb na Sonoff stikalu lahko izpustimo, ESP čip pa je sedaj v programabilnem načinu.

Tasmotizer

Tasmotizer.

Nato poženemo Tasmotizator: tasmotizer.py. Preverimo, če so izbrana prava USB vrata (Select port, bi moral biti ttyUSB0), pod Select firmware (Release) iz diska izberemo datoteko tasmota.bin, ki smo jo prenesli, na koncu pa še preverimo, da je obkljukana možnost Erase before flashing. Sledi klik na gumb Tasmotize! in aplikacija bo na ESP čip zapisala Tasmota strojno programsko opremo.

Tasmotizacija

Tasmotizacija.

S tem je postopek končan in serijski vmesnik lahko sedaj izključimo iz računalnika, Sonoff stikalo pa odklopimo iz programatorja. Podrobna navodila so objavljena tudi na spletni strani Tasmote in vsekakor si jih je smiselno prebrati.

Konfiguracija pametnega stikala

Pametno stikalo sedaj pospravimo v ohišje in priklopimo na elektriko. Nekaj trenutkov po zagonu bo ESP čip v stikalu vzpostavil odprto WiFi omrežje z SSID z imenom v stilu sonoff-3452.

Nastavljanje povezave v WiFi

Nastavljanje povezave v WiFi.

Povežemo se na to omrežje in v spletnem brskalniku se nam odpre povezava http://192.168.4.1/. V vmesniku bomo videli WiFi omrežja v bližini, in iz seznama lahko izberemo SSID (domačega) omrežja na katerega želimo povezati pametno stikalo ter vpišemo geslo.

Povezovanje v WiFi...

Povezovanje v WiFi...

Pametno stikalo se bo sedaj povezalo na naše WiFi omrežje, v brskalniku pa se bo pokazal lokalni IP naslov pametnega stikala v našem domačem WiFi omrežju.

Uspešno povezano v WiFi omrežje

Uspešno povezano v WiFi omrežje.

Povezava v HomeAssistant preko MQTT

Zdaj se lahko povežemo nazaj v svoje domače WiFi omrežje in v brskalnik vnesemo IP naslov pametnega stikala. Izberemo Configuration - Configure MQTT.

Vnesemo podatke za povezavo na MQTT strežnik:

  • Host: vnesemo IP naslov MQTT strežnika oz. IP naslov HomeAssistant naprave v našem lokalnem omrežju ( 192.xxx.xxx.xxx);
  • User: uporabniško ime MQTT uporabnika;
  • Password: geslo MQTT uporabnika.
MQTT nastavitve

MQTT nastavitve.

V HomeAssistantu te podatke sicer že predhodno nastavimo med Settings - Ad-ons - Mosquitto broker - Configuration, kjer vpišemo uporabniško ime in geslo MQTT uporabnika:

- username: tasmota_uporabnik
  password: skrivno_geslo

S klikom na Console (iz glavnega menija pametnega stikala), pa bomo po uspešni povezavi na MQTT videli dnevniške zapise (primer):

20:20:10.387 MQT: tele/tasmota_XXXXXX/STATE = {"Time":"2023-05-12T20:20:10","Uptime":"1T02:35:09","UptimeSec":95709,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"MojWiFi","BSSId":"B8:xx:xx:xx:xx:5B","Channel":1,"Mode":"11n","RSSI":74,"Signal":-63,"LinkCount":1,"Downtime":"0T00:00:03"}}
20:25:10.385 MQT: tele/tasmota_XXXXXX/STATE = {"Time":"2023-05-12T20:25:10","Uptime":"1T02:40:09","UptimeSec":96009,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"MojWiFi","BSSId":"B8:xx:xx:xx:xx:5B","Channel":1,"Mode":"11n","RSSI":72,"Signal":-64,"LinkCount":1,"Downtime":"0T00:00:03"}}
20:30:10.398 MQT: tele/tasmota_XXXXXX/STATE = {"Time":"2023-05-12T20:30:10","Uptime":"1T02:45:09","UptimeSec":96309,"Heap":25,"SleepMode":"Dynamic","Sleep":50,"LoadAvg":19,"MqttCount":1,"POWER":"OFF","Wifi":{"AP":1,"SSId":"MojWiFi","BSSId":"B8:xx:xx:xx:xx:5B","Channel":1,"Mode":"11n","RSSI":74,"Signal":-63,"LinkCount":1,"Downtime":"0T00:00:03"}}

S tem je pametno stikalo uspešno vključeno v HomeAssistant, kjer ga pod Settings - Devices & Services - zavihek Integration vidimo v ploščici Tasmota, nato pa ga lahko vključimo v svoj HomeAssistant.

Pametno stikalo je preko MQTT povezano v HomeAssistant

Pametno stikalo je preko MQTT povezano v HomeAssistant.

S tem postopkom smo ESP čip v pametnem stikalu uspešno preprogramirali oz. nanj naložili odprtokodno strojno programsko opremo, tako predelano napravo pa smo nato vključili v odprtokodni HomeAssistant. Preprosto, kajne?

Kategorije: Odprta koda, Informacijska tehnologija
Ključne besede: HomeAssistant