WiFi-s relé (Sonoff Basic R3)

Ráncfelvarráson esett át a Sonoff Basic, az új R3 változata, ami azon túl, hogy másképp néz ki (nem, nem lett kisebb), egy új, úgynevezett DIY móddal lett gazdagabb.
Paramétereiben egyébként nem történt változás, ugyanúgy 10A terhelhetőséget tüntetnek fel az adatlapján, mint az előző verziókon, az árcimkén viszont a régi másfélszerese látható... (cirka 2000 Ft)

basicr3_0.jpg

Az OkosotthonBolt-on és a DIYSmartHome-on is írtak már róla, én viszont jobban szeretem személyesen szétszedni az ilyesmit.
Rendeltem hát próbára, meg is érkezett szerencsésen jó 35 nappal a megrendelést követően, ám gyorsan rájöttem én is, hogy a beharangozott "DIY mód" nem valószínű, hogy átütő sikert fog elérni a DIY közösségben. Legnépszerűbb funkciója jelenleg az, hogy OTA módszerrel fel lehet rá tenni egy másik firmware-t, teszem azt a Tasmotát. (lásd még az erről szóló Tasmota wiki bejegyzésben)

Természetesen a szokásos módon érkezését követő 30 másodpercen belül az eszköz darabokban volt, érdeklődők kedvéért az alján a vezetősávok korrekt iparosmunkának tűnnek:

basicr3_back.jpg

És bár ennél a modellnél nincs feltétlen rá szükség, de a kábeles firmware cseréhez szükséges pontok itt is kivezetésre kerültek:

basicr3_serial.jpg

Ha mégis kábellel szeretnénk firmwaret cserélni, a fent jelölt négy bekötési ponton kívül az egyetlen nyomógombot is nyomva kell tartanunk, mivel az a GPIO-0.

De mi is az a DIY mód és hogyan használhatjuk?

Nos, aki azt hitte, most majd kap egy gyártófüggetlen megoldást, amihez fel se kell tennie az eWeLink alkalmazást a telefonjára, csalódni fog...  mondom az első lépést: tegyük fel az eWeLink alkalmazást a telefonunkra, készítsünk egy fiókot, majd adjuk hozzá a fiókhoz a frissen érkezett, éppen csak kicsomagolt és 230V-re kötött Basic R3-at, és nézzük meg ennek segítségével a firmware verzióját. Ha 3.3-nál régebbi akkor frissítsük a firmwaret!
Következő lépésként áramtalanítsuk és miután szétszedtük (két csavar van csak az alján, a két réteg műanyagfedél azok eltávolítása után könnyebben-nehezebben, de lepattan a helyéről némi erőkifejtés hatására) az OTA_SW feliratú két, magányosan álló tüskére tegyük rá a csomagban mellékelt jumper-t.

basicr3_jumper.jpg

Figyelmes szemlélő itt észreveheti, hogy egy ESP8285 van a lapra integrálva, ebből máris tudható, hogy 1MB integrált flash tárhely van benne.

basicr3_esp.jpg

A folytatásban készítsünk egy ideiglenes WiFi Hotspotot, akár a wifi routerünkkel (van olyan, ami több SSID létrehozását is támogatja egy időben), vagy egyszerűen telefonunk segítségével, a "Beállítások/Hotspot és internetmegosztás" menü alatt "Wifi-hotspot".

Ennek neve legyen: sonoffDiy
a jelszava pedig: 20170618sn

Ha sikeresen létrejött, helyezzük áram alá a korábbiakban jumper-rel ellátott BasicR3-at, kisvártatva a Hotspot kiírja, hogy 1 kliens csatlakozott. Ez után PC-nk vagy laptopunk segítségével nekünk is fel kell csatlakozni ugyanerre a "sonoffDiy" nevű hozzáférési pontra, majd elindítani a Sonoff DIY Mode Tool alkalmazást.

Windows felhasználók szokás szerint előnyben vannak, kész program tölthető le a gyártótól:

https://github.com/itead/Sonoff_Devices_DIY_Tools/tree/master/tool

A tool_01DIY85(3.3.0).exe -t kell futtatni.

Linux alatt ellenben az alábbi parancsokkal izzíthatjuk be a DIY Tool-t, feltéve, hogy éppen nem írtak el valamit a forráskódjában, mert akkor csak pár hibaüzenetet kapunk, én pont így jártam, de helyreütöttem. :)
(és aki azt hinné, hogy majd inkább Linux alatt Wine segítségével fogja futtatni az exe fájlt, nem, nem fogja, próbáltam)

sudo apt install python3-pip
sudo pip3 install PySide2 zeroconf requests
git clone https://github.com/itead/Sonoff_Devices_DIY_Tools.git
cd Sonoff_Devices_DIY_Tools/code
python3 tool_01DIY85.py

Ha sikerrel jártunk, valami ilyen ablakot kell látnunk:

tool.jpg

Itt kijelölve a listában a megtalált eszközt a "change SSID_Password" gombra kattintva tudjuk megadni saját WiFi AP-nk nevét és jelszavát, amire a mentést és újraindítást követően csatlakozni fog a BasicR3.
Az ON/OFF gombot megnyomva gyorstesztet végezhetünk, hogy működik-e a relé, továbbá a bekapcsoláskori alapértelmezett állapotot és a működési módot is be tudjuk állítani a felületen.
És a legnépszerűbb pont a "Firmware flash / Brush machine" menüpont segítségével tudunk saját firmware-t feltölteni On-The-Air módszerrel, ami elsősorban Tasmota (500kb vagy kisebb!), mely a sima "Sonoff Basic" sablon beállítással menni fog, mivel az eszköz gombja ugyanúgy a GPIO-0-ra van kötve, mint korábban, és a relét is ugyanaz a GPIO vezérli.

Megjegyzés: a jumper eltávolításával visszaállhatunk gyári eWeLink üzemmódba a DIY módból. (természetesen csak amíg nem csapjuk felül Tasmotával vagy egyéb harmadik féltől származó firmware-el, ami kiüti az gyártói azonosítót a készülékből, és ha nem mentettük el a firmware-t ennek visszaállítására nincs mód)

A DIY mód működéséről röviden:

DIY módra állítva a BasicR3 - és egyébként a Sonoff Mini is, mivel ugyanazzal a firmware-el működnek - multicast DNS csomagokkal küldi a hálózatra, hogy él, jelen van, aminek a TXT rekordja tartalmazza az állapotinformációit is, mint például a WiFi jelerősség, illetve a relé állapota (egyes számban, mivel nincs szó több relé támogatásról a dokumentációban). Ezt a példaprogramban a ZeroConf protokoll segítségével érik el és gyűjtik, és bár úgy tűnik, mintha pont olyan rögtön reagálna, mint az MQTT esetében, az érzés csalóka: egy fél másodpercenként lefutó végtelen ciklus kérdezgeti folyamatosan az állapotokat az eszköztől, ami sokkal nagyobb CPU felhasználást jelent és nem mondanám, hogy gyorsabb, mint az MQTT-nél, ahol az eszköz azonnal publikálja az állapotát az MQTT bróker felé, és a feliratkozott kliensek - a távolságuktól és a WiFi jelerőségtől függően - minimális késleltetéssel értesülnek az állapotváltozásokról. Mondhatnánk, hogy fél másodperc nem a világ, a WiFi-nek egyébként is van késleltetése a hálózati csomagok átvitelénél, de 30 eszköznél azért szerintem már elég látványos tud lenni a különbség... no ennyit a visszacsatolásról. (ez a gyártói "mdns.py" példaprogramban megtekinthető)
Vezérelni HTTP POST hívások segítségével lehet, a 8081-es porton figyel, és a "code/lan_ewlink_api.py" példaprogramban megtekinthető a működése, az API hívások dokumentációját pedig az "other/" mappa alatti "SONOFF DIY MODE Protocol Doc v1.4.md" állományban olvasgathatjuk. Böngésző címsorából hiába próbálkozunk, nem fog menni, mivel az GET lekérést indít, nem mellesleg a POST módszernél mellékelni kell az eszköz azonosítóját is a kéréshez.

A vezérlési szerkezet ilyesmi a bekapcsolásra pl:

URL: http://BASICR3_IPCIME:8081/zeroconf/switch
POST adat:
{
"deviceid": "xxxxxxxxxx",
"data": {"switch":"on"}
}

Sajnálatos módon Domoticz python plugint nehéz úgy készíteni, hogy több szálon futó python programot teszünk alá, mivel ez sosem volt túl stabil része a Domoticz-nak, de egy külső Python MQTT átjáróval megoldható. Mutatom is, hogyan.

Telepítsük fel a függőségeivel és futtassuk a SonoffDIY2MQTT alkalmazást:

sudo apt install python3-pip
git clone https://github.com/enesbcs/sonoffdiy2mqtt.git
cd sonoffdiy2mqtt
sudo pip3 install paho-mqtt requests zeroconf
python3 sonoffdiy2mqtt.py

Beállítás1:

Megnyitjuk a sonoffdiy2mqtt.json állományt, beállítjuk az alapértelmezett "mqtt_type":"domoticz" módot, beállítjuk továbbá az mqtt_address mezőbe a saját MQTT szerverünk IP címét, valamint az mqtt_port-ot szükség szerint.
Majd ahogyan Tasmota esetén tenni szoktuk vegyünk fel Kapcsolókat a Domoticz-ban a Dummy hardver alá (ahogy a legelső Domoticz bejegyzésnél is írtam róla) ezeket az IDX számokat vigyük fel a device_idx_list alá. Itt alapból öt bejegyzés van, de akár 250-re is bővíthetjük, ha van rá igényünk.
A "sonoff_device_id"-hez vegyük fel az eszközünk gyári, tíz karakteres Sonoff-ID-ját, ugyanebbe a sorba pedig az "outlet0" mellé a hozzá tartozó, és Domoticz-ban már létrehozott IDX számot.
És honnan tudjuk mi az ID-je az eszközünknek? Egyszerűen indítsuk el a programot és kiírja konzolra, hogy "eWeLink DIY plug found: xxxxxxxx" a csupa x helyén lesz az ID-je az eszközünknek, ez után már be tudjuk másolni a konfig állományba és következő indításnál már használja is. (ez gyakorlatilag a címfordító lista a programnak)

Beállítás2:

Ha azt írjuk be a sonoffdiy2mqtt.json beállításfájlba, hogy "mqtt_type":"shelly" akkor a program a Sonofftól Zeroconf-on keresztül bejövő állapotváltozásokat a Shelly API-nak megfelelő MQTT útvonalon és módon továbbítja. Amennyiben a Domoticz alá (de más, MQTT képes otthonautomatizáló rendszerrel is működhet persze) feltelepítjük a Shelly1-nél leírt módon a Shelly_MQTT python plugint, és engedélyezzük, ez esetben az IDX-ekkel nem kell fáradnunk, mert öntanuló módon felveszi az aktív eszközöket a plugin. Fából vaskarika? Lehet, de működik. :)

Szorgalmi feladat: állítsuk be, hogy a sonoffdiy2mqtt.py szkript automatikusan induljon a rendszerindításkor, mert ha nem fut, nincs ami fordítsa és továbbítsa az infókat.

Csak csendben teszem hozzá, a korábban megjelent, és korábbi Sonoff-ok által ismert LAN módhoz (bár ez még macerásabb, mint a DIY mód) is elérhető hasonló fordítóprogram, ami innen tölthető le:

https://github.com/enesbcs/Shelly_MQTT

Megéri?

Ha nincs UART illesztőnk a firmware cseréhez, és kényelmesek vagyunk, feltétlen. Egyébként nem.

A bejegyzés trackback címe:

https://bitekmindenhol.blog.hu/api/trackback/id/tr7215001322

Kommentek:

A hozzászólások a vonatkozó jogszabályok  értelmében felhasználói tartalomnak minősülnek, értük a szolgáltatás technikai  üzemeltetője semmilyen felelősséget nem vállal, azokat nem ellenőrzi. Kifogás esetén forduljon a blog szerkesztőjéhez. Részletek a  Felhasználási feltételekben és az adatvédelmi tájékoztatóban.

karolyia 2020.01.14. 15:48:01

sikerült egy miniből bricket csinálni. felraktam a tasmota_minimal.bin-t....persze utána olvastam, hogy véletlenül se rakjam azt rá. elméletileg rx/tx pineken fel tudom rakni amit akarok, vagy kuka? azért kérdezem, mert feleslegesen nem forrasztgatok, amit alig látok.

karolyia 2020.02.03. 10:46:12

kérdés: lehet, hogy tényelg kuka a mini? a pyflasher nem tud csatlakozni. beforrasztottam mindent korrektül. a soros-usb moytó is hibátlan, próbáltam mással direkt, de csak vár a com porton a csatlakozásra. ha nyomom a gombot, ha nem.

lt1977 2020.02.03. 11:43:54

üdv. Új vagyok még itt ezért lehet hogy nem a megfelelő helyre írok, ebay-n vettem egy Sonoff 4ch Pro R2 smart relét ami jól is működik, én impulzus üzemmódban használom (inching) viszont igazából arról "nem kapok" visszajelzést hogy amit működtettem róla az ténylegesen abba az állapotba is került pl. egy tolóajtónál hogy végállásba ért vagy esetleg valaki ezt onnan időközben elmozdította, tehát a kérdésem lehet úgy módostani a firmware-t hogy az esetleg nem használt GPIO lábakat bemenetként használva ez az alkalmazásban real timeban is látszódjon ?

eNeS 2020.02.03. 17:10:43

@karolyia: gondolom ez alapján csináltad.. user-images.githubusercontent.com/3912017/66733148-dfc3d300-ee5e-11e9-8715-87c8ecb844a7.jpg próbáltad direktben a gomb helyett a GPIO-0t GND-re húzni?

eNeS 2020.02.03. 17:11:18

@lt1977: ha módosítod a firmwaret nem fog látszódni egyáltalán az alkalmazásban. ha a gyárira gondolsz legalábbis.

lt1977 2020.02.03. 18:07:21

@eNeS: ok és ha nem gyári pl. tasmota ? vagy van egyáltalán mód erre ? mert (gondolom én) pl az ablak érzékelőnél is van valamilyen visszajelzés az alkalmazásban különben honnan látom az aktuális státuszt ? bocsi a fura kérdésekért de én még csak most ismerkedem ezzel és a leírásokban sokszor úgy "reklámozzák" hogy csak a fantázia szab határt a lehetőségeknek.

eNeS 2020.02.03. 19:44:41

Bár a 4ch elsősorban kimenetvezérlésre készült, ha Tasmotát teszel fel rá, akkor az egyébként soros kommunikációra fenntartott GPIO1 és GPIO3 használhatóvá válik opcionális szenzor számára. De ezek meglehetősen speciális lábak, ha pl a GPIO1-re (RX) kötsz nyitásérzékelőt, valószínűleg be sem fog tudni bootolni az eszköz. Csak a fantázia szab határt, ha meg tudod csinálni. Én magamnak gyártottam inkább multiszenzorokat.. bitekmindenhol.blog.hu/tags/projekt amikben annyi és olyan szenzort és relét kötök az ESP chipre, olyan kombinációban, amit szeretnék, és amennyi ráfér. :)

lt1977 2020.02.04. 09:08:07

köszi az infót, átgondolom, lehet hogy egy RF Bridge és a hozzá tartozó DW1-el megoldható és nem kell firmwaret cserélnem mert attól egy kicsit fázom nincs gyakorlatom benne.

karolyia 2020.02.04. 13:47:36

@eNeS: pont így, de semmi. próbáltam gombbal, direktbe a gpio0-gnd-t is, de csak connecting ......._____.......____...... nagyon úgynéz ki, hogy kuka, de elrakom fiókba. márcsak a 16A-es relé miatt is

Friss topikok

Címkék

433mhz (12) adc (1) ads1015 (2) ads1115 (1) ajtó (1) alkatrész (23) alternatív kapcsoló (1) am2320 (1) amg8833 (1) analóg (1) android (1) apds-9960 (1) arduino (1) arduinoeasy (5) automatizálás (3) basic (2) basic r3 (1) bemenet (2) bh1750 (1) blitzwolf (2) bluetooth (8) camhi (2) csengő (1) csináld magad (22) dht22 (1) digoo (1) DIY (2) diy (25) do-it-yourself (26) domoticz (7) ds18b20 (1) ds3231 (1) easpeasy (1) ebay (3) érintő (2) érintőkapcsoló (6) érzékelő (11) esp-01 (2) esp32 (2) esp8266 (18) espeasy (2) espurna (1) esp projekt (18) Eview7 (1) feldolgozó (1) felhő (1) fényérzékelő (1) firmware (7) flame detector (1) flash (1) fogyasztásmérő (3) ftdi (1) füstérzékelő (1) gesture (1) gpio (1) hang (4) hangjelző (1) hc-sr501 (1) hőmérséklet (12) htu21 (1) impulzus relé (1) izzó (1) javascript (1) jelenlétérzékelő (2) kamera (13) keresztkapcsoló (1) kézmozdulat (1) kijelző (3) kimenet (18) konnektor (4) lan (3) lángérzékelő (2) led (3) linux (3) logic level converter (1) lua (1) lux (1) maple mini (2) mcu (3) mobil (1) mosfet (1) mozgás (3) mq-2 (2) mqtt (1) MQTT (1) működtető rendszer (5) nedvesség (1) neopixel (1) Node-RED (1) nvr (2) nyitás (4) okosház (5) okosizzó (2) okosotthon (9) oled (1) onvif (5) opencv (1) openwrt (3) orange pi (4) páratartalom (6) php (1) pow (1) programozás (7) projekt (22) proximity olvasó (1) python (1) raspberry (12) raspberry projekt (5) raspbian (1) rcwl-0516 (1) reed (1) relé (20) remote (2) rf (2) rgb (6) rögzítő (2) router (1) rpieasy (1) rtc (1) rtsp (1) shelly (10) shelly em (1) shutter (1) solid state relay (1) sonoff (14) sonoff dual (1) SonOTA (1) soros (1) ssr (1) stm32 (4) szenzor (11) szilárdtest relé (1) szintillesztő (2) sziréna (1) szkript (2) szünetmentesítés (4) t1 (1) t4 (1) tasmota (2) Tasmota (1) távirányító (3) Telegram (1) termékteszt (55) termosztát (1) touch (2) ups (4) usb (5) usb hub (1) valós idejű óra (1) vezérlések (17) vezérlő (5) világítás (4) villanykapcsoló (11) webkamera (1) wiegand (1) wifi (20) ws2812 (1) xiaomi (5) xm (1) xmeye (1) yoosee (1) zigbee (4) zwave (1) Címkefelhő