Sdílejte chiptron.cz na sociálních sítích



RSS feeds

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



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&gl=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ší.

Upozornění

Administrátor těchto stránek ani autor článků neručí za správnost a funkčnost zde uvedených materiálů.
Administrátor těchto stránek se zříká jakékoli odpovědnosti za případné ublížení na zdraví či poškození nebo zničení majetku v důsledku elektrického proudu, chybnosti schémat nebo i teoretické výuky. Je zakázané používat zařízení, která jsou v rozporu s právními předpisy ČR či EU.
Předkládané informace a zapojení jsou zveřejněny bez ohledu na případné patenty třetích osob. Nároky na odškodnění na základě změn, chyb nebo vynechání jsou zásadně vyloučeny. Všechny registrované nebo jiné obchodní známky zde použité jsou majetkem jejich vlastníků. Uvedením nejsou zpochybněna z toho vyplývající vlastnická práva.
Nezodpovídáme za pravost předkládaných materiálů třetími osobami a jejich původ.
8,177,173 návštěv