Shelly 1 Plus (Gen2)

Bár már a tavalyi év végén megjelentek a Shelly "Gen2" eszközök, ennek ellenére mindezidáig elhessegettem magamtól a késztetést, hogy vegyek egyet. De eljött ez a nap is. Íme az új Shelly1 Plus!

shellyplus.jpg

Kicsit olybá tűnik nekem, mintha az eredeti Shelly1 dizájnere közben részt vett volna a Tesla Truck bemutatóján, és azóta se tudta volna kiheverni az esetet. No azért nem mondom, hogy ronda, de szögletes lett. :) Na jó, persze csak viccelek, hiszen egy az egyben ugyanaz a formatervezés, mint a Shelly 1L.

A "Plus" másnéven "Gen2" eszközök immár ESP32 vezérlővel szereltek, így több szempontból is fejlettebb, gyorsabb, több memóriával rendelkeznek, ezért gyorsabb a reakciósebességük, van Bluetooth támogatásuk, amit ugyan csak arra használnak, hogy első indításkor ezzel tudjuk bekonfigurálni, illetve párosítani az eszközt, de ez is valami. E mellett immár egyidőben képes MQTT és Felhő kapcsolatot kiépíteni - ha úgy szeretnénk, mert persze Felhő nélkül is működik szerencsére. Az erősebb hardver miatt immár SSL támogatást is kapott, így HTTPS / MQTTS hálózati kapcsolatokat is ki tud építeni. Végre képes egy időben Wifi AP és Wifi kliens is lenni, így példának okáért a wifitől távol eső kertkapunkat is meg tudjuk okosítani, az eszköz által nyitott AP-ra telefonunkkal rálépve ki tudjuk adni a nyitás parancsot. (azért ne tervezzük router célú felhasználását, pár eszköznél több nem tud majd rá csatlakozni)
A 0.9-es firmware-től használható a helyi szkript futtatási lehetőség, vagyis képes önállóan akciókat indítani, bizonyos feltételek teljesülése esetén. És ez igen jól jöhet bármilyen integrációhoz..

Bekötés:

s1p_bekot.jpg

Különféle tápellátási módokat használhatunk, és jó hír, hogy tudunk kapcsolni erősáramot akkor is, ha gyengeáramról tápláljuk a készüléket.

Nézzük a beüzemelést, alapvetően a Shelly Cloud alkalmazással tudjuk beállítani akár wifin, akár bluetoothon keresztül az eszközt.
De én jobb szeretem a hagyományos, régi módszert, Shelly áram alá helyez, majd telefonon rácsatlakozom a megjelenő "ShellyPlus1-xxxxxxx" wifire, böngészőben megnyitom a http://192.168.33.1 webhelyet és megmagyarázom neki, hová csatlakozzon.

Webes felülete kicsit másképp néz ki, mint a Gen1 Shelly-k esetében, de jó érzékkel megtalálható a lentre került menüsávban a "Network" pont, és azon belül a "Wifi", ahol két SSID is megadható.
Tipp: az ugyancsak itt látható "Access point"-ot célszerű letiltani, mert gyárilag engedélyezett, és a konfiguráció befejezése után előreláthatólag erre már nem lesz nagy szükségünk, magától viszont nem kapcsolódik ki.shelly1p_w0.jpg

A szintén "Networks" alatt fellelhető "MQTT"-re máris beállíthatjuk saját szerverünk IP címét, bár igazából nem valószínű, hogy találunk hozzá kulcsra kész integrációt, de kiindulásnak jó. Jöhet az "Apply".
Extraként ha sikerült kapcsolódnia, ki is írja az IP címét, így nem kell keresgélnünk a saját hálózatunkon. De ha kellene, ugyebár a saját routerünkön rögtön látnánk, milyen címet kért, ám ha mégsem, akkor van egy remek kis Java alapú program (Java8 kell hogy legyen a gépünkön), ami Windows és Linux operációs rendszeren is működik, ez a ShellyScan.

Letöltése után kicsomagoljuk a ZIP tömörített állományból és az alábbi paranccsal futtathatjuk parancssorból:

java -jar <full path>\shellyscan-x.x.x.jar

 És máris írja, hogy mit talált:

shellyscanner.jpg

Az IP címét beütve a gépünkön egy tetszőleges böngészőbe, láthatjuk is a menüjét:

shelly1p_0.jpg

Amint látszik a megszokott időzítők és ütemezések megvannak, az alapbeállításokban a relé működési módja és indításkori állapota is meghatározható a korábbiakhoz hasonlóan. A nyomógomb állapotától akár függetleníthető is a relé a "Detached" üzemmódban, alapfunkcióiban megegyezik a régi Shelly1-essel.

Használat:

Eddig nagyon jó, és hogyan fogjuk ezt beépíteni okosotthon rendszerünkbe? A válasz: hát nem könnyen, tekintve, hogy a Gen2 eszközök teljesen más API-t használnak, így a korábbi Gen1 eszközökhöz készült integrációk mennek a kukába.
RPC parancsokat fogad HTTP-n, vagy akár MQTT-n keresztül is az eszköz, érdeklődők kedvéért: Shelly Gen2 API

Némi próbálkozás után azért találtam megoldást,a Domoticz MQTT Autodiscovery hardverjéhez tudjuk rendelni az eszközt, egy szkript segítségével. (Igen HA-val is működik - elvileg)
Az ötletet az Allterco github-ján fellelhető szkriptből merítettem, nagyon kreatív megoldás, bár kicsit körülményes, hogy minden eszközt saját magunknak kell felokosítanunk.

Először is, ha még nem tettük meg, a Domoticz Beállítás->Hardver fül alatt kell megkeresnünk az "MQTT Auto Discovery Client Gateway"-t és felvennünk, erről már értekeztem lásd  >>> ITT <<<.

Majd fogjuk magunkat, a Shelly1 Plus menüben elnavigálunk a "Scripts"-be, majd az "Add script"-re kattintunk:

shelly1p_2.jpg

Majd beszúrjuk a discovery.js szkript tartalmát, adunk neki egy nevet, és a "Save and Run"-ra kattintva aktiváljuk.

s1p_script1.jpg

A discover.js szkript tartalma pedig az alábbi: 

/**
 * @typedef {"switch" | "binary_sensor"} HADeviceType
 * @typedef {"config"|"stat"|"cmd"} HATopicType
 */

let CONFIG = {
  shelly_id: null,
  shelly_mac: null,
  shelly_fw_id: null,
  shelly_model: null,
  ha_mqtt_ad: "homeassistant",
  device_name: "VIRTUAL_SWITCH",
  payloads: {
    on: "on",
    off: "off"
  }
};

Shelly.call(
  "Shelly.GetDeviceInfo",
  {},
  function (result) {
    CONFIG.shelly_id = result.id;
    CONFIG.shelly_mac = result.mac;
    CONFIG.shelly_fw_id = result.fw_id;
    CONFIG.device_name = result.id;
    CONFIG.shelly_model = result.model;
    initMQTT();
  }
)

/**
 * @param   {HADeviceType}   hatype HA device type
 * @returns {string} topic - ha_mqtt_auto_discovery_prefix/device_type/device_id/config
 */
function buildMQTTConfigTopic(hatype) {
  return CONFIG.ha_mqtt_ad + "/" + hatype + "/" + CONFIG.shelly_id + "/config";
}

/**
 * @param   {HADeviceType}   hatype HA device type
 * @param   {HATopicType}    topic HA topic 
 * @returns {string}
 */
function buildMQTTStateCmdTopics(hatype, topic) {
  let _t = topic || "";
  if (_t.length) {
    _t = "/" + _t
  }
  return CONFIG.shelly_id + "/" + hatype + _t;
}

/**
 * @param {boolean} sw_state 
 */
function switchActivate(sw_state) {
  Shelly.call(
    "Switch.Set",
    {
      id: 0,
      on: sw_state
    }
  );
}

/**
 * @param {string} topic 
 * @param {string} message 
 */
function MQTTCmdListener(topic, message) {
  let _sw_state = message === "on" ? true : false;
  switchActivate(_sw_state);
}

Shelly.addStatusHandler(function (notification) {
  if (notification.component !== "switch:0") return;
  if (typeof notification.delta.output === "undefined") return;
  let _state_str = notification.delta.output ? "on" : "off";
  MQTT.publish(buildMQTTStateCmdTopics("switch", "state"), _state_str);
});

function initMQTT() {
  MQTT.subscribe(buildMQTTStateCmdTopics("switch", "cmd"), MQTTCmdListener);
  MQTT.publish(
    buildMQTTConfigTopic("switch"),
    JSON.stringify({
      name: CONFIG.device_name,
      "device": {
        "name": CONFIG.device_name,
        "ids": [CONFIG.device_name],
        "mdl": CONFIG.shelly_model,
        "mf": "Allterco",
        "sw_version": CONFIG.shelly_fw_id
      },
      "unique_id": CONFIG.shelly_mac + ":" + CONFIG.device_name,
      "pl_on": CONFIG.payloads.on,
      "pl_off": CONFIG.payloads.off,
      "cmd_t": "~/cmd",
      "stat_t": "~/state",
      "~": buildMQTTStateCmdTopics("switch")
    }),
    0,
    true
  )
}

UPDATE: időközben készítettem egy komplexebb integrációs szkriptet, >> github-on elérhető. <<

A főképernyőn meggyőződünk róla, hogy engedélyezett (Enable) a szkript:

s1p_script2.jpg

Ha mindent jól csináltunk, a Domoticz máris felismerte az új Kapcsoló típusú eszközt:

s1p_domo1.jpg

s1p_domo2.jpg

Beltartalom:

s1p_back.jpg

A készülék lelke egy ESP32-U4WD kétmagos (2022 óta, előtte egymagos volt) 32 bites LX6 240Mhz processzorral szerelt, és integrált 4MB flash tárhellyel ellátott CPU, 520KB memóriával. Nem mellesleg hardveresen gyorsított AES,SHA2,RSA titkosítást támogat, így az SSL titkosított adatátvitel használata nem igényel annyi erőforrást, mint a korábbi generációnál. Hogy ne csak a vezérlő legyen kínai, a relé a Shellyknél szokásos Hongfa HF7520 012-HSTP, 12V DC tekercsfeszültséggel, névlegesen 16A/250V AC vagy 10A/30V DC kapcsolására alkalmas. No nem mintha a kínai eszközök ne lehetnének jók. :)

s1p_top.jpg

Ítélet?

A hardver nagyon jó, tetszik. Maga az alapszoftver sem rossz, bár az új API nem nyerte el a tetszésemet.. miből állt volna egy HA discoveryt beletenni a sok RPC hívás mellé? Már nem mondhatják, hogy nem fér a memóriába. Ám ezt a hiányosságot a szkriptelhetőséggel nagyjából orvosolták, így igazából bátran merem ajánlani. 

 

UPDATE: már nem kell szkriptet feltölteni rá, a ShellyTeacher 4 Domoticz elvégzi az MQTT-re illesztését! 

A bejegyzés trackback címe:

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

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.

Nincsenek hozzászólások.

Támogatók:
okosotthon.jpg
allterco.jpg

Utolsó kommentek

  • szenorb: Hello. Bekötöttem 12V-ra , a bemetére egy mozgás érzékelőt kötöttem. Szépen kapcsol a relé a késle... (2023.06.14. 06:48) Shelly okosrelé (Shelly1)
  • Melanoheliophobia: Üdv! Kb. 2 éve vásároltam két ugyanilyen okos izzót. Sajnos az egyik még garancia idő alatt eltávo... (2023.05.03. 16:50) Shelly Vintage okosizzó
  • eNeS: Lehetséges, bár az ESP8266-ot lassan ideje elfelejteni, ha nem helyi hálózatra akarsz vele forgalm... (2023.04.02. 08:43) Tasmota szkriptek
  • eNeS: @tomih: Thonnyban rebootot nyomva nekem se megy az NTP. De mikor lekapcsoltam a Thonnyt és rebooto... (2023.04.02. 08:40) Raspberry Pico és a LAN (W5100S-EVB-Pico)
  • krump_lee: Kedves eNeS! ESP8266 tasmota-val szenvedek, hiemq kapcsolat sehogy nem jön össze, sehol nem talál... (2023.04.02. 08:31) Tasmota szkriptek
  • Utolsó 20

Címkék

433mhz (12) alkatrész (22) alternatív kapcsoló (2) amg8833 (1) analóg (2) android (1) arduinoeasy (5) audio (1) automatizálás (3) bemenet (3) bk7231n (1) ble (1) blitzwolf (4) bluetooth (9) bridge (2) camhi (2) csináld magad (22) dimmer (1) diy (28) do-it-yourself (27) domoticz (11) ds18b20 (1) ebay (3) érintő (2) érintőkapcsoló (7) érzékelő (11) esp-01 (2) esp32 (11) esp8266 (21) espeasy (2) espurna (1) esp projekt (18) Eview7 (1) ewelink (1) feldolgozó (1) felhő (1) fényérzékelő (1) firmware (7) flame detector (1) fogyasztásmérő (5) ftdi (1) füstérzékelő (1) gázérzékelő (1) gpio (1) hang (4) hangjelző (1) hőmérséklet (22) https (1) ikea (1) impulzus relé (1) izzó (2) javascript (1) jelenlétérzékelő (3) kamera (18) keresztkapcsoló (1) kézmozdulat (1) kijelző (3) kimenet (21) konnektor (8) lan (9) lángérzékelő (2) led (3) linux (4) logic level converter (1) lua (1) lux (1) maple mini (2) mcu (3) micropython (1) mikrovezérlő (2) milkv (1) mobil (1) mosfet (1) mozgás (5) mpyeasy (4) mq-2 (2) mqtt (3) működtető rendszer (5) multiroom (1) nedvesség (1) neo (1) neopixel (1) Node-RED (1) nvr (4) nyitás (7) okosház (4) okosizzó (3) okosotthon (8) oled (1) onvif (8) openbeken (1) opencv (1) openwrt (4) orange pi (4) páratartalom (6) php (1) pico (1) pi pico (2) poe (1) programozás (9) projekt (25) proximity olvasó (1) python (2) raspberry (14) raspberry projekt (6) raspbian (1) reed (1) relé (27) rf (2) rgb (6) rock pi (1) rögzítő (2) rp2 (1) rpieasy (1) rtc (1) shelly (24) smartwise (1) solid state relay (1) sonoff (20) SonOTA (1) soros (1) ssl (1) ssr (1) stm32 (4) szenzor (11) szilárdtest relé (1) szintillesztő (2) sziréna (1) szkript (3) szünetmentesítés (4) t1 (1) tasmota (8) távirányító (3) Telegram (1) termékteszt (85) termosztát (2) touch (2) ups (5) usb (7) usb hub (1) valós idejű óra (1) vezérlések (20) vezérlő (5) világítás (5) villanykapcsoló (12) webkamera (1) wiegand (1) wifi (32) ws2812 (1) xiaomi (5) xm (4) xmeye (4) yoosee (1) zigbee (16) zwave (3) Címkefelhő
süti beállítások módosítása