ring-mqtt (auf FHEM mit Broker "MQTT2_SERVER")

Begonnen von Sascha_F, 15 August 2020, 23:07:51

Vorheriges Thema - Nächstes Thema

JF Mennedy

Hallo,

das Thema ist zwar schon etwas älter, ich habe aber vor kurzem ring-mqtt ausprobiert und finde es eigentlich sehr gut, da ich hierbei die Möglichkeit habe die Location (arm-away, arm-home, disarm) bei Ring zu verändern, was z.B bei fhempy oder anderen Ring-Lösungen nicht geht.

Ich habe 2 Ring Türklingeln und 1 Ring Chime sowie die Location in FHEM als MQTT2 Devices eingebunden. Im MQTT2-Server ist für meine FHEM Instanz eine feste ClientID vergeben.

Soweit so gut, aber ich habe exreme Schwierigkeiten mit meinen beiden Klingel. Diese laufen einige Tage problemlos, und irgendwann fangen sie an mein Log (in Verbose 5) mit folgenden Meldungen zu befüllen:


2022.07.28 21:55:12.281 1: ERROR evaluating my $CID=   $evalSpecials->{'%CID'};my $EVENT=   $evalSpecials->{'%EVENT'};my $EVTPART0=   $evalSpecials->{'%EVTPART0'};my $EVTPART1=   $evalSpecials->{'%EVTPART1'};my $EVTPART2=   $evalSpecials->{'%EVTPART2'};my $EVTPART3=   $evalSpecials->{'%EVTPART3'};my $EVTPART4=   $evalSpecials->{'%EVTPART4'};my $EVTPART5=   $evalSpecials->{'%EVTPART5'};my $EVTPART6=   $evalSpecials->{'%EVTPART6'};my $EVTPART7=   $evalSpecials->{'%EVTPART7'};my $EVTPART8=   $evalSpecials->{'%EVTPART8'};my $EVTPART9=   $evalSpecials->{'%EVTPART9'};my $JSONMAP=   $evalSpecials->{'%JSONMAP'};my $NAME=   $evalSpecials->{'%NAME'};my $TOPIC=   $evalSpecials->{'%TOPIC'};{return undef; { $TOPIC =~ m,$DEVICETOPIC\/.*\/([a-zA-Z\-_]+),; $1 eq 'ips'? {"ip4"=> (split ',',$EVENT)[0]}:{"$1"=>$EVENT} }}: Global symbol "$DEVICETOPIC" requires explicit package name (did you forget to declare "my $DEVICETOPIC"?) at (eval 55982946) line 1.

2022.07.28 21:55:12.281 3: Global symbol "$DEVICETOPIC" requires explicit package name (did you forget to declare "my $DEVICETOPIC"?) at (eval 55982946) line 1.


Nach einem Neustart von FHEM werden die Readings der beiden Klngeln nicht mehr aktualisiert, das Chime Device sowie Location Device gehen immer noch problemlos. Im MQTT-Explorer kommen aber immer noch munter alle Aktualisierungen der jeweiligen Topics an...

Nach Löschen und Neuanlgen der beiden Devices funktionieren sie wieder für ein paar Tage, bis spätestens FHEM zu BackUp-Zwecken wöchentlich heruntergefahren und neugestartet wird.

Mir ist auch aufgefallen, dass das erstellen des Snaphotes jeweils 2 mal im Millisekundenbereich folgenden Log-Eintrag erstellt:


2022.07.28 00:00:03.517 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/image => snapshotImage
2022.07.28 00:00:03.565 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/attributes => { json2nameValue($EVENT,'',$JSONMAP) }
2022.07.28 00:00:03.608 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/image => snapshotImage
2022.07.28 00:00:03.651 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/attributes => { json2nameValue($EVENT,'',$JSONMAP) }
2022.07.28 00:00:32.807 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/image => snapshotImage
2022.07.28 00:00:32.849 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/attributes => { json2nameValue($EVENT,'',$JSONMAP) }
2022.07.28 00:00:32.874 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/image => snapshotImage
2022.07.28 00:00:32.921 4: MQTT2_DEVICE_Parse: MQTT2_RING_HAUSTUER ring/u0u4dz-vm-0/camera/083a882690cc/snapshot/attributes => { json2nameValue($EVENT,'',$JSONMAP) }


Ich habe jetzt mal das Intervall von 30 Sekunden auf 10 Minuten abgehoben... Das Reading des Images ist eine Rohdatei, die aussieht wie die Karte bei Valetudo, vielleicht macht das ja auch Probleme

Anbei noch die Lists der jeweiligen Devices:

Chime:

Internals:
   CID        FHEM-MARDELLE5
   DEF        FHEM-MARDELLE5
   FUUID      62a86817-f33f-8cc0-87b8-182c3877bd411c96
   FVERSION   10_MQTT2_DEVICE.pm:0.258890/2022-03-27
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_CONN MQTT2_SERVER_172.17.0.11_48024
   MQTT2_SERVER_MSGCNT 180
   MQTT2_SERVER_TIME 2022-07-29 12:13:51
   MSGCNT     180
   NAME       MQTT2_RING_CHIME
   NR         1044
   STATE      volume
   TYPE       MQTT2_DEVICE
   eventCount 180
   READINGS:
     2022-07-28 21:57:35   IODev           MQTT2_SERVER
     2022-07-29 12:13:51   firmwareStatus  Up to Date
     2022-07-29 12:13:51   lastUpdate      2022-07-29T07:30:02Z
     2022-07-28 21:58:57   minutes_remaining 0
     2022-07-28 21:58:58   play_ding_soundState OFF
     2022-07-28 21:58:58   play_motion_soundState OFF
     2022-07-28 21:58:57   snoozeState     OFF
     2022-07-28 21:58:57   snooze_minutesState 150
     2022-07-28 18:35:28   state           volume
     2022-07-29 11:48:57   subscriptions   # $SYS/#
     2022-07-29 06:15:08   volumeState     8
     2022-07-29 12:13:51   wirelessNetwork MelowMennedy
     2022-07-29 12:13:51   wirelessSignal  -39
Attributes:
   DbLogExclude .*
   IODev      MQTT2_SERVER
   alias      Chime
   autocreate 0
   devicetopic ring/u0u4dz-vm-0/chime/54e0195dcc62
   readingList $DEVICETOPIC/volume/state:.* volumeState
  $DEVICETOPIC/snooze/state:.* snoozeState
  $DEVICETOPIC/snooze/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/snooze_minutes/state:.* snooze_minutesState
  $DEVICETOPIC/play_ding_sound/state:.* play_ding_soundState
  $DEVICETOPIC/play_motion_sound/state:.* play_motion_soundState
  $DEVICETOPIC/info/state:.* { json2nameValue($EVENT,'',$JSONMAP) }
   room       56_MQTT,78_Ring
   setList    volume:slider,0,1,11 $DEVICETOPIC/volume/command $EVTPART1
snooze:ON $DEVICETOPIC/snooze/command $EVTPART1
snooze_minutes:slider,0,10,1440 $DEVICETOPIC/snooze_minutes/command $EVTPART1
play_ding_sound:ON $DEVICETOPIC/play_ding_sound/command $EVTPART1
play_motion_sound:ON $DEVICETOPIC/play_motion_sound/command $EVTPART1
attr MQTT2_RING_CHIME stateFormat infoState
   webCmd     volume


Klingel 1:

Internals:
   CID        FHEM-MARDELLE5
   DEF        FHEM-MARDELLE5
   FUUID      62e0e755-f33f-8cc0-5fe2-c136d8c0e055470d
   FVERSION   10_MQTT2_DEVICE.pm:0.258890/2022-03-27
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_CONN MQTT2_SERVER_172.17.0.11_48024
   MQTT2_SERVER_MSGCNT 9
   MQTT2_SERVER_TIME 2022-07-28 21:58:58
   MSGCNT     9
   NAME       MQTT2_RING_HAUSTUER
   NR         1062
   STATE      inactive
   TYPE       MQTT2_DEVICE
   eventCount 9
   READINGS:
     2022-07-28 21:57:35   IODev           MQTT2_SERVER
     2022-07-28 21:51:46   eventId         7125470616654510585
     2022-07-28 21:53:51   firmwareStatus  Up to Date
     2022-07-28 21:58:57   lastMotion      1659027911
     2022-07-28 21:58:57   lastMotionTime  2022-07-28T17:05:11Z
     2022-07-28 21:53:51   lastUpdate      2022-07-28T19:18:13Z
     2022-07-28 21:58:57   motionDetectionEnabled true
     2022-07-28 19:08:12   motionState     OFF
     2022-07-28 21:58:57   personDetected  true
     2022-07-28 21:58:58   status          inactive
     2022-07-28 21:53:51   still_Image_URL https://localhost:8123{{ states.camera.haustuer_snapshot.attributes.entity_picture }}
     2022-07-28 21:58:58   streamState     OFF
     2022-07-28 21:53:51   stream_Source   rtsp://172.17.0.11:8554/083a882690cc_live
     2022-07-29 11:48:57   subscriptions   # $SYS/#
     2022-07-28 21:58:40   timestamp       1659038316
     2022-07-28 21:53:51   wiredNetwork    online
Attributes:
   DbLogExclude .*
   IODev      MQTT2_SERVER
   alias      Ring Haustür
   autocreate 0
   devicetopic ring/u0u4dz-vm-0/camera/083a882690cc
   readingList $DEVICETOPIC/ding/state:.* dingState
  $DEVICETOPIC/motion/state:.* motionState
  $DEVICETOPIC/light/state:.* lightState
  $DEVICETOPIC/siren/state:.* sirenState
  $DEVICETOPIC/info/state:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/stream/state:.* streamState
  $DEVICETOPIC/event_stream/state:.* event_streamState
  $DEVICETOPIC/event_select/state:.* event_select
  $DEVICETOPIC/ding/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/motion/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/snapshot/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/stream/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/event_stream/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/event_select/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/snapshot/image:.* snapshotImage

   room       56_MQTT,78_Ring
   setList    light:ON,OFF $DEVICETOPIC/light/command $EVTPART1
siren:ON,OFF $DEVICETOPIC/siren/command $EVTPART1
stream:ON,OFF $DEVICETOPIC/stream/command $EVTPART1
snapshot_interval:slider,10,100,604800 $DEVICETOPIC/snapshot_interval/command $EVTPART1
motion_event_select:select,1,2,3,4,5 $DEVICETOPIC/event_select/command Motion $EVTPART1
On-demand_event_select:select,1,2,3,4,5 $DEVICETOPIC/event_select/command On-demand $EVTPART1
Ding_event_select:select,1,2,3,4,5 $DEVICETOPIC/event_select/command Ding $EVTPART1
   stateFormat status
   verbose    5


Klingel 2:

Internals:
   CID        FHEM-MARDELLE5
   DEF        FHEM-MARDELLE5
   FUUID      62e0e81f-f33f-8cc0-25ea-4a0f20d4baaeac27
   FVERSION   10_MQTT2_DEVICE.pm:0.258890/2022-03-27
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_CONN MQTT2_SERVER_172.17.0.11_48024
   MQTT2_SERVER_MSGCNT 3
   MQTT2_SERVER_TIME 2022-07-28 21:58:51
   MSGCNT     3
   NAME       MQTT2_RING_TERRASSE
   NR         1063
   STATE      inactive
   TYPE       MQTT2_DEVICE
   eventCount 3
   READINGS:
     2022-07-29 11:49:01   IODev           MQTT2_SERVER
     2022-07-28 21:53:51   batteryLevel    100
     2022-07-28 21:53:51   firmwareStatus  Up to Date
     2022-07-28 21:58:51   lastMotion      1658222686
     2022-07-28 21:58:51   lastMotionTime  2022-07-19T09:24:46Z
     2022-07-28 21:53:51   lastUpdate      2022-07-28T18:48:03Z
     2022-07-28 21:58:51   motionDetectionEnabled true
     2022-07-28 21:58:51   personDetected  false
     2022-07-28 21:58:51   status          inactive
     2022-07-28 21:53:51   still_Image_URL https://localhost:8123{{ states.camera.terrasse_snapshot.attributes.entity_picture }}
     2022-07-28 21:58:51   streamState     OFF
     2022-07-28 21:53:51   stream_Source   rtsp://172.17.0.11:8554/343ea41120cb_live
     2022-07-29 11:48:57   subscriptions   # $SYS/#
     2022-07-28 21:53:51   wirelessNetwork MelowMennedy
     2022-07-28 21:53:51   wirelessSignal  -57
Attributes:
   DbLogExclude .*
   IODev      MQTT2_SERVER
   alias      Ring Terrasse
   autocreate 0
   devicetopic ring/u0u4dz-vm-0/camera/343ea41120cb
   disable    0
   readingList $DEVICETOPIC/ding/state:.* dingState
  $DEVICETOPIC/motion/state:.* motionState
  $DEVICETOPIC/light/state:.* lightState
  $DEVICETOPIC/siren/state:.* sirenState
  $DEVICETOPIC/info/state:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/stream/state:.* streamState
  $DEVICETOPIC/event_stream/state:.* event_streamState
  $DEVICETOPIC/event_select/state:.* event_select
  $DEVICETOPIC/ding/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/motion/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/snapshot/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/stream/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/event_stream/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/event_select/attributes:.* { json2nameValue($EVENT,'',$JSONMAP) }
  $DEVICETOPIC/snapshot/image:.* snapshotImage
   room       56_MQTT,78_Ring
   setList    light:ON,OFF $DEVICETOPIC/light/command $EVTPART1
siren:ON,OFF $DEVICETOPIC/siren/command $EVTPART1
stream:ON,OFF $DEVICETOPIC/stream/command $EVTPART1
snapshot_interval:slider,10,100,604800 $DEVICETOPIC/snapshot_interval/command $EVTPART1
motion_event_select:select,1,2,3,4,5 $DEVICETOPIC/event_select/command Motion $EVTPART1
On-demand_event_select:select,1,2,3,4,5 $DEVICETOPIC/event_select/command On-demand $EVTPART1
Ding_event_select:select,1,2,3,4,5 $DEVICETOPIC/event_select/command Ding $EVTPART1
   stateFormat status
   verbose    5


Location:

Internals:
   CID        FHEM-MARDELLE5
   DEF        FHEM-MARDELLE5
   FUUID      62d68af9-f33f-8cc0-c38a-29cf5fd341cb650c
   FVERSION   10_MQTT2_DEVICE.pm:0.258890/2022-03-27
   IODev      MQTT2_SERVER
   LASTInputDev MQTT2_SERVER
   MQTT2_SERVER_CONN MQTT2_SERVER_172.17.0.11_48024
   MQTT2_SERVER_MSGCNT 7
   MQTT2_SERVER_TIME 2022-07-29 10:56:18
   MSGCNT     7
   NAME       MQTT2_RING_MODE
   NR         1061
   STATE      armed_home
   TYPE       MQTT2_DEVICE
   eventCount 13
   READINGS:
     2022-07-28 21:57:35   IODev           MQTT2_SERVER
     2022-07-29 10:56:18   modeState       armed_home
     2022-07-29 10:56:18   state           mode
     2022-07-29 11:48:57   subscriptions   # $SYS/#
Attributes:
   DbLogExclude .*
   IODev      MQTT2_SERVER
   alias      Location Mode
   autocreate 0
   devicetopic ring/u0u4dz-vm-0/alarm/u0u4dz-vm-0_mode/mode
   readingList $DEVICETOPIC/state:.* modeState
   room       56_MQTT,78_Ring
   setList    mode:select,disarm,arm_home,arm_away $DEVICETOPIC/command $EVTPART1
   stateFormat modeState
   webCmd     mode


Falls jemand eine Ahnung hat, was da passiert, wäre ich dankbar :-)

Gruss Jan

rudolfkoenig

Die Fehlermeldung wird bei der Analyse des readingsList Attributes generiert, das gleiche Code findet sich auch im valetudo AttrTemplate (Setzen des ip4 Readings).

Die Ursache ist die fehlende DEVICETOPIC Variable. Diese ist eigentlich immer gesetzt, es sei denn das devicetopic Attribut enthaelt Leerzeichen, und weist DEVICETOPIC nicht explizit zu, siehe https://fhem.de/commandref_modular.html#MQTT2_DEVICE-attr-devicetopic

Ob die fehlende Aktulisierung ein Folgefehler ist, kann ich nicht mit Sicherheit sagen, dazu muesste ich den Fehlerfall nachstellen koennen _und_ Rohdaten haben.

JF Mennedy

Hallo Rudolf,

ich habe mal ein 2. Device parallel angelegt, in dem das DEVICETOPIC nicht als Attribut gesetzt ist. Wie könntest Du an Rohdaten kommen bzw. was könnte ich zur Verfügung stellen...

Ich betreibe auch das noch nicht offizielle fhempy Modul von Dominik auf einem Peer und mir ist aufgefallen, dass nach einem Neustart von FHEM die Verbindung zum Peer fehlschlägt, was zu etlichen log Einträgen führt. Nicht dass sich da etwas in die Quere kommt. Ist mir bisher nicht aufgefallen, da ich den Peer jede Nacht neustarte und somit morgens alles normal läuft...

Werde die beiden Varianten jetzt mal so laufen lassen und dann Rückmeldung geben, ob es ohne Vorgabe des DEVICETOPIC als Attribut besser geht...

Wünsche ein schönes Wochenende,

Gruss Jan