Mostek milight na module Wemos D1 mini

Do oświetlenia dekoracyjnego używam systemu Mi-Light, są pod niego podłączone głównie taśmy LED RGB. System ten jest tani, łatwo konfigurowalny z Domoticzem oraz posiada spory wybór pilotów. Ma on jednak dwie małe wady: Pierwsza z nich to brak dwukierunkowej komunikacji z centralką, włączając światło pilotem nie zmieni się nam stan w Domoticzu. Drugi najważniejszy problem to obsługa przez mostek Wi-Fi maksymalnie czterech stref, czyli gdybyśmy chcieli rozbudować system o kolejne strefy i sterować nim przez Domoticza musimy dołożyć drugi mostek.
Na szczęście z pomocą przychodzą nam użytkownicy GitHuba, powstał tam projekt który emuluje mostek Wi-Fi oraz steruje praktycznie dowolną ilością stref. Kolejny plus to taki, iż możemy go zainstalować na popularnej płytce Wemos opartej o układ ESP8266

Spis elementów:
• Wemos D1 mini
• Moduł bezprzewodowy NRF24L01 + PA + LNA
• Wemos DC Power Shield
• kondesator elektrolityczny 220µF
• Płytka PCB

  • Podłączenie sprzętu.
  • 1. Podłączamy moduł nRF do Wemosa jak na schemacie


    Bardzo ważnym elementem jest dodanie kondesatora do pinów GND i VCC w module nRF, bez tego elementu nie da się sparować żarówek, pomimo iż układ będzie działał i odbierał pakiety. Na różnych forach podają iż wystarczy kondensator o pojemności 10µF, niestety u mnie układ działał słabo, często miał problemy z komunikacją. Metodą prób i błędów określiłem iż najlepszy będzie kondensator o pojemności ok 220µF

    UWAGA!!!
    Układ NRF24L01 + PA + LNA nie posiada ekranowania, przy testach zauważyłem że zbiera sporo zakłóceń, co przekłada się na problemy z działaniem. Postanowiłem zrobić ekran z foli aluminiowej i taśmy. Okleiłem folię z dwóch stron, kładąc na jednej stronie miedziany drucik tak aby stykał się z folią, po czym owinąłem układ NRF a drucik przylutowałem do masy. (Zdjęcia w galerii)

    • Instalacja i konfiguracja oprogramowania.
    • 2. Instalacja oprogramowania milight hub do modułu Wemos
      Pobieramy plik bin ze strony projektu i wgrywamy do wemosa. Ja osobiście używam narzędzia dołączonego do ESPeasy. Wystarczy tylko wybrać port COM oraz odpowiedni plik bin, a resztę zrobi za nas aplikacja.

      3. Konfiguracja Wi-Fi
      Odnajdujemy sieć o nazwie ESPXXXXX i łączymy się do niej podając hasło milightHub. Po sparowaniu otworzy się w przeglądarce okno konfiguracji do naszej sieci bezprzewodowej. W ustawieniach możemy od razu ustawić stały adres IP, i tym podobne. Nie będe opisywał tego w szczegółach bo to jest prosta czynność.

      4. Parowanie żarówek i sterowników
      Po prawidłowym wykonaniu kroku trzeciego, i wpisaniu adresu IP powinna wyświetlić się strona www zawartością umożliwiającą parowanie nowych urządzeń, jak na obrazku poniżej.

      Aby ułatwić sobie sprawę przyjmijmy że, grupa to 4 urządzenia (kanały) w jakimś pomieszczeniu do których przypisany jest jeden pilot. Ile grup tyle pomieszczeń, i tyle pilotów do obsługi.
      Aby prawidłowo sparować sprzęt należy postępować w odpowiedniej kolejności.

      Remote Type - Wybieramy rodzaj sterownika lub typ żarówki jaki posiadamy
      Group - Wybieramy numer kanału w grupie, np. oświetlenie sufitu pod numerem 1 (kanały odpowiadają numerom na pilocie)
      Device ID - Wpisujemy numer ID pilota którego używamy w tej grupie (pomieszczeniu)
      Device Name - Nadajemy nazwę każdemu kanałowi, np. dla kanału pierwszego: Mały pokój sufit.
      Pair - Podpinamy żarówkę lub sterownik do prądu, i w ciągu pięciu sekund naciskamy zielony przycisk Pair. Sprzęt powinien zamrugać kilka razy białym światłem

      Bardzo ważnym elementem jest pole Device ID. To ono tworzy grupę w której możemy przypisać 4 urządzenia (kanały). Jeżeli zależy nam aby Domoticz zmieniał status gdy używamy pilota. Co było niemożliwe przy fabrycznym mostku. Należy używać ID pilotów z których korzystamy. Natomiast jeżeli nie mamy pilota albo nie interesuje nas aktualizacja stanu w Domoticzu, możemy wymyśleć sobie dowolny numer ID. trzeba tylko pamiętać aby był on w formie 0x3434, po 0x możemy podać dowlone cyfry lub wymieszać z literami. Nie można wpisywać tylko takiego ciągu znaków 0x0001, 0x0002, itd. W tym wypadku nie zadziała próba sparowania urządzeń.

      5. Konfiguracja połączenia z Domoticzem
      Komuniukacja z Domoticzem może odbywać się na dwa sposoby. Tradycyjnie jak to miało miejsce przy fabrycznym mostku za pomocą portu UDP, ale nie będzie działać komunikacja zwrotna. Drugą metodą jest komunikacja za pomocą serwera MQTT, dzięki tej metodzie będziemy odbierać pakiety z pilota które będą aktualizowane w Domoticzu, to właśnie tą metodę opiszę najdokładniej.

      Logujemy się do mostka Milight, klikamy Settings i przechodzimy do zakładki MQTT. Ustawiamy parametry jak poniżej.

      MQTT server - Adres serwer MQTT
      MQTT topic pattern - milight/:device_id/:device_type/:group_id
      MQTT update topic pattern - milight/updates/:hex_device_id/:device_type/:group_id
      MQTT state topic pattern - milight/states/:hex_device_id/:device_type/:group_id
      MQTT user name - nazwa użytkownika mqtt
      MQTT password - hasło do serwera mqtt

      6. Dodawanie wtyczki do Domoticza
      Należy pobrać wtyczke z GitHub oraz skopiować ją do folderu domoticz > plugins > milighthub, następnie trzeba nadać jej prawa oraz zrestartować Domoticza

      https://github.com/galinette2000/espmilighthub-domoticz
      sudo chmod 755 domoticz/plugins/milighthub/plugin.py
      sudo service domoticz.sh restart
      Następnie przechodzimy w Domoticzu do zakładki Sprzęt i dodajemy nowe urządzenie. Wybieramy z listy ESP 8266 Milight Hub i zapisujemy.

      7. Konfiguracja wtyczki
      Wtyczke konfigurujemy jak na obrazku poniżej. Trzeba wpisać dane brokera MQTT oraz ścieżki do tematów które są takie same jak wpisywaliśmy w punkcie piątym, w ustawieniach Milight Hub.

      8. Dodawanie przycisków w Domoticzu
      Aby dodać przełączniki do Domoticza musimy upewnić się czy mamy włączoną opcję Akceptuj nowe urządzenia, następnie naciskamy przycisk kanału na pilocie lub w panelu Milight Huba. Po chwili przelącznik doda się do urządzeń.
      Dzięki tej metodzie, pilota możemy użyć nie tylko do włączania urządzeń z pod znaku marki Milight, a także i do sterowania każdym dowolnym sprzętem podłączonym do domoticza za pomocą skryptu LUA, poniżej przykład:

      --  [[ Sterowanie elementami oświetlenia za pomocą pliota Miligt  ]]
      
      commandArray = {}
      --  [[ Sterowanie oświetleniem mebli ]]
      if
          (devicechanged['Pilot mały pokój: Oświetlenie mebli'] == 'On') then
          commandArray['Oświetlenie szyb mały pokój']='On'
          
      elseif
          (devicechanged['Pilot mały pokój: Oświetlenie mebli'] == 'Off') then
          commandArray['Oświetlenie szyb mały pokój']='Off'
      end
      return commandArray