Hallo, ich hoffe mir kann hier jemand auf die Sprünge helfen,
Ich habe fhem neu auf einem PI3 aufgesetzt und es läuft soweit schon mal. Unter anderem habe ich damit begonnen den MQTT2_FHEM_Server mit meinen Tasmota Aktoren zu füttern. Das klappt auch alles.
Was ich aber nach nunmehr 3-Tagen Recherche nicht hin bekomme ist die Anbindung eines mit ESPEasyMega geflashten Displays. In der alten Konstellation mit MQTT-Brocker läuft es problemlos. Es zeigt mir die Daten des Feinstaubsensors SDS011 (OK LAB STUTTGART).
Kann ich die MQTT_BRIDGE so nicht mehr anlegen? Oder bin ich auf dem Holzweg?
Wie wäre es, wenn du uns die "alte Konfiguration" zeigen würdest...? So bleibt die Glaskugel ziemlich unterbelichtet ;) .
Und wenn nur Daten eines FHEM-Devices zu einem MQTT-Gerät gesendet werden sollen, ist es eventuell das einfachste, direkt ein notify zu bemühen und schlicht den MQTT2_FHEM_Server zu einem direkten publish zu überreden.
Die "alte Konfiguration" ist nur noch fragmental da. Ich denke mir fehlt:
define MQTT_SDS011 MQTT_BRIDGE SDS011 setuuid MQTT_SDS011 5c7bc00a-f33f-84d2-1c5a-36d2fed92af18452 attr MQTT_SDS011 IODev myBroker attr MQTT_SDS011 alias MQTT_SDS011 attr MQTT_SDS011 group ESP attr MQTT_SDS011 icon virtualbox-alt attr MQTT_SDS011 publishReading_.sensors /SDS011/.sensors attr MQTT_SDS011 publishReading_PM10 /SDS011/PM10 attr MQTT_SDS011 publishReading_PM2.5 /SDS011/PM2.5 attr MQTT_SDS011 publishReading_humidity /SDS011/humidity attr MQTT_SDS011 publishReading_max_micro /SDS011/max_micro attr MQTT_SDS011 publishReading_min_micro /SDS011/min_micro attr MQTT_SDS011 publishReading_offsetpressure /SDS011/offsetpressure attr MQTT_SDS011 publishReading_pressure /SDS011/pressure attr MQTT_SDS011 publishReading_samples /SDS011/samples attr MQTT_SDS011 publishReading_signal /SDS011/signal attr MQTT_SDS011 publishReading_softwareVersion /SDS011/softwareVersion attr MQTT_SDS011 publishReading_state /SDS011/state attr MQTT_SDS011 publishReading_temperature /SDS011/temperature attr MQTT_SDS011 room System |
So lässt sich das nicht mehr anlegen (client device hash no IODev provided(der SDS011 ist angelegt und geht)), warum weis ich auch nicht.
Bin aber auch für andere Lößungen dankbar. 8)
Mittlerweile kann ich unter MQTT2_FHEM_Server auch ein publish (z.b. /SDS011/PM10 23) ausgeben was auch am Display erscheint.
Wie bekomme ich das jetzt zusammen?
Mobile Kurzanleitung:MQTT2_DEVICE manuell anlegen, dann setList füllen.
Mal Beispiele in mqtt2.template-file ansehen, wenn mehr info erforderlich ist, nochmal melden.
Etwas längere Antwort:
define MQTT_SDS011 MQTT2_DEVICE SDS011
attr MQTT_SDS011 setList
sensors /SDS011/.sensors $EVTPART1\
PM10 /SDS011/PM10 $EVTPART1\
PM2.5 /SDS011/PM2.5 $EVTPART1\
humidity /SDS011/humidity $EVTPART1\
max_micro /SDS011/max_micro $EVTPART1\
min_micro /SDS011/min_micro $EVTPART1\
offsetpressure /SDS011/offsetpressure $EVTPART1\
pressure /SDS011/pressure $EVTPART1\
samples /SDS011/samples $EVTPART1\
signal /SDS011/signal $EVTPART1\
softwareVersion /SDS011/softwareVersion $EVTPART1\
state /SDS011/state $EVTPART1\
temperature /SDS011/temperature $EVTPART1
ABER:
- Habe mal eine "Vermutungs"-CID genommen. Da solltest du hinschreiben, womit sich der ESP wirklich meldet.
- Komisch ist, dass sich das Teil nicht wenigstens mit einer LWT-Message oä. meldet (=> MQTT2_SERVER sollte dann autocreate anwerfen => da müßte dann eigentlich ein Device vorhanden sein, hat beim Rest ja auch geklappt...). Das deutet - da der Rest ja läuft - auf ein Konfigurationsproblem auf dem ESPEasy-Device hin.
- state-Anweisungen sollte man besser direkt mit "on" oder "off" in die setList einarbeiten, bitte dazu mal einen Blick auf die Tasmotas werfen, dann sollte das Prinzip vollens klar sein.
- Das mit dem Punkt im Readingnamen sollte man m.E. ändern.
Leider brachte auch das keinen Erfolg.
Kann ich dir mal meine drei configs schicken ( SDS011, MQTT2_Server & Display? )
Wenn ich einen MQTT Explorer mitlaufen lasse steht nur folgendes im Verkehr:
{
"subscribeTopics" : [ {
"name" : "tele/Steckdose5/STATE",
"color" : "#FFFFFF"
}, {
"name" : "ESPEasy_FHEM_Display1/status/LWT",
"color" : "#FFFFFF"
}, {
"name" : "Hallo Feinstaubdisplay",
"color" : "#FFFFFF"
}, {
"name" : "Hallo_Feinstaubdisplay",
"color" : "#FFFFFF"
}, {
"name" : "FHEM_Display1/status/LWT",
"color" : "#FFFFFF"
}, {
"name" : "domoticz/out/LWT",
"color" : "#FFFFFF"
}, {
"name" : "home/garden/fountain",
"color" : "#FFFFFF"
}, {
"name" : "metrics/exchange",
"color" : "#FFFFFF"
}, {
"name" : "Feinstaubdisplay/status/LWT",
"color" : "#FFFFFF"
} ],
"publishTopics" : [ {
"name" : "tele/Steckdose5/STATE"
}, {
"name" : "ESPEasy_FHEM_Display1/status/LWT"
}, {
"name" : "Hallo Feinstaubdisplay"
}, {
"name" : "Hallo_Feinstaubdisplay"
}, {
"name" : "FHEM_Display1/status/LWT"
}, {
"name" : "home/garden/fountain"
}, {
"name" : "domoticz/out/LWT"
}, {
"name" : "metrics/exchange"
}, {
"name" : "Feinstaubdisplay/status/LWT"
} ],
"clipboardMessages" : [ ]
}
Ein ""Feinstaubdisplay/status/LWT"" sowie die Connect vom "espeasy" kommt in fhem ja auf dem MQTT2_Server an, aber es geht nix (und das verstehe ich nicht) vom SDS011 zum MQTT2_Server zum publishen.
Wenn alles nix hilft setze ich mosquitto wieder drauf.
Hmm, also wenn ich das richtig deute, was per pm kam, geht es weniger darum, ein bedienbares Gerät zu haben, sondern eigentlich nur darum, Werte von einem (oder mehreren) anderen Gerät an bestimmte MQTT-Adressen (Topis) zu senden.
Dafür gibt's drei Wege:
a) Event-Handler nehmen, der auf das "Ausgangsdevice" hört und dann per einfachem MQTT-IO-Publish rauspusten. Also z.B.
define SDS011_publish notify SDS011.pm10:xyz set myBroker publish /SDS011/PM10 $EVTPART1
Ist für einige wenige Werte vermutlich der einfachste Weg.
b) Event-Handler nehmen, der auf das "Ausgangsdevice" hört und dann die Wert auf ein MQTT2_DEVICE überträgt, das das dann rauspustet. Dafür wäre das von mir bereits vorgeschlagene Device geeignet. Also
define SDS011_publish notify SDS011.pm10:xyz set MQTT_SDS011 PM10 $EVTPART1
c) Mit MQTT_GENERIC_BRIDGE kannst du auch mit einem MQTT2-IO was ähnliches machen wie mit der "alten" MQTT_BRIDGE. die hat halt nur jeweils einem "nicht-MQTT"-Gerät einen "MQTT-Schatten" verpaßt, mit der Generic Bridge ist es so, dass die einmal zentral die Funktionalität zur Verfügung stellt und dann einfach an beliebig vielen anderen "normalen" Devices Attribute gesetzt werden können, die jeweils einzelne Werte versenden, die Syntax ist dabei recht nah an der von MQTT_BRIDGE (afaik, wenig Erfahrung).
Hoffe, das hilft erst mal weiter...?
Danke, das war der Input der mir fehlte. Jetzt läuft es mit Variante A, morgen schau ich mal ob ich Variante C hinbekomme.
Danke für die schnelle Hilfe :)