httpmod.template: bugs, Fragen, Anregungen

Begonnen von Beta-User, 21 Februar 2019, 12:04:17

Vorheriges Thema - Nächstes Thema

Tueftler1983

Klappt bei mir jetzt auch ohne probleme. Wie sieht deine def der Bridge aus? @DeeSPe??

DeeSPe

Zitat von: Tueftler1983 am 26 Januar 2026, 23:15:33Klappt bei mir jetzt auch ohne probleme. Wie sieht deine def der Bridge aus? @DeeSPe??

Die sieht so aus:
defmod MQTT2_zigbee_bridge MQTT2_DEVICE zigbee_bridge
attr MQTT2_zigbee_bridge DbLogExclude .+
attr MQTT2_zigbee_bridge autocreate 0
attr MQTT2_zigbee_bridge bridgeRegexp zigbee2mqtt/((?!bridge)[A-Za-z0-9._]+)/?.*:.* "zigbee_$1"
attr MQTT2_zigbee_bridge comment To check for new updates of the deamon software, you might want to use a separate HTTPMOD device. See HTTPMOD template zigbee2mqtt_daemon_updates for further details.
attr MQTT2_zigbee_bridge devicetopic zigbee2mqtt
attr MQTT2_zigbee_bridge event-on-change-reading .*
attr MQTT2_zigbee_bridge getList networkmap_raw:noArg raw $DEVICETOPIC/bridge/request/networkmap raw\
networkmap_graphviz:noArg graphviz $DEVICETOPIC/bridge/request/networkmap graphviz
attr MQTT2_zigbee_bridge group Bridges
attr MQTT2_zigbee_bridge icon mqtt_bridge_1
attr MQTT2_zigbee_bridge model zigbee2mqtt_bridge
attr MQTT2_zigbee_bridge readingList $DEVICETOPIC/bridge/state:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/bridge/config/devices:.* {}\
$DEVICETOPIC/bridge/config/log_level:.* log_level\
$DEVICETOPIC/bridge/config/permit_join:.* permit_join\
$DEVICETOPIC/bridge/config/rename:.* { json2nameValue($EVENT, 'rename_') }\
$DEVICETOPIC/bridge/config:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/bridge/log:.* log\
$DEVICETOPIC/bridge/logging:.* { json2nameValue($EVENT,'log_') }\
$DEVICETOPIC/bridge/response/networkmap:.* { my $type = $EVENT =~ /.*,"type":"(raw|graphviz)",.*/ ? $1 : 'networkmap';; $EVENT =~ /{"data":\{.*"value":"?(.*[^"])"?\},"status":"ok"\}/ ? { $type=>$1 } : {} }\
$DEVICETOPIC/bridge/event:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/bridge/extensions:.* extensions\
$DEVICETOPIC/bridge/response/permit_join:.* { json2nameValue($EVENT) }\
$DEVICETOPIC/bridge/info/version:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_bridge room Module->MQTT2_DEVICE,Technik
attr MQTT2_zigbee_bridge setList log_level:debug,info,warn,error $DEVICETOPIC/bridge/config/log_level $EVTPART1\
permit_join:true,false $DEVICETOPIC/bridge/request/permit_join $EVTPART1\
remove:textField $DEVICETOPIC/bridge/config/remove $EVTPART1\
ota_update:textField $DEVICETOPIC/bridge/ota_update/update $EVTPART1\
ota_update_check:textField $DEVICETOPIC/bridge/ota_update/check $EVTPART1\
y_device_setting:textField $DEVICETOPIC/$EVTPART1/set {"$EVTPART2": "$EVTPART3"}\
x_bind:textField $DEVICETOPIC/bridge/bind/$EVTPART1 $EVTPART2\
x_bind_unbind:textField $DEVICETOPIC/bridge/unbind/$EVTPART1 $EVTPART2\
x_device_options:textField $DEVICETOPIC/bridge/config/device_options {"friendly_name":"$EVTPART1","options": {"$EVTPART2": "$EVTPART3"}}\
x_group_add_to:textField $DEVICETOPIC/bridge/group/$EVTPART1/add $EVTPART2\
x_group_rm_from:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove $EVTPART2\
x_group_rm_from_all:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove_all $EVTPART2\
x_group_add_group:textField $DEVICETOPIC/bridge/config/add_group $EVTPART1\
x_group_rm_group:textField $DEVICETOPIC/bridge/config/remove_group $EVTPART1\
z_elapsed:textField $DEVICETOPIC/bridge/config/elapsed $EVTPART1\
z_last_seen:disable,ISO_8601,epoch,ISO_8601_local $DEVICETOPIC/bridge/config/last_seen $EVTPART1\
z_ban:textField $DEVICETOPIC/bridge/config/ban $EVTPART1\
z_rename:textField $DEVICETOPIC/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
z_reset_CC:noArg $DEVICETOPIC/bridge/config/reset
attr MQTT2_zigbee_bridge verbose 2
Wurde auch mal aus einem Template erstellt.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Tueftler1983

#257
Ist bei dir das reading "version" garnicht vorhanden?
Bekommst du denn aktualisierte readings wenn du zigbee2mqtt neu startest?

Edith:
Was mir bei dir Grade auffällt das gar kein attr IOdev angegeben ist.
Bin aber auch nur noch auf dem Handy unterwegs, bin zu faul in die Küche ans laptop zu gehen.

Lg

Tueftler1983

Das ist meine derzeitige def die so funktioniert:
defmod MQTT2_zigbee_pi MQTT2_DEVICE zigbee_pi
attr MQTT2_zigbee_pi IODev MQTT2_FHEM_Server
attr MQTT2_zigbee_pi autocreate 1
attr MQTT2_zigbee_pi bridgeRegexp zigbee2mqtt/((?!bridge)[A-Za-z0-9._]+)/?.*:.* "zigbee_$1"
attr MQTT2_zigbee_pi comment To check for new updates of the deamon software, you might want to use a separate HTTPMOD device. See HTTPMOD template zigbee2mqtt_daemon_updates for further details.
attr MQTT2_zigbee_pi devicetopic zigbee2mqtt
attr MQTT2_zigbee_pi getList networkmap_raw:noArg raw $DEVICETOPIC/bridge/request/networkmap raw\
  networkmap_graphviz:noArg graphviz $DEVICETOPIC/bridge/request/networkmap graphviz
attr MQTT2_zigbee_pi icon mqtt
attr MQTT2_zigbee_pi model zigbee2mqtt_bridge
attr MQTT2_zigbee_pi readingList $DEVICETOPIC/bridge/state:.* state\
  $DEVICETOPIC/bridge/config/devices:.* {}\
  $DEVICETOPIC/bridge/config/log_level:.* log_level\
  $DEVICETOPIC/bridge/config/permit_join:.* permit_join\
  $DEVICETOPIC/bridge/config/rename:.* { json2nameValue($EVENT, 'rename_') }\
  $DEVICETOPIC/bridge/config:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/bridge/log:.*\"type\".\"devices\".\"message\".* devices\
  $DEVICETOPIC/bridge/log:.* log\
  $DEVICETOPIC/bridge/logging:.* { json2nameValue($EVENT,'log_') }\
  $DEVICETOPIC/bridge/response/networkmap:.* { my $type = $EVENT =~ m/.*,"type":"(raw|graphviz)",.*/ ? $1 : 'networkmap';; $EVENT =~ m/{"data":\{.*"value":"?(.*[^"])"?\},"status":"ok"\}/ ? { $type=>$1 } : {} }\
  $DEVICETOPIC/bridge/devices:.* devices\
  $DEVICETOPIC/bridge/info:.* info\
  $DEVICETOPIC/bridge/groups:.* groups\
  $DEVICETOPIC/bridge/event:.* { json2nameValue($EVENT) }\
  $DEVICETOPIC/bridge/extensions:.* extensions\
  $DEVICETOPIC/bridge/info:.* { json2nameValue($EVENT) }\
zigbee_pi:zigbee2mqtt/bridge/response/device/ota_update/check:.* { json2nameValue($EVENT) }\
zigbee_pi:zigbee2mqtt/bridge/response/device/generate_external_definition:.* { json2nameValue($EVENT) }
attr MQTT2_zigbee_pi room MQTT2_DEVICE,System,ZigBee
attr MQTT2_zigbee_pi setList log_level:debug,info,warn,error $DEVICETOPIC/bridge/config/log_level $EVTPART1\
  permit_join:true,false $DEVICETOPIC/bridge/request/permit_join $EVTPART1\
  remove:textField $DEVICETOPIC/bridge/config/remove $EVTPART1\
  ota_update:textField $DEVICETOPIC/bridge/ota_update/update $EVTPART1\
  ota_update_check:textField $DEVICETOPIC/bridge/ota_update/check $EVTPART1\
  y_device_setting:textField $DEVICETOPIC/$EVTPART1/set {"$EVTPART2": "$EVTPART3"}\
  x_bind:textField $DEVICETOPIC/bridge/bind/$EVTPART1 $EVTPART2\
  x_bind_unbind:textField $DEVICETOPIC/bridge/unbind/$EVTPART1 $EVTPART2\
  x_device_options:textField $DEVICETOPIC/bridge/config/device_options {"friendly_name":"$EVTPART1","options": {"$EVTPART2": "$EVTPART3"}}\
  x_group_add_to:textField $DEVICETOPIC/bridge/group/$EVTPART1/add $EVTPART2\
  x_group_rm_from:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove $EVTPART2\
  x_group_rm_from_all:textField $DEVICETOPIC/bridge/group/$EVTPART1/remove_all $EVTPART2\
  x_group_add_group:textField $DEVICETOPIC/bridge/config/add_group $EVTPART1\
  x_group_rm_group:textField $DEVICETOPIC/bridge/config/remove_group $EVTPART1\
  z_elapsed:textField $DEVICETOPIC/bridge/config/elapsed $EVTPART1\
  z_last_seen:disable,ISO_8601,epoch,ISO_8601_local $DEVICETOPIC/bridge/config/last_seen $EVTPART1\
  z_ban:textField $DEVICETOPIC/bridge/config/ban $EVTPART1\
  z_rename:textField $DEVICETOPIC/bridge/config/rename  {"old":"$EVTPART1","new":"$EVTPART2"}\
  z_reset_CC:noArg $DEVICETOPIC/bridge/config/reset

DeeSPe

#259
Zitat von: Tueftler1983 am 27 Januar 2026, 00:01:16Ist bei dir das reading "version" garnicht vorhanden?
Bekommst du denn aktualisierte readings wenn du zigbee2mqtt neu startest?

Genau, Reading "version" gibt es überhaupt nicht. Auch keine anderen Readings aus dem "info" Topic.
Auch ein Neustart bringt es nicht.
Wie gesagt, im MQTT Explorer sehe ich dass das "info" Topic verstümmelt ist, deswegen werden wohl die Readings nicht erstellt.
Hab gestern Abend mal einen neuen zigbee2mqtt Container augesetzt, bei dem ist genau das Selbe!

Kann es evtl. am Broker liegen? Einen anderen Broker habe ich bisher nämlich noch nicht getestet. Ich benutze aktuell MQTT2_SERVER.

Welchen Broker benutzt ihr und wie ist zigbee2mqtt installiert? Als LXC-Container (hab ich) oder Docker oder einfach von Github ausgescheckt?

Danke für Eure Hilfe!

Gruß
Dan

P.S. Topic "info" sollte doch den Inhalt haben wie in zigbee2mqtt->Einstellungen->Bridge, oder?
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

DeeSPe

So, anderen Broker (mosquitto) probiert. Selbes Bild. Das "info" Topic bleibt verstümmelt!

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

Tueftler1983

hey,
Also bei mir ist alles so auf dem Raspberry installiert ohne Container oder so und ich nutze dem MQTT2 Server. habe irgendwann umgestellt von Mosquitto zu Mqtt2

DeeSPe

Danke für die Info Tueftler1983.

Ein klein Wenig weiter bin ich. Habe jetzt herausgefunden dass die verstümmelten "info" Topics nur max. 20000 Zeichen enthalten.
Das komplette Topic wie in zigbee2mqtt->Einstellungen->Bridge ist bei mir aber über 58000 Zeichen lang.
Das sieht mir nach einem Problem bei zigbee2mqtt aus, nur komisch dass es bei dir mit v2.7.2 klappt.

Gruß
Dan
MAINTAINER: 22_HOMEMODE, 98_Hyperion, 98_FileLogConvert, 98_serviced

Als kleine Unterstützung für meine Programmierungen könnt ihr mir gerne einen Kaffee spendieren: https://buymeacoff.ee/DeeSPe

SH_Heini

Hallo,
ich hab das Problem auch schon länger, sowohl unter Docker als auch "normal" installiert.
Hatte vorher MQTT_Server und jetzt Mosqitto im Docker.

Die verstümmelte JSON Nachricht kommt evtl durch eine Limitierung bei MQTTExplorer (bei mir sind es auch exakt 20000 Zeichen), denn bei MQTT_Server unter "show MQTT Traffic" kommt die Nachricht bei mir vollständig unter "zigbee2mqtt/bridge/info" an, wird aber nicht ausgewertet.

Auch bei mir knapp 59000 Zeichen in der Info-Nachricht.

Viel mehr kann ich leider dazu nicht beitragen

Tueftler1983

#264
Zitat von: SH_Heini am 27 Januar 2026, 14:49:52Hallo,
ich hab das Problem auch schon länger, sowohl unter Docker als auch "normal" installiert.
Hatte vorher MQTT_Server und jetzt Mosqitto im Docker.

Die verstümmelte JSON Nachricht kommt evtl durch eine Limitierung bei MQTTExplorer (bei mir sind es auch exakt 20000 Zeichen), denn bei MQTT_Server unter "show MQTT Traffic" kommt die Nachricht bei mir vollständig unter "zigbee2mqtt/bridge/info" an, wird aber nicht ausgewertet.

Auch bei mir knapp 59000 Zeichen in der Info-Nachricht.

Viel mehr kann ich leider dazu nicht beitragen

Dann kannst du aber mit
$DEVICETOPIC/bridge/info:.* { json2nameValue($EVENT) }
aus dieser die version auslesen, das klappt ja bei mir auch.


P.S. die Info mit der Aktuellen Version etc wird bei mir aber nur übertragen wenn z.b. Zigbee2Mqtt neu gestartet wird!

SH_Heini

Mein Client sieht so aus:

defmod MOSQUITTO_WPI MQTT2_CLIENT 192.168.5.10:1880
attr MOSQUITTO_WPI DbLogExclude .*
attr MOSQUITTO_WPI autocreate complex
attr MOSQUITTO_WPI clientId zigbee2mqtt
attr MOSQUITTO_WPI devStateIcon opened:15px-green\
disconnected:15px-red
attr MOSQUITTO_WPI group Z2M_WPI
attr MOSQUITTO_WPI icon mqtt_broker
attr MOSQUITTO_WPI ignoreRegexp homeassistant_tvpi|homeassistant
attr MOSQUITTO_WPI room MQTT,N_E_U
attr MOSQUITTO_WPI sortby 1

mein Sammeldevice für die Bridgenachrichten so:

defmod Z2M_WPI_SAMMELDEVICE MQTT2_DEVICE zigbee2mqtt
attr Z2M_WPI_SAMMELDEVICE DbLogExclude .*
attr Z2M_WPI_SAMMELDEVICE IODev MOSQUITTO_WPI
attr Z2M_WPI_SAMMELDEVICE comment momentan kein JSON fuer Version\
daher selbst setzen mit:\
\
setreading Z2M_WPI_SAMMELDEVICE info_version 2.7.2\
setreading Z2M_WPI_SAMMELDEVICE info_permit_join false
attr Z2M_WPI_SAMMELDEVICE devicetopic zigbee2mqtt
attr Z2M_WPI_SAMMELDEVICE event-on-change-reading .*
attr Z2M_WPI_SAMMELDEVICE group Z2M_WPI
attr Z2M_WPI_SAMMELDEVICE icon control_minus@red
attr Z2M_WPI_SAMMELDEVICE readingList $DEVICETOPIC/bridge/response/restart:.* { json2nameValue($EVENT, 'restart_', $JSONMAP) }\
\
$DEVICETOPIC/bridge/state:.* { json2nameValue($EVENT, 'bridge_', $JSONMAP) }\
$DEVICETOPIC/bridge/response.*:.* { }\
$DEVICETOPIC/bridge/converters:.* {}\
$DEVICETOPIC/bridge/definitions:.* {}\
$DEVICETOPIC/bridge/devices:.* {}\
$DEVICETOPIC/bridge/extensions:.* {}\
$DEVICETOPIC/bridge/groups:.* {}\
$DEVICETOPIC/bridge/event:.* { }\
$DEVICETOPIC/bridge/health:.* {}\
$DEVICETOPIC/bridge/logging:.* {}\
$DEVICETOPIC/bridge/request/restart:.* restart\
$DEVICETOPIC/bridge/info:.* { json2nameValue($EVENT) }
$DEVICETOPIC/Coordinator/availability:.* { json2nameValue($EVENT, 'coordinator_', $JSONMAP) }\
$DEVICETOPIC/901/availability:.* { json2nameValue($EVENT, '901_availability_', $JSONMAP) }\


attr Z2M_WPI_SAMMELDEVICE room MQTT,N_E_U
attr Z2M_WPI_SAMMELDEVICE setList deletereading:noArg {fhem("deletereading -q $NAME .*");;return undef}
attr Z2M_WPI_SAMMELDEVICE sortby 2
attr Z2M_WPI_SAMMELDEVICE stateFormat info_version


Vielleicht sieht ja jemand den Fehler, alle anderen Topics werden verarbeitet aber sind für mich nicht relevant, daher die "{}".
Ich hab mir erstamal mit setreading (comment) ausgeholfen, in der Annahme es ist ein Fehler bei Zigbee2mqtt selbst, aber bei einigen scheint es ja zu funktionieren.
Kann mal bitte jemand bei dem es funktioniert unter Zigbee2mqtt - Einstellungen - Bridge schauen, ob da auch so viele Zeichen sind.? Bei mir sind dort nochmal sämtliche Devices mit Eigenschaften aufgeführt.
Danke

SH_Heini

Hab dein Edit zu spät gelesen,ja Z2m Neustarts hab ich natürlich gemacht.

Hans Franz

@DeeSPe

Zitat$DEVICETOPIC/bridge/info/version:.* { json2nameValue($EVENT) }
vs.:
Zitat$DEVICETOPIC/bridge/info:.* { json2nameValue($EVENT) }

Das Topic "info" enthält nochmal "info":
$DEVICETOPIC/bridge/info/info:.* { json2nameValue($EVENT) }Ist hier aber irrelevant.
Raspi
CUL, Nano-CUL
FHT8V, FHT80B, S300TH
WM1000WZ, ELRO
LW12, LD382,DS18B20

Tueftler1983

Was mir grade nur auffällt, der backslash am ende jeder zeile muss der bei dir sein?? den hast du ja bei der zeile die ich geschickt habe nicht gemacht

SH_Heini

Ich hab die Zeile schon länger drin, und beim Kopieren aus der RAW Definition einige Sachen rausgeschnitten, dabei hab ich den Backslash auch versehentlich rausgeschnitten.
Hier noch das uneditierte readingslist:

$DEVICETOPIC/bridge/response/restart:.* { json2nameValue($EVENT, 'restart_', $JSONMAP) }

$DEVICETOPIC/bridge/state:.* { json2nameValue($EVENT, 'bridge_', $JSONMAP) }
$DEVICETOPIC/bridge/response.*:.* { }
$DEVICETOPIC/bridge/converters:.* {}
$DEVICETOPIC/bridge/definitions:.* {}
$DEVICETOPIC/bridge/devices:.* {}
$DEVICETOPIC/bridge/extensions:.* {}
$DEVICETOPIC/bridge/groups:.* {}
$DEVICETOPIC/bridge/event:.* { }
$DEVICETOPIC/bridge/health:.* {}
$DEVICETOPIC/bridge/logging:.* {}
$DEVICETOPIC/bridge/request/restart:.* restart
$DEVICETOPIC/bridge/info:.* { json2nameValue($EVENT) }
$DEVICETOPIC/TUERKLINGEL/action:.* {}
$DEVICETOPIC/SCHALTER_WAND_SZ/action:.* {}
$DEVICETOPIC/SCHALTER_AQARA_01/action:.* {}
$DEVICETOPIC/Coordinator/availability:.* { json2nameValue($EVENT, 'coordinator_', $JSONMAP) }
$DEVICETOPIC/901/availability:.* { json2nameValue($EVENT, '901_availability_', $JSONMAP) }