fhempy: ring (Ring Doorbell, Chime, ...)

Begonnen von dominik, 04 Januar 2021, 12:37:13

Vorheriges Thema - Nächstes Thema

Manos

Hallo an alle!

jemand hat nach meiner Definition gefragt, daher hier ist mein defmod:

defmod RingDoorBell PythonModule ring XXXXX@XXXXX.com "Front Door"
attr RingDoorBell DbLogExclude .*
attr RingDoorBell DbLogInclude state,battery_life,history_1_answered,history_1_created_at,history_1_kind
attr RingDoorBell IODev pybinding
attr RingDoorBell comment Alarm types: motion, ding, on_demand, connected, disconnected
attr RingDoorBell devStateIcon {\
my $WiFiQual = 'WLAN_Status.0@red';;;;\
$WiFiQual='WLAN_Status.20@green' if ((ReadingsVal($name, "state", "Offline") ne "disconnected") and (ReadingsVal($name, "wifi_signal_strength", "error") > -100));;;;\
$WiFiQual='WLAN_Status.50@green' if ((ReadingsVal($name, "state", "Offline") ne "disconnected") and (ReadingsVal($name, "wifi_signal_strength", "error") > -75));;;;\
$WiFiQual='WLAN_Status.80@green' if ((ReadingsVal($name, "state", "Offline") ne "disconnected") and (ReadingsVal($name, "wifi_signal_strength", "error") > -70));;;;\
$WiFiQual='WLAN_Status.90@green' if ((ReadingsVal($name, "state", "Offline") ne "disconnected") and (ReadingsVal($name, "wifi_signal_strength", "error") > -61));;;;\
$WiFiQual='WLAN_Status.100@green' if ((ReadingsVal($name, "state", "Offline") ne "disconnected") and (ReadingsVal($name, "wifi_signal_strength", "error") > -55));;;;\
my $status = 'rc_RED@red';;;;\
$status ='rc_YELLOW@red' if (ReadingsVal($name, "state", "Offline") eq "disconnected");;;;\
$status ='it_camera@blue' if (ReadingsVal($name, "state", "Offline") eq "connected");;;;\
$status='secur_alarm@red' if (ReadingsVal($name, "state", "dead") eq "motion");;;;\
$status='secur_alarm@orange' if (ReadingsVal($name, "state", "dead") eq "ding");;;;\
$status='it_camera@green' if (ReadingsVal($name, "state", "dead") eq "on_demand");;;;\
$status='it_camera@blue' if (ReadingsVal($name, "state", "dead") eq "nomotion");;;;\
$status='it_camera@green' if (ReadingsVal($name, "state", "dead") eq "none");;;;\
my $motion = 'it_camera@green';;;;\
$motion='secur_alarm@red' if (ReadingsVal($name, "alert_kind", "dead") eq "motion");;;;\
$motion='secur_alarm@orange' if (ReadingsVal($name, "alert_kind", "dead") eq "ding");;;;\
my $motion1 = 'it_camera@green';;;;\
$motion1='secur_alarm@red' if (ReadingsVal($name, "alert_current", "dead") eq "motion");;;;\
$motion1='secur_alarm@orange' if (ReadingsVal($name, "alert_current", "dead") eq "ding");;;;\
$motion1='it_camera@blue' if (ReadingsVal($name, "alert_current", "dead") eq "on_demand");;;;\
$motion1='it_camera@blue' if (ReadingsVal($name, "alert_current", "dead") eq "nomotion");;;;\
$motion1='it_camera@green' if (ReadingsVal($name, "alert_current", "dead") eq "none");;;;\
my $motionDummy = 'it_camera@green';;;;\
$motionDummy='motion_detector@red' if (ReadingsVal("Ring_FrontDoor", "state", "dead") eq "motion");;;;\
$motionDummy='secur_alarm@orange' if (ReadingsVal("Ring_FrontDoor", "state", "dead") eq "ding");;;;\
$motionDummy='it_camera@blue' if (ReadingsVal("Ring_FrontDoor", "state", "dead") eq "on_demand");;;;\
$motionDummy='it_camera@blue' if (ReadingsVal("Ring_FrontDoor", "state", "dead") eq "nomotion");;;;\
$motionDummy='it_camera@green' if (ReadingsVal("Ring_FrontDoor", "state", "dead") eq "none");;;;\
my $bat = 'measure_battery_100@green';;;;\
$bat ='measure_battery_75@green' if (ReadingsNum($name, "battery_life", "Offline")<80);;;;\
$bat ='measure_battery_50@green' if (ReadingsNum($name, "battery_life", "Offline")<60);;;;\
$bat ='measure_battery_50@orange' if (ReadingsNum($name, "battery_life", "Offline")<50);;;;\
$bat ='measure_battery_25@red' if (ReadingsNum($name, "battery_life", "Offline") < 25);;;;\
"<div>" . FW_makeImage("$WiFiQual","??") . "   " . FW_makeImage("$bat","??") . " Status: " . ReadingsVal($name, "state", "Offline") . "   " . FW_makeImage("$status","??") . " motionDummy N/A: " . FW_makeImage("$motionDummy","??") . " motion1 N/A: " . FW_makeImage("$motion1","??") . "<br> Last: " . \
ReadingsVal($name, "alert_kind", "??") . "   " . FW_makeImage("$motion","??") . " (" . \
ReadingsTimestamp($name,"alert_kind",0) . ") </div>" ;;;;\
}
attr RingDoorBell deviceUpdateInterval 1800
attr RingDoorBell dingPollInterval 5
attr RingDoorBell event-on-change-reading state,battery_life,alert_current,alert_id,alert_kind,connection_status,battery_life,history_1_answered,history_1_created_at,history_1_id,history_1_kind
attr RingDoorBell room Outside_Perimeter,_Hood->Sensor
attr RingDoorBell userReadings alert_current {ReadingsVal($name,"alert_kind","Error")}
attr RingDoorBell verbose 0



Das Ergebnis sieht so aus (ich habe ein paar Parameter mehr, da ich noch teste): siehe Ring Definition Example Result.JPG

Ich musste icons fuer die WiFi Staerke nehmen, anpassen und im FHEM laden, anbei (falls es von nutzen ist)

Schoene Gruesse

Manos


HP Microserver GEN8 XEON, Ubuntu 22.04, FHEM, ConBee II, CCU2, CUL433, Tradfri, Luxtronik2, Volkszaehler (und wenig Ahnung...)

Boenne

Moin Leutz,
ich war der, der gefragt hat ;-)

Vielen Dank @Manos für die Veröffentlichung.

Beste Grüße
Bönne
#FHEM #RasPI #Homematic #SIGNALduino

StephanFHEM

Hallo, egal was ich mache, der Status meiner local_PhytonBinding bleibt auf ,,PythonBinding offline".
Neustart, neu installieren von fhempy, etc. Hat alles nicht geholfen.

Was genau kann ich da machen?

StephanFHEM

mittlerweile läuft es bei mir wieder... bleibt aber leider noch sehr oft hängen...

ich habe vorhin folgendes gefunden: https://github.com/paulmaunders/ring-screenshot

Da hat es wohl einer geschafft Screenshots abzugreifen. Das wäre per FHEM natürlich auch klasse. Wäre es möglich die Funktion mit einzubauen?

dominik

Kann mir jemand wieder ein ring zur Verfügung stellen, dann würde ich mir das mit den Screenshots nochmals ansehen. Da hatte sich meines Wissens in der Library auch etwas getan.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

Manos

Zitat von: dominik am 21 Oktober 2021, 17:24:59
Kann mir jemand wieder ein ring zur Verfügung stellen, dann würde ich mir das mit den Screenshots nochmals ansehen. Da hatte sich meines Wissens in der Library auch etwas getan.
Hallo Dominik,
hast du in der Zwischenzeit ein RING gefunden? (ansonsten PM mich)
schoene Gruesse
Manos
HP Microserver GEN8 XEON, Ubuntu 22.04, FHEM, ConBee II, CCU2, CUL433, Tradfri, Luxtronik2, Volkszaehler (und wenig Ahnung...)

Ralf_62

Hallo zusammen,

als Anfänger mit der Ring habe ich eine Frage, da ich das System nicht zum Laufen bringe. Habe mich hier durch die Anleitung gekämpft, aber der pyserver will nicht starten, bzw. geht sofort wieder in Stop.
Folgende Fehlermeldung erhalte ich im Logfile:

SyntaxError: invalid syntax
  File "FHEM/bindings/python/bin/fhempy", line 87
    logging.getLogger(__name__).info(f"Successfully installed {package}")

Vielen Dank für die Hilfe!

dominik

Zitat von: Manos am 26 Oktober 2021, 11:16:49
Hallo Dominik,
hast du in der Zwischenzeit ein RING gefunden? (ansonsten PM mich)
schoene Gruesse
Manos

Das mit den Screenshots habe ich leider nicht hinbekommen. Hat da jemand Erfahrung mit iobroker/home-assistant oder sonstwas gemacht wo das funktioniert? Ich verwende hier aktuell den gleichen Code wie HA.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

dominik

Zitat von: Ralf_62 am 02 Dezember 2021, 14:55:59
Hallo zusammen,

als Anfänger mit der Ring habe ich eine Frage, da ich das System nicht zum Laufen bringe. Habe mich hier durch die Anleitung gekämpft, aber der pyserver will nicht starten, bzw. geht sofort wieder in Stop.
Folgende Fehlermeldung erhalte ich im Logfile:

SyntaxError: invalid syntax
  File "FHEM/bindings/python/bin/fhempy", line 87
    logging.getLogger(__name__).info(f"Successfully installed {package}")

Vielen Dank für die Hilfe!

Prüfe bitte nochmals die Python Version. 3.7 oder höher ist notwendig. Auf einem RPi empfehle ich bullseye, dort ist 3.9 Standard.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

bewa58

Habe eben FHEM Update gemacht, nun rennt meine DOORBELL nicht mehr!
Bin auf Bullseye! wg. TUYA-Cloud.

Bernd

Zitatstate
Failed to load module ring: Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/fhem_pythonbinding.py", line 300, in _onMessage
    module_object = await utils.run_blocking(
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/utils.py", line 33, in run_blocking
    return await asyncio.get_event_loop().run_in_executor(pool, function)
  File "/usr/lib/python3.9/concurrent/futures/thread.py", line 52, in run
    result = self.fn(*self.args, **self.kwargs)
  File "/usr/lib/python3.9/importlib/__init__.py", line 127, in import_module
    return _bootstrap._gcd_import(name[level:], package, level)
  File "<frozen importlib._bootstrap>", line 1030, in _gcd_import
  File "<frozen importlib._bootstrap>", line 1007, in _find_and_load
  File "<frozen importlib._bootstrap>", line 986, in _find_and_load_unlocked
  File "<frozen importlib._bootstrap>", line 680, in _load_unlocked
  File "<frozen importlib._bootstrap_external>", line 790, in exec_module
  File "<frozen importlib._bootstrap>", line 228, in _call_with_frames_removed
  File "/opt/fhem/.local/lib/python3.9/site-packages/fhempy/lib/ring/ring.py", line 10, in <module>
    from ring_doorbell import Auth, Ring
  File "/opt/fhem/.local/lib/python3.9/site-packages/ring_doorbell/__init__.py", line 15, in <module>
    from .auth import Auth  # noqa
  File "/opt/fhem/.local/lib/python3.9/site-packages/ring_doorbell/auth.py", line 5, in <module>
    from requests_oauthlib import OAuth2Session
  File "/opt/fhem/.local/lib/python3.9/site-packages/requests_oauthlib/__init__.py", line 3, in <module>
    from .oauth1_auth import OAuth1
  File "/opt/fhem/.local/lib/python3.9/site-packages/requests_oauthlib/oauth1_auth.py", line 10, in <module>
    from requests.utils import to_native_string
  File "/usr/lib/python3/dist-packages/requests/utils.py", line 24, in <module>
    from .__version__ import __version__
ImportError: cannot import name '__version__' from partially initialized module 'requests.__version__' (most likely due to a circular import) (/usr/lib/python3/dist-packages/requests/__version__.py)

dominik

Kannst du mal folgendes testen
$ sudo -u fhem bash
$ python3
>>> from ring_doorbell import Auth, Ring
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

ergerd

Hallo zusammen,

ich musste meinem Ring Accout ein neues Passwort verpassen, jetzt bekommen ich im fhempy-Log folgende Meldung:

2021-12-06 22:31:11,714 - INFO     - fhempy.lib.fhem_pythonbinding: Starting fhempy...
2021-12-06 22:31:11,742 - INFO     - fhempy.lib.fhem_pythonbinding: Waiting for FHEM connection
2021-12-06 22:31:11,829 - WARNING  - asyncio: Executing <Task pending coro=<async_main() running at /opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/fhem_pythonbinding.py:462> wait_for=<_GatheringFuture pending cb=[<TaskWakeupMethWrapper object at 0x75aab5d0>()] created at /usr/lib/python3.7/asyncio/tasks.py:615> cb=[_run_until_complete_cb() at /usr/lib/python3.7/asyncio/base_events.py:158] created at /usr/lib/python3.7/asyncio/base_events.py:563> took 0.115 seconds
2021-12-06 22:31:20,391 - INFO     - fhempy.lib.fhem_pythonbinding: Incoming FHEM connection: 127.0.0.1
2021-12-06 22:31:21,843 - WARNING  - asyncio: Executing <Handle <TaskWakeupMethWrapper object at 0x75ee4690>(<Future finis...events.py:396>) created at /usr/lib/python3.7/asyncio/tasks.py:368> took 0.113 seconds
2021-12-06 22:31:22,249 - WARNING  - asyncio: Executing <Handle <TaskWakeupMethWrapper object at 0x738975f0>(<Future finis...events.py:396>) created at /usr/lib/python3.7/asyncio/tasks.py:368> took 0.382 seconds
2021-12-06 22:31:22,582 - ERROR    - chime: Failed to update devices
Traceback (most recent call last):
  File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 94, in query
    req = getattr(self._oauth, method.lower())(url, **kwargs)
  File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 590, in post
    return self.request('POST', url, data=data, json=json, **kwargs)
  File "/opt/fhem/.local/lib/python3.7/site-packages/requests_oauthlib/oauth2_session.py", line 478, in request
    url, http_method=method, body=data, headers=headers
  File "/opt/fhem/.local/lib/python3.7/site-packages/oauthlib/oauth2/rfc6749/clients/base.py", line 198, in add_token
    raise TokenExpiredError()
oauthlib.oauth2.rfc6749.errors.TokenExpiredError: (token_expired)


Offensichtlich ist der Token nicht mehr gültig. Wie bekomme ich einen neuen?

Danke und Grüße
ergerd
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

dominik

Nochmals mit set ... password einloggen.
fhempy -  https://github.com/fhempy/fhempy: GoogleCast, Tuya, UPnP, Ring, EQ3BT, Nespresso, Xiaomi, Spotify, Object Detection, ...
Kaffeespende: https://paypal.me/todominik

ergerd

Habe ich mehrfach gemacht. Was müsste passieren?
FHEM auf RasPi 4, CUNO, ZigBee, 1Wire2WLAN, DS2423, C-Control II, Buderus KM200, LaCrosseGateway, PCA301, ConBee II, LuftdatenInfo, OneWireGW, Div. ESPs u. Shellys

bewa58

#89
ZitatKannst du mal folgendes testen
Code: [Auswählen]
$ sudo -u fhem bash
$ python3
>>> from ring_doorbell import Auth, Ring

kommt Meldung:  module ring_doorbell nicht vorhanden

habe dann gecheckt: Modul ist vorhanden !!

fhempyserver_15733   neu gestartet   und läuft

update und Neustart FHEM
gleiche Fehlermeldung bei Ring-Doorbell
Aber die Tuya-Cloud läuft einwandfrei!

fhempyserver_15733 neu gestartet
und es läuft !

???

Bernd

Nachtrag: habe eben Neustart durchgeführt (wg. fhempy Filelog siehe: https://forum.fhem.de/index.php/topic,122288.msg1191859.html#msg1191859)
und jetzt läuft das Teil einwandfrei !
Werde das weiter beobachten, oder hast du ne Erklärung?