ringdoorbell etc. - mqtt

Begonnen von brain666, 21 April 2022, 13:26:07

Vorheriges Thema - Nächstes Thema

brain666

Servus zusammen,

für alle die es evtl. Interessiert es gibt eine weitere möglichkeit die Ring Produkte in Fhem zu integrieren https://github.com/tsightler/ring-mqtt

z.b. die Ring Doorbell

Ich habe das mal ausprobiert und bekomme regelmäßig alle readings übertragen
Inc. der Funktion für einen Live Stream & Image Funktion


Internals:
   CID        Ring_Kamera1
   DEF        Ring_Kamera1
   FUUID      6260ff4f-f33f-078c-50fd-aeadfcc278bd466a
   IODev      meinMQTT2Client
   LASTInputDev m2s
   MSGCNT     137
   NAME       Ring_Kamera1
   NR         631
   STATE      OFF
   TYPE       MQTT2_DEVICE
   m2s_CONN   m2s_127.0.0.1_52430
   m2s_MSGCNT 137
   m2s_TIME   2022-04-21 13:13:13
   .DT:
     DEVICETOPIC Ring_Kamera1
   .attraggr:
   .attrminint:
   READINGS:
     2022-04-21 10:19:00   IODev           meinMQTT2Client
     2022-04-21 13:13:13   attributes_batteryLevel 92
     2022-04-21 13:09:23   attributes_eventId 7087416364599786628
     2022-04-21 10:19:13   attributes_lastDing 0
     2022-04-21 10:19:13   attributes_lastDingTime
     2022-04-21 10:19:13   attributes_lastMotion 1650167714
     2022-04-21 10:19:13   attributes_lastMotionTime 2022-04-17T03:55:14Z
     2022-04-21 10:19:13   attributes_motionDetectionEnabled true
     2022-04-21 10:19:13   attributes_personDetected true
     2022-04-21 13:09:23   attributes_recordingUrl https://BLABLA
     2022-04-21 10:19:13   attributes_status inactive
     2022-04-21 13:13:13   attributes_wirelessNetwork EM WLAN
     2022-04-21 13:13:13   attributes_wirelessSignal -49
     2022-04-21 10:19:13   state           OFF
     2022-04-21 13:13:13   state_batteryLevel 92
     2022-04-21 13:13:13   state_firmwareStatus Up to Date
     2022-04-21 13:13:13   state_lastUpdate 2022-04-21T08:46:33Z
     2022-04-21 13:13:13   state_still_Image_URL https://localhost:8123{{ states.camera.haustür_snapshot.attributes.entity_picture }}
     2022-04-21 13:13:13   state_stream_Source rtsp://debian.zbox:8554/343ea419147b_live
     2022-04-21 13:13:13   state_wirelessNetwork EM WLAN
     2022-04-21 13:13:13   state_wirelessSignal -49
     2022-04-21 10:19:11   status          online
Attributes:
   autocreate 0
   devStateIcon {
my $WiFiQual = 'WLAN_Status.0@red';;
$WiFiQual='WLAN_Status.20@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -100));;
$WiFiQual='WLAN_Status.50@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -75));;
$WiFiQual='WLAN_Status.80@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -70));;
$WiFiQual='WLAN_Status.90@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -61));;
$WiFiQual='WLAN_Status.100@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -55));;
my $bat = 'measure_battery_100@green';;
$bat ='measure_battery_75@green' if (ReadingsVal($name, "attributes_batteryLevel", "Offline")<80);;
$bat ='measure_battery_50@green' if (ReadingsVal($name, "attributes_batteryLevel", "Offline")<60);;
$bat ='measure_battery_50@orange' if (ReadingsVal($name, "attributes_batteryLevel", "Offline")<50);;
$bat ='measure_battery_25@red' if (ReadingsVal($name, "attributes_batteryLevel", "Offline") < 25);;
"<div>" . FW_makeImage("$WiFiQual","??") . "   " . FW_makeImage("$bat","??") . " </div>" ;;
}
   readingList mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/status:.* status
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/wireless/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/battery/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/state:.* state
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/state:.* state
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/state:.* state
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/state:.* state
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/state:.* state
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/info/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }
   room       MQTT2_DEVICE

kjmEjfu

Zitat von: brain666 am 21 April 2022, 13:26:07
Inc. der Funktion für einen Live Stream & Image Funktion

und das funktioniert ohne jedes Abo?
Migriere derzeit zu Home Assistant

brain666

Hallo kjmEjfu

kann ich nicht sagen da ich zur Zeit ein Abo habe
müsste evtl. jemand testen der kein Abo hat.

Thyraz

Wahrscheinlich nicht:

Zitat
Even when using ring-mqtt, all streaming still goes through Ring cloud servers and is not local.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

brain666


ich habe die funktion Snapshot aktiviert dort wird auch ein Bild übertragen dieses lasse ich mir per WriteFile speichern
und lasse es mir dann im devstateicon anzeigen nur leider bekomme ich es nicht hin das ich die größe des Images ändern kann im devstateicon :(

Siehe Bild Anhang so sieht es bisher aus.


define Ring_Kamera1 MQTT2_DEVICE Ring_Kamera1
setuuid Ring_Kamera1 6260ff4f-f33f-078c-50fd-aeadfcc278bd466a
attr Ring_Kamera1 autocreate 0
attr Ring_Kamera1 devStateIcon {
my $WiFiQual = 'WLAN_Status.0@red';;
$WiFiQual='WLAN_Status.20@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -100));;
$WiFiQual='WLAN_Status.50@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -75));;
$WiFiQual='WLAN_Status.80@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -70));;
$WiFiQual='WLAN_Status.90@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -61));;
$WiFiQual='WLAN_Status.100@green' if ((ReadingsVal($name, "status", "Offline") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -55));;
my $bat = 'measure_battery_100@green';;
$bat ='measure_battery_75@green' if (ReadingsVal($name, "attributes_batteryLevel", "Offline")<80);;
$bat ='measure_battery_50@green' if (ReadingsVal($name, "attributes_batteryLevel", "Offline")<60);;
$bat ='measure_battery_50@orange' if (ReadingsVal($name, "attributes_batteryLevel", "Offline")<50);;
$bat ='measure_battery_25@red' if (ReadingsVal($name, "attributes_batteryLevel", "Offline") < 25);;
my $snapshot;;
$snapshot = "<img src='fhem/images/mqttjs_fa51d44e_map.png' style='max-width:128 max-height:128'>";;
"<div>" . FW_makeImage("$WiFiQual") . "   " . FW_makeImage("$bat") . "  " . FW_makeImage("$snapshot") . "</div>" ;;
}
attr Ring_Kamera1 readingList mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/status:.* status\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/wireless/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/battery/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/state:.* state\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/state:.* state\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/state:.* state\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/state:.* state\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/state:.* state\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/info/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_motion/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/select/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_select/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_ding/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_info/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_wireless/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_battery/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot/image:.* { WriteFile("www/images/mqttjs_fa51d44e_map.png",$EVENT);;;; {map=>"images/mqttjs_fa51d44e_map.png"} }
attr Ring_Kamera1 room MQTT2_DEVICE





brain666

den Live output habe ich auch gerade getestet und mit ffmpeg gegrabbed

testvideo im Anhang


ffmpeg -i rtsp://debian.zbox:8554/343ea419147b_live test.avi


brain666

#6
Das Device nochmals etwas überarbeitet image size funktioniert nun auch.



define Ring MQTT2_DEVICE Ring_Kamera1
setuuid Ring 6260ff4f-f33f-078c-50fd-aeadfcc278bd466a
attr Ring autocreate 0
attr Ring devStateIcon  {
my $WiFiQual = 'WLAN_Status.0@red';;
$WiFiQual='WLAN_Status.20@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -100));;
$WiFiQual='WLAN_Status.50@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -75));;
$WiFiQual='WLAN_Status.80@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -70));;
$WiFiQual='WLAN_Status.90@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -61));;
$WiFiQual='WLAN_Status.100@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -55));;
my $bat = 'measure_battery_100@green';;
$bat ='measure_battery_75@green' if (ReadingsVal($name, "attributes_batteryLevel", "0")<80);;
$bat ='measure_battery_50@green' if (ReadingsVal($name, "attributes_batteryLevel", "0")<60);;
$bat ='measure_battery_50@orange' if (ReadingsVal($name, "attributes_batteryLevel", "0")<50);;
$bat ='measure_battery_25@red' if (ReadingsVal($name, "attributes_batteryLevel", "0")< 25);;
my $snapshot;;
$snapshot = "<img src='/fhem/images/mqttjs_fa51d44e_map.png' style='max-width:160px;;max-height:130px'>";;
"<div><td>" . FW_makeImage("$snapshot") . "</td><td> " . FW_makeImage("$WiFiQual") . " " . FW_makeImage("$bat") . "</td></div>" ;;

}
attr Ring group ringdoor
attr Ring readingList mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/status:.* state\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/wireless/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/battery/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/state:.* streamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/state:.* eventstreamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/state:.* eventselectstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/state:.* motionstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/state:.* dingstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/info/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_motion/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/select/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_select/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_ding/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_info/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_wireless/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_battery/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot/image:.* { WriteFile("www/images/mqttjs_fa51d44e_map.png",$EVENT);;;; {map=>"images/mqttjs_fa51d44e_map.png"} }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot_interval/state:.* snapshotinterval
attr Ring room MQTT2_DEVICE

brain666

jetzt habe ich ein neues Problem entdeckt :(

ich nutze auf meinen Tables das dashboard und nach ca. 1,5 Minuten verdoppelt sich der output wie man auf dem Bild sieht.
Wenn ich dann das Dashboard verlasse und wieder zurück gehe ist die Anzeige wieder normal
Ich habe die gruppe mit der ring auch mal größer gezogen ob es sich evtl als weiter replutiziert dem ist aber nicht so

hat jemand evtl. eine Idee was hier schief läuft ?


brain666

ich habe es jetzt selbst hinbekommen

statt in devstateicon habe ich es in stateFormat eingetragen jetzt scheint der Fehler nichtmehr aufzutreten.

mein Device sieht bisher so aus bisher ohne Fehler und mit Anzeige des Screenshots

Die Readings werden


define Ring MQTT2_DEVICE Ring_Kamera1
setuuid Ring 6260ff4f-f33f-078c-50fd-aeadfcc278bd466a
attr Ring autocreate 0
attr Ring group ringdoor
attr Ring readingList mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/status:.* status2\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/wireless/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/battery/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/state:.* streamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/state:.* eventstreamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/state:.* eventselectstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/state:.* motionstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/state:.* dingstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/info/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_motion/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/select/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_select/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_ding/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_info/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_wireless/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_battery/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot/image:.* { WriteFile("www/images/mqttjs_fa51d44e_map.png",$EVENT);;;; {map=>"images/mqttjs_fa51d44e_map.png"} }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot_interval/state:.* snapshotinterval\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/volume/command:.* volumecommand\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/volume/state:.* volumestate
attr Ring room MQTT2_DEVICE
attr Ring stateFormat | <span style='color:#008800'>[$name:status2:r1]</span>\
| Akku: [$name:attributes_batteryLevel:r1]%</span>\
| <div><img src="/fhem/www/images/mqttjs_fa51d44e_map.png" style='max-width:160px;;;;max-height:130px'></span>


was ich bisher aber nicht hinbekommen habe ist die Anzeige der Batterie und der Wlans per Icons Anzeigen zu lassen


my $WiFiQual = 'WLAN_Status.0@red';;
$WiFiQual='WLAN_Status.20@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -100));;
$WiFiQual='WLAN_Status.50@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -75));;
$WiFiQual='WLAN_Status.80@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -70));;
$WiFiQual='WLAN_Status.90@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -61));;
$WiFiQual='WLAN_Status.100@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -55));;
my $bat = 'measure_battery_100@green';;
$bat ='measure_battery_75@green' if (ReadingsVal($name, "attributes_batteryLevel", "0")<80);;
$bat ='measure_battery_50@green' if (ReadingsVal($name, "attributes_batteryLevel", "0")<60);;
$bat ='measure_battery_50@orange' if (ReadingsVal($name, "attributes_batteryLevel", "0")<50);;
$bat ='measure_battery_25@red' if (ReadingsVal($name, "attributes_batteryLevel", "0")< 25);;


sowie ich das mit einbaue z.b. so


{
my $WiFiQual = 'WLAN_Status.0@red';;
$WiFiQual='WLAN_Status.20@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -100));;
$WiFiQual='WLAN_Status.50@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -75));;
$WiFiQual='WLAN_Status.80@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -70));;
$WiFiQual='WLAN_Status.90@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -61));;
$WiFiQual='WLAN_Status.100@green' if ((ReadingsVal($name, "status", "Online") ne "Offline") and (ReadingsVal($name, "state_wirelessSignal", "error") > -55));;
my $bat = 'measure_battery_100@green';;
$bat ='measure_battery_75@green' if (ReadingsVal($name, "attributes_batteryLevel", "0")<80);;
$bat ='measure_battery_50@green' if (ReadingsVal($name, "attributes_batteryLevel", "0")<60);;
$bat ='measure_battery_50@orange' if (ReadingsVal($name, "attributes_batteryLevel", "0")<50);;
$bat ='measure_battery_25@red' if (ReadingsVal($name, "attributes_batteryLevel", "0")< 25);;
"<div><td><img src='/fhem/www/images/mqttjs_fa51d44e_map.png' style='max-width:160px;;max-height:130px'></td><td> " . FW_makeImage("$WiFiQual") . " " . FW_makeImage("$bat") . "</td></div>" ;;
}
[code]

verdoppelt sich wieder die Anzeige

wenn ich es aber so lasse dann scheint die Anzeige sich nicht zu verdoppeln
[code]
attr Ring stateFormat | <span style='color:#008800'>[$name:status2:r1]</span>\
| Akku: [$name:attributes_batteryLevel:r1]%</span>\
| <div><img src="/fhem/www/images/mqttjs_fa51d44e_map.png" style='max-width:160px;;;;max-height:130px'></span>


brain666

wenn das Ring mqtt hier jemanden Interessiert ich habe mich umentschieden und bin richtung des Live streams gegangen.
mit hilfe von 2 scripten die bei bedarf dann über ffmpeg den live stream als "jpg" zurverfügungstellen.

ich habe mir in fhem ein PIR angelegt

der gemountete punkt --> /opt/fhem/www/snapshots/
ist natürlich im Arbeitsspeicher um die ssd zu schonen


define PIRweb4 HTTPSRV PIR4 /opt/fhem/www/snapshots/ring Ring
setuuid PIRweb4 6269017b-f33f-078c-b7c6-1184abb2c3a1105d


sowie eine index.html zum autorefresh des bildes


<html>
<head>
<title>Ring_Motion_live</title>
<meta content="text/html; charset=utf-8" http-equiv="Content-Type">

<style type='text/css'>
div{
position: fixed;
top: 0;
right: 0;
bottom: 0;
left: 0;
}
</style>
<script language="javascript">
<!--
var img = new Image();
var imgObj;

function preload()
{
        img.src='/fhem/www/snapshots/ring/test.jpg?'+new Date;
}

function changesrc()
{
        img1.src=img.src;
        preload();
        setTimeout(changesrc,3500);
}

function update()
{
        imgObj = document.getElementById('img1');

        imgObj.src = img.src;
        img.src = "/fhem/www/snapshots/ring/test.jpg?" + (new Date()).getTime();
}

function takeError()
{
        img.src = "/fhem/www/snapshots/ring/test.jpg.jpg?" + (new Date()).getTime();
}

function startonload()
{
        img.src = "/fhem/www/snapshots/ring/test.jpg?" + (new Date()).getTime();
        img.onerror=takeError;
        img.onload=update;
}

function load()
{
        if (navigator.appName.indexOf("Microsoft IE Mobile") != -1)
        {
                preload();
                changesrc();
                return;
        }
        startonload();
}
//-->
</script>
</head>
<body onLoad="load()">
<p><img width="150" height="100" id="img1" border="0" src="/fhem/www/snapshots/ring/test.jpg"></p>
</body>
</html>



und ein doif für die bewegungserkennung


define ring_bewegung DOIF ([Ring:motionstate] eq "ON") { system("sudo /opt/fhem/ringstart.sh &") }\
setuuid ring_bewegung 62690afa-f33f-078c-a9b1-8e28bb298a4db8dc


bei bewegung wird für 120 Sekungen ein Livestream über ffmpeg gestartet

ring.sh

ffmpeg -y -i "rtsp://debian.zbox:8554/343ea419147b_live" -update 1 -r 0.5 -vf scale=155:120 /opt/fhem/www/snapshots/ring/test.jpg


ringstart.sh

screen -A -m -d -S fhem /opt/fhem/ring.sh
sleep 120
kill -Hup $(ps ux | grep /opt/fhem/ring.sh | awk 'NR == 1 {next} {print $2}' | uniq | sort)



mein Ring device habe ich entsprechen angepasst mit iframe


define Ring MQTT2_DEVICE Ring_Kamera1
setuuid Ring 6260ff4f-f33f-078c-50fd-aeadfcc278bd466a
attr Ring autocreate 0
attr Ring group ringdoor
attr Ring readingList mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/status:.* status2\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/wireless/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/battery/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/state:.* streamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/state:.* eventstreamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/state:.* eventselectstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/state:.* motionstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/state:.* dingstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/info/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_motion/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/select/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_select/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_ding/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_info/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_wireless/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_battery/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot/image:.* { WriteFile("www/images/mqttjs_fa51d44e_map.png",$EVENT);;;; {map=>"images/mqttjs_fa51d44e_map.png"} }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot_interval/state:.* snapshotinterval\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/volume/command:.* volumecommand\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/volume/state:.* volumestate
attr Ring room MQTT2_DEVICE
attr Ring stateFormat | <span style='color:#008800'>[$name:status2:r1]</span>\
| Akku: [$name:attributes_batteryLevel:r1]%</span>\
<iframe src="/fhem/PIR4/index.html" width="155px" height="115px" name="iFrame" frameBorder="0" scrolling="no"></iframe>\
<html>last_motion: <span style='color:#008800'><a href="[$name:attributes_recordingUrl]">[$name:attributes_lastMotionTime]</a></span></html>\


stand bisher siehe angehängtes bild

last_motion --> ist klickbar zur letzten Aufzeichung.

brain666

Device erweitert --> live
für eine livestream übertragung von 120 sekunden


define Ring MQTT2_DEVICE Ring_Kamera1
setuuid Ring 6260ff4f-f33f-078c-50fd-aeadfcc278bd466a
attr Ring autocreate 0
attr Ring group ringdoor
attr Ring readingList mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/status:.* status2\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/wireless/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/battery/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/state:.* streamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/state:.* eventstreamstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_stream/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/state:.* eventselectstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/event_select/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/motion/state:.* motionstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/state:.* dingstate\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/ding/attributes:.* { json2nameValue($EVENT, 'attributes_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/info/state:.* { json2nameValue($EVENT, 'state_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_motion/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/switch/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_stream/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/select/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_event_select/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/binary_sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_ding/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_info/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_wireless/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
FHEM:homeassistant/sensor/4db094de-a292-415d-a224-7a910a30faf5/343ea419147b_battery/config:.* { json2nameValue($EVENT, 'config_', $JSONMAP) }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot/image:.* { WriteFile("www/snapshots/ring/test.jpg",$EVENT);;;; {map=>"images/test.jpg"} }\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/snapshot_interval/state:.* snapshotinterval\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/volume/command:.* volumecommand\
mqttjs_.*:ring/4db094de-a292-415d-a224-7a910a30faf5/camera/343ea419147b/volume/state:.* volumestate
attr Ring room MQTT2_DEVICE
attr Ring setList live { system("sudo /opt/fhem/ringstart.sh &") }
attr Ring stateFormat <div align='center'><span style='color:#008800'>[$name:status2:r1]</span>\
| Akku: [$name:attributes_batteryLevel:r1]%</span></div>\
<iframe src="/fhem/PIR4/index2.html" width="195px" height="115px" name="iFrame" frameBorder="0" scrolling="no"></iframe>\
<html>last_motion: <span style='color:#008800'><a href="[$name:attributes_recordingUrl]" target="_blank">[$name:attributes_lastMotionTime]</a></span></html>\
attr Ring webCmd live

pflock_y

hallo,

klingt sehr interressant!!!!
Wie hast du die Ring MQTT anbindung realisiert?
Docker oder Manuel?


vg
pflock_y

brain666

Servus  pflock_y

ich habe es manuel gemacht ich stehe nicht so auf docker
läuft auch 100% stabil jetzt seit 2 Wochen
Ich habe auch noch eine "normale" Ring stick up Cam eingebunden nach dem selben prinzip
auch dies läuft perfekt.


pflock_y

Moin,
Ich hatte mich erst einmal mit der docker Methode beschäftigt, will aber leider nicht so richtig.
Ich werde mir mal die manuelle Sachen anschauen. Mal sehen wie weit ich da komme.

vg
pflock_y

Damian

#14
Hat es jemand schon auf einem raspberry mit buster-OS installiert?

Bei mir kommen beim Start folgende Meldungen:

fhem@raspberrypi:~/ring-mqtt$ node ./init-ring-mqtt.js
internal/modules/cjs/loader.js:638
    throw err;
    ^

Error: Cannot find module 'write-file-atomic'
    at Function.Module._resolveFilename (internal/modules/cjs/loader.js:636:15)
    at Function.Module._load (internal/modules/cjs/loader.js:562:25)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/opt/fhem/ring-mqtt/init-ring-mqtt.js:3:25)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)


Edit: Es fehlte noch der npm-Aufruf.

Nun kommt:

fhem@raspberrypi:~/ring-mqtt$ node ./init-ring-mqtt.js
/opt/fhem/ring-mqtt/node_modules/ring-client-api/lib/api/rest-client.js:72
            device_model: this.authOptions.controlCenterDisplayName ?? 'ring-client-api',
                                                                     ^

SyntaxError: Unexpected token ?
    at Module._compile (internal/modules/cjs/loader.js:723:23)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)
    at Module.load (internal/modules/cjs/loader.js:653:32)
    at tryModuleLoad (internal/modules/cjs/loader.js:593:12)
    at Function.Module._load (internal/modules/cjs/loader.js:585:3)
    at Module.require (internal/modules/cjs/loader.js:692:17)
    at require (internal/modules/cjs/helpers.js:25:18)
    at Object.<anonymous> (/opt/fhem/ring-mqtt/init-ring-mqtt.js:5:28)
    at Module._compile (internal/modules/cjs/loader.js:778:30)
    at Object.Module._extensions..js (internal/modules/cjs/loader.js:789:10)


Ich vermute, dass jetzt Ring-Daten für die Zweifaktor Autorisierung fehlen.
Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

Damian

So, ich bin jetzt einen Schritt weiter. Es war wohl nicht die neuste Node-Version installiert. Mit Node 16 kann ich nun den Key mit init-ring-mqtt.js erstellen. ring-mqtt.js bricht aber beim Starten ab:

fhem@raspberrypi:/opt/ring-mqtt$ /usr/bin/node /opt/ring-mqtt/ring-mqtt.js
Error [ERR_REQUIRE_ESM]: require() of ES Module /opt/ring-mqtt/node_modules/is-online/index.js from /opt/ring-mqtt/lib/main.js not supported.
Instead change the require of index.js in /opt/ring-mqtt/lib/main.js to a dynamic import() which is available in all CommonJS modules.
    at Object.<anonymous> (/opt/ring-mqtt/lib/main.js:10:18)
    at Object.<anonymous> (/opt/ring-mqtt/ring-mqtt.js:2:1) {
  code: 'ERR_REQUIRE_ESM'
}

Programmierte FHEM-Module: DOIF-FHEM, DOIF-Perl, DOIF-uiTable, THRESHOLD, FHEM-Befehl: IF

JF Mennedy

Zitat von: pflock_y am 04 Juni 2022, 07:14:26
Moin,
Ich hatte mich erst einmal mit der docker Methode beschäftigt, will aber leider nicht so richtig.
Ich werde mir mal die manuelle Sachen anschauen. Mal sehen wie weit ich da komme.

vg
pflock_y

Der Docker läuft bei mir eigentlich recht problemlos. FHEM läuft ebenfalls im Docker. Ich hatte anfangs ganz andere Probleme, die ich in einem anderem Thread thematisert habe:
Zitat von: JF Mennedy am 29 Juli 2022, 12:40:57
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

Hier ging es darum, dass ich das Devicetopic fest als Attribut gesetzt haben. Seit  ich das Topic komplett wie in dem Beispiel vorgebe, läuft alles recht rund...

Die Scripts im wie hier im Beispiel habe ich noch nicht so recht zum Laufen gebracht im Docker...

Gruss Jan

brain666

Servus zusammen,

da es bei mir durch meinen letzen system Upgrade auch nicht mehr starten wollte
habe ich es nun auch über einen Docker am laufen ohne Probleme.

brain666

Servus zusammen,

seit der Umstellung auf Docker bis heute keinen einzigen aussetzer.
Scripte laufen auch ohne Probleme.