SUPLA => Supla-mqtt-client => MQTT => Home Assistant

Integruje właśnie moje 26 urządzeń (w sumie 55 kanałów) do których wgrałem różnymi sposobami oprogramowanie SUPLA (już jakiś czas temu ale to inna długa historia).
Uruchomiłem pośrednika na dockerze w postacji programu Supla-mqtt-client i teraz próbuje stworzyć odpowiednie wpisy w pliku configuration.yaml tak by obsłużyć wszystkie kanały z serwera SUPLA.
Oto co udało mi się metodą prób i wielu błędów sprawić by pokazywało poprawny stan i można było wysyłać komendy.
Przykład konfiguracja dla light:

- platform: mqtt
      name: 'Listwa LED kinowy test1'
      schema: template
      state_topic: 'supla/channels/status/relay/13239'
      state_template: '{{ "on" if value_json.on else "off" }}'
      command_topic: 'supla/channels/command/13239'
      command_on_template: '{ "idx": 13239, "on": true }'
      command_off_template: '{ "idx": 13239, "on": false }'
      qos: 1
      retain: true
      optimistic: false

Niestety nie wiem jak do takiej konfiguracji władować jeszcze stan dostępności z podanego payload:
{“id”: 13239, “caption”: “LED kinowy”, “on”: 1, “online”: 1}
tag “online” przyjmuje wartości 1 lub 0
Próbowałem z availabilty_template ale nie jest on akceptowany.

Niestety supla-mqtt-client nie działa jak Tasmota więc nie można się wzorować na nim, gdyż tu dostępność i stan kanału jest w jednym topicu - nie ma osobnego tematu dla availabilty.

Podpinam się pod temat, bo nie chce tworzyć nowego czy ktoś przeszedł to ?

Mam Mosquitto broker i jak zmieniam w configu z active: false na active: ftrue to mi szlak trafia wszystkie urządzenia podpięte przez Z2M. Mam trochę rgb supli i szkoda wyrzucać

https://forum.supla.org/viewtopic.php?f=63&t=7844&hilit=Mqtt

Doskonale znam treść tamtego forum, Jednak że wierność ponad wszystko :stuck_out_tongue_winking_eye: i wole w domu pisać niż u obcych to po 1 po 2 nie poruszana jest tam kwestia tego mojego przypadku :slight_smile:

A sie niedawno zarejestrowałem u tego obcego na forum, zaraz okrzyknięty zostanę zdrajcą (z urzędu) :smile:

@Darkman a wracając do problemu, wg dokumentacji MQTT Light - Home Assistant brakuje Ci parametru availability albo availability_topic, możesz użyć tylko jednego z nich. Jest tam kilka przykładów, powinne byc pomocne.

Ale wystarczy z tego samego topicu raz wyciągnąć dane do state a potem z tego samego topicu wyciągnąć dane do availabilty.

1 Like

Ja tam lubię chodzić po chałupach, jak mnie nikt nie wygania to i konwersacja się zdarzy, ponotuję, swoje skorzystam i wracam na ciepłą pleba…do domku. Jak mnie nie przyjmują to chociaż þrzez okna popatrzę co oni tam mają nowego (nie, że bym był księdzem po kolędzie :yum:).

Może i niedawno ale śledzę :slight_smile: i rozkoszuję oczka tym co tu piszą dobrzy ludzie:)

Przejrzałem jeszcze raz dokument, sprawdzilem dokumentację, zrobiłem u siebie (nie ma Supli ale nie jest mi potrzebna) i wg mnie w tym dokumencie jest błąd bo w HA korzysz z add-on Mosquitto-broker dlatego aby działały opcje związane z customize wymagany jest katalog
/share/mosquitto, trzeba go ręcznie stworzyć (np. poprzez udział Samby). W tym katalog proszę stwórz wspominany plik bridge.conf z odpowiednią konfiguracją.

poczyniłem jak mówisz :slight_smile: ni ewywaliło nic z dotychczasowych integracji … jednak w logu nic nie widać nowego

Niestety, ale w tamtym czasie kiedy to potrzebowałem, nikt nie potrafił mi pomóc (w tym nawet Artur), ale w końcu wymyśliłem inny sposób - wchodzące dane obrabiałem przez NodeRED i tworzyłem w nim nowy topic na potrzeby availibility :slight_smile:
Konwersja działała mi bardzo dobrze, dopóki nie zauważyłem że sam program “Supla-mqtt-client” nie odświeżał często stanu dostępności (online) i jak np. urządzenie znikało z sieci (problem z niestabilnym łączem LTE) to status online robił się 0, ale jak powracało urządzenie, to już nie wchodził status online:1 tylko musiało nastąpić zmiana stanu urządzenia, dopiero wtedy odczytywało nowy stan online:1 :frowning:
Porzuciłem stan availibility i jakoś mi to nie uprzykrzyło życia.

Oto jakie nody wymyśliłem na potrzeby stanów online:

[{“id”:“9de53eb0.57a49”,“type”:“tab”,“label”:“Supla availibility”,“disabled”:false,“info”:""},{“id”:“4efcd79e.3c4728”,“type”:“mqtt in”,“z”:“9de53eb0.57a49”,“d”:true,“name”:"",“topic”:“supla/channels/status/relay/#”,“qos”:“1”,“datatype”:“auto”,“broker”:“1ea19073.90b5c”,“x”:140,“y”:60,“wires”:[[“df4ea1a9.6e534”]]},{“id”:“df4ea1a9.6e534”,“type”:“function”,“z”:“9de53eb0.57a49”,“name”:"",“func”:“p = JSON.parse(msg.payload);\nnode.log(typeof p);\nmsg.payload=p.online;\nif(p.online==1) {msg.payload = “Online”} else { msg.payload = “Offline”};\nmsg.topic=“supla/channels/status/LWT/”+p.id;\nmsg.retain=true\nmsg.qos=1\nreturn msg;”,“outputs”:1,“noerr”:0,“initialize”:"",“finalize”:"",“x”:440,“y”:60,“wires”:[[“8d158e86.1132e”]]},{“id”:“8d158e86.1132e”,“type”:“mqtt out”,“z”:“9de53eb0.57a49”,“name”:"",“topic”:"",“qos”:“1”,“retain”:“true”,“broker”:“1ea19073.90b5c”,“x”:590,“y”:120,“wires”:[]},{“id”:“9d1c66b4.e93f18”,“type”:“mqtt in”,“z”:“9de53eb0.57a49”,“d”:true,“name”:"",“topic”:“supla/channels/status/switch/#”,“qos”:“1”,“datatype”:“auto”,“broker”:“1ea19073.90b5c”,“x”:140,“y”:120,“wires”:[[“df4ea1a9.6e534”]]},{“id”:“19db6c79.8d4e54”,“type”:“mqtt in”,“z”:“9de53eb0.57a49”,“d”:true,“name”:"",“topic”:“supla/channels/status/thermometer/#”,“qos”:“1”,“datatype”:“auto”,“broker”:“1ea19073.90b5c”,“x”:160,“y”:180,“wires”:[[“df4ea1a9.6e534”]]},{“id”:“1ea19073.90b5c”,“type”:“mqtt-broker”,“name”:“mqttbroker”,“broker”:“localhost”,“port”:“1883”,“clientid”:“node-red”,“usetls”:false,“compatmode”:false,“keepalive”:“60”,“cleansession”:true,“birthTopic”:"",“birthQos”:“0”,“birthPayload”:"",“closeTopic”:"",“closeQos”:“0”,“closePayload”:"",“willTopic”:"",“willQos”:“0”,“willPayload”:""}]

Z biegiem czasu i nabierania doświadczenia w HA, zrozumiałem jaka SUPLA jest ograniczona i już nawet do kilku urządzeń na nowo wgrałem firmware Tasmota :stuck_out_tongue: rezygnując z SUPLA.

Spróbuj za pomocą tych danych połączyć się do brokera MQTT Supli za pomocą programu MQTT Explorer, zweryfikujesz poprawnośc danych i połączenia.

image a widzisz :), wydłubałem i coś sie dzieje image…a jednak sie nie dzieje :slight_smile:

Po testach wspólnie z @Łukasz_Potapczuk udało się uruchomić tą integrację, należy:

  • w konfiguracji Add-on Mosquitto broker dokonać poniższej zmiany:
    customize:
      active: true
      folder: mosquitto
    
  • utworzyć dodatkowy katalog /share/mosquitto, np. poprzez udział Samby.
  • utworzyć w tym katalog plik bridge.conf z odpowiednią konfiguracją:
    connection bridge-khjhgdfgcbvjhhh6
    address beta-cloud.supla.org:8883
    topic supla/# in
    topic homeassistant/# in
    topic supla/+/devices/+/channels/+/execute_action out
    topic supla/+/devices/+/channels/+/set/+ out
    remote_username *****@******
    remote_password *****
    bridge_capath /etc/ssl/certs
    
    gdzie khjhgdfgcbvjhhh6 to dowolny ale unikatowy, losowy, niepowtarzalny ciąg znaków.
  • zrestartować Mosquitto broker
  • sprawdzić czy w urządzeniach w HA pojawiło się urządzenie Zamel.
  • cieszyć się z udanej integracji :slight_smile:
1 Like

Witam. Skonfigurowałem Mosquitto z Suplą według powyższych wskazówek (bridge) i widzę urządzenia tylko nie mogę nimi sterować :disappointed:
Wyświetlają mi się poprawnie stany, temperatura, wilgotność tylko niczego nie mogę uruchomić z poziomu HA.
Wcześniej suplę miałem zintegrowaną bez własnego brokera (1 wersja integracji) i wszystko działało.
Siedzę nad tym kupę czasu i nic z tego. Proszę o jakąś radę .

Mam gorącą prośbę
Czy Możesz podesłać mi to rozwiązanie? Chyba coś mi się z mózgiem dzieje i już nie myślę.
ja korzystam z mqtt aby pobierać dane z platformy m.ginlong.com, chciałbym jeszcze aby licznik supla również mi te dane przesyłał.
nie wiem co robię źle, ale jakoś trudno mi to ogarnąć

  1. czy mqtt brocker zainstalowany jest poprzez dodatek w HA czy bezpośrednio z konsoli linux ?
  2. jakie wpisy masz w mosquitto.conf ?
  3. czy gdzieś w konfiguracji jest możliwość ustawienia ścieżki do bridge.conf .
    Z góry dziękuję i przepraszam że zawracam głowę

witam sie jako nowy user
Kilka razy próbowałem tych ustawień i nic
Wywala mi w logu mqtt broker error

[20:43:59] INFO: Starting mosquitto MQTT broker...
1642448639: Loading config file /share/mosquitto/bridge.conf
1642448639: Error: Unknown configuration variable "addres".
1642448639: Error found at /share/mosquitto/bridge.conf:2.
1642448639: Error found at /etc/mosquitto/mosquitto.conf:33.

Oprócz tego przestaje poprawnie działać mqtt broker - gubi dotychczasowe urzadzenia
Gdy wrócę do wpisu false ponownie mqtt działa

Literówka, powinno być address.

To w logach tak sie pojawilo a w pliku /config/mosquitto/bridge.conf mam poprawnie :

connection bridge-xxxxxxxxxxxxxxx
address xxxx.supla.org:8883
topic supla/# in
topic homeassistant/# in
topic supla/+/devices/+/channels/+/execute_action out
topic supla/+/devices/+/channels/+/set/+ out
remote_username aaaaaaaaaaaaaaaaaaaaaaaa
remote_password bbbbbbbbbbbbbbbbbbbbbbbbbb
bridge_capath /etc/ssl/certs

Pliki tworze i edytuje w “File editor” - ale chyba to nie powinien byc problem np. uprawnien etc …

Logi są wynikiem działania programu, nie da sie ich "oszukać i “one nie kłamią”. Jeżeli poprawiłeś plik, to ponownie uruchom dodatek i ponownie sprawdź logi (zwróć uwagę na datę). Jeżeli w logach nadal jest error (“addres”) to:

  • prawdopodobnie w innym miejscu również jest literówka
  • prawdopodobnie plik, który edytujesz nie jest czytany przez dodatek, może plik znajduje się w nieodpowiednim katalogu.

Poszukam, ale pliku nie edytowalem (oprocz poufnych na potrzeby wklejenia tutaj) wiec musi byc gdzies indziej blad
Dzieki za podpowiedz
“File editor” czyta pliki z katalogu /config a to jest /share wiec powinny byc one widziane dla dodatku mqtt
/share/mosquitto/bridge.conf - jest w /config ale /etc/mosquitto/mosquitto.conf nie istnieje u mnie
Przynajmniej nie widze takiego pliku ani folderu w terminalu
Plik bridge.conf ma uprawnienia rw/r/r wiec powinien byc widoczny do odczytu dla mqtt
Teraz to juz nie wiem skad logi z takimi bledami