FHEM - Hausautomations-Systeme > MQTT

Anbindung Sonoff (Tasmota) via MQTT an Fhem Probleme

<< < (4/5) > >>

Rince:
Ich wüßte jetzt nicht, wo bei einem Switch mit ein oder 2 Sensoren der Vorteil liegt, es wirklich getrennt zu behandeln. Aber ich kenne den Code auch nicht.
I.d.R. sollte es in unserem Fall ausreichen, den ganzen Topic Tree als 1 String zu betrachten.

Daher nochmals die Frage, was du mit deinem sonoff möchtest.

Vielleicht ist das so echt schneller den Code selber zu schreiben auf Grundlage von Pf@nnes Framework.

slor:
Ich will die Dinger einfach nur schalten können. MQTT ist für mich nur ein "notwendiges übel"
Ich mach jetzt ne ganz flache Hierarchie und angel mir aus dem MQTT String raus was ich brauche.

Ich dachte ich muss da was komplexes mit vielen / aufbauen... aber scheint nicht nötig zu sein :-)

Also sämtliche Logik raus aus MQTT und in Fhem abbilden.

slor:
so, hier meine finale (erst mal) version mit der es läuft: (Für Sonoff basic und S20)


--- Code: ---define Sonoff_S20_01 MQTT_DEVICE
attr Sonoff_S20_01 IODev MQTTBroker
attr Sonoff_S20_01 devStateIcon ON:rc_GREEN:OFF OFF:rc_RED:ON Offline:rc_BLUE:OFF
attr Sonoff_S20_01 publishSet On Off cmnd/S20_01/POWER
attr Sonoff_S20_01 subscribeReading_state stat/s20_01/POWER
attr Sonoff_S20_01 subscribeReading_presence tele/s20_01/LWT
attr Sonoff_S20_01 qos at-least-once
attr Sonoff_S20_01 retain 1
attr Sonoff_S20_01 room MQTT
attr Sonoff_S20_01 stateFormat {ReadingsVal($name,"presence","") eq "Offline" ? "Offline" : ReadingsVal($name,"state","")
attr Sonoff_S20_01 webCmd On:Off
--- Ende Code ---

devStateIcon, retain, qos, room sind nicht zwingend nötig.
Genauso das SubscribeReading auf LWT. Damit kann man sehen ob das Device noch aktiv mit dem Broker kommuniziert / erreichbar ist. Durch stateFormate und devStateIcon wird das Icon bei nicht Erreichbarkeit blau
IODev wird automatisch hinzugefügt. Es erschließt sich mir nicht warum als Attribut. Hab das mal gelöscht. Kam nicht wieder und hat alles noch funktioniert.

Was mit auch fehlt ist eine clear readings funktion. Vom rumbasteln sind viele Readings da. Die kann ich nicht löschen.

Evlt. könnte man global definieren, dass man überall retain und qos setzen möchte. das spart tipp arbeit.
Auch könnte man evlt. automatisch vom publishset ein subscribe reading auf state erstellen.

Rince:

--- Code: ---Deletereading <Gerätename> <ZuLöschendesReading>

--- Ende Code ---
Hast du ausprobiert?

slor:
Haha, zu einfach... Funzt.

Navigation

[0] Themen-Index

[#] Nächste Seite

[*] Vorherige Sete

Zur normalen Ansicht wechseln