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 (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
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?
Hallo kjmEjfu
kann ich nicht sagen da ich zur Zeit ein Abo habe
müsste evtl. jemand testen der kein Abo hat.
Wahrscheinlich nicht:
Zitat
Even when using ring-mqtt, all streaming still goes through Ring cloud servers and is not local.
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
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
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
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 ?
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>
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.
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
hallo,
klingt sehr interressant!!!!
Wie hast du die Ring MQTT anbindung realisiert?
Docker oder Manuel?
vg
pflock_y
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.
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
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.
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'
}
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
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.
Servus zusammen,
seit der Umstellung auf Docker bis heute keinen einzigen aussetzer.
Scripte laufen auch ohne Probleme.