[GELÖST] Zigbee2mqtt kann nicht mehr zu FHEM mqtt verbinden

Begonnen von Moli, 12 September 2023, 06:54:58

Vorheriges Thema - Nächstes Thema

rudolfkoenig

ZitatDenke das liegt daran das vorher MyBroker der Server Name war und nun der Client Name ist. (merkt er sich irgendwas versteckt?)
Die Fehlermeldungen kommen, weil FHEM noch MQTT2_SERVER Verbindungen bedient, die den Namen des dazugehoerigen MQTT2_SERVERs gemerkt haben. Unter diesem Namen gibt es aber keine Definition, auch kein MQTT2_CLIENT.

In so einem Fall sollte man FHEM neu starten.

Moli

Neustart habe ich schon reichlich gemacht :)

Ein device und der broker.

Danke für die Hilfe!

defmod MQTT2_zigbee_SteckdoseZ1 MQTT2_DEVICE zigbee_SteckdoseZ1
attr MQTT2_zigbee_SteckdoseZ1 alexaName Laden Roller
attr MQTT2_zigbee_SteckdoseZ1 alias Laden Rolli
attr MQTT2_zigbee_SteckdoseZ1 devStateIcon {my $light = FW_makeImage(ReadingsVal($name,"state","off") eq "ON" ?"on":"off");; my $current = ReadingsVal($name,"current",0);; my $pwr = ReadingsVal($name,"power",0);; my $energy = ReadingsVal($name,"energy",0);; qq(<div> <a href="/fhem?cmd.dummy=set $name toggle&XHR=1">$light</a>  ${current}A   ${pwr}W<b></b>)}
attr MQTT2_zigbee_SteckdoseZ1 devicetopic zigbee2mqtt/SteckdoseZ1
attr MQTT2_zigbee_SteckdoseZ1 event-min-interval power:86400
attr MQTT2_zigbee_SteckdoseZ1 event-on-change-reading .*
attr MQTT2_zigbee_SteckdoseZ1 eventMap { dev=>{ON=>'on',OFF=>'off'} }
attr MQTT2_zigbee_SteckdoseZ1 genericDeviceType switch
attr MQTT2_zigbee_SteckdoseZ1 group Strom
attr MQTT2_zigbee_SteckdoseZ1 model zigbee2mqtt_plug_w_energy_measuring
attr MQTT2_zigbee_SteckdoseZ1 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT);;;; $ret->{state}=lc($ret->{state}) if defined $ret->{state};;;; return $ret }\
zigbee2mqtt/SteckdoseZ1/set:.* { json2nameValue($EVENT, 'set_', $JSONMAP) }
attr MQTT2_zigbee_SteckdoseZ1 room Alexa,Siri
attr MQTT2_zigbee_SteckdoseZ1 setList on:noArg $DEVICETOPIC/set {"state":"ON"}\
  off:noArg $DEVICETOPIC/set {"state":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state":"TOGGLE"}
attr MQTT2_zigbee_SteckdoseZ1 setStateList on off toggle


defmod MyBrokerClient MQTT2_CLIENT localhost:1883
attr MyBrokerClient room MQTT2_DEVICE

Beta-User

Zitat von: Moli am 12 September 2023, 11:58:11Neustart habe ich schon reichlich gemacht :)

Ein device und der broker.

Danke für die Hilfe!

defmod MQTT2_zigbee_SteckdoseZ1 MQTT2_DEVICE zigbee_SteckdoseZ1
attr MQTT2_zigbee_SteckdoseZ1 alexaName Laden Roller
attr MQTT2_zigbee_SteckdoseZ1 alias Laden Rolli
attr MQTT2_zigbee_SteckdoseZ1 devStateIcon {my $light = FW_makeImage(ReadingsVal($name,"state","off") eq "ON" ?"on":"off");; my $current = ReadingsVal($name,"current",0);; my $pwr = ReadingsVal($name,"power",0);; my $energy = ReadingsVal($name,"energy",0);; qq(<div> <a href="/fhem?cmd.dummy=set $name toggle&XHR=1">$light</a>  ${current}A   ${pwr}W<b></b>)}
attr MQTT2_zigbee_SteckdoseZ1 devicetopic zigbee2mqtt/SteckdoseZ1
attr MQTT2_zigbee_SteckdoseZ1 event-min-interval power:86400
attr MQTT2_zigbee_SteckdoseZ1 event-on-change-reading .*
attr MQTT2_zigbee_SteckdoseZ1 eventMap { dev=>{ON=>'on',OFF=>'off'} }
attr MQTT2_zigbee_SteckdoseZ1 genericDeviceType switch
attr MQTT2_zigbee_SteckdoseZ1 group Strom
attr MQTT2_zigbee_SteckdoseZ1 model zigbee2mqtt_plug_w_energy_measuring
attr MQTT2_zigbee_SteckdoseZ1 readingList $DEVICETOPIC:.* { my $ret=json2nameValue($EVENT);;;; $ret->{state}=lc($ret->{state}) if defined $ret->{state};;;; return $ret }\
zigbee2mqtt/SteckdoseZ1/set:.* { json2nameValue($EVENT, 'set_', $JSONMAP) }
attr MQTT2_zigbee_SteckdoseZ1 room Alexa,Siri
attr MQTT2_zigbee_SteckdoseZ1 setList on:noArg $DEVICETOPIC/set {"state":"ON"}\
  off:noArg $DEVICETOPIC/set {"state":"OFF"}\
  toggle:noArg $DEVICETOPIC/set {"state":"TOGGLE"}
attr MQTT2_zigbee_SteckdoseZ1 setStateList on off toggle


defmod MyBrokerClient MQTT2_CLIENT localhost:1883
attr MyBrokerClient room MQTT2_DEVICE
Ohne die "setstate"-Zeilen ist das bzgl. des Devices einigermaßen nutzlos, denn es interessieren uns die Infos zum IODev...
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

rudolfkoenig

ZitatNeustart habe ich schon reichlich gemacht :)
Mag sein, die Fehlermeldungen stammen aber aus der Zeit zwischen Umbenennen und Neustart.

Moli

Es geht, aber ich weiß nicht warum. Ich habe noch mal die gleichen Einstellungen im Zigbee2mqtt abgespeichert. Eigentlich unerealitisch.

Totzdem Danke an alle, muss wohl doch nicht alle neu anlegen.
Wäre natürlich hilfreich gewesen wenn ich euch sagen könnte woran es lag.

rudolfkoenig

ZitatEs geht, aber ich weiß nicht warum.
Mit welcher Kombination?
MQTT2_SERVER oder MQTT2_CLIENT mit mosquitto?

Moli


rob

Ich habe das mal versucht nachzustellen, scheint aber alles im grünen Bereich zu sein  8)

Die letzte Version laut Github ist latest und wurde vor 12 Tagen erstellt.
Die letzte Änderung erfolgte vor 2 Tagen nur auf dev.

Testaufbau:
  • FHEM in Docker
  • zigbee2mqtt (z2m) in Docker
  • alles IPV4, beide Container im selbem Netz
  • beide Container AMD64

Ältere z2m Version 1.22.0 im Testaufbau mit FHEM via MQTT2_SERVER verbunden, ein Device gepairt + umbenannt, kein IODev per Attribut gesetzt → OK, kommt sauber in FHEM an
Version 1.22.0 aktualisiert auf latest 1.33.0, in FHEM alles unverändert → OK, kommt sauber in FHEM an
Version 1.33.0 aktualisiert auf 1.33.0-dev, in FHEM alles unverändert → OK, kommt sauber in FHEM an

In allen Versionen steht MQTT-Version immer auf 4. Test mit explizit MQTT-Version 5 in z2m via WebIF gesetzt → OK, kommt sauber in FHEM an
Neustart von z2m mit noch immer gesetzter MQTTv5 → NOK, z2m startet nicht:
Zigbee2MQTT:info  2023-09-13 12:30:31: Zigbee: disabling joining new devices.
Zigbee2MQTT:info  2023-09-13 12:30:31: Connecting to MQTT server at mqtt://myfhem:1883
Zigbee2MQTT:error 2023-09-13 12:30:31: MQTT error: Connection refused: Unacceptable protocol version
Zigbee2MQTT:error 2023-09-13 12:30:31: MQTT failed to connect, exiting...
Zigbee2MQTT:info  2023-09-13 12:30:31: Stopping zigbee-herdsman...
Zigbee2MQTT:info  2023-09-13 12:30:32: Stopped zigbee-herdsman

Letzter Test mit z2m explizit auf eine (bei mir) ungültige Adressauflösung für den Broker umgestellt und restart → NOK, z2m startet nicht, ähnliche Meldung wie Eingangs im Fred beschrieben
Zigbee2MQTT:info  2023-09-13 12:41:40: Zigbee: disabling joining new devices.
Zigbee2MQTT:info  2023-09-13 12:41:41: Connecting to MQTT server at mqtt://localhost:1883
Zigbee2MQTT:error 2023-09-13 12:41:41: MQTT error: connect ECONNREFUSED 127.0.0.1:1883
Zigbee2MQTT:error 2023-09-13 12:41:41: MQTT failed to connect, exiting...
Zigbee2MQTT:info  2023-09-13 12:41:41: Stopping zigbee-herdsman...

Zumindest mit meinem Testaufbau kann ich das Problem nicht 100%ig nachstellen, aber es scheint kein generelles/ akutes Problem mit z2m und MQTT2_SERVER zu bestehen.
Vermutung: Vielleicht ist MQTTv5 irgendwann im laufenden Betrieb testweise eingegeben worden, aber wirkte sich wie im Test zunächst nicht aus. Die Adressauflösung von localhost könnte sich ggf. durch Routereinstellung o.ä. geändert haben und wirkte sich ebenfalls zunächst nicht aus. Das Update selbst (auf welche Version auch immer) änderte nichts, jedoch der daraus resultierende Neustart: localhost anders aufgelöst (?) und nach setzen eindeutiger IP zog dann MQTTv5 auch gleich noch.

Meine Erfahrung: Es ist besser in z2m die Brokeradresse auf konkrete IP/Alias zu stellen, durch welche der Host im Netzwerk auch von anderen Geräten erreicht werden kann. In Docker immer mit den Docker-Network-Aliases arbeiten (Container zu Container).

Viele Grüße
rob




Zum Nachstellen auch für andere Mitleser
MQTT2_SERVER
define myMQTT_Server MQTT2_SERVER 1883 global
attr myMQTT_Server autocreate complex
attr myMQTT_Server icon mqtt
attr myMQTT_Server respectRetain 0
#   CONNECTS   5
#   Clients    :MQTT2_DEVICE:MQTT_GENERIC_BRIDGE:
#   ClientsKeepOrder 1
#   DEF        1883 global
#   FD         8
#   FUUID      64de36a1-f33f-938c-c6a9-78e362ffd179279f
#   FVERSION   00_MQTT2_SERVER.pm:0.276540/2023-06-04
#   NAME       myMQTT_Server
#   NR         53
#   PORT       1883
#   STATE      Initialized
#   TYPE       MQTT2_SERVER
#   eventCount 10
#   MatchList:
#     1:MQTT2_DEVICE ^.
#     2:MQTT_GENERIC_BRIDGE ^.
#   READINGS:
#     2023-09-13 11:28:56   nrclients       1
#     2023-09-13 08:32:17   state           Initialized
#   clients:
#     myMQTT_Server_172.18.0.1_57258 1
#
setstate myMQTT_Server 2023-09-13 11:28:56 nrclients 1
setstate myMQTT_Server 2023-09-13 08:32:17 state Initialized


MQTT2_DEVICE
define MQTT2_zigbee_moes MQTT2_DEVICE zigbee_moes
attr MQTT2_zigbee_moes readingList zigbee2mqtt/moes/availability:.* availability\
zigbee2mqtt/moes:.* { json2nameValue($EVENT, 'moes_', $JSONMAP) }
attr MQTT2_zigbee_moes room MQTT2_DEVICE
#   CFGFN     
#   CID        zigbee_moes
#   DEF        zigbee_moes
#   FUUID      65017282-f33f-938c-8ebe-b9e86fc5abd8df90
#   IODev      myMQTT_Server
#   LASTInputDev myMQTT_Server
#   MSGCNT     47
#   NAME       MQTT2_zigbee_moes
#   NR         1182
#   STATE      ???
#   TYPE       MQTT2_DEVICE
#   eventCount 49
#   myMQTT_Server_CONN myMQTT_Server_172.18.0.1_57258
#   myMQTT_Server_MSGCNT 47
#   myMQTT_Server_TIME 2023-09-13 11:43:33
#   READINGS:
#     2023-09-13 10:27:46   IODev           myMQTT_Server
#     2023-09-13 10:27:46   associatedWith  MQTT2_mqttjs_63931ab7
#     2023-09-13 10:27:46   availability    online
#     2023-09-13 11:43:33   moes_battery    100
#     2023-09-13 11:43:33   moes_humidity   84.76
#     2023-09-13 11:43:33   moes_illuminance 15186
#     2023-09-13 11:43:33   moes_illuminance_lux 33
#     2023-09-13 11:43:33   moes_linkquality 63
#     2023-09-13 11:43:33   moes_temperature 24.11
#
setstate MQTT2_zigbee_moes 2023-09-13 10:27:46 IODev myMQTT_Server
setstate MQTT2_zigbee_moes 2023-09-13 10:27:46 associatedWith MQTT2_mqttjs_63931ab7
setstate MQTT2_zigbee_moes 2023-09-13 10:27:46 availability online
setstate MQTT2_zigbee_moes 2023-09-13 11:43:33 moes_battery 100
setstate MQTT2_zigbee_moes 2023-09-13 11:43:33 moes_humidity 84.76
setstate MQTT2_zigbee_moes 2023-09-13 11:43:33 moes_illuminance 15186
setstate MQTT2_zigbee_moes 2023-09-13 11:43:33 moes_illuminance_lux 33
setstate MQTT2_zigbee_moes 2023-09-13 11:43:33 moes_linkquality 63
setstate MQTT2_zigbee_moes 2023-09-13 11:43:33 moes_temperature 24.11


MQTT-Config in z2m
"mqtt": {
    "base_topic": "zigbee2mqtt",
    "force_disable_retain": false,
    "include_device_information": false,
    "keepalive": 60,
    "reject_unauthorized": true,
    "server": "mqtt://myfhem:1883",
    "version": 4
},

Docker FHEM
docker run -d -p 8089:8083 -p 1883:1883 --net=testnet --name fhem --network-alias myfhem fhem/fhem
Docker z2m
#!/bin/bash
docker run -d \
   --name zigbee2mqtt \
   --net=testnet \
   --network-alias myzigbee2mqtt \
   -p 8081:8080 \
   -v ~/docker/zigbee2mqtt/:/app/data \
   -v /etc/localtime:/etc/localtime:ro \
   -v /etc/timezone:/etc/timezone:ro \
   --device=/dev/ttyACM0 \
   koenkk/zigbee2mqtt:latest


rudolfkoenig

@rob: Vielen Dank fuers Testen!

Ich habe versucht das Problem auch nachzustellen, mangels zigbee-Hardware wollte aber zigbee2mqtt bei mir nicht starten.