fhem -> mqtt -> node-red dashboard -> mqtt -> fhem mit notify?

Begonnen von bgewehr, 26 Januar 2020, 11:50:14

Vorheriges Thema - Nächstes Thema

herrmannj

so zb sende ich (noch) eine Helligkeit. define name notify +
motion_front:brightness.* set mqtt publish -r home/states/outdoor/front/bightness $EVTPART1

bgewehr

Was man so mit wenig Aufwand erreichen kann, ist schon toll:

FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

bgewehr

#17
@herrmannj ich hatte mir sowas hier ausgedacht:


Arteon_Heizung:.*|Garagentor:.*|Gartenwasser_V1:.*|Gartenwasser_V2:.*|Gartenwasser_V3:.*|Gartenwasser_V4:.*|Kreis_WZ_SW:.*|Leselampe:.*|OC3:.*|Rauch_Maxi:.*|Rauch_WZ:.*|Raumthermostat_WZ_Temperatur:.*|Roll_Terrasse:motor.*|Tannenbaum:.*|Ventil_Buero:.* {my @EVTPARTS = split /:\ |\ /,$EVENT;;
if (defined $EVTPARTS[2]) {
  fhem "set MQTT_fhem publish /fhem/get/$NAME/$EVTPARTS[0]/$EVTPARTS[1] $EVTPARTS[2]";;
} elsif (defined $EVTPARTS[1]) {
  fhem "set MQTT_fhem publish /fhem/get/$NAME/$EVTPARTS[0] $EVTPARTS[1]";;
} else {
  fhem "set MQTT_fhem publish /fhem/get/$NAME $EVTPARTS[0]";;
}
}


Ziel ist es, auf separate Aktivitäten pro Device verzichten zu können.

Für den Rückweg habe ich mir für die Ereignisse aus MQTT zunächst hiermit beholfen:


node_red_dashboard:.* {my @DEVICE = split /:|---/, $EVTPART0;;
if (defined $DEVICE[1]) {
  fhem "set $DEVICE[0] $DEVICE[1] $EVTPART1";;
} else {
  fhem "set $DEVICE[0] $EVTPART1";;
}
}


Das klappt natürlich nur, wenn man die Readings des MQTT Gerätes komplex definiert:



attr node_red_dashboard subscribeReading_Roll_Terrasse---pct /fhem/set/Roll_Terrasse/pct
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

bgewehr

Was wirklich störend ist, ist die Tatsache, dass das mqtt_device keine vollständigen topics als readings verwendet, sondern nur den letzten Abschnitt.

Damit wäre es recht umständlich, /haus/wohnzimmer/heizung/thermostat/soll zu unterscheiden von /haus/heizung/warmwasser/soll, weil in fhem beide readings nur "soll" heißen würden.

Ein Atrribut "completeTopic" wäre toll,d amit man damit weiterarbeiten kann, wenn man möchte.

Auch der Autosubscribe kommt mir komplexeren Strukturen nicht klar und lässt nur + zu statt auch #.

Gleiches Prob wie oben. Sollen wir mal auf den maintainer von mqttdevice zugehen?
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

bgewehr

OK, wenn man auf autosubscript verzichtet, geht's auch manuell


attr node_red_dashboard subscribeReading_/fhem/set/Roll_Terrasse/pct /fhem/set/Roll_Terrasse/pct


dann erhält man strukturierte Readings wie


2020-01-28 19:42:44 MQTT_DEVICE node_red_dashboard /fhem/set/Roll_Terrasse/pct: 13
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868

bgewehr

Macht Spaß...
FritzBox 7590, Synology DS216+II mit Docker
Docker: FHEM mit hmlan, Homebridge, node-red, mosquitto, ems-collector für Buderus EMS mit AVR Net-IO
Gartenwasser über MQTT auf R/Pi A+
Volkszaehler.org auf R/Pi 2B mit Pi_Erweiterung
Raspberrymatic auf R/Pi 4B mit RPI-RF-MOD u. CUL868