Hallo Leute,
ich habe das Problem das xiaomi aquara Sensoren in ein Device laufen. Konkret habe ich 3 Sensoren (Tür/ Fenster Sensor, Temp/Feuchte Sensor. Wasser Sensor) Ein Device wurde automatisch angelegt und beinhaltet die Readings von allen Geräten.
Wie bekomme ich das auf die einzelnen Geräte aufgesplittet?
Was habe ich falsch gemacht?
LG Holger
Internals:
CFGFN
CID mqttjs_23fbb5be
DEF mqttjs_23fbb5be
DEVICETOPIC MQTT2_mqttjs_23fbb5be
FUUID 5e185ba1-f33f-4782-e494-872d5aae6459a9c6
IODev MQTT2_FHEM_Server
LASTInputDev MQTT2_FHEM_Server
MQTT2_FHEM_Server_MSGCNT 33
MQTT2_FHEM_Server_TIME 2020-01-10 12:39:07
MSGCNT 33
NAME MQTT2_mqttjs_23fbb5be
NR 341
STATE online
TYPE MQTT2_DEVICE
READINGS:
2020-01-10 12:39:07 battery 100
2020-01-10 12:10:46 commit da4d26a
2020-01-10 12:35:52 contact true
2020-01-10 12:10:46 coordinator_meta_maintrel 3
2020-01-10 12:10:46 coordinator_meta_majorrel 2
2020-01-10 12:10:46 coordinator_meta_minorrel 6
2020-01-10 12:10:46 coordinator_meta_product 0
2020-01-10 12:10:46 coordinator_meta_revision 20190223
2020-01-10 12:10:46 coordinator_meta_transportrev 2
2020-01-10 12:10:46 coordinator_type zStack12
2020-01-10 12:39:07 humidity 52.55
2020-01-10 12:39:07 linkquality 157
2020-01-10 12:10:46 log_level info
2020-01-10 12:10:46 permit_join true
2020-01-10 12:10:46 state online
2020-01-10 12:39:07 temperature 23.63
2020-01-10 12:10:46 version 1.8.0
2020-01-10 12:39:07 voltage 3005
Attributes:
IODev MQTT2_FHEM_Server
readingList mqttjs_23fbb5be:zigbee2mqtt/bridge/state:.* state
mqttjs_23fbb5be:zigbee2mqtt/0x00158d0002fbf078:.* { json2nameValue($EVENT) }
mqttjs_23fbb5be:zigbee2mqtt/0x00158d000312211a:.* { json2nameValue($EVENT) }
mqttjs_23fbb5be:zigbee2mqtt/bridge/config:.* { json2nameValue($EVENT) }
room MQTT2_DEVICE
ZitatWie bekomme ich das auf die einzelnen Geräte aufgesplittet?
Dafuer muss man den ersten MQTT2_DEVICE als bridge definieren, am einfachsten mit "set mqttjs_23fbb5be attrTemplate zigbee2mqtt_bridge"
Die z2m-Einbindung wird auch im Wiki (https://wiki.fhem.de/wiki/MQTT2-Module_-_Praxisbeispiele#zigbee2mqtt) gleich als erstes beschrieben.
Gruß
Thomas
Der entscheidende Hinweis war der von TomLEE. Danke Euch allen. Ich hatte das 10x gelesen, es war aber im Hirn nicht angekommen. Wenn ein Thema komplett neu ist, sind die Infos einfach zu viele.
Für den nächsten mir diesem Problem, hiermit werden einzelne Geräte angelegt:
attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/([A-Za-z0-9]*)[/]?.*:.* "zigbee_$1"
Trotzdem noch eine Frage, warum habe ich bei anderen (Tasmota) automatisch generierten Geräten immer falsche Zeichen
Hier ein Beispiel:
IODev
MQTT2_FHEM_Server
deleteattr
autocreate
0
deleteattr
deleteattr
icon
hue_filled_outlet
deleteattr
model
tasmota_basic_state_power1
deleteattr
readingList
/smarthome/kueche/sonoff\.steckdose\.1/tele/LWT:.* LWT
/smarthome/kueche/sonoff\.steckdose\.1/tele/STATE:.* { json2nameValue($EVENT) }
/smarthome/kueche/sonoff\.steckdose\.1/tele/SENSOR:.* { json2nameValue($EVENT) }
/smarthome/kueche/sonoff\.steckdose\.1/tele/INFO.:.* { json2nameValue($EVENT) }
/smarthome/kueche/sonoff\.steckdose\.1/stat/RESULT:.* { json2nameValue($EVENT) }
deleteattr
room
MQTT2_DEVICE
deleteattr
setList
off:noArg /smarthome/kueche/sonoff\.steckdose\.1/cmnd/POWER1 0
on:noArg /smarthome/kueche/sonoff\.steckdose\.1/cmnd/POWER1 1
toggle:noArg /smarthome/kueche/sonoff\.steckdose\.1/cmnd/POWER1 2
setOtaUrl:textField /smarthome/kueche/sonoff\.steckdose\.1/cmnd/OtaUrl $EVTPART1
upgrade:noArg /smarthome/kueche/sonoff\.steckdose\.1/cmnd/upgrade 1
deleteattr
setStateList
on off toggle
deleteattr
stateFormat
POWER1
Hier sitzen immer diese blöden \ dazwichen: /smarthome/kueche/sonoff\.steckdose\.1/tele/
richtig wäre: /smarthome/kueche/sonoff.steckdose.1/tele/
wie kann ich das vermeiden?
Hast du da Namen mir Leerzeichen im Tasmota-Web-Interface vergeben ("sonoff steckdose 1")?
(Ohne das im Detail auf Zulässigkeit geprüft zu haben, wage ich mal die Aussage, dass man im MQTT-Topictree-Kontext Sonderzeichen allgemein und "Perl/regex-spezielle" Zeichen im Besonderen vermeiden sollte. Mach dafür mal Unterstriche rein, also "sonoff_steckdose_1"...)
DAS WAR ES...super vielen Dank für den schnellen und treffenden Hinweis. Ich hatte keine Leerzeichen aber Punkte als Trennung eingesetzt.
Ich habe das nach Deinem Hinweis auf sonoff_steckdose_1 geändert und alles war gut. Wieder etwas gelernt, es ist besser immer auf Sonderzeichen zu verzichten.....
ZitatIch hatte keine Leerzeichen aber Punkte als Trennung eingesetzt.
Ich habe mit Leerzeichen im Topic experimentiert, das erzeugt eine Warnung im Log, was vmtl. keinem auffaellt:
MQTT2_test: bad reading name steckdose 1/tele/STATE:.* { json2nameValue($EVENT) } (contains not A-Za-z/\d_\.- or is too long)
Das habe ich jetzt gefixt, es scheint zu tun.
Ein Problem mit Punkt im Topic konnte ich nicht nachvollziehen.
Hallo Rudof,
jetzt sehe ich wieder warum ich bei FHEM gelandet bin. Alles geht so schnell und gut. Ich habe ein Gerät noch mal mit "bösen" Namen versehen. Leerzeichen werden jetzt mit "_" versehen. Der Punkt bringt aber beim mir immer noch Fehler. Ich denke das ist aber egal. Das ist ja ein Sonderzeichen und sollte deshalb nicht genommen werden. (zumindest wenn man intelligenter ist als ich ;-) Danke!!
Grüße
Holger