Umstellung MQTT zu MQTT2 Display mit espEasy

Begonnen von Robby, 29 März 2020, 11:46:41

Vorheriges Thema - Nächstes Thema

Robby

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?

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Robby

#2
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?

Beta-User

Mobile Kurzanleitung:MQTT2_DEVICE manuell anlegen, dann setList füllen.

Mal Beispiele in mqtt2.template-file ansehen, wenn mehr info erforderlich ist, nochmal melden.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Beta-User

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.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Robby

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.

Beta-User

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...?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

Robby

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 :)