Okos otthon is fókuszban

Arduino kalandok

Arduino kalandok

Asszisztens és MiLight

2018. december 10. - denx

Előző bejegyzésemben meséltem arról, hogy a MiLight nevű izzók hogy is működnek. Szóba került a rádiós kommunikáció, illetve a Wifi-re kapcsolódó MiLight eszköz is. Ahol abbahagytam viszont a saját Wifi-s eszköz volt, lássuk hát mi is ez...

NRF24L01

Ahogy arról már szó esett, a MiLight-nak van egy saját rádiófrekvenciás protokollja, ami 2.4 GHz-es tartományban működik. Ahhoz, hogy itt tudjunk mi is jeleket küldeni (és fogadni) kell egy speciális eszköz. 

A sok helyen használt és olcsó NRF24L01 névre hallgató eszközre van itt szükségünk. Ahogy a képen is látható nem foglal sok helye - pláne hogy van egy még kisebb, bélyeg-kivitelű verziója is, na az aztán tényleg helytakarékos. Ez egy olyan kis cucc, amivel küldeni és fogadni is lehet rádiós jeleket. Tipikusan jó távoli Arduino-k összekötésére, kétirányú kommunikációjára. A MiLight-tal való együttműködésre jellemzően csak egy irányra van szükség - kezdetben.

A csatolófelülete az eszköznek egy SPI busz, ami az Arduino világában elég elterjedt és van rá mindenféle lib is. Hogy a dolog összeköttetésbe kerülhessen az asszisztenssel nem kifejezetten Ardu-ra van szükség, hanem sokkal inkább egy ESP8266-ra. Konkrétan Wemos D1 Mini amit én hadra fogtam, mivel ennek már van elég lába, hogy kínlódá nélkül lehessen rákötni az SPI buszt.

HUB

Szoftver oldalon - ahonnan a megoldás jön - egy open source projektet találtam, ami ideális számomra. ESP8266 Miligh Hub a neve és pont arra találták ki, amire nekem szükségem van.

Az ESP és az NFR összekötéséhez csak jumper kábelekre van szükség, így hasonlóan a 433-as gateway-hez, ez is triviálisnak tűnik - csak itt kicsit több a kábel.

Konfigurálni hasonlóan kell, mint a legtöbb ESP-s eszközt, wifi-re kell rakni, utána megnyitni az IP-jét böngészőben. Rögtön mutat egy olyan oldalt, ami a távirányítóhoz hasonlít, csak legfelül be kell neki adni egy címet. Nos ez a cím egy olyan fura dolog, ami a gyári távirányítókba (és ha jól értem a gyári wifi gateway-ekbe is) bele van égetve. itt gyakorlatilag megadhatjuk, hogy milyen című távirányítót akarunk szimulálni, de sokkal nagyobb a szabadságunk: a legördülő menüből váltogathatjuk a címeket bármikor. Így olyan, mintha rengeteg távirányítónk lenne (a program alkotója szerint egész pontosan 262144).

Mivel több fajta MiLight izzó létezik és ezekhez küldönböző távirányítók is kellenek, ezért itt a felületen is ki tudjuk választani, hogy nekünk például RGB+CCT típusú izzót kell vezérlenünk.

Sniff

Külön említésre érdemes még, hogy képes a cucc elkapni valódi távirányítók jeleit is. Ez 2 dologra jó:
1. tudjuk imitálni a meglévő távirányítónk használatát
2. MQTT-n el tudja küldeni a központunknak a távirányítón megnyomott gombokat.

Asszisztens

MQTT-n keresztül, illetve a gyári Wifi Gatewayt emulálva is lehet használni a cuccot. Az utóbbi annyit jelent, hogy UDP csomagokat vár a netről, és úgy csinál, mint a gyári Gateway.

Ami nekem fontosabb és szimpatukisabb az az MQTT interfész. Ez kicsit rendhagyóan van itt kitalálva, ugyanis a szerver, port, user, password részen túl összesen 2 topikot kell csak definiálni, de ezeket rendhagyóan. Van egy pattern, amiből következik hogy a másik kettő hogy néz ki:
- pattern: meg kell adni, hogy milyen logika szerint kell kinézzen egy topik ahova az utasításokat várja / avagy küldi a hub. Nálam ez így fest: "milight/:device_id/:device_type/:group_id" (ha jól emlékszem ez a gyári érték)  A kettősponttal kezdődő szavak helyére értékek kerülnek, majd az asszisztens konfigurációjában bemutatom a konkrét példán keresztül.
- update topic: "milight/update/:device_id/:device_type/:group_id"
- state topic: "milight/state/:device_id/:device_type/:group_id"

Jól látszik, hogy a 2 topik csak 1-1 szóban különbözik, ami utal arra, hogy utasítást vár ott a hub, vagy státuszt küld.

Nekem eleinte 1 db ilyen izzóm volt, amit beállítottam a 0x14-es címre. Jah igen! Eddig nem említettem, de az egész MiLight rendszer azon alapul, hogy az izzók, amikor feszültséget kapnak, akkor az első néhány másodperben ha érkezik "bekapcsolás" üzenet az éteren keresztül, akkor az abban található címet úgymond megtanulják. Szaknyelven ezt párosításnak hívják.

Home Assistant konfigjában nálam így néz ki az ide vágó rész:

light:
- platform: mqtt_json
  name: "Háló lámpa"
  command_topic: milight/0x0014/rgb_cct/1
  state_stopic: milight/state/0x0014/rgb_cct/1
  brightness: true
  rgb: true
  white_value: true
  effect: true
  effect_list: [colorfade_slow, colorfade_fast, flash]
  optimistic: false
  qos: 0
  retain: true

(Most hogy jobban megnézem a command topic-ba lehet kellene legyen egy update szócska is, de valamiért így is megy nekem.)

A HASS felületén pedig így jelenik meg:

Vannak további terveim a MiLight-tal, de nem lövöm le előre a poént.

A bejegyzés trackback címe:

https://ardu.blog.hu/api/trackback/id/tr8714437398

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.
süti beállítások módosítása