Před lety jsem si koupil chytrou Wi-Fi zásuvku (vypínač) k televizi + Raspberry Pi + repro atd. Při používání mě ale hrozně štvala nutnost mít aplikaci ewLink, který se strašně dlouho připojoval na server, celá aplikace byla zbytečně nepřehledná a aplikace mě neustále odhlašovala. Teď, po letech, jsem zásuvku rozebral a přeprogramoval pro spínání pomocí služby The IoT Guru Cloud.
Zásuvku Sonoff S20 řídí populární a známý čip ESP8266 – ten najdete ve všech levných zařízeních.
Přeprogramování je velmi jednoduché, výrobce nebrání přeprogramování – třeba zamčená paměť pro nahrání, nedostupné programovací konektory atd.
Po otevření zásuvky (3 křížové šrouby) se před vámi otevře jednoduchý plošňák rozdělený na 2 části – silová, napájecí se spínacím relé a druhá ovládací s ESP8266.
Na té ovládací je čip ESP8266, externí paměť, stabilizátor a nějaké další smetí jako kondíky, rezistory.
A také tam najdete místo pro konektor se čtyřmi dírami s roztečí 2.54 mm. To je programovací konektor, kam musíte přivést 3.3V, GND, TX a RX.
!!! Přeprogramování musí probíhat bez zapojené zásuvky !!! Na vlastní nebezpečí !!!
Na stránce tasmota jsem našel obrázek s rozložením pinů, protože moje verze už je bez popisků, ale pinout se shoduje.
Celá domácnost mi běží na službě The IoT Guru Cloud, proto jsem nechtěl použít Tasmota.
Zdroj: https://tasmota.github.io/docs/devices/Sonoff-S20/#serial-connection
K zásuvce je dostupné i schéma zapojení, které je najdete na wiki iteadstudio – https://wiki.iteadstudio.com/File:S20_EU.SCH.pdf
Ze schématu je vidět, že LED – zelená je připojena přímo na pin ESP8266, GPIO13.
Modrá LED je zapojena přes tranzistor společně s relátkem na GPIO12. Tedy když svítí modrá LED, je sepnuto i RELÉ. Nelze vypnout modrou LED bez toho, aby stále spínalo relé.
Tlačítko je zase připojeno na GPIO0. A tento GPIO0 právě potřebujeme pro nahrání našeho programu.
!!! Přeprogramování musí probíhat bez zapojené zásuvky !!! Na vlastní nebezpečí !!!
Postup je následující:
Propojíme USB-UART převodník k zásuvce (ale nezapojujeme do počítače):
3.3V – 3.3V
GND – GND
TX – RX
RX – TX
Zmáčkneme tlačítko a držíme, zasuneme USB převodník do počítače, poté tlačítko uvolníme. ESP je v bootloader módu a čeká na přichozí pakety z UARTu.
V Arduino IDE programujeme jako „General ESP8266“. Po nahrání restartujte zásuvku odpojením od 3.3V napětí.
A teď přejdeme ke službě The IoT Guru Cloud.
Celý koncept zařízení – nódů a fieldů ukazuje obrázek níže.
Po registraci na stránkách si vytvoříme nové zařízení – třeba s názvem smartplugs.
Vytvoříme nový Node – třeba sonoffs20
A vytvoříme nový Field – třeba general_plug
Každý Node a Field má unikátní název, identifikátor a klíč. Některé z těchto dat potřebujete k připojení na server – jaké jsou popsány v jednotlivých příkladech.
Například:
/**
* Initialize the connection with the cloud.
*/
String userShortId = „xxxxxxxxxxxxxxxxxxxxxx“;
String deviceShortId = „yyyyyyyyyyyyyyyyyyyyyy“;
String deviceKey = „zzzzzzzzzzzzzzzzzzzzzz“;
IoTGuru iotGuru = IoTGuru(userShortId, deviceShortId, deviceKey);
/**
* Constants of the MQTT channel check.
*/
String nodeShortId = „nnnnnnnnnnnnnnnnnnnnnn“;
String fieldName = „relay“;
Device setting vypadá například takto.
Pro ovládání zásuvky potřebujete aplikaci IoT Guru Cloud. Tu najdete jak pro telefony Apple, tak i s OS Android.
https://play.google.com/store/apps/details?id=live.iotguru&hl=cs≷=US
Po příhlášení si v aplikaci můžete přidat různé prvky – grafy různých velikostí, zobrazení veličiny, tahadla, nebo i tlačítka ON / OFF. Což potřebujeme pro tento případ my.
Svůj kód jsem založil na jejich vzorovém kódu pro spínání
https://github.com/IoTGuruLive/theiotguru-arduino-library/blob/master/examples/05_mqtt_relay_android/05_mqtt_relay_android.ino
!!! Přeprogramování musí probíhat bez zapojené zásuvky !!! Na vlastní nebezpečí !!!
Kód jsem upravil pro mé potřeby, tedy:
– během připojování k Wi-Fi svítí zelená LED
– po připojení zhasne
– FW funguje s původním tlačítkem – pokud jej zmáčknu, relé se vždy vypne
– pokud svítí modrá LED, je sepnuto i RELÉ – jinak to kvůli HW nejde udělat.
– kód najdete na mém githubu https://github.com/petus/Sonoff_S20-Arduino-IoT_Guru_Cloud/tree/main
A závěrem, aplikace The IoT Guru Cloud se přihlásí během chvíle, reakce na událost – zmáčknutí tlačítka je téměř okamžitá.
Do IoT Guru Cloud neposílám jenom data pro zásuvku, ale i data z mé meteostanice, HomeMonitoru s čidlem CO2 a další.