Werte aus WMBUS Readings per MQTT senden

Begonnen von americanium, 08 Dezember 2021, 11:52:22

Vorheriges Thema - Nächstes Thema

americanium

Hallo,

leider muss ich hier nochmal eine Frage stellen, bis jetzt konnte mir gut geholfen werden:

Ich habe eine WMBUS Devices (WMBUS_DME_XXXXXXX_YYY_Z) mit diversen Readings. Einige dieser Readings möchte ich per MQTT senden. z.B.: "02_value" was dem aktuellen Wasserzählerwert entspricht. Dieser Wert wird alle 10 Sekunden vom Zähler abgegriffen und upgedated.

Ich habe zudem bis jetzt den MQTT2_CLIENT aktiviert und die MQTT_GENERIC_BRIDGE.

Wie greife ich jetzt diese aktuellen Werte bei jeder Änderung ab und sende sie an meinen Broker (auf localhost).

Danke!

VG

Beta-User

Indem du das entsprechende mqttPublish-Attribut an deinem WMBUS-Device (WMBUS_DME_XXXXXXX_YYY_Z) passend füllst.

Es ist sinnvoll, dafür ein paar Defaults in der MGB selbst zu setzen. Vielleicht zeigst du mal die MGB und das betreffende Device, dann ist einfacher helfen...
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

americanium

Ok, ich stelle gerne rein was notwendig ist.
Was ist MGB ?
Was genau vom Device braucht ihr ? einen Screenshot des Devices in FHEM ?

Danke!

Beta-User

Allgemein: https://forum.fhem.de/index.php/topic,71806.0.html (=> KEINE screenshots, wenn vermeidbar!)
Zu MQTT speziell: https://forum.fhem.de/index.php/topic,112327.0.html

MGB = kurz für MQTT_GENERIC_BRIDGE. Du kannst auch mal das Basis-attrTemplate für die MGB anschauen, das sollte dann eigentlich schon ein guter Start sein... (und es gibt einen Thread zu attrTemplate@MGB, da kannst du mehr erfahren über die "Philosophie" dahinter).
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

americanium

Okay, ich denke mir ist klar was bereit zu stellen ist:

DeviceOverview
WMBUS_DME_68908588_112_6


Internals
DEF
DME 68908588 112 6
DeviceMedium
Warm Water (30 °C ... 90 °C)
DeviceType
6
FUUID
61afe55e-f33f-1a60-0e10-169a3b74eecc3254
IODev
traxCUL
IdentNumber
68908588
LASTInputDev
traxCUL
MSGCNT
893
Manufacturer
DME
MessageEncoding
CUL
NAME
WMBUS_DME_68908588_112_6
NR
16
STATE
no errors
TYPE
WMBUS
Version
112
addr
DME_68908588_112_6
model
DME_6_112
traxCUL_MSGCNT
893
traxCUL_RAWMSG
b3E44A511888590687006C7547A2C00300553FE90F955CC341F0D2A021705D14D1D702343C5519ABA236080013AB3B4DFDE721259D0B4B50EAC1C10AD9374DD268AC01983318012280A80::-35.5
traxCUL_RSSI
-35.5
traxCUL_TIME
2021-12-08 12:44:46


Readings
1_storage_no
0
2021-12-08 12:45:14
1_type
VIF_ACCESS_NO
2021-12-08 12:45:14
1_unit
2021-12-08 12:45:14
1_value
-82
2021-12-08 12:45:14
1_value_type
Instantaneous value
2021-12-08 12:45:14
2_storage_no
0
2021-12-08 12:45:14
2_type
VIF_VOLUME
2021-12-08 12:45:14
2_unit

2021-12-08 12:45:14
2_value
156.27
2021-12-08 12:45:14
2_value_type
Instantaneous value
2021-12-08 12:45:14
3_storage_no
0
2021-12-08 12:45:14
3_type
VIF_FLOW_TEMP
2021-12-08 12:45:14
3_unit
°C
2021-12-08 12:45:14
3_value
12.7
2021-12-08 12:45:14
3_value_type
Instantaneous value
2021-12-08 12:45:14
4_storage_no
0
2021-12-08 12:45:14
4_type
VIF_ERROR_FLAGS
2021-12-08 12:45:14
4_unit
2021-12-08 12:45:14
4_value
30
2021-12-08 12:45:14
4_value_type
Instantaneous value
2021-12-08 12:45:14
5_storage_no
0
2021-12-08 12:45:14
5_type
VIF_FD_RESERVED
2021-12-08 12:45:14
5_unit
Reserved
2021-12-08 12:45:14
5_value
4669
2021-12-08 12:45:14
5_value_type
Instantaneous value
2021-12-08 12:45:14
6_storage_no
33
2021-12-08 12:45:14
6_type
VIF_TIME_POINT_DATE_TIME
2021-12-08 12:45:14
6_unit
2021-12-08 12:45:14
6_value
2021-11-30 23:59
2021-12-08 12:45:14
6_value_type
Instantaneous value
2021-12-08 12:45:14
7_storage_no
33
2021-12-08 12:45:14
7_type
VIF_VOLUME
2021-12-08 12:45:14
7_unit

2021-12-08 12:45:14
7_value
154.106
2021-12-08 12:45:14
7_value_type
Instantaneous value
2021-12-08 12:45:14
IODev
traxCUL
2021-12-08 09:49:50
LQI
128
2021-12-08 12:45:14
RSSI
-35.5
2021-12-08 12:45:14
batteryState
ok
2021-12-08 12:45:14
decryption_ok
1
2021-12-08 12:45:14
is_encrypted
1
2021-12-08 12:45:14
state
no errors
2021-12-08 12:45:14


MQTT DEVICE

DeviceOverview
test
???


Internals
CFGFN
DEF
WMBUS_DME_68908154_112_6
FUUID
61b08502-f33f-1a60-2e55-ccbc7fb112f7b1cc
IODev
myBroker
NAME
test
NR
143
NTFY_ORDER
70-test
STATE
???
TYPE
MQTT_GENERIC_BRIDGE
devspec
.*
prefix
WMBUS_DME_68908154_112_6


Readings
IODev
myBroker
2021-12-08 11:12:18
device-count
0
2021-12-08 11:12:18
incoming-count
0
2021-12-08 11:12:18
outgoing-count
0
2021-12-08 11:12:18
transmission-state
IO device initialized (mqtt2)
2021-12-08 11:12:18
updated-reading-count
0
2021-12-08 11:12:18
updated-set-count
0
2021-12-08 11:12:18


Probably associated with
WMBUS_DME_68908154_112_6
no errors
WMBUS



Beta-User

Puh...

Das ist kaum lesbar, auch wenn wenigstens code-Tags genutzt wurden. Für MQTT-Geräte ist es in der Regel einfacher, RAW-listings zu nehmen.

Das sähe dann eher so aus:

defmod mgb1 MQTT_GENERIC_BRIDGE
attr mgb1 globalDefaults sub:base=mgb1/set pub:base=mgb1

setstate mgb1 2021-12-08 10:11:09 IODev m2client
setstate mgb1 2021-12-08 12:03:56 attrTemplateVersion 20210222_MQTT
setstate mgb1 2021-12-08 12:03:56 device-count 3
setstate mgb1 2021-12-08 10:11:00 incoming-count 0
setstate mgb1 2021-12-08 10:11:00 outgoing-count 0
setstate mgb1 2021-12-08 10:11:09 transmission-state IO device initialized (mqtt2)
setstate mgb1 2021-12-08 10:11:00 updated-reading-count 0
setstate mgb1 2021-12-08 10:11:00 updated-set-count 0


Mach mal
set test attrTemplate base_settings_to_MQTT_GENERIC_BRIDGE
undattr WMBUS_DME_68908588_112_6 mqttPublish 02_value:topic=$base/watermeter
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

americanium

Also bei

set test attrTemplate base_settings_to_MQTT_GENERIC_BRIDGE

kommt
"Specify the unknown parameters for test/base_settings_to_MQTT_GENERIC_BRIDGE:"

Name of the IO-Device: EINGABEFELD

Beta-User

Hmm, da muss ich mir noch was überlegen, aber es sollte mit "myBroker" erst mal durchlaufen.
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

americanium

Hab an den Befehl

set test attrTemplate base_settings_to_MQTT_GENERIC_BRIDGE nun "myBroker" angehängt.

Es kam die Meldung, dass die Einrichtung nun erfolgreich war und man MQTT Befehle empfangen / senden kann.

Den zweiten Befehl hab ich auch eingetragen. Weiß jetzt nur nicht, was passieren solle :-)

Beta-User

Nun ja, jetzt schaust du mal eine Weile zu und checkst, ob sich die "transmission"-Zahl an der MGB ändert...

Du kannst auch mit einem der üblichen (externen) Hilfsmittel schauen, was auf deinem MQTT-Server so an Nachrichten ankommt, und erweiterst/ergänzt dann deine MGB-spezifischen Attribute an deinem Device entsprechend...
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

americanium

Ich weiß jetzt nicht wie oft der Wert gesendet werden würde aber ich kann sagen, dass am Broker nichts neues ankommt...

Beta-User

#11
Hmm, jo. Hatte aus deinem Ausgangspost den Reading-Namen kopiert mit 02_.... Tatsächlich gibt es aber keine führende "0". Mach die mal weg in mqttPublish...
Nachtrag: evtl. muss man auch evaluieren, also dann sicherheitshalber mal
attr WMBUS_DME_68908588_112_6 mqttPublish 2_value:topic={"$base/$device/watermeter"}
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

americanium

Hmm, hab hier mal einen Log Auszug. Beim MQTT Broker kommt noch nichts an.

2021.12.08 13:27:20 5: MQTT_GENERIC_BRIDGE:DEBUG:> [mqttGenericBridge] publish: $base/watermeter => 156.274 (qos: 0, retain: 0
2021.12.08 13:27:20 5: Starting notify loop for mqttGenericBridge, 2 event(s), first is transmission-state: outgoing publish sent
2021.12.08 13:27:20 5: End notify loop for mqttGenericBridge
2021.12.08 13:27:20 5: End notify loop for WMBUS_DME_68908588_112_6

Beta-User

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

americanium

#14
Jap,

muss einen Erfolg berichten. Hab den Wert jetzt im Broker :-)

So nun meine große Frage um das auch zu verstehen und wieder umsetzen zu können.

1.) Ich benötige MQTT2_CLIENT zwingend um den FHEM internen "Brokernamen" zu definieren und mich mit dem Broker zu veribnden
2.) Ich brauche die MQTT_GENERIC_BRIDGE zwingend mit einem "Bridgenamen" in dem Fall jetzt "test"
3.) Mit "set test attrTemplate base_settings_to_MQTT_GENERIC_BRIDGE myBroker" passiert nun was genau ?
2.) Ich muss im jeweiligen "Gerät" ein Attritbut hinzufügen mit "attr DEVICEBEZEICHNUNG mqttPublish READINGNAME:topic={$base/$device/BEZEICHNUNG"}
(EDIT: Nein scheinbar nicht, nach meiner Änderung hatte ich den 3er Value wert gesendet und der vorherige ist nun weg. Mit
2_value:topic={"$base/$device/watermeter"} 3_value:topic={"$base/$device/watermeter_temperature"} werden nun beide gleichzeitig übertragen)


MQTT_GENERIC_BRIDGE
mqttGenericBridge ???
test ???

Benötige ich das "mqttGenericBridge" nun oder ist das eigentlich überflüssig weil das selbe wie "test".
Ich könnte jetzt also "Test" umbenennen und müsste die befehle oben mit dem neuen Namen neu durchführen?

Sehe ich es richtig, dass die Bridge nur dazu da ist, die MQTT Telegramme an den Client zu übergeben und der sendet diese dann an den Broker ?

Danke!