Vlastní Arduino kód pro ovládání chytré zásuvky Sonoff S20 s ESP8266

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ší.

Sdílejte článek:
Komentáře:
121 komentářů na sociálních sítích
@TomasBajer Já mám páječku z tindie, která používá weller hroty a je skvělá, ale můj styl práce je více opravování než pájení a ta pinzeta se mi hodí více... a dost lituju, že jsem nepřikoupil větší hroty :-D ...více
Číst komentáře
- a -
Přidat svůj názor
Ukaž světu,
že jsi Maker!
Koupit tričko
Kafe pro Chiptrona
Aby mohl napsat další článek.

Související články

Lukáš Beran (web, linkedin, google+, twitter, facebook) mi poslal svůj návod, jak zprovoznit Zigbee2MQTT do Domoticz a ovládat tak nejrůznější zařízení.

Pokud programujete mikrokontroléry od firmy STM (STM32F4, STM32F0, STM32L1) pomocí Standard Pheripheral Library, tak se vám možná nelíbí velikost výsledného kódu.

The IoT Guru je název kompletního cloudové řešení, které ukládá data z vašich čidel a kromě toho navíc nabízí notifikace v případě nízkého stavu baterie nebo nedostupnosti vašeho čidla.

Arduino – proč se osvědčí nejen u neprofesionálů? Arduino Pro – proč bychom měli vsadit právě na toto řešení? Arduino Pro – komu je určeno? Hardwarová platforma Arduino Pro – Arduino Portenta – Arduino MKR a Arduino Pro – Arduino…

Cloudové služby jsou stále populárnější a jejich nabídka je nepřeberná.

Hledání vhodného projektu, který by pomohl při vysvětlování základních pojmů a principů nemusí být jednoduché.