Hallo,
ich habe mit der Suchfunktion nichts gefunden, deshalb frage ich hier mal nach: werden die Produkte von RING schon unterstützt?
https://ring.com/videodoorbells (https://ring.com/videodoorbells)
Gruß
Blueberry63
Sieht im Moment eher schlecht aus:
ZitatWIRD ES EINE PROGRAMMIER-SCHNITTSTELLE (API) GEBEN?
Wir prüfen das Angebot einer API. Derzeit kann die Verfügbarkeit nicht abgeschätzt werden.
Hi,
ich habe auf meiner fritzbox einen tcpdump laufen, der die http requests der Klingel mitsnifft und dann einen entsprechenden Dummy schaltet. Wenn du Shell Scripte auf deiner wlan box laufen lassen kannst, gib bescheid, dann suche ich das Skript am Wochenende raus. Aber Achtung, das Script muss auf der wlan box laufen.
VG Markus
Hi nochmal,
habe mir hierfür ein kleines python geschrieben, da es dort eine lib für Ring gibt.
Zur installation müssen zwei python libs installiert werden:
pip install git+https://github.com/tchellomello/python-ring-doorbell
pip install fhem
Dann die zwei angehängten Dateien runterladen und zB in /opt/fhem/bin ablegen.
In der ring.py muss noch der User und das Passwort des Ring Accounts eingetragen werden. Hier tuts auch ein Gast Account.
Die run_ring.sh sorgt für die Ausführung der ring.py als user "fhem" und wird bei mir via crontab regelmäßig angetriggert (sollte mal ein Fehler unterlaufen):
@reboot /opt/fhem/bin/run_ring.sh
@hourly /opt/fhem/bin/run_ring.sh
In fhem habe ich einen Dummy angelegt mit dem Namen "Ring" (Achtung, wenn der Name nicht passt, muss die ring.py angepasst werden).
Der Dummy hat ein "setList none motion ring" verpasst bekommen. Ein/zwei DOIFs sorgen dafür, dass der Status nach 5sec zurück gesetzt wird. Kann alles auch mit einem einzigen DOIF gelöst werden.
Viel Spaß damit!
Markus
Hi Markus,
danke fürs Teilen!
Fehlt nur noch die Kamerafunktion (Livecam) in FHEM.
Gruß
Alex
Hallo,
ich habe eine Ring Doorbell geschenkt bekommen und versuche sie irgendwie einzubinden. Als Videogegensprechanlage mit fritz!fon zu koppeln geht nicht -laut Support-Auskunft wird da auch in Zukunft sich nichts ändern. So bin ich dann auf diesen Thread gestoßen: die Lösung von Markus hat mir sehr gut gefallen, aber mein Router (Fritzbox 7490) lässt keine Skripte zu. Ich habe jetzt versucht mit dem Modul FRITZBOX und SIP weiter zu kommen. Im Wiki ist ja eine Anwesenheitkennung mit notify beschrieben. Leider reichen meine Kenntnisse bei weitem nicht aus, um es wirklich zu realsieren, wenn es überhaupt möglich ist. Mein Ansatz:
define Test notify Fritzbox:mac_AA_BB_CC_DD_EE_FF:.*{
if (ReadingsVal("Fritzbox", "mac_AA_BB_CC_DD_EE_FF", "inactive") ne "inactive")
{
fhem("set mySip call **610");
}
Funktioniert aber natürlich nicht, weil ich nicht weiß, welches Signal von der Doorbell kommt. Wie gesagt, das ist über meinen Möglichkeiten, aber vielleicht hat da jemand noch eine Idee.
Alternativ könnte ich einen alten Wlan-Router aktivieren, auf dem dann das Shell-Skript von Markus laufen könnte.
Vielen Dank schon mal
Gruß und schöne Feiertage
Franz
Megacool, dass das geht. Leider bin ich auch einer der unglücklichen die die neue Firmware der Fritzbox brauchen und daher keine Python Scripts installieren kann. Aber wenns ein Script gibt, warum muss es auf der Fritzbox laufen und kann nicht auch auf dem Raspi gestartet werden? Bei der Installation flog wirklich ein Fehler aber das müsste sich doch lösen lassen?! Franz Ansatz wird glaube ich nicht so klappen.
ciao Carlo
Guten Abend,
also bei mir funktionierts:
ich habe das Skript von _Markus_ auf dem Raspi installiert, Dummy_Device "Ring" angelegt und siehe da es funktioniert: Also, Calle78 hat richtig vermutet.
Dank an Beide
Ein gutes 2018
Franz
Gratuliere Franz, ich habs nur vermutet, du hast es hinbekommen :). Kannst du mehr dazu schreiben? Auf Raspi mit Jessie? Ging es genau so wie oben beschrieben oder musstest du etwas anpassen?
ciao Carlo
So ich habs mal versucht auf meinem Raspi2 mit Jessie nachzustellen. Dafür musste ich neben den Steps von _Markus_ (gast angelegt, user in ring.py eingefügt etc...) noch diese 3 Steps machen:
- PIP nachinstallieren
- das Verzeichnis bin in /opt/fhem erstellen
- mit "sudo chmod +x /opt/fhem/bin/run_ring.sh" ausführbar gemacht
- mit "sudo crontab -e die Startscripte" eingefügt
Und so sehen mein Dummy und DOIF (zum Reset und PushBullet-Alert) aus:
define Ring dummy
attr Ring setList none motion ring
define RingCTRL DOIF ([Ring] eq "ring") (set Ring none,set PushB message Klingel | Ring) DOELSEIF ([Ring] eq "motion") (set Ring none,set PushB message Klingel | Bewegung)
attr RingCTRL wait 5
Was soll ich sagen? Es geht :) DANKE AN ALLE! Der Thread kann auf GELÖST gestellt werden.
ciao Carlo
Eine Kleinigkeit leider doch noch, der @reboot crontab scheint bei mir nicht ausgeführt zu werden (@hourly geht). Ich habs mal in einen eigenen Thread gelegt um es hier sauber zu halten: https://forum.fhem.de/index.php/topic,81774.0.html (https://forum.fhem.de/index.php/topic,81774.0.html)
ciao Carlo
hmmm, das Script stoppt bei mir nach einigen Minuten, evtl. hats auch mit einem getriggerten Event zu tun?! Läufts bei euch durch Franz, _Markus_?
ciao Carlo
Hallo zusammen,
danke @Markus für seine Arbeit! Habe damit meine Ring Doorbell 2 perfekt eingebunden mit getriggerten Notifications etc.
Ich habe dein Script am Ende etwas geändert, weil es bei mir auch ab und an mit einer ErrorException abgebrochen ist. Meine Lösung dazu, einfach ein Exception-Catching. Wenn ein Fehler auftritt, einfach erneut versuchen. So läuft das Script jetzt seit rund 2 Tagen durchweg durch.
Dazu in der ring.py nach der Zeile "# START POLLING DEVICES" die Zeilen auskommentieren oder löschen und folgenden Code einfügen:
count = 1
while count <= 5: # try 5 times
try:
# do_the_logic()
devices = list(myring.stickup_cams + myring.chimes + myring.doorbells)
for dev in devices: # RING lib version 0.1.5 and above
#for dev in list(myring.doorbells): # RING version 0.1.4 and below
start_new_thread(pollDevice, (dev,))
while not thread_started:
pass
while num_threads > 0:
time.sleep(3)
if len(devices) != num_threads:
exit
pass
# end do_the_logic()
break
except:
logger.info("Exception occured. Retrying...")
# wait 5 seconds for next retry
time.sleep(5)
# If trying 5th time and still error??
# Just throw the error- we don't have anything to hide :)
if count == 5:
raise
count += 1
Der vorher auskommentierte oder gelöschte Code findet sich nun in dem try Block zwischen # do_the_logic() und # end do_the_logic().
Vielleicht hilft das auch @Calle78.
Hallo zusammen und ein gutes neues Jahr,
@Calle78 ja war bei mir genau so wie bei Dir
Ich habe die ring.py so verändert, wie @DaRealDan gepostet hat und seitdem läuft es wie geschmiert.
also nochmals vielen Dank an @Markus und @DaRealDan.
Eine Frage an @DaRealDan habe ich noch: Du schreibst, dass Du die Ring perfekt in FHEM eingebunden hast. Kann das mehr als auf ring und motion reagieren?
Unter https://github.com/tchellomello/python-ring-doorbell (https://github.com/tchellomello/python-ring-doorbell) gibt es so schöne Anregungen wie z.B. das letzte Video herunterladen. Leider habe ich wie gesagt keine Ahnung, wie ich das in Fhem verwirklichen kann.
Viele Grüße
@Franz und Calle: Die Variante mit tcpDump funktioniert nur auf dem Router, da nur dort der Verkehr direkt mitgeschnitten werden kann. Das hat den Vorteil, dass man nicht erst über die ring-Server (Amazon) muss.
Die Python Variante funktioniert überall.
LG
@Franz: Mit der Python Lib kann man auch die URL des letzten Videos abrufen. Außerdem kann man Werte auch schreiben (Lautstärke etc). Ich habe aber noch keinen Grund gefunden, warum ich das nicht über die App machen soll, sondern über FHEM - daher hatte ich es nicht implementiert ;)
Ich habe meine Variante noch erweitert, dass mehrere Ring-Devices mehrere FHEM-Devices (Ring_FrontDoor, Ring_Terrasse) schreiben, da ich mittlerweile noch eine zusätzliche stickup-cam habe. Lade ich hoch, sobald ich an nem vernünftigen Rechner bin.
LG Markus
Anbei meine aktuelle ring.py, die auch mit mehreren Devices zurechtkommt.
Es wird immer ein dummy-Device mit dem Namen "Ring_<Ring Name>" erwartet, wobei beim Namen der Klingel die Leerzeichen entfernt werden.
Bsp: Klingel heißt "Front Door", dann werden die Readings in das Device "Ring_FrontDoor" geschrieben.
defmod Ring_FrontDoor dummy
attr Ring_FrontDoor alias Kamera Haustür
attr Ring_FrontDoor devStateIcon none:it_camera@green motion:secur_alarm@red ring:secur_alarm@orange
attr Ring_FrontDoor event-on-change-reading .*
attr Ring_FrontDoor group Bewegungsmelder
attr Ring_FrontDoor room Sicherheit,System
attr Ring_FrontDoor setList none motion ring
Hier noch mein DOIF für jeweils ein FHEM-Ring-Device:
defmod Ring_FrontDoor_DOIF DOIF ([Ring_FrontDoor] eq "ring" and [FK_Haustuer] eq "closed" and [FK_Haustuer:state:sec] > 5) \
(set xmp3 playTone 0) (set Ring_FrontDoor none)\
\
DOELSEIF ([Ring_FrontDoor] eq "motion" and [FK_Haustuer] eq "closed" and [FK_Haustuer:state:sec] > 2) \
(set xmp3 playTone 48) (set Ring_FrontDoor none)\
\
DOELSE\
(set Ring_FrontDoor none)
attr Ring_FrontDoor_DOIF cmdState ring,none|motion,none|none
attr Ring_FrontDoor_DOIF disable 0
attr Ring_FrontDoor_DOIF do always
attr Ring_FrontDoor_DOIF event-on-change-reading .*
attr Ring_FrontDoor_DOIF group Bewegungsmelder
attr Ring_FrontDoor_DOIF icon helper_doif
attr Ring_FrontDoor_DOIF room Rules
attr Ring_FrontDoor_DOIF stateFormat wait_timer
attr Ring_FrontDoor_DOIF wait 0,5:0,5:0
VG Markus
Ich habe meine ring.py noch ein bisschen erweitert, damit ich auch die die Videos runtergeladen bekomme und einen Link zum letzten Video bekomme.
Einfach in der ring.py die if-Abfrage entsprechend anpassen - zwischen
if dev.check_alerts() and dev.alert:
und
i+=1
den Code mit folgendem Überschreiben
if dev.check_alerts() and dev.alert:
srRing('lastAlertDeviceID ' + dev.id)
srRing('lastAlertDeviceName ' + dev.name)
if(dev.alert.get('kind') == 'ding'):
setRing('ring')
srRing('lastAlertType ring')
doorbell = myring.doorbells[0]
doorbell.recording_download(doorbell.history(limit=100,kind='ding')[0]['id'],filename='/opt/fhem/www/last_ding_video.mp$
srRing('lastDingVideo /opt/fhem/www/last_ding_video.mp4')
elif(dev.alert.get('kind') == 'motion'):
setRing('motion')
srRing('lastAlertType motion')
doorbell = myring.doorbells[0]
doorbell.recording_download(doorbell.history(limit=100,kind='motion')[0]['id'],filename='/opt/fhem/www/last_motion_vide$
srRing('lastMotionVideo /opt/fhem/www/last_motion_video.mp4')
#srRing('lastAlert ' + str(dev.alert))
srRing('lastCaptureURL ' + doorbell.recording_url(doorbell.last_recording_id))
time.sleep(1)
Achtet auf die richtigen Einrückungen damit alles läuft oder beigefügte ring.py.
Bitte beachten: Das basiert noch auf der alten ring.py nicht auf dem Update von gestern.
Anfang hatte ich Probleme, dass sich die ring.py nicht mit meinem FHEM verbinden wollte, was an meinem Custom Telnet-Port liegt. Wer auch einen anderen Telnet-Port hat, Zeile 30 ändern in
fh = fhem.Fhem(fhem_ip,port=XXXX)
Hallo Zusammen,
ich habe leider seit Kurzem einige Probleme mit dem Script.
1. eine Fehlermeldung:
Unhandled exception in thread started by <function pollDevice at 0x*********>
Traceback (most recent call last):
File "/opt/fhem/bin/ring.py", line 86, in pollDevice
srRing(dev.id+'_timezone ' + dev.timezone)
TypeError: coercing to Unicode: need string or buffer, NoneType found
Und 2. werden nur folgende Daten des DUmmys befüllt:
account
address
family
id
name
Ich grätsche mal kurz seitlich rein... Wollen wir dieses Thema weiter in ,,Anfängerfragen" bahandeln, oder würde es Sinn machen, dass der TE das z.B. nach Codesnippets verschiebt?
Evtl möchte @_Markus_ auch sein ring.py-Code ins Github legen damit er dort ggfs. die Arbeiten fortführen kann und ich kann dann meine Ergänzungen mit einchecken oder einen Fork anlegen?
Bei mir bricht Nachts noch die Verbindung weg bei der DSL-Zwangstrennung. Ich habe jetzt noch meinen @hourly Cronjob ergänzt um "pkill -9 -f ring.py". Damit wird jede Stunde erst der Prozess gekillt und dann neu gestartet. Etwas unkonventionell aber funktioniert. Ausfall dadurch max. 59 Minuten
Nabend zusammen,
ich habe wie vorgeschlagen alles auf https://github.com/markuzzi/ring-fhem (https://github.com/markuzzi/ring-fhem) abgelegt.
Die ring.py habe ich nochmal wesentlich überarbeitet - jetzt sollte sie stabiler sein.
Außerdem kommt sie jetzt auch besser mit mehreren Devices klar.
Viel Spaß :)
Markus
Super @_Markus_! Vielen Dank!
Hey Markus, danke, das neue Script läuft nun.
Das einzige was ich noch nicht hinbekommen habe, ist das Script als User fhem auszuführen, denn wenn ich deine run_ring aus dem Crontab ausführe, läuft die ring.py mit userrechten von pi. Dies verhindert leider den Videodownload und auch das Erstellen der Logdatei im Ordner /opt/fhem/. Hat da einer einen Tip wie ich es am gescheitesten anstelle?
Danke und Gruß
Alex
Hey Alex,
wenn Du dich also User fhem einloggst (sudo su - fhem) kannst du mit ,,crontab -e" die crontab des fhem users editieren. Dann wird's auch als User fhem ausgeführt mit den entsprechenden Rechten.
VG, Markus
Klasse DaRealDan, danke auch an Markus und Franz. Habs so geändert und bin sicher das wirds fixen ;)
ciao Calle
Ah, doch so einfach, danke.
Hallo Leute,
ich überlege mir aktuell auch ring zuzulegen. Allerdings möchte ich damit auch das Bild oder Video in meine Tablet UI einbinden. Das ist mir aus diesem Thread nicht hervorgegangen, ob das geht.
Evtl. kann mich jemand aufklären.
Vielen Dank!
Eddy
Hallo @Eddy. Ich kann zu TabletUI wenig sagen. Aber die letzte Version der ring.py von Markus unterstützt den Download der letzten Video-Datei und gibt ebenfalls den Link zu einer mp4 Datei mit dem letzten Video. Evtl. kannst du ja eines davon in die Tablet UI einbinden?
Zitat von: DaRealDan am 05 Januar 2018, 13:20:45
Hallo @Eddy. Ich kann zu TabletUI wenig sagen. Aber die letzte Version der ring.py von Markus unterstützt den Download der letzten Video-Datei und gibt ebenfalls den Link zu einer mp4 Datei mit dem letzten Video. Evtl. kannst du ja eines davon in die Tablet UI einbinden?
Danke für die Info. Das hört sich so an als ob man kein "live" Bild bekommt oder? Denn auf dem Smartphone kann man ja durchaus ein "Live" Video über die Ring App bekommen.
Grüße
Hi Eddy,
nein live geht aktuell nicht. Allerdings werden auch die aktuellen sip Daten (Server, User, Passwort, Token) abgespeichert. Vlt kann man sich da einklinken. Habe ich aber noch nicht getestet. Du bräuchtest auf deinen rpi einen sip client.
VG, Markus
Ich werde mich nächste Woche mal dran versuchen mittels der Python Version die SIP Daten auszulesen und diese einem WebRTC zur Verfügung zu stellen. Ins Auge gefasst habe ich https://www.doubango.org/sipml5/
Hallo,
gibt es ein Update? Funktioniert das Livebild?
Grüße
HalloZusammen,
ich habe neuerdings ein kleines Problem mit dem Script gehabt, es brach die kommunikation ab mit der Fehlermeldung:
Unexpected error:'ascii' codec can't encode character u'\xdf'
Nach genauerem Hinsehen, habe ich bemerkt dass das Script über das ß in Straße, im Reading Standort stolpert.
Die Kurzfristige Lösung war, den Standort dorthin zu ändern wo kein Sonderzeichen ist, wie aber bekommt man den Fehler sauber weg?
Danke und Gruß
Alex
Zitat von: Nighthawk am 11 März 2018, 20:18:33
HalloZusammen,
ich habe neuerdings ein kleines Problem mit dem Script gehabt, es brach die kommunikation ab mit der Fehlermeldung:
Unexpected error:'ascii' codec can't encode character u'\xdf'
Nach genauerem Hinsehen, habe ich bemerkt dass das Script über das ß in Straße, im Reading Standort stolpert.
Die Kurzfristige Lösung war, den Standort dorthin zu ändern wo kein Sonderzeichen ist, wie aber bekommt man den Fehler sauber weg?
Danke und Gruß
Alex
Ja, gibt es auf der github seite. Waren glaube ich 2 Zeilen, die geändert werden müssen.
Schau mal ob Du es so findest, ansonsten schaue ich morgen mal, bin gerade unterwegs.
Gruß,
Tobi
Danke für den Wink ;-)
Habe ich gefunden:
https://github.com/markuzzi/ring-fhem/pull/1/files (https://github.com/markuzzi/ring-fhem/pull/1/files)
Irgend welche updates bezüglich des Video Streams?
Hi. Gibt es schon Neuigkeiten bezüglich des Video Livestreams?
Zurzeit ist die Doorbell "relativ günstig" zu bekommen.
Sollte der Livestream funktionieren, so könnte man die Aufnahmen auch selbst machen und man wäre nicht auf ein Abo bei ring angewiesen oder?
Hallo,
eine Frage bitte: braucht man den (kostenpflichten) Ring-Cloud-Zugang, um über das API an das letzte Video zu kommen?
Danke für eine Rückmeldung.
Boris
Ja, brauchst du. Ohne Abo werden die Videos ja nicht gespeichert ;)
Scheinbar gibt es mittlerweile die Option einen Livestream via api (https://github.com/jimhigson/ring-api) zu starten.
Hat da evtl. jemand schon was hinbekommen?
Das ganze via tabletui, oder aber auf dem TV auszugeben, wäre auf jd. Fall eine super Sache.
Gruß,
Tobi
Leider noch nicht aber würde es cool finden wenn man dies in FHEM einbinden kann
Hallo Leute,
ich habe ein kleine Problem mit der Verbindung zwischen Ring und FHEM. Ich habe die aktuellste Daten aus de GIT "installiert" und es wird auch alles ordnungsgemäß per cronjob gestartet. Leider bekomme ich keinen Zugriff auf FHEM. Im Log erscheint eine bestehende Verbindung zur Doorbell 1 aber die Übertragung zu FHEM funktioniert nicht "Broken pipe". Ich verwende FHEM in der aktuellsten Version mit Standard Ports 7072 wie es auch in der ring.py steht. Mein Telnet ist mit einem password gesichert, falls das was zur Sache tut. Ich habe das Passwort auch schon kurzzeitig entfernt, jedoch ebenfalls kein Erfolg.
Anbei der Log nach einem Start.
2018-10-29 11:00:04,319 - fhem_ring - INFO - Found 1 devices.
2018-10-29 11:00:04,742 - fhem_ring - INFO - Updating device data for device 'Tor' in FHEM...
2018-10-29 11:00:04,743 - fhem_ring - DEBUG - sending: setreading Ring_Tor account 15833XXX
2018-10-29 11:00:04,743 - fhem_ring - DEBUG - sending: setreading Ring_Tor address Am SXXXXXXXXXX, 47XXX Duisburg, Germany
2018-10-29 11:00:04,744 - fhem_ring - DEBUG - sending: setreading Ring_Tor family doorbots
2018-10-29 11:00:04,745 - fhem_ring - DEBUG - sending: setreading Ring_Tor id 0cae7dXXXXXX
2018-10-29 11:00:04,745 - fhem_ring - DEBUG - sending: setreading Ring_Tor name Tor
2018-10-29 11:00:04,746 - fhem_ring - DEBUG - sending: setreading Ring_Tor timezone Europe/Berlin
2018-10-29 11:00:04,747 - fhem_ring - ERROR - Unexpected error:[Errno 104] Connection reset by peer
2018-10-29 11:00:04,747 - fhem_ring - ERROR - Exception occured. Retrying...
2018-10-29 11:00:10,190 - fhem_ring - INFO - Updating device data for device 'Tor' in FHEM...
2018-10-29 11:00:10,191 - fhem_ring - DEBUG - sending: setreading Ring_Tor account 15833XXX
2018-10-29 11:00:10,192 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2018-10-29 11:00:10,193 - fhem_ring - ERROR - Exception occured. Retrying...
2018-10-29 11:00:15,661 - fhem_ring - INFO - Updating device data for device 'Tor' in FHEM...
2018-10-29 11:00:15,662 - fhem_ring - DEBUG - sending: setreading Ring_Tor account 15833XXX
2018-10-29 11:00:15,663 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2018-10-29 11:00:15,664 - fhem_ring - ERROR - Exception occured. Retrying...
2018-10-29 11:00:21,113 - fhem_ring - INFO - Updating device data for device 'Tor' in FHEM...
2018-10-29 11:00:21,114 - fhem_ring - DEBUG - sending: setreading Ring_Tor account 15833XXX
2018-10-29 11:00:21,114 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2018-10-29 11:00:21,115 - fhem_ring - ERROR - Exception occured. Retrying...
2018-10-29 11:00:26,559 - fhem_ring - INFO - Updating device data for device 'Tor' in FHEM...
2018-10-29 11:00:26,560 - fhem_ring - DEBUG - sending: setreading Ring_Tor account 15833XXX
2018-10-29 11:00:26,561 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2018-10-29 11:00:26,562 - fhem_ring - ERROR - Exception occured. Retrying...
Ich freue mich darauf, wenn mir geholfen werden kann. In Fhem das Dummy stimmt natürlich jedoch noch mit reading ???
Liebe Grüße aus Duisburg :)
Hallo zusammen,
kann mir jemand verraten, wie ich an das letzte Bild / Video komme, wenn Bewegung und / oder ein Betätigen der Klingel registriert wurde?
Moin,
im Ring Objekt gibt es ein Reading namens lastCapturedURL, in der deer Link zum letzten aufgenommenen Video in der Ring-Cloud steckt. Das in einen weblink/iframe in FHEM einzubetten ist leicht, aber das Problem ist, dass sich die Definition eines weblink/iframe nach der Erstellung nicht mehr ändern lässt und dass ein temporärer weblink/iframe, wie ich gerade festgestellt haben, nicht in einen bestimmten Raum platzieren lässt.
Wenn man also nicht immer neue weblinks erzeugen und wieder löschen möchte und damit immer eine Meldung sehen möchte, dass der FHEM ungesicherte Änderungen hat, brauchts irgendwie eine andere Lösung.
Gruß,
budy
Hallo,
hab das ganze mal bei mir instaliert. Leider klappt es nicht. Gibt es die möglichkeit in einem Logfile zu schauen wo es hängt?
run.py wurde gestartet und der TelnetPort in FHEM ist auch auf.
Schonmal Danke
Zum einen erzeugt das ring.py ein Logfile namens ring.log im selben Verzeichnis, aus dem es gestartet wurde und zum anderen könntest du die ring.py ja auch selbst als User fhem starten, dann kriegst du sofort alle Ausgaben direkt geliefert:
sudo -u fhem phython ring.py
Ich habe das jetzt soweit hin, aber es gibt da ein kleines "Problem" mit der API und der ring PythnLib, wofür die Lib aber, glaube ich, nichts kann: wenn ein Event ausgelöst wird, egal ob motion oder ring, dann gibt das Reading lastCaptureURL immer nur die vorletzte (welches aber zum Zeitpunkt des Eintritts des Events noch die letzte) Video-URL zurück. Ich vermute mal, dass die URL für das aktuelle Video dann noch gar nicht zur Verfügung steht.
Ich habe dann mal versucht einfach die URL immer mit pollen zu lassen, aber die ändert sich bei jedem Aufruf und ich weiß auch nicht, ob Ring nicht irgendwann dichtmacht, wenn man alle 2s die Videos enumeriert...
Gruß,
budy
Zitat von: budy am 03 Januar 2019, 19:03:59
Zum einen erzeugt das ring.py ein Logfile namens ring.log im selben Verzeichnis, aus dem es gestartet wurde und zum anderen könntest du die ring.py ja auch selbst als User fhem starten, dann kriegst du sofort alle Ausgaben direkt geliefert:
sudo -u fhem phython ring.py
Ich habe das jetzt soweit hin, aber es gibt da ein kleines "Problem" mit der API und der ring PythnLib, wofür die Lib aber, glaube ich, nichts kann: wenn ein Event ausgelöst wird, egal ob motion oder ring, dann gibt das Reading lastCaptureURL immer nur die vorletzte (welches aber zum Zeitpunkt des Eintritts des Events noch die letzte) Video-URL zurück. Ich vermute mal, dass die URL für das aktuelle Video dann noch gar nicht zur Verfügung steht.
Ich habe dann mal versucht einfach die URL immer mit pollen zu lassen, aber die ändert sich bei jedem Aufruf und ich weiß auch nicht, ob Ring nicht irgendwann dichtmacht, wenn man alle 2s die Videos enumeriert...
Gruß,
budy
Hallo danke für deine Antwort, wenn ich das mache bekomme ich folgende Ausgabe:
Traceback (most recent call last):
File "ring.py", line 22, in <module>
fh = logging.FileHandler('ring.log')
File "/usr/lib/python2.7/logging/__init__.py", line 913, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python2.7/logging/__init__.py", line 943, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/opt/fhem/bin/ring.log'
Hab ich wohl was mit den Rechten durcheinander gebracht :/ Leider fällt mir das als Anfänger etwas schwer. Wie könnte ich das denn richtig stellen?
PS: gebe ich python ring.py ein kommt die gleiche Meldung, bei sudo python ring.py wird ers gestartet.
Moin Nexium,
für die Linux Kommandozeile:
sudo chown -R fhem: /opt/fhem/
Gruß Otto
Zitat von: Otto123 am 04 Januar 2019, 08:58:42
Moin Nexium,
für die Linux Kommandozeile:
sudo chown -R fhem: /opt/fhem/
Gruß Otto
Hey danke für deine Antwort wenn ich das mach ist es leider noch immer so :/
pi@raspberrypi:~ $ sudo chown -R fhem: /opt/fhem/
pi@raspberrypi:~ $ sudo -u fhem python ring.py
Traceback (most recent call last):
File "ring.py", line 22, in <module>
fh = logging.FileHandler('ring.log')
File "/usr/lib/python2.7/logging/__init__.py", line 913, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python2.7/logging/__init__.py", line 943, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/home/pi/ring.log'
pi@raspberrypi:~ $
PS: Wenn ich im Ordner /opt/fhem/bin den Befehl sudo -u fhem python ring.py absetze geht es nach dem ich dein Befehl eingegeben habe. Danke schonmal dafür.
Nun hab ich aber noch immer das Problem wenn ich das Start Script ausführe wird mir die ring.py nicht gestartet.
So sieht die run_ring.sh aus
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process=ring.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup su -c "python /opt/fhem/bin/ring.py" fhem >~/ncb 2>&1 &
echo "Process $process started."
fi
exit
Naja, wenn Du mich fragst führst Du ring jedesmal anders aus:
IOError: [Errno 13] Permission denied: '/opt/fhem/bin/ring.log'
IOError: [Errno 13] Permission denied: '/home/pi/ring.log'
Mit dem Aufruf
sudo -u fhem phython ring.py
hängt es davon ab in welchem Verzeichnis Du gerade stehst!
Offenbar im ersten Fall standest Du in /opt/fhem/bin
Im zweiten Fall standest Du in /home/pi
Scheinbar liegt in beiden Verzeichnissen die Datei ring.py
Wenn Du es so machst
sudo -u fhem phython /opt/fhem/bin/ring.py
startest Du als User fhem das ring im Verzeichnis wo fhem auch schreiben darf.
Wobei das überhaupt nicht nötig ist, Du kannst zum Testen auch einfach alles im Verzeichnis /home/pi machen. Das Script braucht an sich keine speziellen Rechte.
Gruß Otto
Hallo Otto, ja du hattest recht. Hab es nun hin bekommen. Vielen dank für deine Hilfe.
Hallo zusammen,
ich hab da mal im github-Projekt von Markus ein paar Änderungen als Pull-Request erstellt. Jetzt sollten auch immer die korrekten Videos zu den Motion und Ring Alerts geladen werden.
Problem ist, das der Downloadlink erst nach erfolgreichem Upload in der history auftauchen.
Wer will kann es gerne einmal testen: https://github.com/markuzzi/ring-fhem/blob/ba177d13334ce804ced881265dfe1d882c6184d2/ring.py
LGe
Niels.
Moin Niels,
ein Problem habe ich mit der neuen Version. Ich habe mit der Ring einen HM MP3-Tuergong ersetzt, bzw. lasse jetzt den HM Türgong durch das Ring-Ereignis triggern. Allerdings ist die Verzögerung in der neuen Version sehr lang, weil das Event offenbar erst dann an FHEM gemeldet wird, wenn die Prüfung auf das neue Video durch ist.
Gruß,
budy
Hallo budy,
ja, das kann aktuell tatsächlich passieren. Denke da müsste ich nochmal ran.
Vielleicht bis Ende der nächsten Woche.
LGe
Niels.
Ich habe einfach nur die beiden Checks auf RING und MOTION aus den unteren IFs gezogen und ganz als erstes abgehandelt. Der Check auf neue Videos läuft dann hinterher - geht sehr gut!
Gruß,
budy
HI zusammen,
also aktuell bekomme ich wieder den Umlaute-Fehler. Auch mit Änderung auf "nur" dev.address.
ERROR - Unexpected error:'ascii' codec can't encode character u'\xdf' in position 45: ordinal not in range(128)
Hat jemand noch eine Idee?
Gruß,
Tobi
P.S.: Gibt es etwas neues zur Einbindung eines live Bildes oder aber Abruf eines Bildes bei "Motion"(evtl. gibt es da ja Möglichkeiten durch die neuen Vorschaubilder?)?
Hast du auch wirklich die Version aus dem PR eingesetzt, oder die Original-Version genommen?
Was das Livebild angeht, hat sich da nichts getan - dazu müsste sicherlich auch die zugrunde liegende LIB aktualisiert werden, was aber nicht der Fall ist. Mir ist auch nicht ganz klar, was du dir davon versprichst... wenn es irgendwie schnell gehen muss, ist die Ring App auf deinem Phone sicherlich die Variante der Wahl.
...allerdings klingelt's bei uns auch eher selten, so das sich mit der aktuellen Situation sehr gut leben kann, was das Handling der Videos angeht.
Zitat von: budy am 09 Februar 2019, 21:17:35
Hast du auch wirklich die Version aus dem PR eingesetzt, oder die Original-Version genommen?
Ich habe sowohl die 1. original Version genommen, als auch die Dateien aus dem pull request. Jedes mal als raw komplett kopiert und neue Datei dafür angelegt.
Kann es sein, dass es an der Ring Funktion liegt, die importiert wird?
gruß,
Tobi
Stimmt... da hat Niels den Fehler aus dem Orignal-Skript mit übernommen. Der Fix müsste analog zum PR#1 sein - allerdings wohl für alle Vorkommen, in denen Sonderzeichen auftreten können. Der PR#1 löst das ja nur für den Namen.
Im Grunde genommen muss jedes mal im Skript:
srRing('XXXXXX ' + str(dev.address), dev)
durch
srRing('XXXXXX ' + dev.address, dev)
ersetzt werden - dann dürften diese Fehler nicht mehr auftreten.
Gruß,
budy
Hi,
Ja stimmt. Ich checke immer korrekt vom Master aus. ;D
Die problematische Stelle ist glaube ich die wo die Adresse drin steht.
Hallo zusammen,
ich probiere mich seit einigen Tagen an der Ring. Soweit so gut. Zufrieden bin ich noch nicht, aber ich gebe nicht auf. :-\
jetzt hab ich im log folgendes:
2019-02-17 10:38:09,968 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-02-17 10:38:12,577 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-02-17 10:38:15,448 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-02-17 10:38:18,023 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-02-17 10:38:20,557 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-02-17 10:38:23,137 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-02-17 10:38:26,132 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-02-17 10:38:26,133 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxxxx
2019-02-17 10:38:26,134 - fhem_ring - ERROR - Unexpected error:[Errno 104] Connection reset by peer
2019-02-17 10:38:26,135 - fhem_ring - ERROR - Exception occured. Retrying...
2019-02-17 10:38:31,549 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-02-17 10:38:31,550 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxxxx
2019-02-17 10:38:31,551 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-02-17 10:38:31,552 - fhem_ring - ERROR - Exception occured. Retrying...
2019-02-17 10:38:36,992 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-02-17 10:38:36,993 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxxxx
2019-02-17 10:38:36,994 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-02-17 10:38:36,994 - fhem_ring - ERROR - Exception occured. Retrying...
2019-02-17 10:38:42,398 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-02-17 10:38:42,399 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxxx
2019-02-17 10:38:42,399 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-02-17 10:38:42,400 - fhem_ring - ERROR - Exception occured. Retrying...
2019-02-17 10:38:48,120 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-02-17 10:38:48,121 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxx
2019-02-17 10:38:48,122 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-02-17 10:38:48,123 - fhem_ring - ERROR - Exception occured. Retrying...
2019-02-17 11:30:40,382 - fhem_ring - INFO - Found 1 devices.
nun sagt mir
2019-02-17 10:38:26,134 - fhem_ring - ERROR - Unexpected error:[Errno 104] Connection reset by peer
das der Server die Verbindung abgelehnt hat.
Ich kann auch mit erneutem starten nichts mehr auslesen.
Die Frage ist warum?
vielleicht kann mir einer von euch auf die Sprünge helfen.
vg
pflock_y
Moin pflock_y,
fangen wir mal am Anfang an. Geht es denn überhaupt mal, sprich ist der Telnetport 7072 auf deinem FHEM überhaupt offen? Wenn das der Fall ist, dann wäre mal zu klären, ob dein FHEM vielleicht zwischendurch mal neu startet, das würde dann den Socket killen und das ring.py würde sich nicht wieder verbinden können.
...allerdings würde es sich dann bei einem Neustart der ring.py wieder verbinden. Was sagt denn das ring.log welches da normalerweise immer geschrieben wird?
Gruß,
budy
Hallo budy,
sorry für die späte Antwort, bei dem ganzen rum probieren hab ich meinen Pi komplett geschrotet. frei nach dem Motto:
Think Before You Type,
Jetzt läuft soweit wieder alles, also kann es weiter gehen, nur diesmal hab ich ein Vollständiges Image und nicht nur das FHEM Backup. ???
Telnet Port 7072 ist offen
FHEM startet nur einmal die Woche, Sonntag 23:55, neu. Da hab ich ne DOIF eingerichtet, mir läuft immer der Speicher voll.
Das log steht im vorherigen post. Anscheinend läuft die ring.py knapp ne stunde und bricht wieder ab.
Ich werde es alles noch einmal auf dem nun frischen Pi, >:( , ausprobieren.
schon wir mal.
grüße
pflock_y
Moin Niels,
nachdem ich jetzt mal wieder ein wenig Zeit habe und ich deine Version ein paar Wochen im Einsatz habe, stelle ich fest, dass die signalisierung so nicht funktioniert. Selbst mit meiner Änderung, den FHEM gleich zu benachrichtigen, sobald sich da ein Motion- oder Ding-Event meldet funktioniert es nur halb, da einem Ding-Event - zumindest bei mir, immer ein Motion-Event vorrausgeht.
...es sei denn, jemand kriegt es hin auf den Klingelknopf zu drücken, ohne dass ihn die Kamera vorher erfasst hätte. Man müsste das Ganze umschreiben, so dass die Routine, die auf die Fertigstellung des neuen Videos wartet als Thread läuft, damit man weiterhin auf Events, wie eben ein Ding-Event, reagieren kann.
Ich hatte für meinen LD382a mal so etwas programmiert, weil das Dimmen in FHEM per Wifilight/Perl für mich nicht ruckelfrei genug ging. Ich glaube, da schaue ich nochmal rein und werde mal sehen, ob ich das nicht auch so was für die Ring hinbekomme.
Gruß,
budy
Moin,
ich habe mir mal das repo von Markus geklont und das ring.py ein wenig weiter entwickelt. Was mich vor allem gestört hatte, war ja die Tatsache, dass die Suche nach dem nächsten Video nicht im Hintergrund lief und dadurch auch nicht mehr auf Folge-Ergeignisse der Ring reagiert werden konnte. Ich habe die Suche nach dem nächsten Video zum einen in eine threadded function ausgelagert, so dass diese mehrfach und unabhängig aufgerufen werden kann. Zum anderen habe ich dafür gesorgt, dass die Alerts direkt an FHEM gemeldet werden, was bei mir insofern wichtig ist, als dass ich im Haus einige HM MP3 Türgongs installiert habe, welche ansonsten erst nach dem Ende der Videosuche geklinget haben, da erst dann das Ding-Event an FHEM gemeldet wurde.
Außerdem habe ich - glaube ich zumindest, die Funktion so gekapselt, dass sie auch mit mehreren Ring-Devices gleichzeitig zurecht kommen müsste, kann das aber mangels Masse nicht testen. Für Interessenten, hier der Link zu meinem Repo auf GitHub:
https://github.com/budachst/ring-fhem/blob/master/ring.py (https://github.com/budachst/ring-fhem/blob/master/ring.py)
Have fun,
budy
Hallo, guten Tag
Ich bin seit Samstag auch Besitzer einer Türklingel. Ich habe alles Installiert nach den Anleitungen in diesem Beitrag. Habe auch hoffentlich alle Berechtigungen gesetzt... allerdings ohne Erfolg. Es wird keine Logdatei geschrieben. Starten händig der ring.py geht, allerdings kommt die Meldung, dass das @ in der Mailadresse einen Fehler verursacht. In Fhem erfolgt weder bei Bewegung noch Ring ein Event.
Wo kann ich ansetzen, um den Fehler zu finden? Welche Informationen werden benötigt um ggf. den Fehler zu suchen?
Viele Grüße Marko
Moin Marko,
ist schwer zu sagen, aber hast du auch darauf geachtet, die korrekten Hochkommata zu benutzen? Manchmal, wenn man was aus dem Browser kopiert, werden die surch Zeichen ersetzt, die zwar ähnlich, aber doch andere sind. Die Konfig für den Ring-Account muss ja so aussehen:
# CONFIG
ring_user = 'ringuser'
ring_pass = 'ringpass'
Da sollte Python nicht wegen des @-Zeichens meckern. Tut er das, dann kann sich die ring.py nicht einloggen und es kommen logischerweise auch keine Events beim FHEM an.
Wenn du die ring.py direkt im Terminal startest, dann gibt es auch kein Log, da alles ins Terminal geloggt wird...
Gruß,
budy
Hallo Budy
Danke für Deine Antwort und Hilfe. Das mit den Hochkommata habe ich korrigiert. Die folgenden 2 Meldungen erhalte ich nun:
pi@FHEMPi:/opt/fhem/bin $ ./ring.py
Traceback (most recent call last):
File "./ring.py", line 23, in <module>
fh = logging.FileHandler('ring.log')
File "/usr/lib/python2.7/logging/__init__.py", line 913, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python2.7/logging/__init__.py", line 943, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/opt/fhem/bin/ring.log'
pi@FHEMPi:/opt/fhem/bin $ sudo -u fhem python ring.py
Traceback (most recent call last):
File "ring.py", line 2, in <module>
from ring_doorbell import Ring
ImportError: No module named ring_doorbell
pi@FHEMPi:/opt/fhem/bin $
Die Voraussetzung hast Du geschaffen? Meine Notiz dazu:
###Ring Video Doorbell
# Quelle https://forum.fhem.de/index.php/topic,75754.0.html
# Voraussetzungen im System schaffen
apt-get update
# Ich bin nicht sicher ob man git braucht
apt-get python-pip git
pip install git+https://github.com/tchellomello/python-ring-doorbell
# python fhem API https://github.com/domschl/python-fhem
pip install fhem
pip list # installed Packages
Gruß Otto
Hi zusammen,
sieht so aus als gäbe es neue Funktionen:
https://buildmedia.readthedocs.org/media/pdf/python-ring-doorbell/latest/python-ring-doorbell.pdf
So sollte es möglich sein einen Snapshot zu erhalten, oder sehe ich das falsch?
Gruß,
Tobi
Da wir inzwischen über die Anfängerfrage hinaus sind würde ich vorschlagen das Thema zu verschieben? Gibt es Gründe dagegen? Aus meiner Sicht wäre Codeschnipsel das richtige Board so lange es noch kein Modul ist.
Keine Einwände von mir... ;)
Moin,
Zitat von: onkel-tobi am 12 März 2019, 23:27:02
Hi zusammen,
sieht so aus als gäbe es neue Funktionen:
https://buildmedia.readthedocs.org/media/pdf/python-ring-doorbell/latest/python-ring-doorbell.pdf
So sollte es möglich sein einen Snapshot zu erhalten, oder sehe ich das falsch?
hmm... ich habe mir das Repo gerade mal angesehen und sehe keine neue Funktionalität. Die Snapshot-Funtion war schon in der 0.23 drin, welche ich seit Januar einsetze. Ich schau mal, ob ich die irgendwie integriert bekomme.
Gruß,
budy
Zitat von: budy am 13 März 2019, 09:03:44
Ich schau mal, ob ich die irgendwie integriert bekomme.
Das wäre cool.
Ich bekomme allerdings aktuell auch bei deiner Version folgenden Fehler:
Traceback (most recent call last):
File "ring.py", line 203, in <module>
for k, d in devs.items(): getDeviceInfo(d)
File "ring.py", line 89, in getDeviceInfo
srRing('address ' + dev.address, dev)
File "ring.py", line 79, in srRing
sendFhem('setreading Ring_' + dev.name.replace(" ","") + ' ' + str)
File "ring.py", line 60, in sendFhem
fh.send_cmd(str)
File "/usr/local/lib/python2.7/dist-packages/fhem/__init__.py", line 304, in send_cmd
self.log.debug("Sending: {}".format(msg))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 44: ordinal not in range(128)
Zeile 80 habe ich schon entsprechend geändert (s. https://github.com/markuzzi/ring-fhem/pull/1/files)
Hast Du noch eine Idee?
Danke & Gruß,
Tobi
Moin Tobi,
wundert mich ein wenig, denn der Code in meinem Repo konvertiert alle diese Daten in Strings. Kann es sein, dass du da noch eine ältere Version benutzt, denn der Code in Zeile 89 sieht in meiner ring.py so aus:
srRing('address ' + str(dev.address), dev)
Was diese Snapshots angeht, da komme ich aktuell nicht recht weiter... immer wenn ich versuche auf die Funtion get_snapshot() für mein Ring-Objekt zuzugreifen, bekomme ich einen Error 401 zurück und ich bin noch nicht durch die ganze Lib durchgestiegen. Andere Funktionen aus dem Objekt gehen aber ganz normal, wie z.B. der Videodownload.
Gruß,
budy
Zitat von: budy am 14 März 2019, 10:24:59
wundert mich ein wenig
Mich auch...
Mit deinem code ohne Anpassung bekomme ich:
pi@pi:2019-03-14 12:59:55,312 - fhem_ring - INFO - Found 1 devices.
2019-03-14 12:59:55,755 - fhem_ring - INFO - Updating device data for device 'Klingel' in FHEM...
2019-03-14 12:59:55,756 - fhem_ring - DEBUG - sending: setreading Ring_Klingel account 4903809
2019-03-14 12:59:55,758 - fhem_ring - ERROR - Unexpected error:'ascii' codec can't encode character u'\xdf' in position 12: ordinal not in range(128)
2019-03-14 12:59:55,759 - fhem_ring - ERROR - Exception occured. Retrying...
Traceback (most recent call last):
File "/opt/fhem/bin/ring.py", line 151, in <module>
for k, d in devs.items(): getDeviceInfo(d)
File "/opt/fhem/bin/ring.py", line 80, in getDeviceInfo
srRing('address ' + str(dev.address), dev)
UnicodeEncodeError: 'ascii' codec can't encode character u'\xdf' in position 12: ordinal not in range(128)
Gruß,
Tobi
Moin Tobi,
stimmt, da war ich auf dem Holzweg... da musste ja gerade das str weg, weil dev.address bereits Unicode ist... Was hast du denn da als Wert drin, dass das nicht funktioniert - ein "ß" in Straße?
Gruß,
Budy
Habe ein ü und ein ß.
Gesendet von iPhone mit Tapatalk
Moin Tobi,
das Umlautproblem ist im letzten commit gefixt.
Gruß,
budy
Zitat von: Otto123 am 12 März 2019, 21:16:53
Die Voraussetzung hast Du geschaffen? Meine Notiz dazu:
###Ring Video Doorbell
# Quelle https://forum.fhem.de/index.php/topic,75754.0.html
# Voraussetzungen im System schaffen
apt-get update
# Ich bin nicht sicher ob man git braucht
apt-get python-pip git
pip install git+https://github.com/tchellomello/python-ring-doorbell
# python fhem API https://github.com/domschl/python-fhem
pip install fhem
pip list # installed Packages
Gruß Otto
Hallo Otto,
ich habe nochmals alles geprüft allerdings wurde mir angezeigt, dass alles up to date ist. Ich habe nach einem reboot des Raspi im Verzeichnis /opt/fhem/bin/ nochmals folgenden Befehl gestartet: "./ring.py" und folgende Meldung habe ich wieder erhalten:
Traceback (most recent call last):
File "./ring.py", line 23, in <module>
fh = logging.FileHandler('ring.log')
File "/usr/lib/python2.7/logging/__init__.py", line 913, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python2.7/logging/__init__.py", line 943, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/opt/fhem/bin/ring.log'
Ich habe jetzt aber einen Logeintrag erhalten mit folgendem Inhalt:
Retrying...
2019-03-15 16:23:53,922 - fhem_ring - INFO - Found 1 devices.
2019-03-15 16:23:54,432 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-03-15 16:23:54,433 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxx
2019-03-15 16:23:54,436 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer address xxxxx
2019-03-15 16:23:54,438 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer family doorbots
2019-03-15 16:23:54,439 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer id xxxxxxxxx
2019-03-15 16:23:54,441 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer name Haustuer
2019-03-15 16:23:54,443 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer timezone Europe/Berlin
2019-03-15 16:23:54,445 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer doorbellType Mechanical
2019-03-15 16:23:54,446 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer battery 62
2019-03-15 16:23:54,448 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer ringVolume 5
2019-03-15 16:23:54,450 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer connectionStatus online
2019-03-15 16:23:54,452 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer WifiName xxxxxx
2019-03-15 16:23:54,453 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer WifiRSSI -61
2019-03-15 16:23:54,455 - fhem_ring - INFO - Polling for events.
2019-03-15 16:23:54,457 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:23:57,111 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:23:59,843 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:02,537 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:05,222 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:07,897 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:10,720 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:13,447 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:16,166 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:18,863 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:21,562 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:24,335 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:27,000 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:29,670 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:32,356 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:35,020 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:37,875 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:40,664 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:43,443 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:46,168 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:48,902 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:51,749 - fhem_ring - DEBUG - Polling for events with 'Haustuer'.
2019-03-15 16:24:52,424 - fhem_ring - INFO - Alert detected at 'Haustuer'.
2019-03-15 16:24:52,426 - fhem_ring - DEBUG - Alert detected at 'Haustuer' via 'Haustuer'.
2019-03-15 16:24:52,428 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer lastAlertDeviceID xxxxxxxxxxxx
2019-03-15 16:24:52,429 - fhem_ring - ERROR - Unexpected error:[Errno 104] Connection reset by peer
2019-03-15 16:24:52,431 - fhem_ring - ERROR - Exception occured. Retrying...
2019-03-15 16:24:57,927 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-03-15 16:24:57,929 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxx
2019-03-15 16:24:57,930 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-03-15 16:24:57,932 - fhem_ring - ERROR - Exception occured. Retrying...
2019-03-15 16:25:03,400 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-03-15 16:25:03,405 - fhem_ring - DEBUG - sending: setreading Ring_Haustuerxxxxxxx
2019-03-15 16:25:03,408 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-03-15 16:25:03,409 - fhem_ring - ERROR - Exception occured. Retrying...
2019-03-15 16:25:08,924 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-03-15 16:25:08,926 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxx
2019-03-15 16:25:08,930 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-03-15 16:25:08,932 - fhem_ring - ERROR - Exception occured. Retrying...
2019-03-15 16:25:14,509 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-03-15 16:25:14,511 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxxxxxx
2019-03-15 16:25:14,516 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-03-15 16:25:14,517 - fhem_ring - ERROR - Exception occured. Retrying...
Ich weiß leider mit der Info "BrokenPipe", was wohl die Verbindung zu Fhem ist, nichts anzufangen. Was soll/kann ich noch prüfen/ändern??
Viele Grüß Marko
Hallo Marko,
wenn Du das so startest:
ZitatIch habe nach einem reboot des Raspi im Verzeichnis /opt/fhem/bin/ nochmals folgenden Befehl gestartet: "./ring.py" und folgende Meldung habe ich wieder erhalten:
Musst Du auch die Rechte von fhem haben...
Ich betreibe das derzeit nicht unter dem user fhem und habe nichts im fhem Verzeichnis. Ich starte das als Pi und mache es mit einem Cronjob:
Ich habe zum Test lediglich das ring.py heruntergeladen (/home/pi/) dort die Zugänge (Ring und FHEM) eingetragen und es einfach gestartet.
Dann mit ctrl+c abgebrochen und in FHEM einen Dummy mit dem gefundenen Namen angelegt:
define Ring_<gefundener Name> dummy
Danach einfach wieder starten, dann darf es keine Fehler geben und in FHEM müssen die Readings gefüllt werden.
Ich habe noch eine Startdatei run-ring gemacht, damit es im Hintergrund läuft:
#!/bin/bash
#run_ring
#make sure the process is always running.
process=/home/pi/ring.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup bash -c "python $process" >/dev/null &
echo "Process $process started."
fi
exit
Als alles lief, habe ich noch das Logging runtergedreht und mit crontab -e (unter User Pi) einen Job erzeugt. Läuft so seit Weihnachten Störungsfrei. Eintrag am Ende der crontab
@reboot sleep 180;/home/pi/run-ring
@hourly /home/pi/run-ring
Ist natürlich sicher besser, das mal noch unter einem anderen Account anzulegen. Das war mehr so ein schneller provisorischer Schuss, aber Provisorien halten bekanntlich ...
Ich habe mir die aktuelle ring.py nicht angeschaut, die von vor Weihnachten hatte ich etwas modifiziert (Umlaute)
Gruß Otto
Moin Marko,
sieht für mich ein wenig danach aus, als wenn der FHEM die Verbindung zur ring.py kappt. Ich wüsste nur nicht, warum er das tun sollte. Das mit dem Log ist ein Berechtigungs-Problem. Der User, der die ring.py startet muss natürlich auch die Berechtigung haben in das Log zu schreiben.
Wenn du in global im FHEM das attribut verbose auf 4 stellst, dann solltest du im fhem.log sehen können, ob und wann er die Verbindung zu macht.
Gruß,
budy
Hi budy,
danke, Umlaute gehen nun.
Bezüglich snapshot, hilft das hier evtl. weiter?
https://github.com/tchellomello/python-ring-doorbell/blob/master/ring_doorbell/doorbot.py (https://github.com/tchellomello/python-ring-doorbell/blob/master/ring_doorbell/doorbot.py)
Gruß,
Tobi
Moin Tobi,
schön, dass die Umlaute jetzt gehen - hat mit meiner Fake-Adresse hat das auch funktioiert. ;)
Ich habe mir bereits den Issue 108 im Repo angeschaut:
https://github.com/tchellomello/python-ring-doorbell/pull/108 (https://github.com/tchellomello/python-ring-doorbell/pull/108)
daher weiß ich auch, dass das eigentlich schon seit Januar drin sein muss, aber wenn ich versuche bei meinem doorbot so einen Snapshot anzufordern, dann erhalte ich immer einen Fehler 401, und die Antwort legt nahe, dass ich das nicht darf. Ich kann aber auch diesen Endpoint in der API - wenn es diesen denn noch so gibt, auch so nicht anspringen, z.B. über einen Browser.
Heute habe ich mal versucht dem Teil mit einem mitmproxy auf den Pelz zu rücken, aber die Ring App auf dem iPhone scheint, die System-Proxy Einstellungen zu ignorieren, so konnte ich den API-Endpunkt für die Funktion get_snapshot() aus der Lib nicht verifizieren.
Gruß,
budy
Hallo, guten Morgen,
ich bin wirklich am Verzweifeln. Mir fehlt leider auch die Kenntnis jede Meldung richtig zu interpretieren.
Ich habe wie Otto empfohlen hat, ring.py unter /home/pi/ angelegt. Den ring_user und ring_pass lt. meinem Konto eingetragen. In fhem_ip habe ich die IP meines Fhemsystems eingetragen 192.168.xxxx der fhem_port 7072 habe ich nicht verändert und die Datei mit sudo chmod +x ring.py ausführbar gemacht.
Starte ich nun mit dem Befehl python ring.py erhalte ich folgende Meldung:
pi@FHEMPi:~ $ sudo python ring.py
2019-03-16 10:08:59,806 - fhem_ring - INFO - Found 1 devices.
2019-03-16 10:09:00,343 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-03-16 10:09:00,346 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxx
2019-03-16 10:09:00,360 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer address xxx, xxx, Rheinhessen-Pfalz xxx, DE
2019-03-16 10:09:00,367 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer family doorbots
2019-03-16 10:09:00,370 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-03-16 10:09:00,373 - fhem_ring - ERROR - Exception occured. Retrying...
2019-03-16 10:09:05,829 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2019-03-16 10:09:05,833 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account xxxx
2019-03-16 10:09:05,836 - fhem_ring - ERROR - Unexpected error:[Errno 32] Broken pipe
2019-03-16 10:09:05,839 - fhem_ring - ERROR - Exception occured. Retrying...
^CTraceback (most recent call last):
File "ring.py", line 157, in <module>
time.sleep(5)
KeyboardInterrupt
In Fhem mit verbose 4 folgendes:
2019.03.16 10:08:57 4: Connection accepted from telnetForBlockingFn_1552727023_127.0.0.1_34278
Leider kann ich nicht verstehen was genau die Meldungen aussagen bzw. wo der Fehler ist.
Trotzdem Danke an Otto und Buddy für die Hilfe!!
Ich kann mit der Fehlermeldung broken Pipe auch nix anfangen. Aber dort wo die kommt, würde ich vermuten, da steht was in Deinen Daten, was in der Übertragung zu den Readings nicht funktioniert.
Mach mal in FHEM ein list Ring_Haustuer.
Welche Version des ring.py hast Du jetzt?
Gruß Otto
Moin Marko,
also, der Teil mit dem Ring-Service funktioniert ja offensichtlich. Die Ausgabe zeigt aber auch, dass die ring.py gar nicht an deinen FHEM heran kommt. Läuft die ring.py auf demselben Host, auf dem auch der FHEM läuft?
2019.03.16 10:08:57 4: Connection accepted from telnetForBlockingFn_1552727023_127.0.0.1_34278
Das ist ja eine Verbindung über localhost, also 127.0.0.1 - das ist bei mir auch so, aber ich habe auch die 127.0.0.1 als fhem_ip drin stehen lassen, da meine ring.py direkt auf meinem FHEM host läuft. Zeig uns doch außerdem mal ein List von deinem Telnet-Objekt. Wenn du nicht genau weißt, wie du das kriegst:
list TYPE=telnet
zeigt die alle Objekte des Typs telnet. Dann kannst du anschließend mittels list <device> ein Device detailliert anzeigen lassen. Irgendwo da muss das Problem eigentlich liegen...
Gruß,
budy
Ein Fhem list aus Ring_Haustuer ergibt:
Internals:
CFGFN
NAME Ring_Haustuer
NR 1670
STATE ???
TYPE dummy
Attributes:
room Tür
Ich habe mir hier die ring.py Stand 03.01.2018 herunter geladen : https://github.com/markuzzi/ring-fhem/blob/master/ring.py
Ein List list TYPE=telnet ergibt:
telnetForBlockingFn_1552727023
telnetPort
Ein List auf list telnetForBlockingFn_1552727023 ergibt:
Internals:
CFGFN
CONNECTS 82
DEF 0
FD 26
NAME telnetForBlockingFn_1552727023
NR 1654
PORT 35227
STATE Initialized
TEMPORARY 1
TYPE telnet
Attributes:
allowfrom 127.0.0.1
room hidden
Hier mal noch die ersten Zeilen der ring.py
from ring_doorbell import Ring
import time
import fhem
import logging
from thread import start_new_thread, allocate_lock
# CONFIG
ring_user = 'xxx@gmx.de'
ring_pass = 'xxxx'
fhem_ip = '127.0.0.1'
fhem_port = 7072 # Telnet Port
log_level = logging.DEBUG
fhem_path = '/opt/fhem/www/ring/' # for video downloads
POLLS = 2 # Poll every x seconds
Die ring.py läuft auf dem gleichen Raspberry wie Fhem.
Ich hoffe die Antwort kann Euch etwas weiterhelfen?
da fehlt list telnetPort
Ansonsten sieht es aber gut aus. Allerdings stimmt der Eintrag für fhem_ip nicht mit Deiner Aussage weiter oben? Ist aber richtig so.
Das list telnetPort:
Internals:
CONNECTS 8
DEF 7072 global
FD 5
NAME telnetPort
NR 4
PORT 7072
STATE Initialized
TYPE telnet
Attributes:
group FHEM
room System
verbose 0
Ich habe fhem_ip einmal mit 192.168.1.xxx probiert und nach der Antwort von Budy zurück auf 127.0.0.1 geändert.
geht im Terminal vom Pi so etwas:
perl /opt/fhem/fhem.pl 7072 "list Ring_Haustuer"
perl /opt/fhem/fhem.pl 7072 "set Ring_Haustuer willi"
perl /opt/fhem/fhem.pl 7072 "setreading Ring_Haustuer Testreading Wert"
Hallo Otto,
den Befehl kann ich absetzen. Allerdings keine Statusänderung bei Ring_Haustuer in Fhem. Es es wird nicht Willi und ein Testreading wird auch nicht angelegt.
und das list liefert keine oder die richtige Ausgabe?
was liefert list TYPE=allowed in FHEM?
Hast Du den Pi mal neu gestartet?
Die Befehle im Raspberryterminal abgesendet liefern keine Änderung / Ausgabe am Fhem device Ring_Haustuer.
list TYPE=allowed in FHEM ergibt nichts.
Ja Raspberry mehrfach neu gestartet.
Moin Marko,
perl /opt/fhem/fhem.pl 7072 "list Ring_Haustuer"
muss was ausgeben, ansonsten funktioniert dein Telnet-Zugang am FHEM über Port 7072 nicht! Entweder gibt dieser Befehl das Listing deines Ring-Objekts aus, oder aber, wenn der Name nicht stimmt, eine Fehlermeldung, dass FHEM das Device nicht finden konnte.
Btw, ich würde dir empfehlen, gleich die ring.py aus meinem GitHub-Repo zu nehmen, denn das Repo von Markus ist offenbar etwas verwaist... ;) Der Link dazu ist ein paar Seiten zurück - ich glaube auf Seite 5.
Gruß,
budy
Mir fällt zum telnetPort jetzt noch folgendes auf:
Internals:
CONNECTS 20426
DEF 7072 global
FD 5
FUUID 5c4c565f-f33f-27f7-0fc6-4f555965b22a7c2c
NAME telnetPort
NR 3
PORT 7072
STATE Initialized
TYPE telnet
READINGS:
2019-03-09 10:28:39 state Initialized
Attributes:
da fehlt bei Dir das Reading state - da stimmt was nicht. Da wird wohl was im System nicht stimmen.
Was passiert denn wenn Du mal noch ein telnetPort definierst? Anderes Port? Kommt da eine Fehlermeldung?
define telnetPort2 telnet 7074 global
Und wenn es dort ein Reading state gibt machst Du die Tests nochmal mit diesem Port.
Gruß Otto
Guten Morgen
Ein ganz großes Dankeschön an OTTO und BUDY.
Es läuft nun nach dem Tip von Otto. Ich habe einen neuen Telnetport angelegt und den Port in der ring.py geändert. Dann das besagte "perl /opt/fhem/fhem.pl 7074 "list Ring_Haustuer"" ausgeführt und es wurde mir die Daten angezeigt. Die ring.py gestartet, geklingelt und zack lief es.
Danke nochmals für Eure Hilfe!!
Marko
👍
Hallo Zusammen!
Ich bin zufällig (Ein Kollege hat mir die Ring vermacht weil ers nicht braucht, und meine erste Idee war die ins Fhem zusätzlich zu kriegen) auf den Thread hier gestoßen....
Ich habe die zwar noch nicht mal aus der Verpackung genommen aber theoretisch - sofern die Ring sich in Deep Standby verfrachtet wenn man nichts damit tut (was ich annehme) und dann erst sich ins WLAN einbucht usw wenn jemand den Knopf drückt (muss ich aber erst sniffen) dann müsste es einen Broadcast im Netzwerksegment geben....
Und diesen kann man zB Abfangen - so funktioniert zB Dasher das kleine Programm für den Amazon Dash Button (den ich bisher als Türklingel im Einsatz habe)...
Soll heißen.... Dasher installieren (gibts einen gute Anleitung wenn man danach sucht) und anstatt der Mac Adresse von einem Dash Button eben die Mac Adresse von der Ring eingeben und schon braucht man keinen Script fähigen Router...
So zumindest die Theorie ich werde das heute gleich mal ausprobieren sofern ich dazu komme... - wer will schon ein Gerät so nutzen wie es sich der Hersteller überlegt hat ;-)
Lg
Robert
Moin Robert,
das wäre zumindest mal für den Einsatz als Türklingel gut, obwohl ich sagen muss, dass es mit dem Setup, wie ich es einsetze auch schon nicht schlecht geht. Die Verzögerung von 1 Sekunde kann ich verschmerzen, da ich ja eh' noch einen RingChime mitgeliefert bekommen hatte - für ordentlich Radau beim Klingeln ist also gesorgt.
Ich verstehe allerdings nicht so ganz, wie du auf den Broadcast reagieren willst, dazu müsstest du ja den gesamten Netzwerk-Traffic sniffen und dann irgendwie ein Event in FHEM auslösen. Hast du dazu ein Beispiel?
Gruß,
budy
hallo zusammen ,
ich habe gerade auch mal versucht das ganze bei mir umzusetzen !
ls -l
-rw-r--r-- 1 fhem fhem 533958 Mai 7 19:16 ring.log
-rwxrwxrwx 1 fhem fhem 6913 Mai 7 14:30 ring.py
-rwxrwxrwx 1 fhem fhem 319 Mai 7 15:57 run_ring.sh
im Terminal logge ich mich als User fhem ein !
Aber ich muss die run_ring.sh so starten :
sudo ./run_ring.sh
Wenn ich es händisch so starte ,läuft es soweit und der dummy wird gefüllt !
Wenn ich ohne sudo starte ....passiertr nix :-(
./run_ring.sh
Process ring.py started.
Es wird kein Dummy gefüllt ....
meine run_ring.sh
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process=ring.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup su -c "sudo python /opt/fhem/bin/ring.py" fhem >~/ncb 2>&1 &
echo "Process $process started."
fi
exit
wie bekomme ich es nun hin , das die run_ring.sh automatisch gestartet wird
Hi,
um Deine Frage zu beantworten: mit crontab.
Aber dazu muss es erstmal laufen. sudo braucht das Script nicht. Und unter user fhem muss es auch nicht laufen.
Gruß Otto
Hallo Otto ,
danke erstmal !
hmmm , es läuft ....aber nur wenn ich mit sudo starte ....ohne läuft es nicht :-(
Hi,
ich habe das auch bloß quick & dirty bei meinem Kumpel gemacht :-X Es tut es aber seit Monaten...
Ich habe alles unter pi gemacht, die beiden Scripte liegen unter /home/pi
Das run-ring sieht so aus, da verwende ich auch kein sudo.
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process=/home/pi/ring1.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup bash -c "python $process" >/dev/null &
echo "Process $process started."
fi
exit
Gruß Otto
Guten Morgen Otto ,
dein Script hatte ich gestern Nacht schonmal probiert ...wobei das bei mir auch nur mit dem sudo lief.
Da es schon spät war ,möchte ich nicht behaupten ,an alles gedacht zu haben ....drehte sich gestern alles im Kreis :)
Das Script ,welches ja nur das pythonscript ausführt ( hoffe diese Formulierung stimmt ) wird gestartet und gibt sogar positive Rückmeldung , stellenweise , wird bei einem erneuten starten ,die Rückmeldung gegeben, das ring.py schon läuft .... aber der dummy wird nur befüllt, wenn ich mit sudo starte ....
Hatte dann entnervt aufgeben und bin pennen gegangen ....
Ich setzte mich aber heute nochmals mit deinem o.g. Script auseinander und versuche es erneut ....
Linux und ich & Rechte passt noch nicht zusammen , quäle mich da enorm 😂
Moin,
ich häng Dir gern auch noch mein Script hier her:
Das Script kam ursprünglich von hier https://github.com/markuzzi/ring-fhem
from ring_doorbell import Ring
import time
import fhem
import logging
from thread import start_new_thread, allocate_lock
# CONFIG
ring_user = 'user@doamin.de'
ring_pass = 'password'
fhem_ip = '127.0.0.1'
fhem_port = 7072 # Telnet Port
log_level = logging.CRITICAL
fhem_path = '/opt/fhem/www/ring/' # for video downloads
POLLS = 2 # Poll every x seconds
# LOGGING
logger = logging.getLogger('ring_doorbell.doorbot')
logger.setLevel(log_level)
# create file handler which logs even debug messages
fh = logging.FileHandler('ring.log')
fh.setLevel(log_level)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(log_level)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
logger = logging.getLogger('fhem_ring')
logger.setLevel(log_level)
logger.addHandler(ch)
logger.addHandler(fh)
# Connecting to RING.com
myring = Ring(ring_user, ring_pass)
fh = fhem.Fhem(fhem_ip, fhem_port)
def sendFhem(str):
logger.debug("sending: " + str)
global fh
fh.send_cmd(str)
def askFhemForReading(dev, reading):
logger.debug("ask fhem for reading " + reading + " from device " + dev)
return fh.get_dev_reading(dev, reading)
def askFhemForAttr(dev, attr, default):
logger.debug("ask fhem for attribute "+attr+" from device "+dev+" (default: "+default+")")
fh.send_cmd('{AttrVal("'+dev+'","'+attr+'","'+default+'")}')
data = fh.sock.recv(32000)
return data
def setRing(str, dev):
sendFhem('set Ring_' + dev.name.replace(" ","") + ' ' + str)
def attrRing(str, dev):
sendFhem('attr Ring_' + dev.name.replace(" ","") + ' ' + str)
def srRing(str, dev):
sendFhem('setreading Ring_' + dev.name.replace(" ","") + ' ' + str)
num_threads = 0
thread_started = False
lock = allocate_lock()
def getDeviceInfo(dev):
dev.update()
logger.info("Updating device data for device '"+dev.name+"' in FHEM...")
srRing('account ' + str(dev.account_id), dev)
# srRing('address ' + dev.address, dev)
srRing('family ' + str(dev.family), dev)
srRing('id ' + str(dev.id), dev)
srRing('name ' + str(dev.name), dev)
srRing('timezone ' + str(dev.timezone), dev)
srRing('doorbellType ' + str(dev.existing_doorbell_type), dev)
srRing('battery ' + str(dev.battery_life), dev)
srRing('ringVolume ' + str(dev.volume), dev)
srRing('connectionStatus ' + str(dev.connection_status), dev)
srRing('WifiName ' + str(dev.wifi_name), dev)
srRing('WifiRSSI ' + str(dev.wifi_signal_strength), dev)
def pollDevices():
logger.info("Polling for events.")
global devs
i=0
while 1:
for k, poll_device in devs.items():
logger.debug("Polling for events with '" + poll_device.name + "'.")
if poll_device.check_alerts() and poll_device.alert:
dev = devs[poll_device.alert.get('doorbot_id')]
logger.info("Alert detected at '" + dev.name + "'.")
logger.debug("Alert detected at '" + dev.name + "' via '" + poll_device.name + "'.")
alertDevice(dev,poll_device.alert)
time.sleep(POLLS)
i+=1
if i>600:
break
def alertDevice(dev,alert):
srRing('lastAlertDeviceID ' + str(dev.id), dev)
srRing('lastAlertDeviceAccountID ' + str(dev.account_id), dev)
srRing('lastAlertDeviceName ' + str(dev.name), dev)
srRing('lastAlertSipTo ' + str(alert.get('sip_to')), dev)
srRing('lastAlertSipToken ' + str(alert.get('sip_token')), dev)
if(alert.get('kind') == 'ding'):
setRing('ring', dev)
srRing('lastAlertType ring', dev)
his = dev.history(limit=100,kind='ding')
if(len(his)>0):
dev.recording_download(his[0]['id'], filename=fhem_path + 'last_ding_video.mp4',override=True)
srRing('lastDingVideo ' + fhem_path + 'last_ding_video.mp4', dev)
elif(alert.get('kind') == 'motion'):
setRing('motion', dev)
srRing('lastAlertType motion', dev)
his = dev.history(limit=100,kind='motion')
if(len(his)>0):
dev.recording_download(his[0]['id'], filename=fhem_path + 'last_motion_video.mp4',override=True)
srRing('lastMotionVideo ' + fhem_path + 'last_motion_video.mp4', dev)
srRing('lastCaptureURL ' + str(dev.recording_url(dev.last_recording_id)), dev)
# GATHERING DEVICES
devs = dict()
poll_device = None
tmp = list(myring.stickup_cams + myring.doorbells)
for t in tmp:
devs[t.account_id] = t
# all alerts can be recognized on all devices
poll_device = t # take one device for polling
logger.info("Found " + str(len(devs)) + " devices.")
# START POLLING DEVICES
count = 1
while count<6: # try 5 times
try:
while 1:
for k, d in devs.items(): getDeviceInfo(d)
pollDevices()
except Exception as inst:
logger.error("Unexpected error:" + str(inst))
logger.error("Exception occured. Retrying...")
time.sleep(5)
if count == 5:
raise
count += 1
Wie gesagt: liegt zusammen mit dem anderen Script in /home/pi und wird einfach nur gestartet, ohne sudo.
Wenn Du sudo brauchst kann es eigentlich nur an einer falschen Ablage der Script liegen.
-rw-r--r-- 1 pi pi 5,1K Dez 22 12:49 ring1.py
-rwxr-xr-x 1 pi pi 307 Dez 13 13:37 run-ring
crontab -e und das eingefügt
@reboot sleep 180;/home/pi/run-ring
@hourly /home/pi/run-ring
Gruß Otto
ganz lieben Dank @Otto !
Habs heute mehrere Stunden versucht vernünftig ans laufen zu bekommen ....
*grrrrr. Ich raff´s nicht ! :-( ....auch mit deinen Skripten und Anleitungen , funzt es nur mit sudo >:(
-edit-
Ob es nun der richtige Weg ist oder nicht ....Hab es erstmal laufen mit systemd...
hmm also mitlerweile gibt es ja echt sehr viele Infos zur Ring Doorbell auch viel altes.
Es gibt ja nun 2 APIs wenn ich nach ring api google :)
In wie weit kann man mit der 1. RING Doorbell etwas anfangen. 99€ ist ja guter Preis.
Kann man darüber das "Klingeln" relativ schnell abgreifen ?
Kann man eine Aktion auslösen über die Ringapp welche irgendwie in FHEM landet ( Türöffner ). Es gibt da ja eine Schnittstelle in der App für die Türschlösser usw. ??
Moin,
Zitat von: ChrisW am 09 Mai 2019, 09:33:03
hmm also mitlerweile gibt es ja echt sehr viele Infos zur Ring Doorbell auch viel altes.
Es gibt ja nun 2 APIs wenn ich nach ring api google :)
In wie weit kann man mit der 1. RING Doorbell etwas anfangen. 99€ ist ja guter Preis.
Kann man darüber das "Klingeln" relativ schnell abgreifen ?
Kann man eine Aktion auslösen über die Ringapp welche irgendwie in FHEM landet ( Türöffner ). Es gibt da ja eine Schnittstelle in der App für die Türschlösser usw. ??
Ich denke mal, du meinst eher zwei Libraries... die eigentliche API hat Ring nicht offengelegt und ich denke auch nicht, dass sie das noch tun werden. Das Problem mit den Libraries ist halt, dass die auch nur rudimentär implementiert und so gut wie gar nicht gepflegt werden. Das Klingeln abzugreifen geht aber schon ganz gut. Ich habe das bei mir realisiert und lasse zusätzlich zur Ring und dessen Chime auch noch zwei Homemativ FunkGongs klingeln.
Was das Modell angeht, so würde ich immer eines mit dedizierter Spannungsversorgung nehmen und keines, welches nur auf Batterie/Akku läuft. Die Sache mit den Türöffnern, ist dasselbe Problem wie die ganze API - diese Funktion ist nicht dokumentiert und jemand müsste sie per reverse-engineering nachbauen.
Gruß,
budy
okay Danke. Mit den Tür öffnen meine ich nur ob es da eine möglichkeit gibt in der App rechts bei dem Menü etwas zu nutzen um damit fhem anzusteuern.
Wäre halt schön in der APP zu bleiben um die Tür auf zu machen ;)
Habe einen screen gesehen das es da ein Menü gibt und man dort dann das key auswählen kann? Aber da geht dann die ext. App auf.
hmm ich bekomme hier mit dem code leider auch keine Akku Meldungen usw.
Für iobroker scheint es ein Modul zu geben.
Hat da noch keiner etwas gebastelt ? hab mein FHEM als Docker wenn ich da direkt mit scripten usw. arbeite ist da sjedesmal weg bei einem Update vom Docker Container.
Hab das fhem Modul in iobroker wie könnt ich den Status von da den Rüber bekommen ?
Zitat von: ChrisW am 11 Mai 2019, 11:02:02
dem code leider auch keine Akku Meldungen usw.
....
hab mein FHEM als Docker wenn ich da direkt mit scripten usw. arbeite ist da sjedesmal weg bei einem Update vom Docker Container.
Zum 1. Welchen Code meinst Du? Was hast Du probiert?
Zum 2. Das Script, was ich kenne, kann irgendwo rennen, es gibt keinen Zwang es innerhalb des Docker Container laufen zu lassen.
Ob es einen iobroker Code gibt kann ich nicht sagen.
Gruß Otto
Guten Morgen
Ich habe mir nun auch die Configuration installiert und die Einstellungen vorgenommen wie beschrieben.
Läuft alles wunderbar vielen Dank.
Eine Frage hätte ich nur, wenn ich es richtig verstehe wird die Verbindung zwischen dem Skript und Fhem über den Tellnetport aufgebaut. Gibt es eine möglichkeit diesen ab zu sichern? Also seitens fhem kann man ihn passwortschützen wenn ich das richtig im Kopf habe aber geht dies dann im skript auch?
lg michi
Ich habe das bei mir so gelöst, dass ich nur Verbindungen von localhost erlaube, das ist sicher genug, denn wenn von da was böses kommt, dann ist es eh' lange zu spät.
Gruß,
Budy
Hallo Michi,,
einfach noch als Ergänzung:
FHEM Telnetport kannst Du absichern mit allowed (https://commandref.fhem.de/#allowed)
Das Script verwendet python-fhem (https://github.com/domschl/python-fhem)
Dort ist beschrieben wir Du Passwort und co verwenden kannst.
Gruß Otto
Danke ihr beiden
Da muss ich mich wohl tiefer in die Thematik einlesen :)
Halli Hallo,
wir kommen wohl günstig an eine Doorbell 2 ran und die erste Frage meiner besseren Hälfte war "ist die fhembar?".
Also diesen Thread gefunden, überflogen und wollte mal fragen wie jetzt der aktuelle Stand ist.
Soweit ich das verstanden habe, geht es, das "es hat geklingelt" Signal abzugreifen aber Video ist nicht möglich? Oder geht das mit Python Ring Door Bell 0.2.3 jetzt schon?
Habe folgendes noch im Netz gefunden, ist euch aber bestimmt schon bekannt und gibt auch scheinbar nicht viel her:
https://github.com/davglass/doorbot
VG,
Merlin
Ich habe mir das schon länger nicht mehr angesehen, denn egal, was man sich so einredet... am Ende gehe ich immer zur Tür, wenn ich Zuhause bin und wenn nicht, dann lasse ich eh' niemanden rein...
Und ja... es wäre ein nettes Feature, aber am Ende war es auf meiner Prio-Liste nicht weit genug oben, das weiter zu verfolgen.
Huhu,
bei uns ist es aktuell so, dass ich die klingel mit einem kleinen selbstbau abgreife und wir dann über Telegram eine Benachrichtigung bekommen, dass es geklingelt hat.
Toll wäre natürlich wenn jetzt noch ein Foto mitkäm, damit man sieht wer geklingelt hat, einfach um die Neugier zu befriedigen :D
Das mit dem Öffnen sehe ich wie du, das wäre mir auch zu heikel, egal wie sicher das System angeblich ist, würde ich die Türöffnung nur implementieren, wenn ich einen "sicheren" Windfang hätte, damit bspw. der Postbote was rein stellen kann.
Ich nehme an die Chancen stehen schlecht, dass du das noch einmal aufgreifst?
Aktuell regt sich da wieder was auf Github in der Python lib. So wie ich das gesehen habe, sollte es zumindest mal möglich sein einen Snapshot von der Ring zu bekommen, aber darum kümmere ich mich erst nach meinem Urlaub. ;)
Gruß,
budy
Super, danke dir schon mal und schönen Urlaub :D
Einen schönen Sonntag euch :)
Ich kann nun die doorbell2 mein eigen nennen und habe auch versucht sie nach dieser Anleitung von budy einzubinden https://github.com/budachst/ring-fhem
Allerdings haut das ganze nicht wirklich hin; Auch habe ich den Teil:
ZitatIn fhem habe ich einen Dummy angelegt mit dem Namen "Ring_[RingDeviceName]" (Achtung, wenn der Name nicht passt, muss die ring.py angepasst werden). [RingDeviceName] wird durch den Namen des Ring Devices ersetzt, wobei Leerzeichen entfernt werden. Bsp: Ring Device heißt "Front Door", in FHEM wird "Ring_FrontDoor" geschrieben. Der entsprechende Dummy wird wie folgt angelegt:
nicht so ganz verstanden. Woher kommt der Name, mit dem ich "RingDeviceName" ersetzen soll? Ist das der, den ich der Klingel in der App gegeben habe? Und falls ja, wo in der ring.py soll ich diesen anpassen?
was ich getan habe:
//===================Terminal (raspberry pi)===================
pip install git+https://github.com/tchellomello/python-ring-doorbell
pip install fhem
mkdir /opt/fhem/bin
wget https://raw.githubusercontent.com/budachst/ring-fhem/master/ring.py
wget https://raw.githubusercontent.com/budachst/ring-fhem/master/run_ring
sudo chown -R fhem:dialout /opt/fhem/bin/
sudo chmod 777 ring.py
sudo chmod 777 run_ring
nano ring.py // attribute anpassen (nur "ring_user" und "ring_pass" geändert)
sudo su -u fhem crontab -e // @reboot /opt/fhem/bin/run_ring und @hourly /opt/fhem/bin/run_ring eintragen
mkdir /opt/fhem/www/ring/
sudo chown -R fhem:dialout /opt/fhem/www/ring/
./run_ring
//===================IN FHEM===================
//Doorbell heißt in der App "Eingang"
defmod Ring_Eingang dummy
attr Ring_Eingang devStateIcon none:it_camera@green motion:secur_alarm@red ring:secur_alarm@orange
attr Ring_Eingang room Draußen
attr Ring_Eingang event-on-change-reading .*
attr Ring_Eingang setList none motion ring
Wenn ich jetzt versuche die Skripte zu starten passiert folgendes:
pi@raspberrypi:/opt/fhem/bin $ ./ring.py
from: can't read /var/mail/ring_doorbell
./ring.py: Zeile 2: import: Kommando nicht gefunden.
./ring.py: Zeile 3: import: Kommando nicht gefunden.
./ring.py: Zeile 4: import: Kommando nicht gefunden.
./ring.py: Zeile 5: import: Kommando nicht gefunden.
./ring.py: Zeile 6: import: Kommando nicht gefunden.
./ring.py: Zeile 7: import: Kommando nicht gefunden.
./ring.py: Zeile 8: Syntaxfehler beim unerwarteten Wort `sys'
./ring.py: Zeile 8: `reload(sys)'
bzw.:
pi@raspberrypi:/opt/fhem/bin $ ./run_ring
Process python /opt/fhem/bin/ring.py started.
In fhem tut sich nichts, ich schätze weil ich den Teil mit dem Namen nicht verstanden habe.
Ich hoffe man kann mir helfen :) Telnet geht übrigens.
BG,
Merlin
Hallo Merlin,
der grundlegende Fehler ist MMn das ring.py direkt zu starten.
Das geht nicht, in dem Script ist nicht mal ein Shebang. Da weiß gar keiner das es python ist. ;)
Nochmal der Link zu dem was ich getan habe:
https://forum.fhem.de/index.php/topic,75754.msg937804/topicseen.html#msg937804
Besser ist es, zum Testen erstmal so zu starten und schauen was er an Informationen wirft.
python ring.py
Gruß Otto
Ah perfekt, danke :D
Er wollte erst noch die log-Datei, dann aber lief es:
sudo touch /opt/fhem/bin/ring.log
sudo chown fhem:dialout /opt/fhem/bin/ring.log
sudo chmod 777 /opt/fhem/bin/ring.log
python ring.py
Jetzt komme ich mit " sudo su -u fhem crontab -e " nicht mehr an die crontab datei von fhem...
Wie stelle ich denn sicher, dass er die Befehle in der crontab auch wirklich ausführt?
ich finde das unnötig kompliziert, das Ganze in der Art als user fhem auszuführen.
Ich habe alles als Pi gemacht und es dann einfach so laufen lassen. Ja das ist auch nicht optimal. ;)
Wenn es schon innerhalb von FHEM laufen soll, dann würde ich mir für die Zukunft noch überlegen es einfach anstatt mit crontab direkt in FHEM zu starten.
Dann kann man sich den Krampf mit dem Anlegen der Logdatei sparen :)
Viel wichtiger ist, dass es überhaupt läuft und dass man den Logginglevel im Script runterschraubt. Sonst ist am Ende des Monats die Platte voll.
Alles klar, das mit dem Loglevel ist ne gute Idee, wo stehen denn die möglichen?
Ich tippe auf INFO ERROR und DEBUG?
Ich habe kein glück mit Cronjobs, bei mir wird das Skript nicht automatisch gestartet.
https://docs.python.org/3/library/logging.html#logging-levels
ich habe es auf CRITICAL gesetzt, damit wird bisher gar nichts mehr geloggt. Es stand glaub ich auf DEBUG :o
Naja das Du kein Glück hast würde mich nicht wundern. Du hast das von der Lage und den Zugriffsmöglichkeiten erstmal ziemlich verwurschtelt. Kopiere das Ganze zum Test ins Homedir von deinem Standard User und Du wirst erstmal Erfolg haben. Das Script braucht keinerlei spezielle Rechte. Nur die Python Umgebung muss natürlich auch irgendwie passen.
Bei mir ging alles unter dem User Pi ohne erhöhte Rechte ganz easy... Und crontab geht auch als normaler User. ;)
Aber so wo Du alles nach /opt/fhem verbuddelt hast, hast Du mal versucht es direkt unter FHEM auf zurufen?
"bash ./bin/run-ring"
Wenn das funktioniert, kannst Du es doch einfach mit FHEM starten.
Gruß Otto
Hallo Otto, sorry, deine Antwort ist irgendwie durchgerutscht.
direkt aus fhem geht nicht, ist aber auch nicht so wild einmal die run_ring gestartet läuft es doch ganz gut durch.
Jetzt habe ich aber scheinbar seit dem 10.7. das Problem, dass die Events in FHEM nicht mehr aktualisiert werden alle Readings aktualisiert er fleißig, aber nicht den "status".
Im log (steht auf DEBUG) pollt er fleißig, aber wenn ich klingle oder die Hand vor der Kamera bewege ändert sich nichts.
"2019-08-02 22:43:13,331 - fhem_ring - DEBUG - Polling for events with 'Eingang'."
Die Ring-App selbst benachrichtigt mich aber und dort funktioniert alles.
Geht das vielleicht noch jemandem so?
BG,
Merlin
Nachtrag:
Um die Videos speichern zu können (was bisher bei mir aufgrund mangelnder Rechte nicht ging und jetzt nicht geht, weil das Skript die Events nicht erkennt), wird das "Ring protect" Feature (3€ oder 10€ pro Monat) benötigt um die Videos herunterladen zu können? Danach liegt das letzte Video ja lokal, aber ich schätze die Kamera wirft ihr Video ja erst Mal in die Cloud.
Hallo zusammen,
gibt es eigtl in Sachen Snapshot was neues?
Gruß,
Tobi
Zitat von: onkel-tobi am 05 Oktober 2019, 08:16:37
Hallo zusammen,
gibt es eigtl in Sachen Snapshot was neues?
Gruß,
Tobi
? In Homebridge tut die Snapshot Variante klasse, ich hätte es aber lieber auf meinem FTUI iPad! Any News?
Zitat von: TimoD am 11 Oktober 2019, 23:05:21
? In Homebridge tut die Snapshot Variante klasse, ich hätte es aber lieber auf meinem FTUI iPad! Any News?
Welche Homebridge Lösung nutzt Du?
Bei mir hat er zwar immer einen gesendet, aber da war mega delay drin.
Danke & Gruß,
Tobi
Ich bekomme beim Start der ring.py immer wieder folgende Fehlermeldung:
root@osboxes:/home/pi# from ring_doorbell import Ring
from: can't read /var/mail/ring_doorbell
root@osboxes:/home/pi# ImportError: No module named ring_doorbell
bash: ImportError:: Kommando nicht gefunden.
Zitat von: freakadings am 07 Juli 2019, 16:22:42
//===================Terminal (raspberry pi)===================
pip install git+https://github.com/tchellomello/python-ring-doorbell
pip install fhem
mkdir /opt/fhem/bin
wget https://raw.githubusercontent.com/budachst/ring-fhem/master/ring.py
wget https://raw.githubusercontent.com/budachst/ring-fhem/master/run_ring
sudo chown -R fhem:dialout /opt/fhem/bin/
sudo chmod 777 ring.py
sudo chmod 777 run_ring
nano ring.py // attribute anpassen (nur "ring_user" und "ring_pass" geändert)
sudo su -u fhem crontab -e // @reboot /opt/fhem/bin/run_ring und @hourly /opt/fhem/bin/run_ring eintragen
mkdir /opt/fhem/www/ring/
sudo chown -R fhem:dialout /opt/fhem/www/ring/
./run_ring
//===================IN FHEM===================
//Doorbell heißt in der App "Eingang"
defmod Ring_Eingang dummy
attr Ring_Eingang devStateIcon none:it_camera@green motion:secur_alarm@red ring:secur_alarm@orange
attr Ring_Eingang room Draußen
attr Ring_Eingang event-on-change-reading .*
attr Ring_Eingang setList none motion ring
Ich hab auch die Abhängigkeiten überprüft
Zitat von: Otto123 am 12 März 2019, 21:16:53
Die Voraussetzung hast Du geschaffen? Meine Notiz dazu:
###Ring Video Doorbell
# Quelle https://forum.fhem.de/index.php/topic,75754.0.html
# Voraussetzungen im System schaffen
apt-get update
# Ich bin nicht sicher ob man git braucht
apt-get python-pip git
pip install git+https://github.com/tchellomello/python-ring-doorbell
# python fhem API https://github.com/domschl/python-fhem
pip install fhem
pip list # installed Packages
Gruß Otto
Außerdem:
root@osboxes:/home/pi# pip list # installed Packages
Package Version
------------- ---------
certifi 2019.9.11
chardet 3.0.4
fhem 0.6.3
idna 2.8
pip 19.2.3
pyserial 3.4
pytz 2019.3
requests 2.22.0
ring 0.7.2
ring-doorbell 0.2.4
setuptools 40.6.2
six 1.12.0
urllib3 1.25.6
wirerope 0.2.1
Ich versuche die Ring erst mal auf einer VM zum laufen zu bekommen. Bei Erfolg übertrage ich alles auf den produkten RPi.
Bin für jeden Tipp dankbar.
Zitat von: onkel-tobi am 12 Oktober 2019, 11:02:03
Welche Homebridge Lösung nutzt Du?
Bei mir hat er zwar immer einen gesendet, aber da war mega delay drin.
Danke & Gruß,
Tobi
homebridge-ring die funktioniert echt klasse, inkl. Motion-Alerts und Live Video (unter ios13 sind die Push Benachrichtigungen im Moment noch buggy)
Zitat von: TimoD am 14 Oktober 2019, 07:27:26
homebridge-ring die funktioniert echt klasse, inkl. Motion-Alerts und Live Video (unter ios13 sind die Push Benachrichtigungen im Moment noch buggy)
Muss man da bezüglich snapshots noch was beachten? Scheint zumindest bei mir aktuell noch nicht zu funktionieren, aber evtl. dann wg. ios13?
Danke & Gruß,
Tobi
Hallo zusammen,
ich versuche nun schon stundenlang meine Ring in Fhem zum laufen zu bringen. Leider bisher erfolglos.
Ein Aufruf von "bash ./bin/run-ring" direkt in Fhem bringt mir folgende Meldung ins Log: bash: ./bin/run-ring: Datei oder Verzeichnis nicht gefunden.
Abgelegt habe ich die run-ring.html (und umbenannt in run_ring.sh) und die ring.py in /opt/fhem/bin. Chown Fhem und dialout.
Ich habe Fhem in einer VM mit aktuellem Debian am laufen, aber bin leider im Linux überhaupt nicht fit.
Beim Aufruf von "pip install git+https://github.com/tchellomello/python-ring-doorbell" kam schon eine Fehlermeldung wegen git und das er das Verzeichnis nicht findet. Git habe ich dann mit einer Anleitung in der Version 2.24.0 installiert. Python V.2.7.16 auch.
Da der Aufruf mit dem Link zu Github nicht funktionierte, habe ich wie in der git Anleitung beschrieben die Zip-Datei von Github mit wget ins /tmp heruntergeladen, ausgepackt und installiert.
Der Aufruf von "pip install fhem" funktionierte ohne Fehlermeldung.
Das Aufrufen von "python run_ring.sh" bringt folgende Fehlermeldung:
File "run_ring.sh", line 7
<!DOCTYPE html>
^
SyntaxError: invalid syntax
Hat vielleicht jemand ne Idee, wo es dran liegen könnte? Ich weiß leider nicht mehr weiter. :(
Warum sollte "bash ./bin/run-ring" eine run_ring.sh finden? Wenn einer Kevin ruft reagiert Stevie doch auch nicht? ;D
ZitatAbgelegt habe ich die run-ring.html (und umbenannt in run_ring.sh)
Da wäre ich mal gespannt wie das aussieht. Zeig mal bitte den Inhalt der Datei in Codetags.
Guten Morgen Otto,
danke für deine Antwort. Natürlich habe ich aus Fhem die run_ring.sh aufgerufen, sorry vergessen dran zu hängen.
Hier der Inhalt von der run_ring.sh:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="utf-8">
<link rel="dns-prefetch" href="https://github.githubassets.com">
<link rel="dns-prefetch" href="https://avatars0.githubusercontent.com">
<link rel="dns-prefetch" href="https://avatars1.githubusercontent.com">
<link rel="dns-prefetch" href="https://avatars2.githubusercontent.com">
<link rel="dns-prefetch" href="https://avatars3.githubusercontent.com">
<link rel="dns-prefetch" href="https://github-cloud.s3.amazonaws.com">
<link rel="dns-prefetch" href="https://user-images.githubusercontent.com/">
......
Ähm Codetags!? -> https://forum.fhem.de/index.php/topic,71806.msg633579.html#msg633579
Das ist eine HTML Datei, dachte ich mir. Wie kommst Du darauf eine HTML datei als Script aufzurufen?
Meine run-ring sieht so aus:
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process=/home/pi/ring1.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup bash -c "python $process" >/dev/null &
echo "Process $process started."
fi
exit
Die musst Du natürlich anpassen bezüglich der ring.py
process=/home/pi/ring1.py
Gruß Otto
Ok, das mit den Codetags übe ich dann nochmal ;) (hab ich im Beitrag vorher geändert)
Hab nun die run_ring.sh entsprechend geändert. Vom Fhem aus kommt wieder im Log: bash: ./bin/run-ring.sh: Datei oder Verzeichnis nicht gefunden.
Ein "python run_ring.sh" bringt auf der Konsole folgende Meldung:
File "run_ring.sh", line 5
process=/opt/fhem/bin/ring.py
^
SyntaxError: invalid syntax
Gruß Stevie
Du hast jetzt eventuell mehrere "Stolpersteine":
run-ring.sh heisst nicht run-ring.sh ?
user fhem darf run-ring.sh nicht lesen?
python run-ring.sh ist sinnlos! python kann keine bash Dateien verarbeiten.
python /opt/fhem/bin/ring.py wäre ein sinnvoller Aufruf.
Stevie: Ich weiß ehrlich nicht genau was Du tust und ich weiß nicht ob Du weißt was Du tust. :o ??? :-[ :-\
Was genau ist Dein Ziel? Welcher Anleitung folgst Du? Mir scheint Du bist irgendwie seitwärts reingeschlittert ...
Ich habe es vor einiger Zeit mal so implementiert (https://forum.fhem.de/index.php/topic,75754.msg956067.html#msg956067). Kann aber nicht sagen ob das aktuell so funktioniert. Besser irgendwelchen offiziellen Quellen folgen
Hallo Otto123,
danke für deine Hilfe. Mein Ziel ist es meine Ring Doorbell in Fhem einzubinden, damit ich auf diese reagieren kann. Eingestiegen bin ich in diesem Thread auf Seite eins und habe versucht, dass von _Markus_ umzusetzen. Leider ist dies die einzige Quelle, eine schöne Anleitung hätte mir sicherlich geholfen.
Nun habe ich nach "python /opt/fhem/bin/ring.py" dieses Reading im Ring Dummy: a7e4c13aa267_account 32181535 2019-12-04 11:05:41
Und folgende Meldung:
2019-12-04 11:05:41,558 - fhem_ring - INFO - Updating device data for device 'Haustür' in FHEM...
Unhandled exception in thread started by <function pollDevice at 0xb67533ac>
Traceback (most recent call last):
File "/opt/fhem/bin/ring.py", line 79, in pollDevice
srRing(dev.id+'_address ' + dev.address)
File "/opt/fhem/bin/ring.py", line 57, in srRing
sendFhem('setreading Ring ' + str)
File "/opt/fhem/bin/ring.py", line 38, in sendFhem
fh.send_cmd(str)
File "/usr/local/lib/python2.7/dist-packages/fhem/__init__.py", line 305, in send_cmd
self.log.debug("Sending: {}".format(msg))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 58: ordinal not in range(128)
^CTraceback (most recent call last):
File "/opt/fhem/bin/ring.py", line 125, in <module>
time.sleep(3)
KeyboardInterrupt
Leider passiert sonst nichts mit dem Dummy, aktualisiert die Zeit wenn ich den Befehl ausführe. Leider aber keine Reaktion auf klingeln oder Bewegung. Hast du noch einen Tipp?
Ähm Codetags!? -> https://forum.fhem.de/index.php/topic,71806.msg633579.html#msg633579
Meines Wissen geht bei Ring alles mit Sonderzeichen (üöä usw.) in die "Hose"
Klingt hier auch so:
ZitatUnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 58: ordinal not in range(128)
Hab ich geändert, sorry!
Könnte es an meinem Passwort für Ring liegen? Da sind Sonderzeichen drin. Ich teste das mal.......
Leider auch nicht, gleiche Fehlermeldung.
Hab nun nochmal die 2 Files von Github runtergeladen, in die ring.py meine Zugangsdaten eingetragen und ins /opt/fhem/bin gelegt.
Rechte habe ich wieder fhem und dialout genommen.
Wenn ich nun im /bin ./run_ring ausführe, erhalte ich folgende Meldung:
Process python /opt/fhem/bin/ring.py started.
Jedoch reagiert der Dummy nicht auf klingeln oder Bewegung.
Wenn ich python ring.py aufrufe, kommt folgendes:
2019-12-04 19:00:57,548 - fhem_ring - INFO - Found 1 devices.
2019-12-04 19:00:58,161 - fhem_ring - INFO - Updating device data for device 'Haustür' in FHEM...
2019-12-04 19:00:58,162 - fhem_ring - DEBUG - sending: setreading Ring_Haustür account 32781935
2019-12-04 19:00:58,163 - fhem_ring - ERROR - Unexpected error:'ascii' codec can't encode character u'\xfc' in position 21: ordinal not in range(128)
2019-12-04 19:00:58,163 - fhem_ring - ERROR - Exception occured. Retrying...
2019-12-04 19:01:03,809 - fhem_ring - INFO - Updating device data for device 'Haustür' in FHEM...
2019-12-04 19:01:03,810 - fhem_ring - DEBUG - sending: setreading Ring_Haustür account 32781935
2019-12-04 19:01:03,811 - fhem_ring - ERROR - Unexpected error:'ascii' codec can't encode character u'\xfc' in position 21: ordinal not in range(128)
2019-12-04 19:01:03,811 - fhem_ring - ERROR - Exception occured. Retrying...
2019-12-04 19:01:09,427 - fhem_ring - INFO - Updating device data for device 'Haustür' in FHEM...
2019-12-04 19:01:09,428 - fhem_ring - DEBUG - sending: setreading Ring_Haustür account 32781935
2019-12-04 19:01:09,428 - fhem_ring - ERROR - Unexpected error:'ascii' codec can't encode character u'\xfc' in position 21: ordinal not in range(128)
2019-12-04 19:01:09,429 - fhem_ring - ERROR - Exception occured. Retrying...
2019-12-04 19:01:15,152 - fhem_ring - INFO - Updating device data for device 'Haustür' in FHEM...
2019-12-04 19:01:15,153 - fhem_ring - DEBUG - sending: setreading Ring_Haustür account 32781935
2019-12-04 19:01:15,153 - fhem_ring - ERROR - Unexpected error:'ascii' codec can't encode character u'\xfc' in position 21: ordinal not in range(128)
2019-12-04 19:01:15,154 - fhem_ring - ERROR - Exception occured. Retrying...
2019-12-04 19:01:20,801 - fhem_ring - INFO - Updating device data for device 'Haustür' in FHEM...
2019-12-04 19:01:20,801 - fhem_ring - DEBUG - sending: setreading Ring_Haustür account 32781935
2019-12-04 19:01:20,802 - fhem_ring - ERROR - Unexpected error:'ascii' codec can't encode character u'\xfc' in position 21: ordinal not in range(128)
2019-12-04 19:01:20,803 - fhem_ring - ERROR - Exception occured. Retrying...
Traceback (most recent call last):
File "ring.py", line 151, in <module>
for k, d in devs.items(): getDeviceInfo(d)
File "ring.py", line 79, in getDeviceInfo
srRing('account ' + str(dev.account_id), dev)
File "ring.py", line 70, in srRing
sendFhem('setreading Ring_' + dev.name.replace(" ","") + ' ' + str)
File "ring.py", line 51, in sendFhem
fh.send_cmd(str)
File "/usr/local/lib/python2.7/dist-packages/fhem/__init__.py", line 305, in send_cmd
self.log.debug("Sending: {}".format(msg))
UnicodeEncodeError: 'ascii' codec can't encode character u'\xfc' in position 21: ordinal not in range(128)
Gleiche Meldung mit Position 21 steht auch jetzt in der ring.log. Ich habe aber außer der Mailadresse und dem Passwort nichts geändert und kann auch nichts auffälliges finden.
Deine Doorbell hat einen Umlaut im Namen. Bei mir hat das auch nicht funktioniert, da sich keine FHEM-Devices mit Umlaut anlegen lassen. Ich habe die Doorbell in Haustuer und das FHEM-Device in Ring_Doorbell umbenannt.
LG
Oli
Hi Olli,
danke für deinen Tipp. Hab nun die Haustür im Ring-Account in Klingel umbenannt und das FHEM Device auf Ring_Klingel umbenannt.
Das Device hat jetzt ein zweites Reading bekommen. Der erste war ja "a8e2c13aa267_account" und nun ist noch ein "Account" dazu gekommen.
Leider immer noch gleiche Meldung im Log:
2019-12-04 19:58:22,250 - fhem_ring - INFO - Updating device data for device 'Klingel' in FHEM...
2019-12-04 19:58:22,250 - fhem_ring - DEBUG - sending: setreading Ring_Klingel account 32781935
2019-12-04 19:58:22,252 - fhem_ring - ERROR - Unexpected error:'ascii' codec can't encode character u'\xfc' in position 21: ordinal not in range(128)
2019-12-04 19:58:22,252 - fhem_ring - ERROR - Exception occured. Retrying...
Noch eine Idee?
Ich wiederhole mich gern: Nirgendwo darf ein Zeichen wie Umlaut sein, nicht im Namen, nicht im Account, nicht in der Adresse, nicht in irgendeinem Feld. Das Script liest alles aus dem Online account aus. Ich glaube, bei mir war es dann zuletzt noch straße :)
Ich glaube es gab später mal noch eine Komponente die mit den Umlauten klar kam. Kann also sein, es hängt auch von der Version ab die Du heruntergeladen hast.
Gruß Otto
Bingo!
In meine Adresse hat sich Tübingen in den Kreis eingetragen. Lässt sich aber nicht ändern. Jetzt wohn ich halt in Berlin ;D
Auf jeden Fall war dies die Lösung, vielen Dank an Otto123 und Oli!
Hallo,
hab seit heute Probleme die Ring Dienste zu erreichen.
genauer gesagt seit 1:00Uhr bekommt die Anfrage ein 401 Unauthorized zurück. Kann das was mit der 2 Faktoren Authentication zu tun haben?
Zitat von: nhetzke am 19 Dezember 2019, 14:00:59
Hallo,
hab seit heute Probleme die Ring Dienste zu erreichen.
genauer gesagt seit 1:00Uhr bekommt die Anfrage ein 401 Unauthorized zurück. Kann das was mit der 2 Faktoren Authentication zu tun haben?
Hab mal etwas gesucht und dabei ein (noch) offenes Issue bei github gefunden: https://github.com/tchellomello/python-ring-doorbell/issues/142
Leider ist der passende Merge Request noch nicht in den Master übernommen. ;) Wollen wir mal die Daumen drücken, dass es bald übernommen wird.
Hallo,
hiermit klappt das wieder:
https://github.com/xernaj/python-ring-doorbell/archive/fix/oauth-fail-due-to-blocked-user-agent.zip#ring_doorbell==0.2.4
Grüße
Thorsten
Der Pull-request wurde auch ins "Original" übernommen und ein simpler
pip install git+https://github.com/tchellomello/python-ring-doorbell@master
sorgt dafür, dass die Ring wieder in FHEM funktioniert.
Hallo,
bei mir taucht das Reading lastCaptureURL nicht auf. Steht im Code etwas weiter unten wie die anderen Readings (z.B. lastAlertDeviceID). Kann mir jemand einen Tipp geben?
Danke René
Seit Mitternacht scheint es auch mit den Update wieder nicht mehr zu laufen.
Wie sieht es bei euch aus?
Bei mir leider auch nicht mehr.
Gibt auch schon ein Issue:
https://github.com/tchellomello/python-ring-doorbell/issues/146
Wenn ich es so wie im Link ändere, geht die Ring wieder.
https://github.com/tchellomello/python-ring-doorbell/issues/146#issuecomment-568663864
Bei mir läuft die aktuelle Version 0.29 aus dem Master nicht mehr, da ich noch Python 2.7 einsetze. Ich habe mir mal die ring.py vorgenommen und sie so angepasst, dass sie auch mit Python3 läuft - damit geht es jetzt wieder und in der Pythonlib ist bereits ein oauth client mit drin, das sollte dann also erst mal halten.
Gruß,
budy
Mir ist nicht ganz klar, wie ich das Ganze jetzt wieder zum Laufen bekomme. Ist es richtig, dass die API nur noch mit der 2FA funktioniert? Das habe ich getan und das Skript durch diese Zeilen ergänzt.
from ring_doorbell.utils import _exists_cache, _save_cache, _read_cache
from ring_doorbell.const import (HEADERS)
HEADERS["User-Agent"] = "ring/5.21.0.5 CFNetwork/1121.2.2 Darwin/19.2.0"
from ring_doorbell.const import (
API_VERSION, API_URI, CACHE_ATTRS, CACHE_FILE,
DEVICES_ENDPOINT, HEADERS, NEW_SESSION_ENDPOINT, MSG_GENERIC_FAIL,
POST_DATA, PERSIST_TOKEN_ENDPOINT, PERSIST_TOKEN_DATA, RETRY_TOKEN,
OAUTH_ENDPOINT, OAUTH_DATA)
Aber wie geht es dann weiter? Den Bestätigungs-Code kann ich ja schlecht irgendwo eingeben.
LG
Oli
Bei mir funktioniert das Ganze auch weiterhin ohne 2FA ganz normal. Das Problem war ja auch nicht 2Fa, sondern Oauth...
Wenn du auf der Ring-Seite 2FA für deinen Account aktiviert hast, dann wüsste ich jetzt auch nicht, wie das gehen soll. Du müsstest du dann den 2FA-Code ja irgendwo abfragen und an die API senden. Meines Wissens ist das zwar in der Lib implementiert, aber es gibt kein Interface für die App, die mit FHEM spricht.
Gruß,
budy
Hallo,
also ich bekomme diesen Fehler :
Traceback (most recent call last):
File "./ring.py", line 50, in <module>
myring = Ring(ring_user, ring_pass)
TypeError: __init__() takes exactly 2 arguments (3 given)
Ich finde trotz Tante Goggle nicht die Lösung, hat einer einen Tip ?
Danke
speed
Moin speed,
den Fehler hatte ich auch und habe die ring.py in meinem Repo auf GitHub angepasst. U.a. läuft das jetzt mit Python3 und dein Problem wurde auch beseitigt.
Gruß,
budy
Hallo budy,
danke für die Info,scheint jetzt zu laufen.
Vielen Dank
speed
Also ich komme nicht weiter. Ich habe 2FA wieder deaktiviert. Dann habe ich mir die ring.py v1.0.4 aus Deinem Repo gezogen, budy.
Wenn ich das Script folgendermaßen starte
python ./ring.py
erhalte ich die Fehlermeldung
Traceback (most recent call last):
File "./ring.py", line 10, in <module>
import _thread
ImportError: No module named _thread
Ich habe sowohl Python 2.7.9 als auch 3.4.2 auf meinem System.
Wenn ich das Script mit Python3 starte
python3 ./ring.py
erhalte ich diese Meldung
Traceback (most recent call last):
File "./ring.py", line 7, in <module>
import fhem
ImportError: No module named 'fhem'
Seltsam...
Übrigens, vor ein paar Tagen wurde mir über die Ring-App auf dem iPhone einmal ein Snapshot in einer Notification geliefert. Danach aber leider nie wieder. Ich hatte mich schon gefreut.
LG
Oli
Morgen,
das Problem hatte ich auch, erst als ich Python 3 upgedatet habe lief alles wie es soll.
gruß
speed
Ich habe Python nach dieser https://www.vultr.com/docs/upgrade-python-on-debian (https://www.vultr.com/docs/upgrade-python-on-debian) Anleitung auf v3.7.6 gezogen. Leider hat sich an den Fehlermeldungen nichts geändert.
LG
Oli
gestartet wir bei mir so python3 /opt/fhem/ring.py
Moin,
ich habe vorhin noch eine Korrektur eingecheckt, da ich bei der Umstellung auf Python3 das Threadding nicht richtig umgestellt hatte. Das führte bei mir dazu, dass wenn es klingelte, FHEM nicht benachrichtigt wurde. Das ist jetzt auch behoben.
Gruß,
budy
Hallo budy,
ich hab mir aus dem Git deine Version geholt und nach der Anleitung installiert.
Ich bekomme nun leider diesen Fehler:
Traceback (most recent call last):
File "ring.py", line 200, in <module>
tmp = list(myring.stickup_cams + myring.doorbells)
AttributeError: 'Ring' object has no attribute 'stickup_cams'
pi@raspberrypi:/opt/fhem/bin $
zum Testen starte ich das ganze so:
/opt/fhem/bin $ sudo -u fhem python ring.py
Vielleicht hast du noch einen Tip für mich.
vg
pflock_y
Moin pflock_y,
der Fehler kommt aus der ring-Library, welche du mit pip3 installiert hast. Ist die Library aktuell und setzt du per default Python 3 ein?
Gruß,
budy
ich hab die hier installiert:
pip3 install git+https://github.com/tchellomello/python-ring-doorbell
Das wirft mir der PI aus:
pi@raspberrypi:/opt/fhem/bin $ python --version
Python 2.7.16
pi@raspberrypi:/opt/fhem/bin $ python3 --version
Python 3.7.3
Wenn ich das richtig deute sind beide Versionen drauf, welche ich aber per default nutze weiss ich nicht.
mit sudo -u fhem python ring.py
nutze ich die normale Version,
und mitsudo -u fhem python3 ring.py
nutze ich Python3.
Richtig?
vg
pflock_y
Korrekt - wenn du beide drauf hast, musst du das explizit mit python3 aufrufen. Wenn du nur python nutzt und die Lib gar nicht im Python-2 Pfad installiert hast, dann ist der Fehler verständlich.
Gruß,
budy
hallo budy,
ich komm nicht weiter. :(
Ich hab jetzt mal mit
pip3 uninstall ring-doorbell
die ring-Library deinstalliert. Für ich jetzt mit:
python3 ring/ring.py
aus, kommt, selbstverständlich, folgende Fehlermeldung:
pi@raspberrypi:~ $ python3 ring/ring.py
Traceback (most recent call last):
File "ring/ring.py", line 12, in <module>
from ring_doorbell import Ring, Auth
ModuleNotFoundError: No module named 'ring_doorbell'
installiere ich die ring-Library wieder kommt der alte Fehler wieder.
pi@raspberrypi:~ $ python3 ring/ring.py
Traceback (most recent call last):
File "ring/ring.py", line 200, in <module>
tmp = list(myring.stickup_cams + myring.doorbells)
AttributeError: 'Ring' object has no attribute 'stickup_cams'
Kann es am Raspberry Pi4 und Raspbian Buster liegen?
vg
pflock_y
Moin pflock_y,
hmm... hast du denn solche Kameras? Das wird ein Problem in der Lib sein. Da ich diese Teile nicht habe, kann ich das nicht so einfach nachvollziehen. Ich checke da nachher bei meiner Version mal was zu.
Gruß,
budy
Moin budy,
ich hab nur die Video Doorbell, welche auch bestens mit FHEM funktioniert hatte bis die Umstellung seitens Ring kam.
vg
pflock_y
Jemand eine Idee zu meinem Problem?
Zitat von: OliS. am 15 Januar 2020, 10:49:35
Ich habe Python nach dieser https://www.vultr.com/docs/upgrade-python-on-debian (https://www.vultr.com/docs/upgrade-python-on-debian) Anleitung auf v3.7.6 gezogen. Leider hat sich an den Fehlermeldungen nichts geändert.
LG
Oli
Moin pflock_y,
Zitat von: pflock_y am 17 Januar 2020, 07:56:59
Moin budy,
ich hab nur die Video Doorbell, welche auch bestens mit FHEM funktioniert hatte bis die Umstellung seitens Ring kam.
vg
pflock_y
hast du die 2FA bei Ring aktiviert?
Gruß,
budy
Zitat von: OliS. am 17 Januar 2020, 11:53:42
Jemand eine Idee zu meinem Problem?
Wenn du Python3 installierst, dann musst du auch python-fhem installieren...
So à la:
pip3 install fhem
Moin pflock_y,
Zitat von: pflock_y am 16 Januar 2020, 23:10:14
hallo budy,
ich komm nicht weiter. :(
Ich hab jetzt mal mit
pip3 uninstall ring-doorbell
die ring-Library deinstalliert. Für ich jetzt mit:
python3 ring/ring.py
aus, kommt, selbstverständlich, folgende Fehlermeldung:
pi@raspberrypi:~ $ python3 ring/ring.py
Traceback (most recent call last):
File "ring/ring.py", line 12, in <module>
from ring_doorbell import Ring, Auth
ModuleNotFoundError: No module named 'ring_doorbell'
installiere ich die ring-Library wieder kommt der alte Fehler wieder.
pi@raspberrypi:~ $ python3 ring/ring.py
Traceback (most recent call last):
File "ring/ring.py", line 200, in <module>
tmp = list(myring.stickup_cams + myring.doorbells)
AttributeError: 'Ring' object has no attribute 'stickup_cams'
Kann es am Raspberry Pi4 und Raspbian Buster liegen?
vg
pflock_y
Du kannst mal in Zeile 200 einfach die Abfrage auf die stickup_cams herausnehmen, das sieht dann so aus:
tmp = list(myring.doorbells)
Wenn du das Teil dann startest und die stattdessen einen Fehler bekommst, dass das attr myring.doorbells nicht kennt, dann stimmt, was mit der Installation der Lib nicht.
Gruß,
budy
Naben budy,
Zitat von: budy am 17 Januar 2020, 16:40:07
Moin pflock_y,
hast du die 2FA bei Ring aktiviert?
Gruß,
budy
Ne, hatte ich mit Absicht nicht gemacht. Ich hab mir schon gedacht das es damit etwas Probleme gibt.
ABERIch hatte heute Vormittag etwas Zeit und hab mir einen Pi 3 vorgenommen mit Jessy drauf.
Ich habe mir die "alte" ring.py von Otto123 von hier:
https://forum.fhem.de/index.php/topic,75754.msg937804/topicseen.html#msg937804 (https://forum.fhem.de/index.php/topic,75754.msg937804/topicseen.html#msg937804)
kopiert.
Und was soll ich sagen,
es läuft!!!Ich weiss noch nicht warum aber es läuft. Würde es aber gern wissen. Vielleicht liegt es doch am Pi4 mit Buster.
vg
pflock_y
Zitat von: budy am 17 Januar 2020, 20:30:57
Moin pflock_y,
Du kannst mal in Zeile 200 einfach die Abfrage auf die stickup_cams herausnehmen, das sieht dann so aus:
tmp = list(myring.doorbells)
Wenn du das Teil dann startest und die stattdessen einen Fehler bekommst, dass das attr myring.doorbells nicht kennt, dann stimmt, was mit der Installation der Lib nicht.
Gruß,
budy
Hatte ich zwischenzeitlich auch schon.
da wird myring.doorbells angemeckert
@budy
gibt es irgendeine Erklärung dafür?
Ich hab dann auch die gleichen Schritte, die ich auf dem Pi3 mit Jessy, auf dem Pi4 mit Buster ausgeführt. Auf dem Pi4 bekomme ich es nicht zum laufen. Deutet für mich auf Buster hin.
Der nächste Test ist mal den Pi4 mit Jessy laufen zu lassen und dann noch mal die Ring drauf.
vg
pflock_y
Hi pflock_y,
Zitat von: pflock_y am 17 Januar 2020, 20:50:03
@budy
gibt es irgendeine Erklärung dafür?
Ich hab dann auch die gleichen Schritte, die ich auf dem Pi3 mit Jessy, auf dem Pi4 mit Buster ausgeführt. Auf dem Pi4 bekomme ich es nicht zum laufen. Deutet für mich auf Buster hin.
Der nächste Test ist mal den Pi4 mit Jessy laufen zu lassen und dann noch mal die Ring drauf.
vg
pflock_y
das weiss ich aktuell auch nicht. Auf meiner VM läuft Debian 9.9 Stretch... aber irgendwas muss mit der Lib sein. Kannst du mal die ganze Ausgabe posten? Wenn er die Lib nicht mag, dann müsste Python das irgendwie ja ansagen...
Gruß,
budy
Moin budy,
ich hab grad einen neuen Pi aufgesetzt.
Pi 3 Model B Vi. 2 mit Raspbian stretch.
alles andere steht hier:
pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi:~ $ pip3 install git+https://github.com/tchellomello/python-ring-doorbell
Collecting git+https://github.com/tchellomello/python-ring-doorbell
Cloning https://github.com/tchellomello/python-ring-doorbell to /tmp/pip-3q772mrz-build
Collecting oauthlib==3.1.0 (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/05/57/ce2e7a8fa7c0afb54a0581b14a65b56e62b5759dbc98e80627142b8a3704/oauthlib-3.1.0-py2.py3-none-any.whl (147kB)
100% |████████████████████████████████| 153kB 1.2MB/s
Collecting pytz (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509kB)
100% |████████████████████████████████| 512kB 562kB/s
Collecting requests-oauthlib==1.3.0 (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/a3/12/b92740d845ab62ea4edf04d2f4164d82532b5a0b03836d4d4e71c6f3d379/requests_oauthlib-1.3.0-py2.py3-none-any.whl
Collecting requests==2.22.0 (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
100% |████████████████████████████████| 61kB 1.9MB/s
Collecting certifi>=2017.4.17 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB)
100% |████████████████████████████████| 163kB 1.4MB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
100% |████████████████████████████████| 143kB 1.6MB/s
Collecting idna<2.9,>=2.5 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
100% |████████████████████████████████| 61kB 2.0MB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl (125kB)
100% |████████████████████████████████| 133kB 1.7MB/s
Installing collected packages: oauthlib, pytz, certifi, chardet, idna, urllib3, requests, requests-oauthlib, ring-doorbell
Running setup.py install for ring-doorbell ... done
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 oauthlib-3.1.0 pytz-2019.3 requests-2.22.0 requests-oauthlib-1.3.0 ring-doorbell-0.6.0 urllib3-1.25.7
pi@raspberrypi:~ $ pip3 install fhem
Collecting fhem
Downloading https://www.piwheels.org/simple/fhem/fhem-0.6.3-py2.py3-none-any.whl
Installing collected packages: fhem
Successfully installed fhem-0.6.3
pi@raspberrypi:~ $ cd ring-fhem-master/
pi@raspberrypi:~/ring-fhem-master $ ls -lah
insgesamt 28K
drwxr-xr-x 2 pi pi 4,0K Jan 18 10:23 .
drwxr-xr-x 16 pi pi 4,0K Jan 18 10:23 ..
-rw-r--r-- 1 pi pi 1,1K Jan 18 10:23 Changelog.md
-rw-r--r-- 1 pi pi 2,1K Jan 18 10:23 README.md
-rw-r--r-- 1 pi pi 7,3K Jan 18 10:23 ring.py
-rwxr-xr-x 1 pi pi 208 Jan 18 10:23 run_ring
pi@raspberrypi:~/ring-fhem-master $ python3 ring.py
Traceback (most recent call last):
File "ring.py", line 200, in <module>
tmp = list(myring.stickup_cams + myring.doorbells)
AttributeError: 'Ring' object has no attribute 'stickup_cams'
pi@raspberrypi:~/ring-fhem-master $
ring.py und run_ring hab ich frisch aus dem Git geladen.
Wenn ich das alles richtig deute läuft die Installation ohne Probleme durch. Der Fehler beim starten ist leider der selbe.
Nächster Test ist ohne python3.
edit:
Test mit "normalem" python und der ring.py aus deinem Git ergibt:
pi@raspberrypi:~/ring-fhem-master $ python ring.py
Traceback (most recent call last):
File "ring.py", line 10, in <module>
import _thread
ImportError: No module named _thread
pi@raspberrypi:~/ring-fhem-master $
Was vielleicht normal ist, da _thread, nicht mit installiert ist.
vg
pflock_y
Zitat von: budy am 17 Januar 2020, 16:42:54
Wenn du Python3 installierst, dann musst du auch python-fhem installieren...
So à la:
pip3 install fhem
Das war der entscheidende Hinweis. Leider bekomme ich nun auch die selbe Fehlermeldung wie pflock_y angezeigt.
Traceback (most recent call last):
File "/opt/fhem/ring.py", line 200, in <module>
tmp = list(myring.stickup_cams + myring.doorbells)
AttributeError: 'Ring' object has no attribute 'stickup_cams'
Oli
Zitat von: pflock_y am 18 Januar 2020, 10:33:30
Moin budy,
ich hab grad einen neuen Pi aufgesetzt.
Pi 3 Model B Vi. 2 mit Raspbian stretch.
alles andere steht hier:
pi@raspberrypi:~ $ cat /etc/os-release
PRETTY_NAME="Raspbian GNU/Linux 9 (stretch)"
NAME="Raspbian GNU/Linux"
VERSION_ID="9"
VERSION="9 (stretch)"
VERSION_CODENAME=stretch
ID=raspbian
ID_LIKE=debian
HOME_URL="http://www.raspbian.org/"
SUPPORT_URL="http://www.raspbian.org/RaspbianForums"
BUG_REPORT_URL="http://www.raspbian.org/RaspbianBugs"
pi@raspberrypi:~ $ pip3 install git+https://github.com/tchellomello/python-ring-doorbell
Collecting git+https://github.com/tchellomello/python-ring-doorbell
Cloning https://github.com/tchellomello/python-ring-doorbell to /tmp/pip-3q772mrz-build
Collecting oauthlib==3.1.0 (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/05/57/ce2e7a8fa7c0afb54a0581b14a65b56e62b5759dbc98e80627142b8a3704/oauthlib-3.1.0-py2.py3-none-any.whl (147kB)
100% |████████████████████████████████| 153kB 1.2MB/s
Collecting pytz (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl (509kB)
100% |████████████████████████████████| 512kB 562kB/s
Collecting requests-oauthlib==1.3.0 (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/a3/12/b92740d845ab62ea4edf04d2f4164d82532b5a0b03836d4d4e71c6f3d379/requests_oauthlib-1.3.0-py2.py3-none-any.whl
Collecting requests==2.22.0 (from ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl (57kB)
100% |████████████████████████████████| 61kB 1.9MB/s
Collecting certifi>=2017.4.17 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl (156kB)
100% |████████████████████████████████| 163kB 1.4MB/s
Collecting chardet<3.1.0,>=3.0.2 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl (133kB)
100% |████████████████████████████████| 143kB 1.6MB/s
Collecting idna<2.9,>=2.5 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl (58kB)
100% |████████████████████████████████| 61kB 2.0MB/s
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests==2.22.0->ring-doorbell==0.6.0)
Downloading https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl (125kB)
100% |████████████████████████████████| 133kB 1.7MB/s
Installing collected packages: oauthlib, pytz, certifi, chardet, idna, urllib3, requests, requests-oauthlib, ring-doorbell
Running setup.py install for ring-doorbell ... done
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 oauthlib-3.1.0 pytz-2019.3 requests-2.22.0 requests-oauthlib-1.3.0 ring-doorbell-0.6.0 urllib3-1.25.7
pi@raspberrypi:~ $ pip3 install fhem
Collecting fhem
Downloading https://www.piwheels.org/simple/fhem/fhem-0.6.3-py2.py3-none-any.whl
Installing collected packages: fhem
Successfully installed fhem-0.6.3
pi@raspberrypi:~ $ cd ring-fhem-master/
pi@raspberrypi:~/ring-fhem-master $ ls -lah
insgesamt 28K
drwxr-xr-x 2 pi pi 4,0K Jan 18 10:23 .
drwxr-xr-x 16 pi pi 4,0K Jan 18 10:23 ..
-rw-r--r-- 1 pi pi 1,1K Jan 18 10:23 Changelog.md
-rw-r--r-- 1 pi pi 2,1K Jan 18 10:23 README.md
-rw-r--r-- 1 pi pi 7,3K Jan 18 10:23 ring.py
-rwxr-xr-x 1 pi pi 208 Jan 18 10:23 run_ring
pi@raspberrypi:~/ring-fhem-master $ python3 ring.py
Traceback (most recent call last):
File "ring.py", line 200, in <module>
tmp = list(myring.stickup_cams + myring.doorbells)
AttributeError: 'Ring' object has no attribute 'stickup_cams'
pi@raspberrypi:~/ring-fhem-master $
ring.py und run_ring hab ich frisch aus dem Git geladen.
Wenn ich das alles richtig deute läuft die Installation ohne Probleme durch. Der Fehler beim starten ist leider der selbe.
Nächster Test ist ohne python3.
vg
pflock_y
Uhh... das scheint eher ein Problem mit der aktuellen Library zu sein:
https://github.com/tchellomello/python-ring-doorbell/issues/188
Ich würde mal versuchen eine andere Version auszuckecken - ich meine die 0.4 funktioniert bei mir. Ich habe das in den letzten Tagen nicht aktualisiert, weil ich damit keine Probleme hatte.
Gruß,
budy
genau das ist es!!!!!
mit:
pip3 install git+https://github.com/tchellomello/python-ring-doorbell@0.4.0
läuft es mit deiner ring.py
Der Beweis:
pi@raspberrypi:~ $ pip3 install git+https://github.com/tchellomello/python-ring-doorbell@0.4.0
Collecting git+https://github.com/tchellomello/python-ring-doorbell@0.4.0
Cloning https://github.com/tchellomello/python-ring-doorbell (to 0.4.0) to /tmp/pip-sx50dkij-build
Collecting oauthlib==3.1.0 (from ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/05/57/ce2e7a8fa7c0afb54a0581b14a65b56e62b5759dbc98e80627142b8a3704/oauthlib-3.1.0-py2.py3-none-any.whl
Collecting pytz (from ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl
Collecting requests-oauthlib==1.3.0 (from ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/a3/12/b92740d845ab62ea4edf04d2f4164d82532b5a0b03836d4d4e71c6f3d379/requests_oauthlib-1.3.0-py2.py3-none-any.whl
Collecting requests==2.22.0 (from ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests==2.22.0->ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/b4/40/a9837291310ee1ccc242ceb6ebfd9eb21539649f193a7c8c86ba15b98539/urllib3-1.25.7-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests==2.22.0->ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests==2.22.0->ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/b9/63/df50cac98ea0d5b006c55a399c3bf1db9da7b5a24de7890bc9cfd5dd9e99/certifi-2019.11.28-py2.py3-none-any.whl
Collecting idna<2.9,>=2.5 (from requests==2.22.0->ring-doorbell==0.4.0)
Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl
Installing collected packages: oauthlib, pytz, urllib3, chardet, certifi, idna, requests, requests-oauthlib, ring-doorbell
Running setup.py install for ring-doorbell ... done
Successfully installed certifi-2019.11.28 chardet-3.0.4 idna-2.8 oauthlib-3.1.0 pytz-2019.3 requests-2.22.0 requests-oauthlib-1.3.0 ring-doorbell-0.4.0 urllib3-1.25.7
pi@raspberrypi:~ $ pip3 install fhem
Collecting fhem
Downloading https://www.piwheels.org/simple/fhem/fhem-0.6.3-py2.py3-none-any.whl
Installing collected packages: fhem
Successfully installed fhem-0.6.3
pi@raspberrypi:~ $ cd ring-fhem-master/
pi@raspberrypi:~/ring-fhem-master $ python3 ring.py
2020-01-18 14:30:03,630 - fhem_ring - INFO - Found 1 devices.
2020-01-18 14:30:04,125 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2020-01-18 14:30:04,126 - fhem_ring - DEBUG - sending: setreading Ring_Haustuer account ......
........
vg
pflock_y
@Oli
Zitat von: OliS. am 18 Januar 2020, 11:18:22
Das war der entscheidende Hinweis. Leider bekomme ich nun auch die selbe Fehlermeldung wie pflock_y angezeigt.
Traceback (most recent call last):
File "/opt/fhem/ring.py", line 200, in <module>
tmp = list(myring.stickup_cams + myring.doorbells)
AttributeError: 'Ring' object has no attribute 'stickup_cams'
Oli
Deinstalliere mal die doorbell lib 0.6.0 mit:
pip3 uninstall ring-doorbell
dann die version 0.4.0 installieren, mit:
pip3 install git+https://github.com/tchellomello/python-ring-doorbell@0.4.0
Dann sollte alles laufen.
eventuell musst du die Deinstallation mit
sudo ... oder
sudo -u fhem ... machen. Kommt drauf an wie du es installiert hast.
vg
pflock_y
Moin pflock_y,
Zitat von: pflock_y am 18 Januar 2020, 14:32:40
genau das ist es!!!!!
mit:
pip3 install git+https://github.com/tchellomello/python-ring-doorbell@0.4.0
läuft es mit deiner ring.py
sehr schön - da ist aktuell ganz schön Bewegung in dem Teil. Ich muss mal sehen, ob ich es schaffe da immer auf dem Laufenden zu bleiben, denn solange die Anlage das tut, was sie soll, kümmere ich mich gerne auch um andere Dinge... ;)
Gruß,
budy
Version 0.5.0 geht auch. :)
@budy
Vielen dank für die Unterstützung!!!!!
Kann ich so bestätigen. Die 0.5.0 läuft bei mir. Von mir auch vielen Dank für die Hilfe.
Zitatda ist aktuell ganz schön Bewegung in dem Teil.
Ja, wie gesagt, letzten habe ich sogar mal kurz einen Snapshot mit einer Notification bekommen. Das wäre natürlich wünschenswert, wenn das implementiert würde.
LG
Oli
Heads-UP! Die nächste Version der Python-Lib für die Ring wird nur noch Python 3.6+ supporten! Ich werde das mal die Tage testen und auch meinen Code entsprechend der neuen Version im Master anpassen.
Gruß,
budy
Danke.
LG
Oli
Moin budy,
ich weiss nicht recht ob es an mir liegt, aber seit dem 21.01.2020 abends kommen bei mir keine motion readings oder Videos mehr an.
Wenn ich in die Ring app schaue, wurden viele Bewegungen Registriert.
Alle anderen Readings werden aktualisiert.
Ring Version ist bei mir aktuell die 0.4.0, 0.5.0 kommt auch nichts.
vg
rené
Ich bin mir gerade unsicher. Aber gibt es überhaupt ein Reading "motion"? Es gibt doch bloß das Reading "lastAlertType" welches die Werte "motion" und "ring" annehmen können. Und die funktionieren bei mir nach wie vor. Ich hatte auch die 0.5.0 bei mir installiert.
LG
Oli
@Oli
ja hast ja recht ::), motion als reading gibt es nicht. Hab mich blöd, zwischen Tür und Angel auf Arbeit, blöd ausgedrückt.
Im Anhang sieht man es besser.
Ich hab auch die Version 0.4.0 deinstalliert und die Version 0.5.0 installiert, leider keine Änderung.
vg
pflock_y
Ich kann dazu nichts sagen. Bei mir funktioniert es mit der 0.5.0 nach wie vor. Das Reading "lastCaptureURL" habe ich bei mir auch nicht. Aber das schiebe ich darauf, dass ich keinen kostenpflichtigen Account habe.
LG
Oli
Kommen denn bei dir motion Benachrichtigungen an?
bei mir hat es grad geklingelt, und sieh da Readings kommen.
Nur eben nicht die anderen readings.
Ja, wie gesagt, alle bei mir vorhandenen Readings werden aktualisiert. Auch das Reading ,,lastAlertType", welches das motion/ring/none liefert.
LG
Oli
Guten Morgen zusammen,
Ich hab gestern Abend den Ring Dummy in FHEM gelöscht und nach einem restart wieder hinzugefügt. Es kommen alle readings,
WifiName, WifiRSSI, account, address, battery, connectionStatus, doorbellType, family, id, name, ringVolume, state, timezone,
an.
Nur leider nicht die wichtigen wie:
lastAlertType, lastCaptureURL, lastDingVideo, lastMotionVideo
Ich werde noch weiter Testen, es hat ja mal funktioniert.
vg
pflock_y
Zitat von: OliS. am 18 Januar 2020, 17:04:23
Ja, wie gesagt, letzten habe ich sogar mal kurz einen Snapshot mit einer Notification bekommen. Das wäre natürlich wünschenswert, wenn das implementiert würde.
Woher kam den der snapshot? Aus der Ring app? Homekit? Oder wo/wie genau?
Danke & Gruß,
Tobi
Gesendet von iPhone mit Tapatalk
Der kam aus der Ring-App. Allerdings nur einmal und dann nie wieder.
Aber das ist so ein naheliegendes Feature, dass ich es für sehr wahrscheinlich halte, dass das kommen wird.
LG
Oli
Zitat von: OliS. am 25 Januar 2020, 13:34:23
Aber das ist so ein naheliegendes Feature, dass ich es für sehr wahrscheinlich halte, dass das kommen wird.
Stimmt, es gab auch irgendwann sogar schon mal was auf der applewatch, war dann aber auch wieder weg. Und ich hab meine Klingel jetzt so um die 2 Jahre und warte seitdem auf sowas ;)
Gesendet von iPhone mit Tapatalk
Zitat von: pflock_y am 25 Januar 2020, 10:02:14
Nur leider nicht die wichtigen wie:
lastAlertType, lastCaptureURL, lastDingVideo, lastMotionVideo
Ich werde noch weiter Testen, es hat ja mal funktioniert.
Ich hab leider das gleiche "Problem".
Ich hab den Raspi neu aufsetzen müssen weil mir die SD verreckt ist und bin gleich auf eine HDD ungestiegen.
Bei mir ist also alles frisch aufgespielt. Das Script läuft mit den Login Daten als "Nachbar".
Für mein Stick Up Cam bekommen ich die Trigger, für die Doorbell 2 nicht.
Den Video Link bekomm ich gar nicht, weder für die eine noch für die andere Cam - das hatte ich bis vor kurzen aber auf in der ring.py ausdokumentiert, ich weiß daher leider nicht wie lange das schon nicht (mehr) funktioniert.
Hallo,
ich möchte gerne meine Doorbell 2 in Fhem integreieren und habe aber vor einiger zeit mal probiert aber nicht hinbekommen.
Gibt es für den aktuellen Stand eine art Step-by-Step anleitung wie ich diese in mein Fhem integriert bekomme?
Aktuell sind die Ring Produkte ja a8uch im angebot und ich überlege, wenn ich die Bewegungsmeldung ausgelesen bekomme, mit noch eine Stickup-Cam für den Garten zu kaufen.
Gruß und danke, Screambear
Hallo guten Morgen,
wo genau kann ich denn die ring.py von Budy finden?
Habe die Suche bei Google und Git bemüht aber leider ohne Ergebnis.
https://forum.fhem.de/index.php/topic,75754.60.html / https://github.com/budachst/ring-fhem
Viele Grüße
Marko
So... nach sehr langen hin und her und system fast zerschießen habe ich es nun soweit hinbekommen das ich schon mal ein paar readings bekomme. allerding muss ich die ring.py immer mit "sudo python3.7 ring.py" ausführen. das kann ja nicht ganz richtig sein oder!?
welche daten muss ich euch liefern das ihr mir weiterhelfen könnt?!
update:
das wird mir ausgegeben. die log existiert aber.
userrechte etc habe ich keine geändert.
pi@fhemserver:/opt/fhem/bin $ python3 /opt/fhem/bin/ring.py
Traceback (most recent call last):
File "/opt/fhem/bin/ring.py", line 34, in <module>
fh = logging.FileHandler('ring.log')
File "/usr/lib/python3.5/logging/__init__.py", line 1009, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python3.5/logging/__init__.py", line 1038, in _open
return open(self.baseFilename, self.mode, encoding=self.encoding)
PermissionError: [Errno 13] Permission denied: '/opt/fhem/bin/ring.log'
das sind die rechte:
pi@fhemserver:/opt/fhem/bin $ ls -la
insgesamt 28
drwxr-xr-x 2 fhem dialout 4096 Feb 9 15:46 .
drwxrwxrwx 13 fhem dialout 4096 Jan 30 20:56 ..
-rw-r--r-- 1 root root 7728 Feb 9 15:56 ring.log
-rw-r--r-- 1 pi pi 7379 Feb 9 12:15 ring.py
-rw-r--r-- 1 pi pi 209 Feb 9 16:08 run_ring
da sehe ich gerade ich hatte eben noch python 3.7.4 drauf... das wird mit bei den versionen ausgegeben.
pi@fhemserver:/opt/fhem/bin $ python3 -V
Python 3.5.3
pi@fhemserver:/opt/fhem/bin $ python3.7 -V
Python 3.7.4
Hallo Screambear,
erstens fällt mir auf das die ring Dateien nicht die Rechte von fhem haben.
Bei mir sieht es so aus:
pi@fhem2fhem-pi:/opt/fhem/bin $ ls -lah
insgesamt 236K
drwxr-xr-x 2 fhem dialout 4,0K Feb 6 10:36 .
drwxr-xr-x 15 fhem dialout 4,0K Feb 6 10:37 ..
-rw-r--r-- 1 fhem dialout 5,4K Feb 5 08:58 ring1.py
-rw-r--r-- 1 fhem dialout 5,7K Feb 5 09:32 ring3.py
-rw-r--r-- 1 fhem dialout 6,7K Feb 6 10:36 ring4.py
-rw-r--r-- 1 fhem dialout 154K Feb 5 10:02 ring.log
-rw-r--r-- 1 fhem dialout 20K Jan 28 08:03 ring_old.log
-rw-r--r-- 1 fhem dialout 5,1K Jan 26 10:06 ring_old.py
-rw-r--r-- 1 fhem dialout 7,3K Feb 3 18:59 ring.py
-rwxr-xr-x 1 fhem dialout 210 Feb 5 09:55 run_ring
-rwxr-xr-x 1 fhem dialout 220 Jan 25 10:15 run_ring_old
pi@fhem2fhem-pi:/opt/fhem/bin $
Lass dich nicht irritieren von den vielen Dateien, ich hab verschiedene Versionen zum testen drauf.
Die Rechte hab ich angepasst mit:
sudo chown fhem:dialout ring.py run_ring ring.log
Starten tu ich das ganze mit:
sudo -u fhem python ring4.py
Automatisch startet das ganze durch den Eintrag als crontab mit:
sudo -u fhem crontab -e
hier dann:
@reboot /opt/fhem/bin/run_ring
@hourly /opt/fhem/bin/run_ring
Da ich komischerweise Probleme mit Python 3 und Budy seiner Ring version von hier, https://github.com/budachst/ring-fhem (https://github.com/budachst/ring-fhem) habe,
nutze ich "normales" python.
Meine ring.py sieht aktuell so aus:
from ring_doorbell import Ring
import time
import fhem
import logging
from thread import start_new_thread, allocate_lock
# CONFIG
ring_user = 'ringuser@blabla.com'
ring_pass = 'password'
fhem_ip = '127.0.0.1'
fhem_port = 7072 # Telnet Port
log_level = logging.DEBUG #CRITICAL #DEBUG
fhem_path = '/opt/fhem/www/ring/' # for video downloads
POLLS = 2 # Poll every x seconds
# LOGGING
logger = logging.getLogger('ring_doorbell.doorbot')
logger.setLevel(log_level)
# create file handler which logs even debug messages
fh = logging.FileHandler('ring.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
logger = logging.getLogger('fhem_ring')
logger.setLevel(log_level)
logger.addHandler(ch)
logger.addHandler(fh)
# Connecting to RING.com
myring = Ring(ring_user, ring_pass)
fh = fhem.Fhem(fhem_ip, fhem_port)
def sendFhem(str):
logger.debug("sending: " + str)
global fh
fh.send_cmd(str)
def askFhemForReading(dev, reading):
logger.debug("ask fhem for reading " + reading + " from device " + dev)
return fh.get_dev_reading(dev, reading)
def askFhemForAttr(dev, attr, default):
logger.debug("ask fhem for attribute "+attr+" from device "+dev+" (default: "+default+")")
fh.send_cmd('{AttrVal("'+dev+'","'+attr+'","'+default+'")}')
data = fh.sock.recv(32000)
return data
def setRing(str, dev):
sendFhem('set Ring_' + dev.name.replace(" ","") + ' ' + str)
def attrRing(str, dev):
sendFhem('attr Ring_' + dev.name.replace(" ","") + ' ' + str)
def srRing(str, dev):
sendFhem('setreading Ring_' + dev.name.replace(" ","") + ' ' + str)
num_threads = 0
thread_started = False
lock = allocate_lock()
def getDeviceInfo(dev):
dev.update()
logger.info("Updating device data for device '"+dev.name+"' in FHEM...")
srRing('account ' + str(dev.account_id), dev)
srRing('address ' + str(dev.address), dev)
srRing('family ' + str(dev.family), dev)
srRing('id ' + str(dev.id), dev)
srRing('name ' + str(dev.name), dev)
srRing('timezone ' + str(dev.timezone), dev)
srRing('doorbellType ' + str(dev.existing_doorbell_type), dev)
srRing('battery ' + str(dev.battery_life), dev)
srRing('ringVolume ' + str(dev.volume), dev)
srRing('connectionStatus ' + str(dev.connection_status), dev)
srRing('WifiName ' + str(dev.wifi_name), dev)
srRing('WifiRSSI ' + str(dev.wifi_signal_strength), dev)
def pollDevices():
logger.info("Polling for events.")
global devs
i=0
while 1:
for k, poll_device in devs.items():
logger.debug("Polling for events with '" + poll_device.name + "'.")
if poll_device.check_alerts() and poll_device.alert:
dev = devs[poll_device.alert.get('doorbot_id')]
logger.info("Alert detected at '" + dev.name + "'.")
logger.debug("Alert detected at '" + dev.name + "' via '" + poll_device.name + "'.")
alertDevice(dev,poll_device.alert)
time.sleep(POLLS)
i+=1
if i>600:
break
def findHistoryItem(historyArry,id):
ret = None
for singleItem in historyArry:
if (singleItem['id']==id):
ret = singleItem
break
return ret
def alertDevice(dev,alert):
srRing('lastAlertDeviceID ' + str(dev.id), dev)
srRing('lastAlertDeviceAccountID ' + str(dev.account_id), dev)
srRing('lastAlertDeviceName ' + str(dev.name), dev)
srRing('lastAlertSipTo ' + str(alert.get('sip_to')), dev)
srRing('lastAlertSipToken ' + str(alert.get('sip_token')), dev)
lastAlertID = alert.get('id')
lastAlertKind = alert.get('kind')
logger.debug("lastAlertID:"+str(lastAlertID))
logger.debug("lastAlertKind:"+str(lastAlertKind))
if (lastAlertKind == 'ding') or (lastAlertKind == 'motion'):
videoIsReadyForDownload = None
counti = 1
while (videoIsReadyForDownload is None):
logger.debug(str(counti) + ". Try to find hitory and video in history data list")
logger.debug(" hitoryID:"+str(lastAlertID))
try:
singleHistoryItem = findHistoryItem(dev.history(limit=10,kind=lastAlertKind),lastAlertID)
if singleHistoryItem and singleHistoryItem['id'] == lastAlertID :
logger.debug("History item found!")
if singleHistoryItem['recording']['status'] == 'ready':
logger.debug("Video is now ready to downloading")
videoIsReadyForDownload = True
except Exception as inst:
logger.debug("Repeating...")
time.sleep(1)
counti+=1
if (counti>240):
logger.debug("Stop trying to find history and video data")
break
if (lastAlertKind == 'ding') and videoIsReadyForDownload:
logger.debug("Start downloading new ding video now")
dev.recording_download(lastAlertID, filename=fhem_path + 'last_ding_video.mp4',override=True)
srRing('lastDingVideo ' + fhem_path + 'last_ding_video.mp4', dev)
setRing('ring', dev)
srRing('lastAlertType ring', dev)
elif (lastAlertKind == 'motion') and videoIsReadyForDownload:
logger.debug("Start downloading new motion video now")
dev.recording_download(lastAlertID, filename=fhem_path + 'last_motion_video.mp4',override=True)
srRing('lastMotionVideo ' + fhem_path + 'last_motion_video.mp4', dev)
srRing('lastAlertType motion', dev)
setRing('motion', dev)
if videoIsReadyForDownload:
srRing('lastCaptureURL ' + str(dev.recording_url(dev.last_recording_id)), dev)
# GATHERING DEVICES
devs = dict()
poll_device = None
tmp = list(myring.stickup_cams + myring.doorbells)
for t in tmp:
devs[t.account_id] = t
# all alerts can be recognized on all devices
poll_device = t # take one device for polling
logger.info("Found " + str(len(devs)) + " devices.")
# START POLLING DEVICES
count = 1
while count<6: # try 5 times
try:
while 1:
for k, d in devs.items(): getDeviceInfo(d)
pollDevices()
except Exception as inst:
logger.error("Unexpected error:" + str(inst))
logger.error("Exception occured. Retrying...")
time.sleep(5)
if count == 5:
raise
count += 1
Ich hoffe das hilft ein bisschen weiter.
vg
pflock_y
Moin,
danke für deine Rückmeldung.
Die Rechte hatte ich in der zwischenzeit schon angepasst gehabt.
Ich habs jetzt nochmal mit deinem Daten probiert bekomme aber imemr die folgende meldung:
pi@fhemserver:/opt/fhem/bin $ sudo -u fhem python ring.py Traceback (most recent call last):
File "ring.py", line 1, in <module>
from ring_doorbell import Ring
ImportError: No module named ring_doorbell
ich habe aber die ring_doorbell installiert. weiß jemand was das sein kann?
Ich verstehe das ganze echt nicht.
So nebenbei hatte ich mir damit mein system hab zerschossen. Nun läuft es so gerade eben.
UPDATE:
ich weiß nicht wieso... aber ich habe es jetzt iwie hinbekommen. habe aber die ring.py auf dem budachst git genommen. scheint zu laufen
Gruß Screambear
Zitat von: bluemevo am 02 Februar 2020, 10:00:52
Ich hab leider das gleiche "Problem".
Hallo zusammen,
nach der initialen Installation vorgestern sind bei mir die genannten Readings ebenfalls nicht vorhanden. Bewegungen werden von der Doorbell2 zwar zuverlässig erkannt, aber nicht an FHEM übergeben.
Ich finde dies umso seltsamer, als bei einigen hier ja alles anstandslos funktioniert und ich der Meinung bin, die Anleitung korrekt befolgt zu haben.
Hat jemand eine Idee, wie man die Sache (wieder) zum Laufen bringt?
Viele Grüße
Sebastian
Moin, hast du auch mal klingeln probiert? Erst danach kam bei mir die zusätzlichen readings.
Da komme ich auch zu meinem Problem. Ich wollte die Kamera gleich als bewegungsmeldung nutzen. Aber ich habe einen Zeitplan für die Bewegung erstellt. Leider bekomme ich kein motion state wenn ich außerhalb des Zeitplan liege. Gibt es eine Möglichkeit in Fhem auch motion states zu bekommen wenn man sich nicht auf dem Handy usw benachrichtigen lassen will?
Danke udn Gruß, Screambear
Zitat von: Screambear am 17 Februar 2020, 13:12:27
Moin, hast du auch mal klingeln probiert?
Hallo,
ja, hab ich. Brachte leider keinen Erfolg. Inzwischen habe ich auch einen Authentifizierungsfehler, wenn ich die ring.py manuell starte. Ich werde dann immer aufgefordert, den neuen Loginversuch durch die Eingabe eines sechsstelligen Codes zu bestätigen. Ob das hiermit zusammenhängt? https://www.bbc.com/news/technology-51555450 (https://www.bbc.com/news/technology-51555450) Laut diesem Bericht soll Amazon von nun an die Zwei-Faktor-Authentifizierung vorschreiben.
Viele Grüße
Sebastian
Dieses Problem habe ich seit dem 18.02. Auch. Sehr merkwürdig.
Weiß jemand Rat?
N'Abend zusammen. Ich denke es hat mit der erforderlichen 2 Faktoren Authentifizierung zu tun, die nun in Ring aktiviert wurde.
Hier mal ein Link zu einem Beispiel wie es gehen sollte, bei mir jedoch (hoffentlich nur leider) noch nicht.
https://github.com/tchellomello/python-ring-doorbell/blob/master/test.py
Zitat von: nhetzke am 25 Februar 2020, 21:44:04
Hier mal ein Link zu einem Beispiel wie es gehen sollte, bei mir jedoch (hoffentlich nur leider) noch nicht.
https://github.com/tchellomello/python-ring-doorbell/blob/master/test.py
Vielleicht steh ich ja komplett auf dem Schlauch, aber wie soll das auch funktionieren? Ring will doch bei jedem Login zusätzlich den per SMS geschickten sechsstelligen Code eingegeben haben. Wo soll ich den denn eintippen?
Es ist eine Mail, die verschickt wird. Die test.py ist darauf ausgelegt, das mach dem Start User, PW und verify eingegeben werden. Dann wird ein Token erstellt, der 30 Tage gültig sein soll, mit dem sich das Script solange einloggen kann.
Btw hat jemand eine Idee wie ich den Bug zur Stickup Cam in der Version 0.6.0 fixen kann? Für die 2FA brauchen wir zwingend die Version 0.6.0
Ja es kommt darauf an, ob man in der App die 2FA aktiviert hat oder nicht. Ohne Aktivierung bekommt man eine eMail, mit Aktivierung eine SMS mit dem entsprechendem Code.
OK, ich habe testweise die test.py ausgeführt und alles eingegeben, daraufhin wurde das Token generiert und im selben Ordner abgelegt. Ich habe aber keine Ahnung, was ich nun damit machen soll. Leider verstehe ich insgesamt viel zu wenig von dieser Materie, um selbstständig zum Ziel zu kommen. Eine Schritt-für-Schritt-Anleitung wäre super...
Ich bin genauso weit wie Seppel,
wie geht es den jetzt weiter ?
Ich hab mir das mal angeschaut.
So wie es aussieht muss lediglich der Token bei der Anmeldung mitgegeben werden. Es scheint so, dass einmalig ein manueller mehr Aufwand existiert um die 2FA Nummer zu hinterlegen. Ist diese da, kann der Token genutzt und ggf. erneuert werden.
Sorry. Eventuell habe ich ein Brett vor dem Kopf, aber ich weiß wirklich nicht, wie das geht. Wie gebe ich dieses Token mit? Muss dafür die ring.py angepasst werden? Müssen weitere Dateien kopiert werden?
Würde mich auch interessieren .
N'Abend zusammen. Hier mal ein Beispiel wie ich mir das gedacht hatte. Leider habe ich aber aktuell das Problem, dass das ganze bei mir nicht klappt, da ich eine Fehlermeldung bekomme: " AttributeError: 'Ring' object has no attribute 'stickup_cams'"
Ansonsten hier mein Codeschnipsel:
from ring_doorbell import Ring, Auth
import time
import fhem
import logging
import threading
import thread
import sys
reload(sys)
sys.setdefaultencoding('utf-8')
from thread import start_new_thread, allocate_lock
from oauthlib.oauth2 import MissingTokenError
from pathlib import Path
import json
# CONFIG
ring_user = 'eMail'
ring_pass = 'PASSWORD'
fhem_ip = '127.0.0.1'
fhem_port = 7072 # Telnet Port
log_level = logging.DEBUG
fhem_path = '/opt/fhem/www/ring/' # for video downloads
POLLS = 2 # Poll every x seconds
cache_file_name = "test_token.cache"
cache_file = Path("test_token.cache")
# LOGGING
logger = logging.getLogger('ring_doorbell.doorbot')
logger.setLevel(log_level)
# create file handler which logs even debug messages
fh = logging.FileHandler('ring.log')
fh.setLevel(logging.DEBUG)
# create console handler with a higher log level
ch = logging.StreamHandler()
ch.setLevel(logging.DEBUG)
formatter = logging.Formatter('%(asctime)s - %(name)s - %(levelname)s - %(message)s')
ch.setFormatter(formatter)
fh.setFormatter(formatter)
# add the handlers to the logger
logger.addHandler(fh)
logger.addHandler(ch)
logger = logging.getLogger('fhem_ring')
logger.setLevel(log_level)
logger.addHandler(ch)
logger.addHandler(fh)
def token_updated(token):
file = open(cache_file_name, "w")
file.write(json.dumps(token))
file.close()
def otp_callback():
auth_code = "664178"#input("2FA code: ")
return auth_code
# Connecting to RING.com
if cache_file.is_file():
file = open(cache_file_name, "r")
auth = Auth("MyProject/1.0", json.loads(file.read()), token_updated)
file.close()
else:
auth = Auth("MyProject/1.0", None, token_updated)
try:
auth.fetch_token(ring_user, ring_pass)
except MissingTokenError:
auth.fetch_token(ring_user, ring_pass, otp_callback())
myring = Ring(auth)
myring.update_data()
#myring = Ring(ring_user, ring_pass)
fh = fhem.Fhem(fhem_ip, fhem_port)
def sendFhem(str):
logger.debug("sending: " + str)
global fh
fh.send_cmd(str)
def askFhemForReading(dev, reading):
logger.debug("ask fhem for reading " + reading + " from device " + dev)
return fh.get_dev_reading(dev, reading)
def askFhemForAttr(dev, attr, default):
logger.debug("ask fhem for attribute "+attr+" from device "+dev+" (default: "+default+")")
fh.send_cmd('{AttrVal("'+dev+'","'+attr+'","'+default+'")}')
data = fh.sock.recv(32000)
return data
def setRing(str, dev):
sendFhem('set Ring_' + dev.name.replace(" ","") + ' ' + str)
def attrRing(str, dev):
sendFhem('attr Ring_' + dev.name.replace(" ","") + ' ' + str)
def srRing(str, dev):
sendFhem('setreading Ring_' + dev.name.replace(" ","") + ' ' + str)
num_threads = 0
thread_started = False
lock = allocate_lock()
def getDeviceInfo(dev):
dev.update()
logger.info("Updating device data for device '"+dev.name+"' in FHEM...")
srRing('account ' + str(dev.account_id), dev)
srRing('address ' + (dev.address), dev)
srRing('family ' + str(dev.family), dev)
srRing('id ' + str(dev.id), dev)
srRing('name ' + str(dev.name), dev)
srRing('timezone ' + str(dev.timezone), dev)
srRing('doorbellType ' + str(dev.existing_doorbell_type), dev)
srRing('battery ' + str(dev.battery_life), dev)
srRing('ringVolume ' + str(dev.volume), dev)
srRing('connectionStatus ' + str(dev.connection_status), dev)
srRing('WifiName ' + str(dev.wifi_name), dev)
srRing('WifiRSSI ' + str(dev.wifi_signal_strength), dev)
def pollDevices():
logger.info("Polling for events.")
global devs
i=0
while 1:
for k, poll_device in devs.items():
logger.debug("Polling for events with '" + poll_device.name + "'.")
if poll_device.check_alerts() and poll_device.alert:
dev = devs[poll_device.alert.get('doorbot_id')]
logger.info("Alert detected at '" + dev.name + "'.")
logger.debug("Alert detected at '" + dev.name + "' via '" + poll_device.name + "'.")
alertDevice(dev,poll_device.alert)
time.sleep(POLLS)
i+=1
if i>600:
break
def findHistoryItem(historyArry,id):
ret = None
for singleItem in historyArry:
if (singleItem['id']==id):
ret = singleItem
break
return ret
def waitForVideoDownload(alertID,alertKind,ringDev):
videoIsReadyForDownload = None
counti = 1
while (videoIsReadyForDownload is None):
logger.debug(str(counti) + ". Try to find history and video in history data list")
logger.debug(" historyID:"+str(alertID))
try:
singleHistoryItem = findHistoryItem(ringDev.history(limit=10,kind=alertKind),alertID)
if singleHistoryItem and singleHistoryItem['id'] == alertID :
logger.debug("History item found!")
if singleHistoryItem['recording']['status'] == 'ready':
logger.debug("Video is now ready to downloading")
videoIsReadyForDownload = True
except Exception as inst:
logger.debug("Repeating...")
time.sleep(1)
counti+=1
if (counti>240):
logger.debug("Stop trying to find history and video data")
break
if (alertKind == 'ding') and videoIsReadyForDownload:
logger.debug("Start downloading new ding video now")
ringDev.recording_download(alertID, filename=fhem_path + 'last_ding_video.mp4',override=True)
srRing('lastDingVideo ' + fhem_path + 'last_ding_video.mp4', ringDev)
elif (alertKind == 'motion') and videoIsReadyForDownload:
logger.debug("Start downloading new motion video now")
ringDev.recording_download(alertID, filename=fhem_path + 'last_motion_video.mp4',override=True)
srRing('lastMotionVideo ' + fhem_path + 'last_motion_video.mp4', ringDev)
if videoIsReadyForDownload:
srRing('lastCaptureURL ' + str(ringDev.recording_url(ringDev.last_recording_id)), ringDev)
def alertDevice(dev,alert):
srRing('lastAlertDeviceID ' + str(dev.id), dev)
srRing('lastAlertDeviceAccountID ' + str(dev.account_id), dev)
srRing('lastAlertDeviceName ' + str(dev.name), dev)
srRing('lastAlertSipTo ' + str(alert.get('sip_to')), dev)
srRing('lastAlertSipToken ' + str(alert.get('sip_token')), dev)
lastAlertID = alert.get('id')
lastAlertKind = alert.get('kind')
logger.debug("lastAlertID:"+str(lastAlertID))
logger.debug("lastAlertKind:"+str(lastAlertKind))
if (lastAlertKind == 'ding'):
logger.debug("Signalling ring to FHEM")
setRing('ring', dev)
srRing('lastAlertType ring', dev)
elif (lastAlertKind == 'motion'):
logger.debug("Signalling motion to FHEM")
srRing('lastAlertType motion', dev)
setRing('motion', dev)
thread.start_new_thread(waitForVideoDownload,(lastAlertID,lastAlertKind,dev))
# GATHERING DEVICES
devs = dict()
poll_device = None
tmp = list(myring.stickup_cams + myring.doorbells)
for t in tmp:
devs[t.account_id] = t
# all alerts can be recognized on all devices
poll_device = t # take one device for polling
logger.info("Found " + str(len(devs)) + " devices.")
# START POLLING DEVICES
count = 1
while count<6: # try 5 times
try:
while 1:
for k, d in devs.items(): getDeviceInfo(d)
pollDevices()
except Exception as inst:
logger.error("Unexpected error:" + str(inst))
logger.error("Exception occured. Retrying...")
time.sleep(5)
if count == 5:
raise
count += 1
Idee ist einmal manuell starten, den 2FA Token bekommen, hier oben eintragen und dann laufen lassen.
https://github.com/tchellomello/python-ring-doorbell/issues/188
Hab's nur noch nicht hinbekommen dass umzusetzen
Moin,
Ja das hab ich schon hinbekommen. Es wurde allerdings mit einem der letzten checkins noch mehr geändert, so dass das alerting nicht mehr funktioniert. Alles bisschen doof gerade.
Wie hast du das denn gelöst?
So:
# GATHERING DEVICES
devs = dict()
poll_device = None
devices = myring.devices()
for t in list(devices['stickup_cams'] + devices['doorbots']):
devs[t.name] = t
# all alerts can be recognized on all devices
poll_device = t # take one device for polling
logger.info("Found " + str(len(devs)) + " devices.")
# START POLLING DEVICES
Weiterhin problematisch ist
if poll_device.check_alerts() and poll_device.alert:
Sowohl check_alerts() als auch alert sind so nicht mehr existieren. Keine Ahnung wie das jetzt in der aktuellen Implementierung umgesetzt wurde. Ich habe dazu ebenfalls ein Issue auf gemacht.
https://github.com/tchellomello/python-ring-doorbell/issues/201
Moin,
ich hatte leider in den letzten Wochen so gar keine Zeit mich im das Ring-Projekt zu kümmen, aber ich habe jetzt wieder angefangen, mich in die aktuelle Lib einzuarbeiten - da hat sich leider einiges geändert. Teilweise gibt es Attribute nicht mehr und andere sind dazugekommen. Ich habe da auch was für Snapshots gesehen, aber das ist ehrlich gesagt nicht soo wichtig.
Ich habe auf alle Fälle die 2FA drin und kann mich - nachdem ich mal den 2FA Code bekommen und eingegeben habe anmelden. Anschließend kann sich die ring.py auch ohne Intervention anmelden, da dann ein gespeichertes Token vorliegt.
Jetzt muss ich mich mal durch den Rest des Codes wühlen und einige Dinge ändern - ist immer schwer, wenn der ursprüngliche Code nicht von eine selber ist, aber wahrscheinlich ist das auch bei eigenem Code so, wenn man nicht andauernd in der Sprache programmiert und ein Jahr raus war. ;)
Gruß,
budy
Toll, dass du da so viel Zeit reinsteckst. Danke!
Moin,
Zitat von: nhetzke am 28 Februar 2020, 09:43:26
Weiterhin problematisch ist
if poll_device.check_alerts() and poll_device.alert:
Sowohl check_alerts() als auch alert sind so nicht mehr existieren. Keine Ahnung wie das jetzt in der aktuellen Implementierung umgesetzt wurde. Ich habe dazu ebenfalls ein Issue auf gemacht.
https://github.com/tchellomello/python-ring-doorbell/issues/201
ja, das habe ich auch gesehen, als ich mir die Attribute und Endpunkte im Master angeschaut habe. Meine Lösung ist erst mal so:
for poll_device in tmp:
myring.update_dings()
logger.debug("Polling for events with '" + poll_device.name + "'.")
logger.debug("Connection status '" + poll_device.connection_status + "'.")
# logger.debug("Last URL: " + poll_device.recording_url(poll_device.last_recording_id))
if myring.dings_data:
dingsEvent = myring.dings_data[0]
logger.debug("Dings: " + str(myring.dings_data))
logger.debug("State: " + str(dingsEvent["state"]))
logger.info("Alert detected at '" + poll_device.name + "'.")
logger.debug("Alert detected at '" + poll_device.address + "' via '" + poll_device.name + "'.")
alertDevice(poll_device,dingsEvent,str(dingsEvent["state"]))
time.sleep(POLLS)
Jeder Alert löst einen dings-Update aus (was für eine schöne Bezeichnung! ;) ) In diesem Objekt stehen alle Daten zu einem Event und da hole ich mir raus, ob es z.B. ein motion- oder ein ding-event ist.
Ich habe im Git gerade die Version 1.0.6 meiner ring.py eingecheckt. Diese ist - bis auf das Downloaden der Videos, soweit funktional, als dass sie mit der Version der tchellomello/python-ring-doorbell aus deren Master-Branch funktioniert. Ebenso funktioniert die Siganlisierung von Bewegungen oder Klingeln an FHEM.
Die Sache mit dem Download der Videos muss ich mir nochmal genauer ansehen und deren Funktion ist aktuell auskommentiert.
Ach ja, die ring.py scheint Python3.7 zu benötigen, ob auch 3.6 geht, habe ich nicht getestet.
Gruß,
budy
Erst mal vielen Dank, dass du immer noch die Mühe machst das Script anzupassen :)
Leider läuft es noch nicht ganz rund
2020-02-29 22:50:19,131 - fhem_ring - DEBUG - []
2020-02-29 22:50:19,132 - fhem_ring - INFO - Found 0 devices.
Traceback (most recent call last):
File "ring.py", line 263, in <module>
getDeviceInfo(t)
NameError: name 't' is not defined
Moin,
ja den Fehler hatte ich gestern auch, als ich die API mit meinem "FHEM-Ring-Account" abgefragt hatte. Ich habe eben eine Änderung eingecheckt, die das richtig macht. Wenn man ein "Nachbar" ist, dann werden freigebene Doorbots getrennt von den eigenen gemeldet.
Gruß,
budy
Danke, dass du es gleich gefixt hast.
Ich hab für den Raspberry bzw für dein Script einen Nachbarn angelegt.
Mir fällt gerade noch auf, obwohl ich eine Stick up Cam und ein Chime hab, wird vom Script nur 1 Gerät (die Doorbell) erkannt.
Liegt das wieder am Nachbarn oder womit kann das zusammen hängen?
*edit*
Die Stick-up Cam wird auch beim Account Inhaber nicht als Gerät abgefragt :(
Nein - das lieg auch daran, wie die ganzen Geräte "reinkommen". Im Moment hole ich nur die Doorbots aus der API, da das Skript eigentlich auch nur für die Doorbots entwickelt wurde. Für eine komplette Verwaltung müsste man das Ganze auch komplett umbauen. Das fängt schon damit an, dass das Skript nur ein Device in FHEM bedient.
Ich habe zwar auch eine Chime, aber die muss ich nicht unbedingt in FHEM haben, da FHEM meine normale Glocke läutet, wenn es an der Ring klingelt. Wenn man das umstellen wollte, dann müsste man das ganze Konzept noch mal neu machen und ob ich da soviel Lust drauf habe, wo ich die anderen Geräte ja eh' nicht habe, weiß ich wirklich nicht... ;)
Gruß,
budy
Vor dem Umbau auf 2FA hats doch aber auch funktioniert mit der Stick-up Cam ???
Kanns zwar grob lesen, was im Script passiert, aber es dann auch selbst schreiben zu können, dazu fehlt noch etwas :(
Ich frage mich gerade wie, du das gemacht hast..., wenn du nur ein Objekt in FHEM anlegst. Theoretisch müsste man entweder mehrere Objekte anlegen und auch für jedes FHEM-Objekt eine eigene Instanz des ring.py Skripts starten... oder wie hast du das vorher gemacht?
Gut, die Frage stell ich mir auch gerade.
Ich hab eine zeitlang nur die Stickup für den Nachbaraccount freigegeben gehabt. Ich meine aber schon ,dass ich schon das ich schon von beiden Geräten gleichzeitig Events bekommen hab.
Wenn ich mir aber deine Änderungen anschauen, frag ich selbst gerade wie ich mit dem Script von beiden Ring Geräten gleichzeitig Events weitergehen konnte.
Ich habs im Moment zumindest soweit geschafft, dass ich ein Script hab für die Doorbell und eins für die Stickup-Cam.
Die beiden gleichzeitig laufen lassen, hatte heute schon mal geklappt, jetzt gerade aber irgendwie nicht mehr.
Spitzenmäßig! Meine Doorbell2 ist nun in FHEM integriert und schaltet die Haustürbeleuchtung :-)
Vielen, vielen Dank an alle Beteiligten.
Zitat von: bluemevo am 01 März 2020, 18:10:53
Gut, die Frage stell ich mir auch gerade.
Ich hab eine zeitlang nur die Stickup für den Nachbaraccount freigegeben gehabt. Ich meine aber schon ,dass ich schon das ich schon von beiden Geräten gleichzeitig Events bekommen hab.
Wenn ich mir aber deine Änderungen anschauen, frag ich selbst gerade wie ich mit dem Script von beiden Ring Geräten gleichzeitig Events weitergehen konnte.
Diese Frage habe ich mir schon gestellt, seit es immer mehr von diesen Ring-Geräten gibt... ;) Ich meine, dass die erste Version dieses Skripts, welches ich ja auch nur mal geforkt hatte, um da das Threadding einzubauen, nie dazu gedacht war, mit mehreren, verschiedenen Geräten umzugehen.
Zitat von: bluemevo am 01 März 2020, 18:10:53
Ich habs im Moment zumindest soweit geschafft, dass ich ein Script hab für die Doorbell und eins für die Stickup-Cam.
Die beiden gleichzeitig laufen lassen, hatte heute schon mal geklappt, jetzt gerade aber irgendwie nicht mehr.
Ja, das wäre eine - unschöne - Möglichkeit. Schöner wäre es, wenn das Objekt in FHEM, so wie die Homematic-Produkte Channels haben könnte, so wie Unterdevices. Dann wäre eine Ring-Installation quasi das Metaobjekt und die ganzen Ring-Teile Unterobjekte. Oder aber, man erhält ein Objekt mit echt vielen Readings und das Ring-Skript schiebt die Alerts da einfach rein. Das Problem ist nur z.B. dass die Videos auch immer in ihrer History an dem Ring-Device hängen...
Na ja, vielleicht schaue ich mir das mal an, auch wenn ich nur die Doorbell habe, also keine weiteren Stickup-Cams oder so.
Aktuell habe ich mein Skript schon mal soweit, dass ich die letzte CaptureURL herankomme... das habe ich aber noch nicht eingecheckt.
Gruß,
budy
Zitat von: budy am 01 März 2020, 18:58:39
Ja, das wäre eine - unschöne - Möglichkeit. Schöner wäre es, wenn das Objekt in FHEM, so wie die Homematic-Produkte Channels haben könnte, so wie Unterdevices. Dann wäre eine Ring-Installation quasi das Metaobjekt und die ganzen Ring-Teile Unterobjekte. Oder aber, man erhält ein Objekt mit echt vielen Readings und das Ring-Skript schiebt die Alerts da einfach rein. Das Problem ist nur z.B. dass die Videos auch immer in ihrer History an dem Ring-Device hängen...
Na ja, vielleicht schaue ich mir das mal an, auch wenn ich nur die Doorbell habe, also keine weiteren Stickup-Cams oder so.
Aktuell habe ich mein Skript schon mal soweit, dass ich die letzte CaptureURL herankomme... das habe ich aber noch nicht eingecheckt.
Ich glaub, ich wäre nicht der einzige, der dir dafür dankbar ist ;)
Ich nutze derzeit die Motion Events als Bewegungsmelder in meiner Haussteuerung. Das hatte bisher ganz gut geklappt.
Die Stickup-Cam macht das Licht vorm Haus an und der Motion Event der Doorbell soll dann die Beleuchtung des CodePads am Hauseingang einschalten.
Hallo,
habe jetzt die neue ring.py mir installiert, und was muss ich jetzt genau machen das es wieder geht ?
Also Name und Passwort eintragen reicht wohl nicht .
Ich bekomme dann das hier :
Traceback (most recent call last):
File "./ring.py", line 74, in <module>
auth = Auth("MyProject/1.0", None, token_updated)
TypeError: __init__() takes from 1 to 3 positional arguments but 4 were given
Kann jemand helfen ?
Danke
speed
Deine Python-Version ist zu alt. Du brauchst 3.7!
Gruß,
budy
Zitat von: bluemevo am 01 März 2020, 21:15:35
Ich glaub, ich wäre nicht der einzige, der dir dafür dankbar ist ;)
Ich nutze derzeit die Motion Events als Bewegungsmelder in meiner Haussteuerung. Das hatte bisher ganz gut geklappt.
Die Stickup-Cam macht das Licht vorm Haus an und der Motion Event der Doorbell soll dann die Beleuchtung des CodePads am Hauseingang einschalten.
Ich glaube, das müsste auch weiterhin gehen, denn wenn ich das richtig gesehen habe, werden alle Events über das Dings-Objekt ausgegeben, das auslösende Device steht dann da drin. Das könntest du einfach mal checken, ob bei einem Event der Stickup-Cam das Skript nicht auch auslöst.
Ich habe vorhin die Version 1.0.9 eingecheckt, welche u.a. die Verbindung zur Ring API mit einem Exception-Wrapper versieht, da ich ab und zu mal Verbindungs-Probleme zur Ring API habe und sich dann immer gleich das ganze Skript verabschiedet. Das war ja auch der Grund dafür, dass ursprünglich immer dafür gesorgt werden musste, dass das Skript periodisch neu gestartet wird. Aktuell weiß ich noch nicht, ob bei so einem Problem ein ganz neuer Login fällig ist, oder ob das nur Transienten sind... aber das sehe ich dann.
Außerdem ist in dieser Version auf alle Fälle schon mal das Holen der letzten CaptureURL enthalten. Was das angeht, musste ich leider feststellen, dass es immer noch nötig ist die History zu pollen, wenn man ein Video herunterladen will - obwohl es meiner Meinung nach in der Lib anders drin steht und die Lib eigentlich selber warten soll. Das muss ich mir nochmal genauer ansehen.
Zitat von: budy am 02 März 2020, 19:03:16
Ich glaube, das müsste auch weiterhin gehen, denn wenn ich das richtig gesehen habe, werden alle Events über das Dings-Objekt ausgegeben, das auslösende Device steht dann da drin. Das könntest du einfach mal checken, ob bei einem Event der Stickup-Cam das Skript nicht auch auslöst.
Deine Version 1.0.7 hast du nur für die Doorbell geschrieben -> doorbot
Ich habe dann doorbot durch Stickup_cam ersetzt. Damit habe ich die Attribute der Stickup-Cam bekommen. Als ich beides in ein Script gepackt habe, habe ich immer nur die Attribute der Stickup-Cam an FHEM gesendet bekommen. Laut Log hat das Script aber beide Geräte belauscht - ich war jedoch nicht draußen (Schande über mich :o)
Hab das erst getestet als ich beide Scripte getrennt laufen hatte.
Ich werd deine Version 1.0.9 mal testen. Ich geb spätestens morgen weder Bescheid :)
Zitat von: bluemevo am 02 März 2020, 22:05:25
Deine Version 1.0.7 hast du nur für die Doorbell geschrieben -> doorbot
Ich habe dann doorbot durch Stickup_cam ersetzt. Damit habe ich die Attribute der Stickup-Cam bekommen. Als ich beides in ein Script gepackt habe, habe ich immer nur die Attribute der Stickup-Cam an FHEM gesendet bekommen. Laut Log hat das Script aber beide Geräte belauscht - ich war jedoch nicht draußen (Schande über mich :o)
Hab das erst getestet als ich beide Scripte getrennt laufen hatte.
Ich werd deine Version 1.0.9 mal testen. Ich geb spätestens morgen weder Bescheid :)
Na ja, nicht für den Dootbot geschrieben... du kannst bei der Initialisierung des Ring-Objekts wählen, welche Ring-Typen du gemedlet bekommen willst. Ich hatte das nur auf den Doorbot begrenzt, aber du kannst da auch alle Typen eintragen. So, wie ich das mit den freigegebenen Doorbots gemacht habe:
tmp = list(devs['doorbots']+devs['authorized_doorbots'])
Wenn du da noch ['stickup_cams'] hinzufügst, dann werden die auch zurückgemeldet. Wenn du das tust, dann sollten eigentlich auch die Events der Cams gemeldet werden, das war es, was ich meinte. Wenn dem so ist, dann kann ich sicherlich die Readings "aufbohren" und immer auch den Ring-Device-Namen voranstellen...
Je mehr Ring-Devices man hat, desto mehr Readings werden das dann aber natürlich...
Gruß,
budy
Ich habe gerade mal die komplette Liste abgerufen, welche mein FHEM-Nachbar sehen kann, da taucht meine Chime nicht auf, weil ich sie gar nicht freigeben kann - ich kann also kaum testen, ob meine Annahmen richtig sind... ;)
Gruß,
budy
Ich hab vorhin mal getestet.
Mit V1.0.9 bekomm ich von beiden Cams Trigger, aber beide Motion Events kommen bei der Doorbell an.
Die Attribute werden nur noch der Stickup Cam aktualisiert. Ich hab die Stickup Cam in
tmp = list(devs['doorbots']+devs['authorized_doorbots']+devs['stickup_cams'])
ergänz.
Irgendwie kommt da im Moment irgendwas durcheinander, oder mach ich was falsch :o
Guten Abend,
ich habe auf Python 3.7 "upgedatet" und
Zur installation müssen zwei Python3.7 libs installiert werden:
pip3.7 install git+https://github.com/tchellomello/python-ring-doorbell
pip3.7 install fhem
geladen.
Die ring.py und run_ring neu geladen aus dem Git und in den /home/pi/ Ordner verschoben.
Wenn ich nun die ring.py starten möchte bekomme ich folgenden Fehler: pi@FHEMPi:~ $ sudo python3 ring.py
Traceback (most recent call last):
File "ring.py", line 8, in <module>
import fhem
ImportError: No module named 'fhem'
Was sagt der Fehler aus?
Was ich auch noch nicht verstanden habe, den 6 Stelligen Code der mir zugesendet wird... wo muss ich den eintragen?
Zitat von: bluemevo am 03 März 2020, 22:42:47
Ich hab vorhin mal getestet.
Mit V1.0.9 bekomm ich von beiden Cams Trigger, aber beide Motion Events kommen bei der Doorbell an.
Die Attribute werden nur noch der Stickup Cam aktualisiert. Ich hab die Stickup Cam in
tmp = list(devs['doorbots']+devs['authorized_doorbots']+devs['stickup_cams'])
ergänz.
Irgendwie kommt da im Moment irgendwas durcheinander, oder mach ich was falsch :o
Nein, du machst nichts falsch. Das "Dings-Objekt" scheint, wie ich mir das schon gedacht habe, alle Events auszuliefern. Du musst mal in die Ausgabe des Logs schauen, da müsste drin stehen, welches Ring-Device den Alarm ausgelöst hat. So sieht so eine Ausgabe bei mir aus:
2020-03-03 18:54:19,732 - fhem_ring - DEBUG - Dings: [{'id': 6800041580263352262, 'id_str': '6800041580263352262', 'state': 'ringing', 'protocol': 'sip', 'doorbot_id': 24881094, 'doorbot_description': 'Haustuer', 'device_kind': 'lpd_v2', 'motion': True, 'snapshot_url': '', 'kind': 'motion', 'sip_server_ip': '3.121.121.27', 'sip_server_port': 15063, 'sip_server_tls': True, 'sip_session_id': '5snkpp80nn9u6-2061ss6gm7v17m-1s02', 'sip_from': 'sip:99796778@ring.com', 'sip_to': 'sip:5snkpp80nn9u6-2061ss6gm7v17m-1s02@3.121.121.27:15064;transport=tls', 'audio_jitter_buffer_ms': 300, 'video_jitter_buffer_ms': 300, 'sip_endpoints': None, 'expires_in': 179, 'now': 1583258059.66932, 'optimization_level': 1, 'sip_token': '', 'sip_ding_id': '6800041580263352262', 'detection_type': ''}]
Schau mal nach doorbot_description/_id, das müsste sich, je nach Ring-Device unterscheiden.
Gruß,
budy
Zitat von: marko67 am 03 März 2020, 23:10:03
Wenn ich nun die ring.py starten möchte bekomme ich folgenden Fehler: pi@FHEMPi:~ $ sudo python3 ring.py
Traceback (most recent call last):
File "ring.py", line 8, in <module>
import fhem
ImportError: No module named 'fhem'
Was sagt der Fehler aus?
Was ich auch noch nicht verstanden habe, den 6 Stelligen Code der mir zugesendet wird... wo muss ich den eintragen?
Du musst für das Python3.7 noch die fhemlib installieren... wie das geht, steht gleich am Anfang im Readme.md...
Hallo
Du meinst pip3.7 install fhem
??
Das hatte ich auch schon in Verdacht aber es ist doch installiert??
Habe nach dem update von Python
1. sudo pip3.7 install git+https://github.com/tchellomello/python-ring-doorbell
2. sudo pip3.7 install fhem
Danach die beiden Dateien geholt und in den /home/pi/ Ordner geschoben.
Dann ein sudo reboot.
Beim Starten kommt dann der Fehler.
Zitat von: budy am 03 März 2020, 23:24:22
Nein, du machst nichts falsch. Das "Dings-Objekt" scheint, wie ich mir das schon gedacht habe, alle Events auszuliefern. Du musst mal in die Ausgabe des Logs schauen, da müsste drin stehen, welches Ring-Device den Alarm ausgelöst hat. So sieht so eine Ausgabe bei mir aus:
2020-03-03 18:54:19,732 - fhem_ring - DEBUG - Dings: [{'id': 6800041580263352262, 'id_str': '6800041580263352262', 'state': 'ringing', 'protocol': 'sip', 'doorbot_id': 24881094, 'doorbot_description': 'Haustuer', 'device_kind': 'lpd_v2', 'motion': True, 'snapshot_url': '', 'kind': 'motion', 'sip_server_ip': '3.121.121.27', 'sip_server_port': 15063, 'sip_server_tls': True, 'sip_session_id': '5snkpp80nn9u6-2061ss6gm7v17m-1s02', 'sip_from': 'sip:99796778@ring.com', 'sip_to': 'sip:5snkpp80nn9u6-2061ss6gm7v17m-1s02@3.121.121.27:15064;transport=tls', 'audio_jitter_buffer_ms': 300, 'video_jitter_buffer_ms': 300, 'sip_endpoints': None, 'expires_in': 179, 'now': 1583258059.66932, 'optimization_level': 1, 'sip_token': '', 'sip_ding_id': '6800041580263352262', 'detection_type': ''}]
Schau mal nach doorbot_description/_id, das müsste sich, je nach Ring-Device unterscheiden.
Gruß,
budy
Ich lass es mal durchlaufen den Tag über morgen.
Dann schau ich in die Logs mal rein.
Zitat von: marko67 am 03 März 2020, 23:41:16
Hallo
Du meinst pip3.7 install fhem
??
Das hatte ich auch schon in Verdacht aber es ist doch installiert??
Habe nach dem update von Python
1. sudo pip3.7 install git+https://github.com/tchellomello/python-ring-doorbell
2. sudo pip3.7 install fhem
Danach die beiden Dateien geholt und in den /home/pi/ Ordner geschoben.
Dann ein sudo reboot.
Beim Starten kommt dann der Fehler.
Du musst das richtige Python aufrufen...
sudo python3.7 ring.py
Gruß,
budy
Zitat von: budy am 04 März 2020, 08:53:57
Du musst das richtige Python aufrufen...
sudo python3.7 ring.py
Gruß,
budy
:-\ Du liebe Güte wie peinlich.
Es gibt Uhrzeiten da sollte man ins Bett und nicht vor den PC.
Danke für Deine Hilfe!!
Marko
Ach wat... gerne! ;)
Bei mir läuft es nun doch nicht wie geplant. Ich hatte vor ein paar Tagen in der Eile die ring.py manuell gestartet und mich dann nicht weiter drum gekümmert. Jetzt merke ich, dass das Skript gar nicht automatisch gestartet wird (trotz der Cronjobs) und ich das mit Python 3.5 hatte laufen lassen. Es gelingt mir aber nicht, Python 3.7 zu installieren, egal was ich versuche. Dementsprechend funktionieren auch die Installationsbefehle für die Pakete mit pip3.7 nicht.
Hat jemand einen Tipp für mich?
Zitat von: Seppel am 06 März 2020, 11:49:50
Jetzt merke ich, dass das Skript gar nicht automatisch gestartet wird (trotz der Cronjobs)
Setz in der ring.py mal den vollständigen Pfad für den token und die ring.log.
Ich hatte mit ähnlichen Problemen zu kämpfen. Der Token wird scheinbar nicht da gesucht wo die ring.py liegt, sondern wo der cronjob ausgeführt wird.
Bei mir hat der manuelle Start funktioniert, jedoch der automatische Start überhaupt nicht. Seit dem anpassen der Pfade läuft alles...
Zitat von: bluemevo am 06 März 2020, 16:27:42
Setz in der ring.py mal den vollständigen Pfad für den token und die ring.log.
Ich hatte leider noch keinen Erfolg. Ich habe in der ring.py in den Zeilen 19 und 40 jeweils die kompletten Pfade gesetzt (also /opt/fhem/bin/...). Das hat aber nichts gebracht.
Zwei Dinge fallen mir noch auf:
Als Pfad für das letzte Video wird in der ring.py /opt/fhem/www/ring/ angegeben, das Video liegt bei mir aber in /opt/fhem/bin/.
In der originalen run_ring soll
python /opt/fhem/bin/ring.py
ausgeführt werden anstatt
python3 /opt/fhem/bin/ring.py
Ist das so korrekt?
Es muss python3 oder eher sogar noch python3.7 -je nach dem wie es bei dir installiert ist.
Das dachte ich mir. Problem bezüglich Python 3.7: Ich bekomme es nicht installiert.
Welche Version hast du denn installiert?
Zitat von: budy am 03 März 2020, 23:24:22
2020-03-03 18:54:19,732 - fhem_ring - DEBUG - Dings: [{'id': 6800041580263352262, 'id_str': '6800041580263352262', 'state': 'ringing', 'protocol': 'sip', 'doorbot_id': 24881094, 'doorbot_description': 'Haustuer', 'device_kind': 'lpd_v2', 'motion': True, 'snapshot_url': '', 'kind': 'motion', 'sip_server_ip': '3.121.121.27', 'sip_server_port': 15063, 'sip_server_tls': True, 'sip_session_id': '5snkpp80nn9u6-2061ss6gm7v17m-1s02', 'sip_from': 'sip:99796778@ring.com', 'sip_to': 'sip:5snkpp80nn9u6-2061ss6gm7v17m-1s02@3.121.121.27:15064;transport=tls', 'audio_jitter_buffer_ms': 300, 'video_jitter_buffer_ms': 300, 'sip_endpoints': None, 'expires_in': 179, 'now': 1583258059.66932, 'optimization_level': 1, 'sip_token': '', 'sip_ding_id': '6800041580263352262', 'detection_type': ''}]
Schau mal nach doorbot_description/_id, das müsste sich, je nach Ring-Device unterscheiden.
Gruß,
budy
Ich hab mir die logs angeschaut. Auffällig ist, dass die Alerts mal richtig zugeordnet sind und mal nicht. Hier ein Beispiel für eine falsche Zuodnung:
2020-03-04 13:26:04,340 - fhem_ring - DEBUG - Dings: [{... 'state': 'ringing', 'protocol': 'sip', 'doorbot_id': *, 'doorbot_description': 'Garage', 'device_kind': 'stickup_cam_lunar', 'motion': True,
2020-03-04 13:26:04,340 - fhem_ring - DEBUG - State: ringing
2020-03-04 13:26:04,341 - fhem_ring - INFO - Alert detected at 'Eingang'.
2020-03-04 13:26:04,341 - fhem_ring - DEBUG - Alert detected at
2020-03-04 13:26:04,341 - fhem_ring - DEBUG - lastAlertID:
2020-03-04 13:26:04,342 - fhem_ring - DEBUG - lastAlertKind:motion
2020-03-04 13:26:04,342 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertDeviceID
2020-03-04 13:26:04,343 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertDeviceName Eingang
2020-03-04 13:26:04,344 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertSipTo sip:
2020-03-04 13:26:04,345 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertSipToken
2020-03-04 13:26:04,346 - fhem_ring - DEBUG - Signalling motion to FHEM
2020-03-04 13:26:04,347 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertType motion
Laut Ring App war das eine Bewegung an der Garage.
Hallo zusammen,
Ich hab nun auch die neuste Version von budy drauf. Danke dafür!!!!
Soweit läuft alles sehr zufriedenstellend, ABER.
Die Videos werden nicht wie im script angegeben nach '/bin/fhem/www/ring/' kopiert. Sondern landen immer im '/opt/fhem/' Ordner.
Vielleicht weis jemand Rat.
vg
pflock_y
Zitat von: bluemevo am 07 März 2020, 07:48:21
Ich hab mir die logs angeschaut. Auffällig ist, dass die Alerts mal richtig zugeordnet sind und mal nicht. Hier ein Beispiel für eine falsche Zuodnung:
2020-03-04 13:26:04,340 - fhem_ring - DEBUG - Dings: [{... 'state': 'ringing', 'protocol': 'sip', 'doorbot_id': *, 'doorbot_description': 'Garage', 'device_kind': 'stickup_cam_lunar', 'motion': True,
2020-03-04 13:26:04,340 - fhem_ring - DEBUG - State: ringing
2020-03-04 13:26:04,341 - fhem_ring - INFO - Alert detected at 'Eingang'.
2020-03-04 13:26:04,341 - fhem_ring - DEBUG - Alert detected at
2020-03-04 13:26:04,341 - fhem_ring - DEBUG - lastAlertID:
2020-03-04 13:26:04,342 - fhem_ring - DEBUG - lastAlertKind:motion
2020-03-04 13:26:04,342 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertDeviceID
2020-03-04 13:26:04,343 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertDeviceName Eingang
2020-03-04 13:26:04,344 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertSipTo sip:
2020-03-04 13:26:04,345 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertSipToken
2020-03-04 13:26:04,346 - fhem_ring - DEBUG - Signalling motion to FHEM
2020-03-04 13:26:04,347 - fhem_ring - DEBUG - sending: setreading Ring_Eingang lastAlertType motion
Laut Ring App war das eine Bewegung an der Garage.
Jaa...? Ich sehe da in dem Event:
'doorbot_description': 'Garage', 'device_kind': 'stickup_cam_lunar', 'motion': True,
Ich würde sagen, dass passt zur Ring App...
Moin,
Zitat von: pflock_y am 08 März 2020, 17:15:18
Die Videos werden nicht wie im script angegeben nach '/bin/fhem/www/ring/' kopiert. Sondern landen immer im '/opt/fhem/' Ordner.
Vielleicht weis jemand Rat.
vg
pflock_y
das schaue ich mir mal an...
Gruß,
budy
P.S. Oha, das war peinlich... so ein blöder Fehler... ich habe den FHEM-Download-Ordner gar nicht an die Lib übergeben gehabt. Ich habe das grade im Master gefixt.
Nabend budy
Ich hab mir grad die Master neu geladen.
Passt irgendwie noch nicht. Das video wird noch immer nach /opt/fhem/ geladen.
vg
pflock_y
Ja... wäre gut gewesen, wenn ich das auch gepusht hätte... ;) du hast bestimmt noch 1.0.9, aber 1.0.10 liegt jetzt bereit...
Sorry...
Ja richtig, ich hatte mich schon etwas über die Versionsnummer gewundert.
Jetzt ein neuer Versuch.
vg
pflock_y
Super bestens, jetzt landen die Videos im richtigen Verzeichnis.
Danke!!!!
Zitat von: bluemevo am 06 März 2020, 21:52:15
Welche Version hast du denn installiert?
fhem@FHEM:~$ python -V
Python 2.7.13
fhem@FHEM:~$ python3 -V
Python 3.5.3
fhem@FHEM:~$ python3.7 -V
Python 3.7.0
Dennoch:
fhem@FHEM:~$ sudo pip3.7 install git+https://github.com/tchellomello/python-ring-doorbell
sudo: pip3.7: Befehl nicht gefunden
Was mache ich denn falsch? Bin ein wenig ratlos.
Wie hast du den Python3.7 installiert. Bei mir liegt das unter /usr/local/bin ggf. ist das nicht in deiner path-Variablen enthalten und deshalb findest du das so nicht.
Zitat von: budy am 08 März 2020, 18:36:01
Jaa...? Ich sehe da in dem Event:
'doorbot_description': 'Garage', 'device_kind': 'stickup_cam_lunar', 'motion': True,
Das Event passt zur App, richtig. Aber fhem bekommt das Reading auf das falsche Objekt.
Event: Garage (Stick_up)
Reading: Eingang (Doorbell)
Das passiert jedoch random, Mal stimmt Zuordnung Reading zum Event und Mal eben nicht.
Ich würde sagen, dass passt zur Ring App...
Ja, wie gesagt, das liegt daran, dass das Skript nur für ein Device vorgesehen war. Um das in FHEM in verschiedene Devices zu bekommen, müsste man die auch haben, bzw. das Skript müsste wissen, dass es diese gibt. Der Ring API ist das egal, sie sendet an jeden Listener dieselben Infos... welcher Bot was gemacht hat.
Wenn du zwei Skripte laufen lässt, dann gibt es für mich zwei Möglichkeiten...
a) das Skript bekommt von Anfang an eine Liste von FHEM-Devices und prokelt die Events auseinande, um sie dem korrekten Device zuzuordnen
b) das Skript bekommt nur ein Device und müsste dann die Events filtern
Ich fände a) natürlich besser, denn dann läuft auch nur ein Skript und nicht eines je Ring-Device...
Mal sehen, vielleicht kaufe ich mir mal eine Stickup-CAM, aber brauchen tue ich eigentlich keine und ohne zweite Hardware ist das Entwickeln natürlich etwas blöde...
Gruß,
budy
Hallo und Guten Morgen zusammen,
ich habe gestern mal die aktuelle Version mit Python 3.8 getestet. Generell funktioniert das Script.
Meldet erfolgreich Dings und Motion zu fhem. Jedoch werden noch die falschen Videos heruntergeladen.
Ist das schon bekannnt und in Arbeit?
Zitat von: nhetzke am 10 März 2020, 09:07:51
Hallo und Guten Morgen zusammen,
ich habe gestern mal die aktuelle Version mit Python 3.8 getestet. Generell funktioniert das Script.
Meldet erfolgreich Dings und Motion zu fhem. Jedoch werden noch die falschen Videos heruntergeladen.
Ist das schon bekannnt und in Arbeit?
Moin,
kann ich so nicht bestätigen. Bei mir kommen motion und ding videos richtig an. Es gibt aber nur noch ein Reading für die Videos im FHEM dummy. (lastDingVideo.png)
Was mir aber aufgefallen ist, es kommen zwar fleißig fleißig motion und ding Meldungen an nur die restlichen werden nicht aktualisiert.
(Readings.png)
Erst wenn ich das Skript beende und wieder neu starte werden alle Readings aktualisiert.
Ich hab es erst mal mit einem cronjob alle 10 Minuten gelöst. Dieser beendet und startet die run_ring kontinuierlich.
Ist vielleicht nicht die schönste Lösung aber funktioniert prima.
vg
pflock_y
Ähh... ja, das ist natürlich keine Lösung, denn ich hatte das Skript ja gerade so umgebaut, dass man es gar nicht mehr periodisch abbrechen muss. Ich werde mal die Readings bei einem Event aktualisieren lassen. Vielleicht lagere ich das ja auch mal in einen Thread aus, so dass das periodisch aufgerufen werden kann.
Hallo an alle!
sehr neu mit FHEM, ich habe gerade mein ring mit Raspberry FHEM angeschlossen:
1. Python 3.7.7 installiert (https://installvirtual.com/install-python-3-7-on-raspberry-pi/)
2. Letzte Version 1.0.10 von Buddys script installiert (https://github.com/budachst/ring-fhem) gemaess Anweisungen
- pip3.7 install git+https://github.com/tchellomello/python-ring-doorbell
- pip3.7 install fhem
- ring.py und run_ring runtergeladen und in /opt/fhem/bin abgelegt
Alles funktioniert, ich kann die Bewegungs-Meldungen vom ring fuer die Steuerung der Aussenbeleuchtung benutzen.
Leider aber, legt das System keine Videos an!
Hat jemand eine Idee woran es liegen koennte?
Der run_ring wird bei mir unter user Pi gefuehrt (nicht fhem),
dadurch befindet sich der ring.log und ring_token.cache im Verzeichnis /home/pi
Dementsprechend habe ich einen Platz fuer die Videospeicherung im Verzeichnis /home/pi/ring-videos angegeben
Im FHEM, die Readings von Ring_FrontDoor verweisen auf das richtige Verzeichnis:
lastDingVideo /home/pi/ring-videos/last_motion_video.mp4
Trotzdem bleibt die Datei last_motion_video.mp4 leer.
Ich habe probiert mit
sudo chown -R fhem: /home/pi/ring-videos/
sudo chown -R fhem: /home/pi/ring-videos/last_motion_video.mp4
sowie
sudo chown -R pi: /home/pi/ring-videos/
sudo chown -R pi: /home/pi/ring-videos/last_motion_video.mp4
Dies hat keine Aenderung gebracht.
Die readings zeigen auch, dass der Script versucht die Datei zu erstellen, trotzdem bleibt sie leer.
lastAlertType | motion | 2020-03-12 16:25:58 |
lastCaptureURL | False | 2020-03-12 16:25:58 |
lastDingVideo | /home/pi/ring-videos/last_motion_video.mp4 | 2020-03-12 16:25:58 |
Muss ich vielleicht ein Abo bei ring haben, damit Videos gespeichert werden?
Ausserdem habe ich noch eine Frage:
run_ring
Ich habe den Befehl geaendert auf process="
python3.7 /opt/fhem/bin/ring.py"
anstatt process="python /opt/fhem/bin/ring.py"process="python /opt/fhem/bin/ring.py" ?
Ich bin richtig, dass er mit Python 3.7 laufen soll, oder?
vg Manos
Moin,
ja, du brauchst zum speichern der Videos ein Ring-Abo, sonst rückt die API die gar nicht raus.
Gruß,
budy
Version 1.0.11 im Github. Es wird jetzt ein thread pro ring device erzeugt, welcher dann periodisch die infos des ring devices abfragt und in FHEM aktualisiert.
Dazu gibt es eine Konstante, mit der man das Intervall in Sekunden einstellen kann. Dann sollte es nicht mehr nötig sein, die ring.py überhaupt zu beenden...
Gruß,
budy
Moin budy,
hab grad deine v 1.0.11 eingepflegt. Läuft super!! Danke!!
Eine Frage zur run_ring, sobald die über den cronjob läuft mit
@reboot /opt/fhem/bin/run_ring
@hourly /opt/fhem/bin/run_ring
wird doch die ring.py alle Stunde neu gestartet.
Die Zeile,
pkill -9 -f ring.py
beendet den laufenden Prozess und startet diesen dann neu.
Kann man hier nicht eine Prüfung einbauen die schaut ob der Prozess läuft, und nix macht wenn er läuft?
So ähnlich wie das hier,
https://forum.fhem.de/index.php/topic,75754.msg881038.html#msg881038 (https://forum.fhem.de/index.php/topic,75754.msg881038.html#msg881038)
vg
pflock_y
Moin pflock_y,
ja, ich kann da mal was einbauen. Ich hab das für mich schon länger, dachte aber, dass das so einfach ist, dass sich das jeder auch selber machen kann. ;)
Meine ring.py läuft schon seit Tagen ohne Unterbechung - auch wenn mal die Ring API nicht antwortet oder aus welchem Grund auch immer nicht erreicht werden kann.
Gruß,
budy
OK, dann werd ich mich mal selbst dran versuchen, ist ja kein Hexenwerk. :D
vg
pflock_y
Zwei kleine Anpassungen und 1.0.11 läuft wirklich gut :D
# LOGGING
logger = logging.getLogger('ring_doorbell.doorbot'+'ring_doorbell.stickup_cam')
tmp = list(devs['doorbots']+devs['authorized_doorbots']+devs['stickup_cams'])
Vielleicht hat jemand noch einen Tipp für mich.
Ich würde die Videos gern auf einem NAS ablegen. Statt last_* würde ich gern Datum und Uhrzeit im Datennamen haben.
Irgendwie steh ich aber auf dem Schlauch.
Moin,
Zitat von: bluemevo am 14 März 2020, 21:34:05
Vielleicht hat jemand noch einen Tipp für mich.
Ich würde die Videos gern auf einem NAS ablegen. Statt last_* würde ich gern Datum und Uhrzeit im Datennamen haben.
Irgendwie steh ich aber auf dem Schlauch.
abgesehen von den rechtlichen Aspekten einer Langzeitspeicherung, gibt es da auch noch zumindest das Problem, dass mit dynamischen Dateinamen ein statischer link auf der FHEM-Seite nicht mehr funktionieren würde, von daher habe ich kein großes Interesse das einzubauen. Wenn du da was dran drehen möchtest, dann müsstest du irgendwie an die Funktion in Zeile 179 ran und entweder die Funktion ein zweites Mal mit einem anderen Zielpfad aufrufen, oder du überwachst den Ordner, wo die Videos hingeladen werden (Stichwort inotify) und copierst die dann selber weg.
Gruß,
budy
Hey Budy,
tolle Arbeit! Eine Frage, gibt es schon ein update zu den Snapshots? Ich würde mir diese gerne in FTUI anzeigen lassen!Schon mal vielen lieben Dank! Grüße Timo
Ich habe leider in der API noch nichts genaues zu den Snapshots gefunden. Da scheint es zwar einen Endpunkt für zu geben, aber soweit ich das sehen kann, hängt da nie was an Daten hinter.
Irgendwie über Reverse Engineering aus der Homebridge-Ring vielleicht möglich? Hier kommen die Snapshots nämlich an.
Dann könnte man jede Sekunde ein Snapshot laden und hätte zumindest das Ring Bild dauerhaft in der Anzeige so wie es im Prinzip mit dem Plugin auch in HomeKit schon geht!
Wenn du hier nochmal drüber schauen könntest wäre das echt Mega! Schonmal danke für deine Antwort, das letzte mal!
Grüße Timo
Guten Morgen
Hat jemand einen Tipp für mich, wie man das Logging reduzieren kann? Also die Menge des Logging.
Otto hatte mal etwas geschrieben, aber leider habe ich im Code bisher nichts gefunden, wo ich das reduzieren kann.
Bleibt gesund und viele Grüße
Marko
Moin,
Einfach in der ring.py ganz oben das log Level von debug auf Info ändern.
vg
pflock_y
Danke für Deine Antwort
Viele Grüße
Marko
Hallo zusammen,
sitze nun schon seit heute mittag an dieser Geschiche und komme nicht weiter.
Habe mit dieser Variante Python auf 3.74 upgedated https://installvirtual.com/install-python-3-7-on-raspberry-pi/ (https://installvirtual.com/install-python-3-7-on-raspberry-pi/)
Die Dateien ring.py und run_ring.sh liegen unter /home/pi
wenn ich
pip3.7 install git+https://github.com/tchellomello/python-ring-doorbell
eingebe, kommt
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting git+https://github.com/tchellomello/python-ring-doorbell
Cloning https://github.com/tchellomello/python-ring-doorbell to /tmp/pip-req-build-aq192q18
Collecting requests==2.22.0 (from ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/51/bd/23c926cd341ea6b7dd0b2a00aba99ae0f828be89d72b2190f27c11d4b7fb/requests-2.22.0-py2.py3-none-any.whl
Collecting requests-oauthlib==1.3.0 (from ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/a3/12/b92740d845ab62ea4edf04d2f4164d82532b5a0b03836d4d4e71c6f3d379/requests_oauthlib-1.3.0-py2.py3-none-any.whl
Collecting oauthlib==3.1.0 (from ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/05/57/ce2e7a8fa7c0afb54a0581b14a65b56e62b5759dbc98e80627142b8a3704/oauthlib-3.1.0-py2.py3-none-any.whl
Collecting pytz (from ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/e7/f9/f0b53f88060247251bf481fa6ea62cd0d25bf1b11a87888e53ce5b7c8ad2/pytz-2019.3-py2.py3-none-any.whl
Collecting idna<2.9,>=2.5 (from requests==2.22.0->ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/14/2c/cd551d81dbe15200be1cf41cd03869a46fe7226e7450af7a6545bfc474c9/idna-2.8-py2.py3-none-any.whl
Collecting urllib3!=1.25.0,!=1.25.1,<1.26,>=1.21.1 (from requests==2.22.0->ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/e8/74/6e4f91745020f967d09332bb2b8b9b10090957334692eb88ea4afe91b77f/urllib3-1.25.8-py2.py3-none-any.whl
Collecting certifi>=2017.4.17 (from requests==2.22.0->ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/57/2b/26e37a4b034800c960a00c4e1b3d9ca5d7014e983e6e729e33ea2f36426c/certifi-2020.4.5.1-py2.py3-none-any.whl
Collecting chardet<3.1.0,>=3.0.2 (from requests==2.22.0->ring-doorbell==0.6.0)
Using cached https://files.pythonhosted.org/packages/bc/a9/01ffebfb562e4274b6487b4bb1ddec7ca55ec7510b22e4c51f14098443b8/chardet-3.0.4-py2.py3-none-any.whl
Installing collected packages: idna, urllib3, certifi, chardet, requests, oauthlib, requests-oauthlib, pytz, ring-doorbell
Could not install packages due to an EnvironmentError: [Errno 13] Keine Berechtigung: '/usr/local/lib/python3.7/site-packages/idna'
Consider using the `--user` option or check the permissions.
You are using pip version 19.0.3, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
wenn ich
pip3.7 install fhem
eingebe, kommt
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting fhem
Using cached https://www.piwheels.org/simple/fhem/fhem-0.6.5-py2.py3-none-any.whl
Installing collected packages: fhem
Could not install packages due to an EnvironmentError: [Errno 13] Keine Berechtigung: '/usr/local/lib/python3.7/site-packages/fhem-0.6.5.dist-info'
Consider using the `--user` option or check the permissions.
You are using pip version 19.0.3, however version 20.0.2 is available.
You should consider upgrading via the 'pip install --upgrade pip' command.
Habe gemäß diesem Hinweis von Otto mal probiert und es funktioniert
Zitat von: Otto123 am 16 März 2019, 12:54:15
geht im Terminal vom Pi so etwas:
perl /opt/fhem/fhem.pl 7072 "list Ring_Haustuer"
perl /opt/fhem/fhem.pl 7072 "set Ring_Haustuer willi"
perl /opt/fhem/fhem.pl 7072 "setreading Ring_Haustuer Testreading Wert"
Bin auch verwirrt was sie verschiedenen Versionen angeht.
Woran erkenne ich ob ich V1.0.11 habe.
Hatte mich so drauf gefreut >:( :(
Liebe Grüße
Ralf
Würde mit dem Modul auch die Ring Spotlight Cam funktionieren https://www.amazon.de/dp/B076B3TB33/ref=cm_sw_em_r_mt_ (https://www.amazon.de/dp/B076B3TB33/ref=cm_sw_em_r_mt_)?
Moin,
ja, es sollten alle Ring-Devices funktionieren. Welche Devices aus der API geholt werden, steht unten in:
tmp = list(devs['doorbots']+devs['authorized_doorbots'])
Wie das Device in der API heisst, steht hoffentlich in der Lib, aber da bin ich mir nicht so ganz sicher. Es gibt einen Issue, neue Ring-Devices hinzuzufügen.
Zitat von: TimoD am 28 März 2020, 22:20:15
Irgendwie über Reverse Engineering aus der Homebridge-Ring vielleicht möglich? Hier kommen die Snapshots nämlich an.
Dann könnte man jede Sekunde ein Snapshot laden und hätte zumindest das Ring Bild dauerhaft in der Anzeige so wie es im Prinzip mit dem Plugin auch in HomeKit schon geht!
Wenn du hier nochmal drüber schauen könntest wäre das echt Mega! Schonmal danke für deine Antwort, das letzte mal!
Grüße Timo
Snapshots kommen demnächst - bei mir gehen sie schon, aber ich will das noch ein wenig nacharbeiten. Außerdem muss wohl aktuell die Lib gepatcht werden, was aber nur 2 Zeilen sind - zumindest in der doorbot.py.
Gruß,
budy
Moin,
Zitat von: Kuehnhackel am 09 April 2020, 21:48:37
Habe gemäß diesem Hinweis von Otto mal probiert und es funktioniert
Bin auch verwirrt was sie verschiedenen Versionen angeht.
Woran erkenne ich ob ich V1.0.11 habe.
die Versionsnummer steht am Anfang des Python-Skripts. Außerdem hast du wohl versucht pip37 nicht als User root oder zumindest mit super-user Rechten (sudo) zu installieren. Dadurch hat pip37 die Lib gar nicht installiert...
Gruß,
budy
Moin,
Version 1.0.12 ist jetzt im Github online. Diese Version lädt in der Routine, welche auch die Readings in FHEM aktualisiert einen aktuellen Snapshot Namens snap.png herunter und platziert ihn im selben Verzeichnis wie die Videos. Damit das funktioniert muss die python-ring Lib gepatcht werden, so wie es hier https://github.com/tchellomello/python-ring-doorbell/pull/196/files (https://github.com/tchellomello/python-ring-doorbell/pull/196/files) beschrieben ist.
Im Grunde müssen nur zwei Zeilen angepasst werden... Sollte mal der Download eines Snapshots nicht funktionieren, dann wird im Log ausgegeben, was das Skript stattdessen beommen hat. Ich hatte diesen Fall ein paar Mal, aber nicht mehr seit ich das Logging und die Exception eingebaut habe...
Gruß,
budy
Hallo :-)
Fehlt da nicht ne Klammer zu in Zeile 255?
logger.info("Snapshot: " + str(snapshot)
Snapshots werden nicht abgelegt und Readings auch nicht mehr upgedatet...
Gruss Jan
Zitat von: JF Mennedy am 24 April 2020, 11:39:47
Hallo :-)
Fehlt da nicht ne Klammer zu in Zeile 255?
logger.info("Snapshot: " + str(snapshot)
Snapshots werden nicht abgelegt und Readings auch nicht mehr upgedatet...
Gruss Jan
Ja... danke. Das kommt davon, wenn man noch kurz vor Update was ändert... ist im Master gefixt.
Gruß,
budy
Bekomme jetzt noch diesen Fehler:
Unhandled exception in thread started by <function fhemReadingsUpdate at 0x7f8e47310378>
Traceback (most recent call last):
File "/opt/fhem/ring-fhem/ring.py", line 262, in downloadSnapshot
snapshot = dev.get_snapshot()
File "/home/jan/.local/lib/python3.7/site-packages/ring_doorbell/doorbot.py", line 418, in get_snapshot
if response["timestamps"][0]["timestamp"] / 1000 > request_time:
IndexError: list index out of range
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/ring-fhem/ring.py", line 257, in fhemReadingsUpdate
downloadSnapshot(dev)
File "/opt/fhem/ring-fhem/ring.py", line 268, in downloadSnapshot
logger.info("Snapshot: " + str(snapshot))
UnboundLocalError: local variable 'snapshot' referenced before assignment
Den Patch wie beschrieben in der python-ring Lib habe ich wie beschrieben gemacht...
Gruss Jan
Hmm... na ja, das Problem ist aber dennoch deine Lib, denn die bricht ab und dann ist snapshot in der ring.py nicht mal initialisiert, weil ja die Lib entweder das Bild oder halt false zurückgeben müsste. Da musst du nochmal in die Zeile 416 schauen, wo ja die Änderung gewesen ist:
response = self._ring.query(url, method="POST", json=payload).json()
Ich könnte auch snapshot generell mit false vorbelegen, aber das würde dein Problem nicht lösen.
Gruß,
budy
OK dann schau ich mir das mal an...
Gesendet von meinem VOG-L29 mit Tapatalk
Ich habe eben nochmal ein Update im Master gemacht, welches snapshot immer zuerst mit False initialisiert. Dadurch sollte das Skript nicht abbrechen, wenn die ring_doorbell lib nichts zurückliefert.
Gruß,
budy
Ich habe übrigens gerade eher zufällig festgestellt, dass mein Echo Show versucht, selbstständig - also ohne, dass ich ihn dazu auffordere - das Bild der Kamera anzuzeigen, sobald die Klingel betätigt wird. Er bricht dann zwar nach ein paar Sekunden erfolglos ab, aber das sieht für mich so aus, als wenn die Funktion nun endlich bald ins Haus stünde.
EDIT: Dass man für den Video-Download ein Abo braucht, weiß ich. Brauche ich das Abo auch für die Snapshots?
LG
Oli
Na ja, wenn man in FHEM einen SIP-Client hätte, den man einklinken könnte, dann würde das auch in FHEM gehen, denn die SIP-URI wird ja immer mitgeliefert - auch wenn man kein Abo hat. Dass ein Amazon-Gerät das versucht, ohne dass man da einen Skill für installiert hat, finde ich zwar schon frech, aber Ring gehört ja Amazon...
Ob man für die Snapshot-Funktion ein Abo braucht, weiß ich gar nicht, wenn es ja, dann sollte da in der Datei am Ende ja eine Fehlermeldung stehen... - auch wenn FHEM die als Bild nicht anzeigen kann.
Gruß,
Budy
Zitat von: budy am 29 April 2020, 19:36:04
Na ja, wenn man in FHEM einen SIP-Client hätte, den man einklinken könnte, dann würde das auch in FHEM gehen, denn die SIP-URI wird ja immer mitgeliefert - auch wenn man kein Abo hat. Dass ein Amazon-Gerät das versucht, ohne dass man da einen Skill für installiert hat, finde ich zwar schon frech, aber Ring gehört ja Amazon...
Nee, da hast Du mich falsch verstanden. Ich nutze den Ring Skill auf dem Show. Nur war es bisher immer so, dass der Echo Show zwar gemeldet hat, wenn jemand geklingelt hat, man aber Alexa immer noch auffordern musste, das Bild der Kamera anzuzeigen. Nun ist es so (wie von vielen seit Ewigkeiten gewünscht), dass der Show automatisch das Bild der Kamera anzeigt, sobald jemand klingelt.
Zitat
Ob man für die Snapshot-Funktion ein Abo braucht, weiß ich gar nicht, wenn es ja, dann sollte da in der Datei am Ende ja eine Fehlermeldung stehen... - auch wenn FHEM die als Bild nicht anzeigen kann.
Im Log bekomme ich die Meldung
Snapshot: False
Also gehe ich davon aus, dass man wohl ein Abo braucht für den Snapshot. Schade eigentlich.
LG
Oli
Für den Snapshot ist offenbar ein Abo nötig. Ich habe mal testweise eines abgeschlossen und bekomme den Snap jetzt.
Kann es sei, dass dieser Snapshot aber nicht eine Aufnahme des jeweiligen Ereignisses (motion, ring) ist, sondern eher die Aufnahmen, die die Kamera periodisch zwischen den Ereignissen macht?
LG
Oli
Die Motion-Videos werden ja sowieso immer runtergeladen, wenn sie verfügbar sind. Einen Snapshot kann man jederzeit von der API anfordern. Ich habe das nur erst mal so umgesetzt, dass das Skript das tut, wenn es die FHEM-Readings aktualisiert. Es läuft also unabhängig von den Motion- oder Ring-Ereignissen.
Gruß,
budy
Zitat von: budy am 30 April 2020, 20:31:39Einen Snapshot kann man jederzeit von der API anfordern.
Das hört sich auf jeden Fall interessant an. Da die Ring-App ja unverständlicherweise keinen Snapshot mitschickt, sobald geklingelt wird oder eine Bewegung erkannt wird, wäre es doch schön, wenn man das mit FHEM umsetzen könnte. Pushover erlaubt ja mittlerweile den Versand von Anhängen.
LG
Oli
Na ja... den Snapshot von der API zu bekommen dauert auch ein paar Sekunden. Selbst wenn du den dann per Pushover sendest, ist der Mensch der geklingelt hat, ggf. schon wieder weg. Ich kann aber mal schauen, ob ich nicht auch noch Snaps für Ding- und Motion-Events einbaue, die könnte man dann "weiterverwenden".
Gruß,
budy
Zitat von: budy am 02 Mai 2020, 17:45:28
Ich kann aber mal schauen, ob ich nicht auch noch Snaps für Ding- und Motion-Events einbaue, die könnte man dann "weiterverwenden".
Das wäre cool.
Gruß & einen schönen Sonntag,
Tobi
Snapshots gehen bei mir noch gar nicht... Im log steht no connection to ring api, continueing... Hatte die doorbot.py nochmal neu installiert und das Patch gemacht, aber irgendwo hakt es noch... Ich habe ein ring Abo, falls die Frage kommt... Schönes Restwochenende noch, Gruß Jan
Gesendet von meinem VOG-L29 mit Tapatalk
Zitat von: onkel-tobi am 03 Mai 2020, 08:36:46
Das wäre cool.
Gruß & einen schönen Sonntag,
Tobi
Ja, wäre... ist es aber leider nicht. Wenn ein Motion- oder Ding-Event ausgelöst wurde kann ich über die Lib/API keine Snapshots holen. Schade... aber ich habe dafür mal ein Issue in Githup Repo der Lib aufgemacht. Mal sehen, ob das wirklich nicht geht, oder ob das ein Implementierungsfehler ist. Immerhin sender die API ja den SIP-Feed, den man sich holen könnte, es gibt also nicht unbedingt einen Grund einen Snapshot zu holen - zumindest könnte Ring so argumentieren...
Wenn sich da was tut, gibt's ein Update dazu.
Gruß,
budy
Zitat von: JF Mennedy am 03 Mai 2020, 09:47:53
Snapshots gehen bei mir noch gar nicht... Im log steht no connection to ring api, continueing... Hatte die doorbot.py nochmal neu installiert und das Patch gemacht, aber irgendwo hakt es noch... Ich habe ein ring Abo, falls die Frage kommt... Schönes Restwochenende noch, Gruß Jan
Du müsstest noch mal die Ausgabe des Skripts posten... so kann ich nicht sagen, wo es haken könnte. Und poste auch mal den Code aus der doorbot.py, speziell die Funktion get_snapshot. Bei mir sieht die aktuell so aus:
def get_snapshot(self, retries=3, delay=1):
"""Take a snapshot and download it"""
url = SNAPSHOT_TIMESTAMP_ENDPOINT
payload = {"doorbot_ids": [self._attrs.get("id")]}
self._ring.query(url, method="POST", json=payload)
request_time = time.time()
for _ in range(retries):
time.sleep(delay)
response = self._ring.query(url, method="POST", json=payload).json()
if response["timestamps"][0]["timestamp"] / 1000 > request_time:
return self._ring.query(
SNAPSHOT_ENDPOINT.format(self._attrs.get("id"), raw=True)
).content
return False
Gruß,
budy
Die Ausgabe der ring.py ist folgendes:
2020-05-11 17:33:39,161 - fhem_ring - INFO - Found 1 devices.
2020-05-11 17:33:39,341 - fhem_ring - INFO - Polling for events
2020-05-11 17:33:39,702 - fhem_ring - INFO - Updating device data for device 'Haustuer' in FHEM...
2020-05-11 17:33:40,966 - fhem_ring - INFO - Haustuer has no connection to ring API, continueing...
2020-05-11 17:33:40,966 - fhem_ring - INFO - Snapshot: True
Die Doorbot.py sieht flgenermassen aus:
# coding: utf-8
# vim:sw=4:ts=4:et:
"""Python Ring Doorbell wrapper."""
import logging
from datetime import datetime
import os
import time
import pytz
from ring_doorbell.generic import RingGeneric
from ring_doorbell.const import (
DOORBELLS_ENDPOINT,
DOORBELL_VOL_MIN,
DOORBELL_VOL_MAX,
DOORBELL_EXISTING_TYPE,
DINGS_ENDPOINT,
DOORBELL_KINDS,
DOORBELL_2_KINDS,
DOORBELL_PRO_KINDS,
DOORBELL_ELITE_KINDS,
FILE_EXISTS,
LIVE_STREAMING_ENDPOINT,
MSG_BOOLEAN_REQUIRED,
MSG_EXISTING_TYPE,
MSG_VOL_OUTBOUND,
PEEPHOLE_CAM_KINDS,
SNAPSHOT_ENDPOINT,
SNAPSHOT_TIMESTAMP_ENDPOINT,
URL_DOORBELL_HISTORY,
URL_RECORDING,
DEFAULT_VIDEO_DOWNLOAD_TIMEOUT,
HEALTH_DOORBELL_ENDPOINT,
)
_LOGGER = logging.getLogger(__name__)
class RingDoorBell(RingGeneric):
"""Implementation for Ring Doorbell."""
def __init__(self, ring, device_id, shared=False):
super(RingDoorBell, self).__init__(ring, device_id)
self.shared = shared
@property
def family(self):
"""Return Ring device family type."""
return "authorized_doorbots" if self.shared else "doorbots"
def update_health_data(self):
"""Update health attrs."""
self._health_attrs = (
self._ring.query(HEALTH_DOORBELL_ENDPOINT.format(self.id))
.json()
.get("device_health", {})
)
@property
def model(self):
"""Return Ring device model name."""
if self.kind in DOORBELL_KINDS:
return "Doorbell"
if self.kind in DOORBELL_2_KINDS:
return "Doorbell 2"
if self.kind in DOORBELL_PRO_KINDS:
return "Doorbell Pro"
if self.kind in DOORBELL_ELITE_KINDS:
return "Doorbell Elite"
if self.kind in PEEPHOLE_CAM_KINDS:
return "Peephole Cam"
return None
def has_capability(self, capability):
"""Return if device has specific capability."""
if capability == "battery":
return self.kind in (DOORBELL_KINDS + DOORBELL_2_KINDS + PEEPHOLE_CAM_KINDS)
if capability == "knock":
return self.kind in PEEPHOLE_CAM_KINDS
if capability == "volume":
return True
return False
@property
def battery_life(self):
"""Return battery life."""
value = 0
if "battery_life_2" in self._attrs:
# Camera has two battery bays
if self._attrs.get("battery_life") is not None:
# Bay 1
value += int(self._attrs.get("battery_life"))
if self._attrs.get("battery_life_2") is not None:
# Bay 2
value += int(self._attrs.get("battery_life_2"))
return value
# Camera has a single battery bay
# Latest stickup cam can be externally powered
if self._attrs.get("battery_life") is not None:
value = int(self._attrs.get("battery_life"))
if value and value > 100:
value = 100
return value
@property
def existing_doorbell_type(self):
"""
Return existing doorbell type.
0: Mechanical
1: Digital
2: Not Present
"""
try:
return DOORBELL_EXISTING_TYPE[
self._attrs.get("settings").get("chime_settings").get("type")
]
except AttributeError:
return None
@existing_doorbell_type.setter
def existing_doorbell_type(self, value):
"""
Return existing doorbell type.
0: Mechanical
1: Digital
2: Not Present
"""
if value not in DOORBELL_EXISTING_TYPE.keys():
_LOGGER.error("%s", MSG_EXISTING_TYPE)
return False
params = {
"doorbot[description]": self.name,
"doorbot[settings][chime_settings][type]": value,
}
if self.existing_doorbell_type:
url = DOORBELLS_ENDPOINT.format(self.id)
self._ring.query(url, extra_params=params, method="PUT")
self._ring.update_devices()
return True
return None
@property
def existing_doorbell_type_enabled(self):
"""Return if existing doorbell type is enabled."""
if self.existing_doorbell_type:
if self.existing_doorbell_type == DOORBELL_EXISTING_TYPE[2]:
return None
return self._attrs.get("settings").get("chime_settings").get("enable")
return False
@existing_doorbell_type_enabled.setter
def existing_doorbell_type_enabled(self, value):
"""Enable/disable the existing doorbell if Digital/Mechanical."""
if self.existing_doorbell_type:
if not isinstance(value, bool):
_LOGGER.error("%s", MSG_BOOLEAN_REQUIRED)
return None
if self.existing_doorbell_type == DOORBELL_EXISTING_TYPE[2]:
return None
params = {
"doorbot[description]": self.name,
"doorbot[settings][chime_settings][enable]": value,
}
url = DOORBELLS_ENDPOINT.format(self.id)
self._ring.query(url, extra_params=params, method="PUT")
self._ring.update_devices()
return True
return False
@property
def existing_doorbell_type_duration(self):
"""Return duration for Digital chime."""
if self.existing_doorbell_type:
if self.existing_doorbell_type == DOORBELL_EXISTING_TYPE[1]:
return self._attrs.get("settings").get("chime_settings").get("duration")
return None
@existing_doorbell_type_duration.setter
def existing_doorbell_type_duration(self, value):
"""Set duration for Digital chime."""
if self.existing_doorbell_type:
if not (
(isinstance(value, int))
and (DOORBELL_VOL_MIN <= value <= DOORBELL_VOL_MAX)
):
_LOGGER.error(
"%s", MSG_VOL_OUTBOUND.format(DOORBELL_VOL_MIN, DOORBELL_VOL_MAX)
)
return False
if self.existing_doorbell_type == DOORBELL_EXISTING_TYPE[1]:
params = {
"doorbot[description]": self.name,
"doorbot[settings][chime_settings][duration]": value,
}
url = DOORBELLS_ENDPOINT.format(self.id)
self._ring.query(url, extra_params=params, method="PUT")
self._ring.update_devices()
return True
return None
def history(
self,
limit=30,
timezone=None,
kind=None,
enforce_limit=False,
older_than=None,
retry=8,
):
"""
Return history with datetime objects.
:param limit: specify number of objects to be returned
:param timezone: determine which timezone to convert data objects
:param kind: filter by kind (ding, motion, on_demand)
:param enforce_limit: when True, this will enforce the limit and kind
:param older_than: return older objects than the passed event_id
:param retry: determine the max number of attempts to archive the limit
"""
queries = 0
original_limit = limit
# set cap for max queries
if retry > 10:
retry = 10
while True:
params = {"limit": str(limit)}
if older_than:
params["older_than"] = older_than
url = URL_DOORBELL_HISTORY.format(self.id)
response = self._ring.query(url, extra_params=params).json()
# cherrypick only the selected kind events
if kind:
response = list(filter(lambda array: array["kind"] == kind, response))
# convert for specific timezone
utc = pytz.utc
if timezone:
mytz = pytz.timezone(timezone)
for entry in response:
dt_at = datetime.strptime(entry["created_at"], "%Y-%m-%dT%H:%M:%S.000Z")
utc_dt = datetime(
dt_at.year,
dt_at.month,
dt_at.day,
dt_at.hour,
dt_at.minute,
dt_at.second,
tzinfo=utc,
)
if timezone:
tz_dt = utc_dt.astimezone(mytz)
entry["created_at"] = tz_dt
else:
entry["created_at"] = utc_dt
if enforce_limit:
# return because already matched the number
# of events by kind
if len(response) >= original_limit:
return response[:original_limit]
# ensure the loop will exit after max queries
queries += 1
if queries == retry:
_LOGGER.debug(
"Could not find total of %s of kind %s", original_limit, kind
)
break
# ensure the kind objects returned to match limit
limit = limit * 2
else:
break
return response
@property
def last_recording_id(self):
"""Return the last recording ID."""
try:
return self.history(limit=1)[0]["id"]
except (IndexError, TypeError):
return None
@property
def live_streaming_json(self):
"""Return JSON for live streaming."""
url = LIVE_STREAMING_ENDPOINT.format(self.id)
req = self._ring.query(url, method="POST")
if req and req.status_code == 204:
url = DINGS_ENDPOINT
try:
return self._ring.query(url).json()[0]
except (IndexError, TypeError):
pass
return None
def recording_download(
self,
recording_id,
filename=None,
override=False,
timeout=DEFAULT_VIDEO_DOWNLOAD_TIMEOUT,
):
"""Save a recording in MP4 format to a file or return raw."""
if not self.has_subscription:
msg = "Your Ring account does not have an active subscription."
_LOGGER.warning(msg)
return False
url = URL_RECORDING.format(recording_id)
try:
# Video download needs a longer timeout to get the large video file
req = self._ring.query(url, timeout=timeout)
if req and req.status_code == 200:
if filename:
if os.path.isfile(filename) and not override:
_LOGGER.error("%s", FILE_EXISTS.format(filename))
return False
with open(filename, "wb") as recording:
recording.write(req.content)
return True
else:
return req.content
except IOError as error:
_LOGGER.error("%s", error)
raise
return False
def recording_url(self, recording_id):
"""Return HTTPS recording URL."""
if not self.has_subscription:
msg = "Your Ring account does not have an active subscription."
_LOGGER.warning(msg)
return False
url = URL_RECORDING.format(recording_id)
req = self._ring.query(url)
if req and req.status_code == 200:
return req.url
return False
@property
def subscribed(self):
"""Return if is online."""
result = self._attrs.get("subscribed")
if result is None:
return False
return True
@property
def subscribed_motion(self):
"""Return if is subscribed_motion."""
result = self._attrs.get("subscribed_motions")
if result is None:
return False
return True
@property
def has_subscription(self):
"""Return boolean if the account has subscription."""
return self._attrs.get("features").get("show_recordings")
@property
def volume(self):
"""Return volume."""
return self._attrs.get("settings").get("doorbell_volume")
@volume.setter
def volume(self, value):
if not (
(isinstance(value, int)) and (DOORBELL_VOL_MIN <= value <= DOORBELL_VOL_MAX)
):
_LOGGER.error(
"%s", MSG_VOL_OUTBOUND.format(DOORBELL_VOL_MIN, DOORBELL_VOL_MAX)
)
return False
params = {
"doorbot[description]": self.name,
"doorbot[settings][doorbell_volume]": str(value),
}
url = DOORBELLS_ENDPOINT.format(self.id)
self._ring.query(url, extra_params=params, method="PUT")
self._ring.update_devices()
return True
@property
def connection_status(self):
"""Return connection status."""
return self._attrs.get("alerts").get("connection")
def get_snapshot(self, retries=3, delay=1):
"""Take a snapshot and download it"""
url = SNAPSHOT_TIMESTAMP_ENDPOINT
payload = {"doorbot_ids": [self._attrs.get("id")]}
self._ring.query(url, method="POST", json=payload)
request_time = time.time()
for _ in range(retries):
time.sleep(delay)
response = self._ring.query(url, method="POST", json=payload).json()
if response["timestamps"][0]["timestamp"] / 1000 > request_time:
return self._ring.query(
SNAPSHOT_ENDPOINT.format(self._attrs.get("id"), raw=True)
).content
return False
Irgendwie sieht es so aus, dass sich die API nicht mit meiner Klingel verbinden kann...
Gruss Jan
"Haustuer has no connection to ring API, continueing..."
bedeutet, dass die Ring API (also, die Ring Server ) nicht antworten, bzw. das Skript in einen Timeout läuft, während es auf eine Antwort der Ring API gewartet hat. Hast du für FHEM einen Ring Gast/"Nachbar"-Account aufgesetzt und hast du mal den Token Cache gelöscht, so dass du dich als USer/PW anmelden musstest?
Gruß,
budy
Das war es leider auch nicht... Habe den Token mal gelöscht und neu angelegt und auch mal versucht mich mit Haupt-Account und Gast-Account anzumelden...
Hallo zusammen,
Vielen Dank für diese klasse Umsetzung.
Ich habe sie "grundsätzlich" zum Laufen gebracht. Es werden alle Readings gesetzt und ich habe das Script auch erweitert, das es die Readings der Türklingel und der Kameras periodisch setzt.
Ich habe eine Ring-Türklingel und 5 zusätzliche Kameras.
Leider scheint die Umstellung mit den Threads (Meine Vermutung) nicht ganz korrekt zu laufen (zumindest bei mir) - die Geräte werden bei "Motions" irgendwie vertauscht. Bewegung in der Einfahrt löst ein Motion auf dem Balkon aus... Haustür-Doorbell Bewegung löst ein Motion auf der Terrasse aus usw...
Ich habe dann das Script in 2 Skripte getrennt - einmal Haustür-Doorbell und dann nochmal eines für die Cams. Dachte, vielleicht hilft das...
Jetzt läuft die Doorbell sauber, die Kameras vertauschen aber immer noch die Geräte...
Hat das noch jemand? Hat jemand eine Idee?
Viele Grüße Stefan
Hallo, versuche jetzt schon seit einiger Zeit Fhem mit Doorbell 2 zu verknüpfen.
Wenn ich unter :/opt/fhem/bin den Befehl python ring.py absetze kommt folgende Meldung:
Traceback (most recent call last):
File "ring.py", line 22, in <module>
fh = logging.FileHandler('ring.log')
File "/usr/lib/python2.7/logging/__init__.py", line 913, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python2.7/logging/__init__.py", line 943, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/opt/fhem/bin/ring.log'
Ich bekomme auch keine Log-Datei in das Verzeichnis.
Die Rechte sind folgendermaßen gesetzt:
drwxr-xr-x 2 fhem dialout 4096 Mai 21 22:01 .
drwxr-xr-x 17 fhem dialout 4096 Mai 20 19:36 ..
-rwxrwxrwx 1 fhem dialout 5200 Mai 21 16:26 ring.py
-rwxrwxrwx 1 fhem dialout 303 Mai 21 22:01 run_ring
In der ring.py habe ich bei ring_user und ring_pass die Daten in Hochkomma geschrieben. Die fhem_ip habe ich in Hochkomma bei 127.0.0.1 belassen.
Ich komme hier nicht mehr weiter - wäre für jede Hilfe dankbar!
Gruss Maik
Zitat von: darkblue-ac am 16 Mai 2020, 21:16:05
Hallo zusammen,
Vielen Dank für diese klasse Umsetzung.
Ich habe sie "grundsätzlich" zum Laufen gebracht. Es werden alle Readings gesetzt und ich habe das Script auch erweitert, das es die Readings der Türklingel und der Kameras periodisch setzt.
Ich habe eine Ring-Türklingel und 5 zusätzliche Kameras.
Leider scheint die Umstellung mit den Threads (Meine Vermutung) nicht ganz korrekt zu laufen (zumindest bei mir) - die Geräte werden bei "Motions" irgendwie vertauscht. Bewegung in der Einfahrt löst ein Motion auf dem Balkon aus... Haustür-Doorbell Bewegung löst ein Motion auf der Terrasse aus usw...
Ich habe dann das Script in 2 Skripte getrennt - einmal Haustür-Doorbell und dann nochmal eines für die Cams. Dachte, vielleicht hilft das...
Jetzt läuft die Doorbell sauber, die Kameras vertauschen aber immer noch die Geräte...
Hat das noch jemand? Hat jemand eine Idee?
Viele Grüße Stefan
Moin Stefan,
wenn du das Debug Log aktivierst, dann bekommst du das Event angezeigt und dort steht ja drin, welches Ring Device die Meldung ausgelöst hat. Ich habe überhaupt nur ein Gerät und deshalb auch gar keine sinnvolle Möglichkeit das zu testen. Auf alle Fälle ist es so, dass alle angeschlossenen "Ring-Abonnenten" immer alle Events bekommen. Das Skript unterscheidet das aber aktuell überhaupt nicht. Wie sollte es das auch, da es ja nicht wissen kann, für welche Ring-Devices es in FHEM entsprechende FHEM-Devices gibt. Du müsstest das dann in FHEM selber lösen und dort eine Art Meta-Ring Device machen, welches dann je nach übermittelten Ring-Device seinerseits das Event an das korrekte FHEM-Device "weiterleitet". Für mich ist das entschieden zu viel Aufwand, für etwas, was ich nicht benutzen würde.
Gruß,
budy
Zitat von: mnennstiel am 22 Mai 2020, 12:04:44
Traceback (most recent call last):
File "ring.py", line 22, in <module>
fh = logging.FileHandler('ring.log')
File "/usr/lib/python2.7/logging/__init__.py", line 913, in __init__
StreamHandler.__init__(self, self._open())
File "/usr/lib/python2.7/logging/__init__.py", line 943, in _open
stream = open(self.baseFilename, self.mode)
IOError: [Errno 13] Permission denied: '/opt/fhem/bin/ring.log'
Ich bekomme auch keine Log-Datei in das Verzeichnis.
Die Rechte sind folgendermaßen gesetzt:
drwxr-xr-x 2 fhem dialout 4096 Mai 21 22:01 .
drwxr-xr-x 17 fhem dialout 4096 Mai 20 19:36 ..
-rwxrwxrwx 1 fhem dialout 5200 Mai 21 16:26 ring.py
-rwxrwxrwx 1 fhem dialout 303 Mai 21 22:01 run_ring
Da Skript läuft nur mit Python ab 3.5+...! Die Sache mit den Permissions auf dem Ordner ist noch ein anderes Problem, da musst du auf alle Fälle auch die Berechtigung des Ordners selber anschauen: opt/fhem/bin
Gruß,
budy
Hallo budy,
dem Verzeichnis /opt/fhem/bin habe ich alle Rechte gegeben und es dem Benutzer fhem:dialout zugeordnet.
Den Script starte ich mit python3 (Python 3.5) ring.py und dabei jetzt kommt folgende Fehlermeldung:
pi@Raspberry-PI3B-plus:/opt/fhem/bin $ python3 ring.py
Traceback (most recent call last):
File "ring.py", line 5, in <module>
from thread import start_new_thread, allocate_lock
ImportError: No module named 'thread'
Was mache ich noch falsch?
Gruss Maik
Zitat von: budy am 22 Mai 2020, 14:45:22
Moin Stefan,
wenn du das Debug Log aktivierst, dann bekommst du das Event angezeigt und dort steht ja drin, welches Ring Device die Meldung ausgelöst hat. Ich habe überhaupt nur ein Gerät und deshalb auch gar keine sinnvolle Möglichkeit das zu testen. Auf alle Fälle ist es so, dass alle angeschlossenen "Ring-Abonnenten" immer alle Events bekommen. Das Skript unterscheidet das aber aktuell überhaupt nicht. Wie sollte es das auch, da es ja nicht wissen kann, für welche Ring-Devices es in FHEM entsprechende FHEM-Devices gibt. Du müsstest das dann in FHEM selber lösen und dort eine Art Meta-Ring Device machen, welches dann je nach übermittelten Ring-Device seinerseits das Event an das korrekte FHEM-Device "weiterleitet". Für mich ist das entschieden zu viel Aufwand, für etwas, was ich nicht benutzen würde.
Gruß,
budy
Vielen Dank für deine Antwort...
Ich werde sie noch ein paar mal lesen müssen und dann mal schauen, wie ich das umgesetzt bekomme. Melde mich dann nochmal :)
Gruß Stefan
Zitat von: mnennstiel am 24 Mai 2020, 13:25:11
Hallo budy,
dem Verzeichnis /opt/fhem/bin habe ich alle Rechte gegeben und es dem Benutzer fhem:dialout zugeordnet.
Den Script starte ich mit python3 (Python 3.5) ring.py und dabei jetzt kommt folgende Fehlermeldung:
pi@Raspberry-PI3B-plus:/opt/fhem/bin $ python3 ring.py
Traceback (most recent call last):
File "ring.py", line 5, in <module>
from thread import start_new_thread, allocate_lock
ImportError: No module named 'thread'
Was mache ich noch falsch?
Gruss Maik
Kann mir irgendjemand weiterhelfen?
Moin,
Hast du es so installiert wie hier:
https://github.com/budachst/ring-fhem (https://github.com/budachst/ring-fhem)
Beschrieben?
vg
pflock_y
—————
kurz da mobil
Zitat von: pflock_y am 27 Mai 2020, 07:35:59
Moin,
Hast du es so installiert wie hier:
https://github.com/budachst/ring-fhem (https://github.com/budachst/ring-fhem)
Beschrieben?
—————
kurz da mobil
Hallo pflock_y,
ja ich bin nach dem Installationsbeschreibung gegangen. Ich hatte python 3.5 am laufen - damit scheint es nicht mehr zu gehen.
Habe jetzt gleich Python 3.8 parallel installiert und damit die Installation durchgeführt - sie hat funktioniert.
Wenn ich die ring.py von hand mit python ring.py starte, läuft ring.py und Meldungen von der Klingel kommen auch rein (s.Bild).
Aber irgendwie schein mein crontab nicht zu laufen. Ich habe ihn in /etc crontab -e folgende Zeilen hinzugefügt:
@reboot /opt/fhem/bin/run-ring
@hourly /opt/fhem/bin/run-ring
meine run_ring sieht so aus:
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process=/opt/fhem/bin/ring.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup bash -c "python $process" >/dev/null &
echo "Process $process started."
fi
exit
Berechtigung vom Verzeichnis:
pi@Raspberry-PI3B-plus:/opt/fhem/bin $ ls -la
insgesamt 44
drwxrwxrwx 2 fhem dialout 4096 Mai 27 23:26 .
drwxr-xr-x 17 fhem dialout 4096 Mai 26 22:46 ..
-rwxrwxrwx 1 fhem dialout 14791 Mai 27 23:13 ring.log
-rwxrwxrwx 1 fhem dialout 10187 Mai 27 20:19 ring.py
-rw-r--r-- 1 pi pi 966 Mai 27 22:59 ring_token.cache
-rwxrwxrwx 1 fhem dialout 312 Mai 27 22:52 run_ring
In meine FHEM Oberfläche kommen auch keine Signale in den Dummy rein ?! Wo liegt der Fehler?
Gruß Maik
Rufe mal in der run_ring den Prozess so auf : process="python3 /opt/fhem/bin/ring.py"
So läuft bei mir...
Gesendet von meinem VOG-L29 mit Tapatalk
Zitat von: JF Mennedy am 28 Mai 2020, 07:33:46
Rufe mal in der run_ring den Prozess so auf : process="python3 /opt/fhem/bin/ring.py"
So läuft bei mir...
Gesendet von meinem VOG-L29 mit Tapatalk
Hallo JF Mennedy,
nein, das ist es nicht. Ich habe vorher mit dem Befehl "echo "alias python=/usr/local/bin/python3.8" >> ~/.bashrc" und "source ~/.bashrc" Python 3.8 als Standard für den Befehl "python" definiert!
Gruß Maik
Zitat von: mnennstiel am 27 Mai 2020, 23:20:20
Hallo pflock_y,
ja ich bin nach dem Installationsbeschreibung gegangen. Ich hatte python 3.5 am laufen - damit scheint es nicht mehr zu gehen.
Habe jetzt gleich Python 3.8 parallel installiert und damit die Installation durchgeführt - sie hat funktioniert.
Wenn ich die ring.py von hand mit python ring.py starte, läuft ring.py und Meldungen von der Klingel kommen auch rein.
Aber irgendwie schein mein crontab nicht zu laufen. Ich habe ihn in /etc crontab -e folgende Zeilen hinzugefügt:
@reboot /opt/fhem/bin/run-ring
@hourly /opt/fhem/bin/run-ring
meine run_ring sieht so aus:
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process=/opt/fhem/bin/ring.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup bash -c "python $process" >/dev/null &
echo "Process $process started."
fi
exit
Berechtigung vom Verzeichnis:
pi@Raspberry-PI3B-plus:/opt/fhem/bin $ ls -la
insgesamt 44
drwxrwxrwx 2 fhem dialout 4096 Mai 27 23:26 .
drwxr-xr-x 17 fhem dialout 4096 Mai 26 22:46 ..
-rwxrwxrwx 1 fhem dialout 14791 Mai 27 23:13 ring.log
-rwxrwxrwx 1 fhem dialout 10187 Mai 27 20:19 ring.py
-rw-r--r-- 1 pi pi 966 Mai 27 22:59 ring_token.cache
-rwxrwxrwx 1 fhem dialout 312 Mai 27 22:52 run_ring
In meine FHEM Oberfläche kommen auch keine Signale in den Dummy rein ?! Wo liegt der Fehler?
Gruß Maik
Kann mir jemand sagen, wie ich diese run_ring richtig in einen Crontab einfüge - ich dreh hier noch durch. Bei mir startet die ring.py nicht von alleine.
Wenn ich von Hand im Verzeichnis der ring.py starte, bekomme ich was bei fhem rein (z.B.lastAlertType(s.Bild)), aber der "state" ändert sich nicht.
Hallo Maik,
bei mir läuft die ganze Ring installation unter dem user: fhem. Hat den Grund weil auch eine meiner FHEM Installationen darauf läuft.
den crontab bearbeite ich mit dem fhem user:
sudo -u fhem crontab -e
der sieht dann bei mir so:
# Edit this file to introduce tasks to be run by cron.
#
# Each task to run has to be defined through a single line
# indicating with different fields when the task will be run
# and what command to run for the task
#
# To define the time you can provide concrete values for
# minute (m), hour (h), day of month (dom), month (mon),
# and day of week (dow) or use '*' in these fields (for 'any').#
# Notice that tasks will be started based on the cron's system
# daemon's notion of time and timezones.
#
# Output of the crontab jobs (including errors) is sent through
# email to the user the crontab file belongs to (unless redirected).
#
# For example, you can run a backup of all your user accounts
# at 5 a.m every week with:
# 0 5 * * 1 tar -zcf /var/backups/home.tgz /home/
#
# For more information see the manual pages of crontab(5) and cron(8)
#
# m h dom mon dow command
#@reboot sleep 180;/opt/fhem/bin/run_ring
@reboot /bin/bash --login /opt/fhem/bin/run_ring.sh
@hourly /bin/bash --login /opt/fhem/bin/run_ring.sh
#*/10 * * * * /bin/bash --login /opt/fhem/bin/run_ring.sh
#*/10 * * * * /opt/fhem/bin/run_ring.sh
#*/10 * * * * /opt/fhem/bin/run_ring_old
aus.
meine run run_ring sieht so:
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process="python3.7 /opt/fhem/bin/ring_v1.0.11.py"
pkill -9 -f ring_v1.0.11.py
$process < /dev/null &> /dev/null & disown
echo "Process $process started."
exit
aus.
Ja ich bin noch auf einer älteren Version der ring.py von budy, hab es noch nicht geschafft upzudaten. ::)
vg
pflock_y
Danke für deine Antwort pflock_y,
es ist zum k.... - es gibt soviel Varianten hier wie man es hinbekommen kann. Jeder hat sich seine eigene Variante gebaut.
Leider funktioniert deine Variante bei mir auch nicht. Warum gibt es nicht eine einheitliche Methode ?
Wenn man die Vorlagen
https://github.com/budachst/ring-fhem/blob/master/run_ring (https://github.com/budachst/ring-fhem/blob/master/run_ring)
oder
https://github.com/tchellomello/python-ring-doorbell/pull/108 (https://github.com/tchellomello/python-ring-doorbell/pull/108)
geht es nicht - oder irgendeine Kleinigkeit fehlt!
Jeder hat sich seine eigene ring.py gebaut bzw. abgeändert - die run_ring bzw. run_ring.sh gibt es auch in unterschiedlichen Varianten ...
Sorry, ich weiß, dass es Arbeit macht einen genaue Ablaufbeschreibung zu bauen. Ich will eigentlich auch nicht beschweren.
Aus mir spricht nur reine Verzweiflung...
:-[
Zitat von: mnennstiel am 28 Mai 2020, 11:02:19
... Ich habe vorher mit dem Befehl "echo "alias python=/usr/local/bin/python3.8" >> ~/.bashrc" und "source ~/.bashrc" Python 3.8 als Standard für den Befehl "python" definiert!
Hallo Maik,
für welchen User?
Also Deine Frage war crontab, die wurde beantwortet.
Wenn Deine run_ring nicht solo läuft, läuft sie auch nicht in crontab.
Also poste beides und ev. sieht jemand was. Nur schimpfen und sagen geht nicht - hilft niemanden.
Gruß Otto
Zitat von: Otto123 am 28 Mai 2020, 21:16:07
Hallo Maik,
für welchen User?
Also Deine Frage war crontab, die wurde beantwortet.
Wenn Deine run_ring nicht solo läuft, läuft sie auch nicht in crontab.
Also poste beides und ev. sieht jemand was. Nur schimpfen und sagen geht nicht - hilft niemanden.
Gruß Otto
Sorry kann ich dir nicht sagen für welchen User - bin da einer Beschreibung im Netz gefolgt.
Ich habe jetzt schon soviel Änderungen vorgenommen, das ich erstmal einige rückgängig machen musste, um auf irgendeine Variante aufzubauen. Und um dir auch eine klare Aussage zu machen Otto.
run_ring:
#!/bin/bash
#run_ring.sh
#make sure the process is always running.
process=/opt/fhem/bin//ring.py
if ps ax | grep -v grep | grep $process > /dev/null
then
echo "Process $process is still running."
exit
else
nohup bash -c "python $process" >/dev/null &
echo "Process $process started."
fi
exit
crontab -e unter /etc
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.daily )
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.weekly )
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --report /etc/cron.monthly )
#
@reboot fhem /opt/fhem/bin/run-ring
@hourly fhem /opt/fhem/bin/run-ring
#
der hier ist schon mal falsch: process=/opt/fhem/bin//ring.py
Und mit standard - python läuft doch das aktuelle Script nicht mehr?
Mit crontab -e kann man die (user) crontab bearbeiten
Mit crontab -l anzeigen
Gruß Otto
OK sorry - habe ich jetzt beim Umschreiben falsch geschrieben. Wollte nämlich deine Variante unter /home/pi versuchen.
So - geändert - funktioniert aber nicht!
Wenn ich unter /opt/fhem/bin python ring.py eingebe bekommt der Dummy unter fhem Signale rein - die Log Datei wird auch beschrieben!
Um Python 3.8 zu installieren von ich folgender Anleitung gefolgt: https://installvirtual.com/how-to-install-python-3-8-on-raspberry-pi-raspbian/ (https://installvirtual.com/how-to-install-python-3-8-on-raspberry-pi-raspbian/)
Was funktioniert nicht? die run-ring ausführen? Was kommt als Ausgabe?
Was hat das fhem da zu suchen? ???
Zitat@hourly fhem /opt/fhem/bin/run-ring
ZitatWenn ich unter /opt/fhem/bin python ring.py eingebe
Und wieder die Frage: welcher user?
folgendes kommt:
ok den user fhem habe ich jetzt aus der crontab entfernt - ändert aber nix an dem Resultat. Hatte ich vorher schon weggelassen o.E.
ich habe keinen bestimmten User eingetragen - ich denke es ist alles unter user:pi
pi@Raspberry-PI3B-plus:/opt/fhem/bin $ ls -la
insgesamt 68
drwxrwxrwx 2 fhem dialout 4096 Mai 28 21:40 .
drwxr-xr-x 18 fhem dialout 4096 Mai 28 11:25 ..
-rwxrwxrwx 1 fhem dialout 34299 Mai 28 22:04 ring.log
-rwxrwxrwx 1 fhem dialout 10187 Mai 28 12:08 ring.py
-rw-r--r-- 1 pi pi 966 Mai 28 21:11 ring_token.cache
-rwxrwxrwx 1 fhem dialout 311 Mai 28 21:40 run_ring
Und was sagt
ps -aux|grep ring
und keine Bilder :( lässt sich die Ausgabe nicht als Text kopieren?
pi@Raspberry-PI3B-plus:~ $ ps -aux|grep ring
pi 1577 0.0 0.0 4368 572 pts/1 S+ 22:06 0:00 grep --color=auto ring
Was bedeutet das?
ich meine der Prozess läuft nicht :(
Obwohl laut Bild da steht er hat ihn gestartet. Hat er ihn wieder beendet?
Was ist wenn Du in gleicher Situation das eingibst?
bash -c "python /opt/fhem/bin/ring.py"
Zitat von: Otto123 am 28 Mai 2020, 22:30:16
ich meine der Prozess läuft nicht :(
Obwohl laut Bild da steht er hat ihn gestartet. Hat er ihn wieder beendet?
Was ist wenn Du in gleicher Situation das eingibst?
bash -c "python /opt/fhem/bin/ring.py"
Nun kommt das:
pi@Raspberry-PI3B-plus:/opt/fhem/bin $ bash -c "python /opt/fhem/bin/ring.py"
Traceback (most recent call last):
File "/opt/fhem/bin/ring.py", line 10, in <module>
from pathlib import Path
ImportError: No module named pathlib
Und jetzt sind wir wieder bei meiner Frage #331.
Du hast für irgendwen die ~/.bashrc" Python 3.8 als Standard definiert. Gilt genau für diesen User.
Würd ich nie machen, mach den Aufruf am Besten mit absoluten Pfaden zu Deiner python 3.8 Installation.
OK - wie kann ich das wieder rückgängig machen? Ich war beim Standartfestsetzen als User PI !
habe jetzt mal deinen Befehl mit 3.8 gestartet und dann auch mal die Doorbell-Klingel gedrückt.
pi@Raspberry-PI3B-plus:/opt/fhem/bin $ bash -c "python3.8 /opt/fhem/bin/ring.py"
2020-05-28 22:40:11,882 - fhem_ring - INFO - Found 1 devices.
2020-05-28 22:40:11,887 - fhem_ring - INFO - Updating device data for device 'FrontDoor' in FHEM...
2020-05-28 22:40:11,890 - fhem_ring - INFO - Polling for events.
2020-05-28 22:40:12,493 - fhem_ring - INFO - Updating device data for device 'FrontDoor' in FHEM...
2020-05-28 22:40:12,630 - fhem_ring - INFO - No connection to ring API, continueing...
2020-05-28 22:40:12,631 - fhem_ring - INFO - Snapshot: False
2020-05-28 22:40:48,561 - fhem_ring - INFO - Updating device data for device 'FrontDoor' in FHEM...
2020-05-28 22:40:48,564 - fhem_ring - INFO - Alert detected at 'FrontDoor'.
2020-05-28 22:42:13,034 - fhem_ring - INFO - Updating device data for device 'FrontDoor' in FHEM...
2020-05-28 22:42:13,178 - fhem_ring - INFO - No connection to ring API, continueing...
2020-05-28 22:42:13,180 - fhem_ring - INFO - Snapshot: False
2020-05-28 22:44:13,655 - fhem_ring - INFO - Updating device data for device 'FrontDoor' in FHEM...
2020-05-28 22:44:13,792 - fhem_ring - INFO - No connection to ring API, continueing...
2020-05-28 22:44:13,793 - fhem_ring - INFO - Snapshot: False
2020-05-28 22:46:14,247 - fhem_ring - INFO - Updating device data for device 'FrontDoor' in FHEM...
2020-05-28 22:46:14,404 - fhem_ring - INFO - No connection to ring API, continueing...
2020-05-28 22:46:14,406 - fhem_ring - INFO - Snapshot: False
Rückgängig? Ist doch egal, ist jetzt so für user pi. Stört doch erstmal nicht.
Jetzt (er)setzt Du diesen Befehl in deine run-ring ;)
Dann probierst Du die run-ring. Aber wirklich so
/opt/fhem/bin/run-ring
Wen die geht, machst Du crontab.
crontab -e dann macht er den editor auf und Du fügst die zwei Zeilen ein:
@reboot /opt/fhem/bin/run-ring
@hourly /opt/fhem/bin/run-ring
Wie gesagt ich halte die verquickung von user fhem (inklusive dem Ordner /opt/fhem/bin) für unnötig.
Ouuuh - Otto ein fataler Schreibfehler
Zitat
/opt/fhem/bin/run-ring
müßte
/opt/fhem/bin/run_ring
heißen, und im crontab -e den ich unter /etc im Editor öffne muss auch
@reboot /opt/fhem/bin/run_ring
@hourly /opt/fhem/bin/run_ring
stehen!!!!
:o
Wenn ich /opt/fhem/bin/run_ring eingebe kommt:
pi@Raspberry-PI3B-plus:~ $ /opt/fhem/bin/run_ring
Process /opt/fhem/bin/ring.py started.
pi@Raspberry-PI3B-plus:~ $ nohup: leite Standardfehlerausgabe auf Standardausgabe um
Aber der crontab -e unter /etc scheint trotzdem nicht zu laufen!
# /etc/crontab: system-wide crontab
# Unlike any other crontab you don't have to run the `crontab'
# command to install the new version when you edit this file
# and files in /etc/cron.d. These files also have username fields,
# that none of the other crontabs do.
SHELL=/bin/sh
PATH=/usr/local/sbin:/usr/local/bin:/sbin:/bin:/usr/sbin:/usr/bin
# m h dom mon dow user command
17 * * * * root cd / && run-parts --report /etc/cron.hourly
25 6 * * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
47 6 * * 7 root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
52 6 1 * * root test -x /usr/sbin/anacron || ( cd / && run-parts --repo$
#
@reboot /opt/fhem/bin/run_ring
@hourly /opt/fhem/bin/run_ring
#
pi@Raspberry-PI3B-plus:~ $ crontab -l
no crontab for pi
kann aber mit 'cd /etc' und 'sudo nano crontab -e" den crontab oben bearbeiten
... ich gehe jetzt erstmal schlafen - Gute Nacht!
Moin,
ich habe keine Ahnung was bei sudo nano crontab -e wirklich passiert und rauskommt, aber was sinnvolles kann es nicht sein.
Zur Erklärung:
Der Befehl
crontab -e
Öffnet den Editor mit der crontab für den aktiven Benutzer. Normal kann man alles auch mit der machen.
Der Befehl
sudo crontab -e
Öffnet die crontab für user root
In der /etc/crontab steht die system-wide crontab - die würde ich persönlich in Ruhe lassen.
Nach meiner Meinung kann man die rung_ring (oder wie immer die "richtig" heisst) auch einfach aus FHEM heraus starten.
Ein notify auf global:INITIALIZED und ein at was stündlich startet macht eigentlich das Gleiche.
Gruß Otto
Zitat von: Otto123 am 29 Mai 2020, 09:15:02
Moin,
ich habe keine Ahnung was bei sudo nano crontab -e wirklich passiert und rauskommt, aber was sinnvolles kann es nicht sein.
Zur Erklärung:
Der Befehl
crontab -e
Öffnet den Editor mit der crontab für den aktiven Benutzer. Normal kann man alles auch mit der machen.
Der Befehl
sudo crontab -e
Öffnet die crontab für user root
In der /etc/crontab steht die system-wide crontab - die würde ich persönlich in Ruhe lassen.
Nach meiner Meinung kann man die rung_ring (oder wie immer die "richtig" heisst) auch einfach aus FHEM heraus starten.
Ein notify auf global:INITIALIZED und ein at was stündlich startet macht eigentlich das Gleiche.
Gruß Otto
Vielen lieben Dank für deine bisherige Hilfe Otto,
aber wie starte ich die run_ring aus fhem heraus?
Gruss Maik
Hallo Maik,
Versuch es mal so, in der FHEM Kommandozeile MIT den " " !
"/opt/fhem/bin/run-ring"
Siehe auch https://fhem.de/commandref_DE.html#command
Gruß Otto
"/opt/fhem/bin/run-ring"
der Befehl geht zwar raus ohne Fehler - aber da tut sich nix in FHEM!
und wenn ich den Befehl auf Befehlsebende absetze wird es gestartet.
pi@Raspberry-PI3B-plus:~ $ /opt/fhem/bin/run_ring
Process /opt/fhem/bin/ring.py started.
pi@Raspberry-PI3B-plus:~ $ nohup: leite Standardfehlerausgabe auf Standardausgabe um
cd /etc
pi@Raspberry-PI3B-plus:/etc $ /opt/fhem/bin/run_ring
Process /opt/fhem/bin/ring.py is still running.
Was steht im FHEM Log? Die Ausgabe von run_ring sollte dort eigentlich erscheinen.
Es kann sein der user fhem hat keine Umgebung - ich mache das sowieso immer so
"bash opt/fhem/bin/run_ring"
Aber Deine Ausgabe sagt eigentlich : es läuft schon!
ZitatProcess /opt/fhem/bin/ring.py is still running.
Zitat von: Otto123 am 29 Mai 2020, 21:02:42
Was steht im FHEM Log? Die Ausgabe von run_ring sollte dort eigentlich erscheinen.
Es kann sein der user fhem hat keine Umgebung - ich mache das sowieso immer so
"bash opt/fhem/bin/run_ring"
Aber Deine Ausgabe sagt eigentlich : es läuft schon!
Nein diese habe ich Raspberry - Ebene ausgelöst! Wollte dir dahttps://forum.fhem.de/Smileys/default/sad.gifmit zeigen, dass noch nicht läuft!
Habe jetzt "bash opt/fhem/bin/run_ring" eingegeben ...
Im FHEM Log steht:
Process /opt/fhem/bin/ring.py started.
Traceback (most recent call last):
File "/opt/fhem/bin/ring.py", line 8, in <module>
import fhem
ModuleNotFoundError: No module named 'fhem'
Never ending story ..... :'( :(
Irgendwas scheint mit meiner neuen Python3.8er Version nicht stimmen - ich gebe auf !
naja, da ist jetzt wieder die python Umgebung nicht "intakt" für den User fhem. Da bin ich auch nicht fit.
Meint: user fhem darf was nicht in python
Ich habe das alles einfach von fhem entkoppelt.
python als user pi installiert
Die Scripts ins homedir von pi geworfen.
run_ring angepasst
Als user pi getestet
crontab -e als user pi gemacht.
fertig.
Allerdings wird es mittlerweile nicht mehr genutzt, ich kann es jetzt nicht testen.
Zitat von: mnennstiel am 29 Mai 2020, 21:37:40
Irgendwas scheint mit meiner neuen Python3.8er Version nicht stimmen - ich gebe auf !
Aaalso... generell gilt: für jede Python-Version müssen jeweils die fhem- und die ring-Libs importiert werden. Wenn du die Python-Version wechselst, dann muss das sichergestellt sein. Wie das geht steht in der Anleitung, denn das ist immer gleich.
Mir ist auch nicht klar, warum du das Skript unbedingt aus FHEM heraus starten willst. Bei mit gibt es einen systemd-Service, der das Skript einmal startet und gut is... das muss auch nicht andauernd neu gestartet werden, weswegen ein Eintrag in die normale crontab einfach überflüssig ist. Ich schau mal eben nach, aber bei mir läuft das Skript seit... dem 11.Mai ohne Probleme.
Gruß,
budy
Meinst du mit ring libs und fhem libs die pip Datei, die ins jeweilige Python installiert werden muss? Wenn ja das habe ich gemacht!
Trotz allem funktioniert es nicht!
Hallo
Bei mir funktioniert soweit alles
Wenn ich es aus dem Verzeichnis /opt/fhem/bin/run_ring ausführe startet das programm und es läuft fehlerfrei
sobald der cronjob über die user fhem crontab startet funktioniert der aufruf nicht mehr. Ich bekomme leider aber auch keine Fehlermeldung um feststellen zu können woran das problem liegt.
Einzigen anhaltspunkt den ich gefunden habe führt man run ring nicht aus dem Verzeichniss /opt/fhem/bin aus dann wird eine tokengenrierung verlangt.
Kann mir hier jemand weiterhelfen?
Zitat von: leachim200 am 24 Juni 2020, 15:48:54
Wenn ich es aus dem Verzeichnis /opt/fhem/bin/run_ring ausführe startet das programm und es läuft fehlerfrei
Als welcher User?
Zitat von: leachim200 am 24 Juni 2020, 15:48:54
Einzigen anhaltspunkt den ich gefunden habe führt man run ring nicht aus dem Verzeichniss /opt/fhem/bin aus dann wird eine tokengenrierung verlangt.
Warum führst Du es dann nicht einfach in diesem Pfad aus? cd /opt/fhem/bin
Gruß Otto
Hi
Ich führe es jeweils als user fhem aus.
Ausführen möchte ich ja den cronjob, der nicht funktioniert.
Und wie schaut der cronjob aus? :-X
in der crontab des fhem users
@reboot /opt/fhem/bin/run_ring
@hourly /opt/fhem/bin/run_ring
Wie gesagt ich sehe im logfile das der job gestartet wird allerdings nachdem er gelaufen ist, hat nur der kill prozess funktioniert.
Du hast doch die Antwort schon selbst gegeben:
Einzigen anhaltspunkt den ich gefunden habe führt man run ring nicht aus dem Verzeichniss /opt/fhem/bin aus dann wird eine tokengenrierung verlangt.
Also musst Du in deinem Script als erstes den aktuellen Pfad auf /opt/fhem/bin setzen. Oder ein extra Script als crontab aufrufen:
cd /opt/fhem/bin
run_ring
Es ist aus meiner Sicht unnötig kompliziert, das Script als user fhem auszuführen.
Hallo zusammen,
ich habe gesehen, dass es für ioBroker einen Adapter für die Ring gibt.
Besteht die Möglichkeit, dass es zukünftig auch ein Modul für FHEM geben wird? Leider muss ich sagen, dass ich nicht in der Lage bin so etwas umzusetzen :( Ich habe immer schon mal wieder in diverse Module geschaut - einfach um zu schauen, was ich verstehe und was nicht --> bin aber leider noch Lichtjahre davon entfernt auch nur ansatzweise selbst eine .pm aus dem Nichts erstellen zu können...
Ich überlege, ob ich den Adapter mal teste - allerdings nutze ich ioBroker nicht. Habe ich mir mal angesehen, bin aber doch an FHEM hängen geblieben - alte Liebe und so ;D
ioBroker wäre dann nur dafür da, um die Info aus dem Adapter an FHEM zu übergeben - etwas mit Kanonen auf Spatzen geschossen.
Versteht mich bitte nicht falsch - ich bin sehr Dankbar für die bisherige Lösung und die Zeit, die ihr in eurer Freizeit investiert! Daher nochmal explizit: Danke! :D
Ich versuche nur nach Möglichkeit immer eine Variante (abweichend vom "Standard" (also Module)) zu verwenden, da ich mich mit manuellen Installationen (außerhalb von FHEM) ebenfalls nicht soooo sicher fühle - auch in Bezug auf Berechtigungen, Updates, etc. (hoffe, ich versteht, was ich meine).
So, reicht aber erst einmal ;)
Danke, viele Grüße und genießt das Wetter!
Sascha
Wäre auch glücklich über eine PM von Doorbell!
Gibt es eigtl. etwas neues bezüglich screenshot?
Hi,
ich baue gerade ein FHEM Pythonbinding, damit lassen sich Module in nativen Pythen schreiben. Es ist noch BETA und einige User testen es bereits ausführlich.
Ich habe nun auf dieser Basis ein ring Modul für FHEM gebaut.
Wer es testen mag kann folgendes tun:
https://github.com/dominikkarall/fhem_pythonbinding
Installationsanleitung befolgen und dann
https://github.com/dominikkarall/fhem_pythonbinding/blob/master/FHEM/bindings/python/lib/ring/README.md
Danke an JF Mennedy für das Teilen der Doorbell damit ich testen und entwickeln konnte. Ich selbst habe keine Ring Produkte. Falls also jemand Chime oder Cam hat, kann das gerne auch getestet werden.
Bitte dann um Feedback ob es bei euch läuft.
Das letzte Update von gestern läuft einwandfrei... Ich lasse dir noch den zugang.. Sag mir einfach bescheid, wenn du ihn nicht mehr benötigst...
Gruss jan
Hab mir mal ein chime zugelegt... wird vom python Modul erkannt und angelegt... Wenn man nun die Lautstärke noch ändern könnte, wäre es top, da man dann auf die Bewegungszeitpläne der ring app verzichten könnte...
Das ist schnell erledigt.
Ich stell das Update heute Abend ein, wäre super, wenn du morgen dann einen kurzen Test machen könntest.
Hallo,
ich habe auch versucht, meine Ring Geräte einzubinden. Beim setzen des Passworts bekommen ich folgende Antwort.
Failed to execute function Set: Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 236, in _onMessage
ret = await asyncio.wait_for(func(hash, hash['args'], hash['argsh']), fct_timeout)
File "/usr/lib/python3.8/asyncio/tasks.py", line 483, in wait_for
return fut.result()
File "/opt/fhem/FHEM/bindings/python/lib/ring/ring.py", line 228, in Set
if self._rdevice.has_capability("volume"):
AttributeError: 'NoneType' object has no attribute 'has_capability'
Hier das List dazu. Installation nach Anleitung hat ohne Fehler geklappt.
Internals:
DEF ring xx@yy.zz Garten
FUUID 5fa3e6fa-f33f-73c2-9c5d-2b0b4af790e7a838
IODev pythonbinding
NAME rrring
NR 532
PYTHONTYPE ring
STATE please set password
TYPE PythonModule
Helper:
DBLOG:
state:
DBLogging:
TIME 1604577029.99425
VALUE please set password
READINGS:
2020-11-05 12:50:29 state please set password
args:
rrring
PythonModule
ring
xx@yy.zz
Garten
argsh:
Attributes:
IODev pythonbinding
userattr deviceUpdateInterval dingPollInterval
Habe ich irgendwo einen Fehler gemacht oder liegt es nicht an mir?
Wenn noch etwas benötigt wird, bitte melden.
Dirk
ich noch einmal
Beim Aufruf der Seite für das Gerät in FHEM bekomme ich folgende Fehlermeldungen im FHEM Log. Es sind drei Aufrufe der Seite mit den jeweiligen Fehlermeldungen.
2020.11.05 13:31:09 1: PERL WARNING: String found where operator expected at (eval 1317) line 1, near "py",""
2020.11.05 13:31:09 3: eval: {ReadingsVal("rrring",""/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py",","")}
2020.11.05 13:31:09 1: ERROR evaluating {ReadingsVal("rrring",""/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py",","")}: Bareword "opt" not allowed while "strict subs" in use at (eval 1317) line 1.
Unknown regexp modifier "/b" at (eval 1317) line 1, at end of line
syntax error at (eval 1317) line 1, near "py",""
2020.11.05 13:32:09 1: PERL WARNING: String found where operator expected at (eval 1346) line 1, near "py",""
2020.11.05 13:32:09 3: eval: {ReadingsVal("rrring",""/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py",","")}
2020.11.05 13:32:09 1: ERROR evaluating {ReadingsVal("rrring",""/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py",","")}: Bareword "opt" not allowed while "strict subs" in use at (eval 1346) line 1.
Unknown regexp modifier "/b" at (eval 1346) line 1, at end of line
syntax error at (eval 1346) line 1, near "py",""
2020.11.05 13:33:02 1: PERL WARNING: String found where operator expected at (eval 1378) line 1, near "py",""
2020.11.05 13:33:02 3: eval: {ReadingsVal("rrring",""/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py",","")}
2020.11.05 13:33:02 1: ERROR evaluating {ReadingsVal("rrring",""/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py",","")}: Bareword "opt" not allowed while "strict subs" in use at (eval 1378) line 1.
Unknown regexp modifier "/b" at (eval 1378) line 1, at end of line
syntax error at (eval 1378) line 1, near "py",""
Hi,
die Lautstärke lässt sich leider nicht verstellen...
Gruss Jan
Da hat sich bei Volume scheinbar doch noch ein Fehler eingeschlichen.
@Jan, könntest du mir bitte wieder ein Testdevice freigeben, dann kann ich das schneller implementieren. Danke!
@diehmann69, das sieht sehr eigenartig aus. Wie hast du das Device definiert? Poste mal die Ausgabe von "jsonlist2 rrring".
na gern doch
{
"Arg":"rrring",
"Results": [
{
"Name":"rrring",
"PossibleSets":"Failed to execute function Set: Traceback (most recent call last):\n File \"/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py\", line 236, in _onMessage\n ret = await asyncio.wait_for(func(hash, hash['args'], hash['argsh']), fct_timeout)\n File \"/usr/lib/python3.8/asyncio/tasks.py\", line 483, in wait_for\n return fut.result()\n File \"/opt/fhem/FHEM/bindings/python/lib/ring/ring.py\", line 228, in Set\n if self._rdevice.has_capability(\"volume\"):\nAttributeError: 'NoneType' object has no attribute 'has_capability'\n",
"PossibleAttrs":"alias comment:textField-long eventMap:textField-long group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 IODev event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat:textField-long timestamp-on-change-reading DbLogExclude DbLogInclude DbLogValueFn:textField-long alexaName alexaProactiveEvents:1,0 alexaRoom assistantName:textField cmdIcon devStateIcon devStateIcon:textField-long devStateStyle gassistantName:textField genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,scene,speaker,thermostat,contact,garage,window,lock,aircondition,airfreshener,airpurifier,awning,blinds,boiler,camera,coffeemaker,curtain,dishwasher,door,dryer,fan,fireplace,gate,heater,hood,kettle,microwave,oven,pregola,refrigerator,securitysystem,shutter,shower,sprinkler,vacuum,valve,washer,waterheater,ac_unit,bathtub,bed,blender,closet,coffee_maker,cooktop,dehumidifier,dehydrator,drawer,faucet,fryer,grill,humidifier,mop,mower,multicooker,pergola,petfeeder,pressurecooker,radiator,sousvide,standmixer,yogurtmaker,charger,sensor,carbon_monoxide_detector,remotecontrol,settop,smoke_detector,tv,waterpurifier,watersoftener,network,router,aircooler,audio_video_receiver,freezer,streaming_box,streaming_stick,streaming_soundbar,soundbar homebridgeMapping:textField-long icon realRoom:textField sortby webCmd webCmdLabel:textField-long widgetOverride deviceUpdateInterval dingPollInterval userattr",
"Internals": {
"DEF": "ring xx@yy.zz Garten",
"FUUID": "5fa3e6fa-f33f-73c2-9c5d-2b0b4af790e7a838",
"IODev": "pythonbinding",
"NAME": "rrring",
"NR": "440",
"PYTHONTYPE": "ring",
"RINGDEVICE": "Garten",
"STATE": "please set password",
"TYPE": "PythonModule",
"USERNAME": "xx@yy.zz"
},
"Readings": { "state": { "Value":"please set password", "Time":"2020-11-05 13:26:06" } },
"Attributes": {
"IODev": "pythonbinding",
"userattr": "deviceUpdateInterval dingPollInterval"
}
} ],
"totalResultsReturned":1
}
das problem, chime ist nicht im gast account verfugbar... geb dir per pn gern den hauptzugang, da müssten wir uns allerdings zum 1. login verabreden wegen des 2f1 keys...
Muss nicht chime sein, doorbell kann angeblich auch volume setzen.
ok, hab dir wieder eine einladung geschickt...
Danke! Ich habe das Gefühl, dass Doorbell zwar ein volume hat, das aber nichts macht. Dennoch konnte ich soweit mal die Fehler ausbessern.
Bitte um Update und nochmaligen Test mit chime.
@dlehmann69, der Fehler lag an der volume Integration. Sollte nun behoben sein, bitte um Update.
Ja sehr geil.. Funktioniert :-} super vielen dank
Cool! Ich habe gerade noch gesehen, dass ich den Range von 0-11 drin haben, Chime supported nur 0-10. Das korrigiere ich noch.
Doorbell kannst du mir wieder entziehen :)
Hallo,
Super und vielen Dank. Jetzt funktioniert es.
Kurze Nachfrage zu einem möglichen Update Intervall für das Device.
Gibt es da eine Möglichkeit, dies einzustellen? Es gibt ja zwei User Attribute deviceUpdateInterval und dingPollInterval. Dienen diese dazu und wenn ja, was kommt da rein? Sekunden?
Grüße
Dirk
Ja, mit den beiden Attributen ist das einstellbar.
Einfach die Zeit in Sekunden angeben. dingPollIntervall sollte kurz sein, da sonst ein Alert versäumt werden kann. Default ist 2s.
Hallo
Ich habe auch versucht das Modul zu installieren scheitere aber leider irgendwie daran.
Ich habe alles genau nach Anleitung installiert und dem User fhem sogar als standart python3.8.4 hinterlegt
Folgendes habe ich im log stehen
2020.11.11 08:20:34 1: BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
2020.11.11 08:20:46 1: BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
2020.11.11 08:20:47 3: Pythonbinding_0: starting
2020.11.11 08:20:47 3: Pythonbinding_0: using logfile: ./log/PythonBinding-2020-11-11.log
2020.11.11 08:20:47 3: Pythonbinding_0: read: end of file reached while sysread
2020.11.11 08:20:47 3: Pythonbinding_0: stopped
Der logfile Auszug sieht so aus
Traceback (most recent call last):
File "FHEM/bindings/python/pythonbinding.py", line 3, in <module>
import lib.fhem_pythonbinding as fpb
File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 3, in <module>
import websockets
ModuleNotFoundError: No module named 'websockets'
Hi,
websockets wurde nicht installiert:
https://github.com/dominikkarall/fhem_pythonbinding#console
Falls eine Fehlermeldung bei der Installation kommt, bitte posten.
Hi
danke für die Info zumindest mein gedankengang war nicht ganz falsch
Hier das logfile keine Fehlermeldung:
fhem@fhemrpi:~$ sudo cpan Protocol::WebSocket
Loading internal logger. Log::Log4perl recommended for better logging
Reading '/root/.cpan/Metadata'
Database was generated on Thu, 12 Nov 2020 11:17:03 GMT
Protocol::WebSocket is up to date (0.26).
fhem@fhemrpi:~$ sudo pip3 install asyncio websockets importlib_metadata
Looking in indexes: https://pypi.org/simple, https://www.piwheels.org/simple
Collecting asyncio
Using cached asyncio-3.4.3-py3-none-any.whl (101 kB)
Collecting websockets
Using cached https://www.piwheels.org/simple/websockets/websockets-8.1-cp37-cp37m-linux_armv7l.whl (78 kB)
Collecting importlib_metadata
Using cached importlib_metadata-2.0.0-py2.py3-none-any.whl (31 kB)
Collecting zipp>=0.5
Using cached zipp-3.4.0-py3-none-any.whl (5.2 kB)
Installing collected packages: asyncio, websockets, zipp, importlib-metadata
Successfully installed asyncio-3.4.3 importlib-metadata-2.0.0 websockets-8.1 zipp-3.4.0
Python Version
fhem@fhemrpi:~$ python --version
Python 3.8.4
OK nach einem Reboot hat es jetzt funktioniert keine Ahnung wo der Hunde begraben lag
danke für die hilfe
Hi
Also nachdem nun alles funktioniert hätte ich noch eine frage.
Ich verwende den motion sensor der ring um meine Überwachungskamera anzusteuern. Gibt es hier eine möglichkeit den last-kind auch als last ohne nummer anzugeben?
lg
Hi,
kannst du mir bitte mehr Details geben? Um welches Reading geht es da? Was steht aktuell im Reading und was hättest du gerne?
Sry für die vielen Verwirrenden postings.
Es funktioniert nun ich habe ein reading gesucht das mir den aktuellen Status also motion, ding anzeigt, da dass aber erst funktioniert wenn einmal motion oder ding passiert ist an der doorbell hab ich es nicht gleich gefunden.
Soweit funktioniert erstmal alles was ich benötige. Ich werde es testen und dir feedback geben.
So also hier mal ein erster Testbericht.
Funktioniert eigentlich ganz gut.
Eine Sache ist mir nur aufgefallen nach ca. 2 Tagen werden keine Aktualisierungen mehr gesendet.
Trotz einer Bewegung die meine Ring Video Doorbell meldet wird diese in FHEM nicht aktualisiert.
Lg michi
Zitat von: leachim200 am 17 November 2020, 16:42:01
So also hier mal ein erster Testbericht.
Funktioniert eigentlich ganz gut.
Eine Sache ist mir nur aufgefallen nach ca. 2 Tagen werden keine Aktualisierungen mehr gesendet.
Trotz einer Bewegung die meine Ring Video Doorbell meldet wird diese in FHEM nicht aktualisiert.
Lg michi
Kannst du bitte in /opt/fhem/log/PythonBinding-...log nachsehen ob da eine Fehlermeldung enthalten ist?
Hi
Ich habe mal versucht das raus zu finden
2020-11-16 22:39:46,047 - ERROR - rrring: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/lib/ring/ring.py", line 119, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 28, in run_blocking
pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/lib/ring/ring.py", line 192, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-11-16 22:42:31,828 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-16 22:47:33,510 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-16 22:52:35,244 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
Ich habe das mal gegoogelt und gesehen, dass es bei Home Assistant schon ähnliche Rückmeldungen gab. Der Grund dürfte ein abgelaufener Token sein, kann sein, dass der nur 48h läuft und ich das noch nicht richtig verarbeite. Ich schau mir das mal an.
Laut Doku und auch der Home Assistant Implementierung schaut im Code alles korrekt aus.
Hast du das ding oder deviceUpdateInterval geändert? Teilweise habe ich gelesen, dass bei zu kurzen Intervallen dieses Problem vorkommen kann. deviceUpdateInterval kann eigentlich sehr lang (300s default) sein, das braucht man im Normalfall nicht.
Hi
Danke für die Rückmeldung. Ich habe an den Einstellungen nichts geändert.
Ich glaube aber das du recht hast da bei dem alten System auch in regelmäßigen Intervallen ein Neustart des Skriptes notwendig war.
Kannst du mir sagen auf was ich den update interval setzen kann und soll.
Danke lg michi
Hallo, ich wollte nun auch meine Ring Camera in Fhem einbinden und bin nach der Anleitung https://github.com/dominikkarall/fhem_pythonbinding vorgegangen.
Allerdings bekomme ich folgende Fehlermeldung in der LOG:
BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Connection refused (111)
Ich muss vielleicht noch erwähnen, dass ich fhem im docker benutze. Muss ich da vielleicht was bestimmtes beachten?
Hi,
ich glaube beim Docker funktionieren die automatischen Library Installationen noch nicht. Ich habe schon etwas umgebaut, kann es nur leider gerade nicht testen.
Mach bitte mal
sudo -u pip3 --user install asyncio websockets importlib_metadata cryptography ring_doorbell
Danach machst ein kill vom fhem_pythonbinding Prozess auf der Linux Konsole. Es startet innerhalb von einer Minute neu. Wenn dann noch immer disconnected steht, poste bitte das PythonBinding Log aus dem FHEM Log Verzeichnis.
Zitat von: leachim200 am 19 November 2020, 07:10:48
Hi
Danke für die Rückmeldung. Ich habe an den Einstellungen nichts geändert.
Ich glaube aber das du recht hast da bei dem alten System auch in regelmäßigen Intervallen ein Neustart des Skriptes notwendig war.
Kannst du mir sagen auf was ich den update interval setzen kann und soll.
Danke lg michi
Sorry, die Antwort hatte ich übersehen.
Lass das Intervall mal auf 300 (also Attribut löschen). Wenn es dann wieder vorkommt, probier bitte mal 600s. Lass mich bitte wissen ob es damit besser/schlechter wird. Wenn ein Neustart hilft, dann sollte ich es mit Code auch beheben können, weil dann dürfte dich Ring nicht blockiert haben.
Zitat von: dominik am 23 November 2020, 20:15:22
Mach bitte mal
sudo -u pip3 --user install asyncio websockets importlib_metadata cryptography ring_doorbell
Wenn ich das mache, kommt bei mir:
christian@nuc:~$ sudo -u pip3 --user install asyncio websockets importlib_metadata cryptography ring_doorbell
sudo: unknown user: install
sudo: unable to initialize policy plugin
Ok, lass dann bitte mal das --user weg
Dann kommt:
christian@nuc:~$ sudo -u pip3 install asyncio websockets importlib_metadata cryptography ring_doorbell
sudo: unknown user: pip3
sudo: unable to initialize policy plugin
Ich denke ja so:
sudo pip3 install asyncio websockets importlib_metadata cryptography ring_doorbell
es gibt kein User pip3 - das ist das Kommando ;)
Ach, ja, sollte eigentlich sudo -u fhem sein.
Nur sudo ist auch ok, dann wird es systemweit installiert.
Zitat von: Otto123 am 24 November 2020, 19:27:33
Ich denke ja so:
sudo pip3 install asyncio websockets importlib_metadata cryptography ring_doorbell
es gibt kein User pip3 - das ist das Kommando ;)
Wenn ich das in der Fhem Console in Docker eingebe funktioniert es und meine Ring Kamera geht auf connected. :-)
Weiß jemand zufällig, wie ich das im fhem-docker container "fest" einbauen kann? Bei jedem Container Neustart müsste ich es sonst neu eingeben.
Super!
Ich glaube nicht, dass du das neu eingeben musst. Diese Komponenten sind ja nun fix im Container installiert.
Im nächsten Update sollte die Installation dann eh automatisch klappen.
Wenn ich den Container neustarte ist wieder alles weg. Gerade nochmal getestet. Aber wenn das im nächsten Update mit drin ist... umso besser. :-)
Hmm...ist das normal? Dann sind ja auch dauern alle Config und Log Files von FHEM bei jedem Neustart weg.
Ich arbeite selbst nicht mit Docker, aber mein Stand ist, dass man einen Container neu starten kann und nur beim Setup das docker File herangezogen wird um den Container mit den entsprechend Commands zu konfigurieren.
Zitat von: dominik am 24 November 2020, 21:31:32
Hmm...ist das normal? Dann sind ja auch dauern alle Config und Log Files von FHEM bei jedem Neustart weg.
Ich arbeite selbst nicht mit Docker, aber mein Stand ist, dass man einen Container neu starten kann und nur beim Setup das docker File herangezogen wird um den Container mit den entsprechend Commands zu konfigurieren.
Wenn es im Dockerfile nicht vom Ersteller des dockers integriert ist, dann ist es bei jedem Neustart wieder weg. Ich habe die Befehlszeile "pip3 install asyncio websockets importlib_metadata cryptography ring_doorbell" nun in meine post-start.sh eingetragen. Dieses skript wird bei jedem Container start mit ausgeführt. Nun klappt es. :)
Hi
Hatte das attr mit den Delay herausgenommen hat leider wieder nicht funktioniert. Wenn ich die Lautstärke anpassen will dann steht bei State Login failed.
Erst nach einem delete und define der Ring in FHEM funktioniert wieder alles.
Kannst du mir bitte das Log posten ab dem Zeitpunkt wo der Fehler auftritt?
Hi
Hier der Auszug:
2020-11-25 13:29:00,329 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:32:25,568 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:34:01,909 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:37:27,128 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:39:05,652 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:42:28,681 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:44:07,482 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:47:30,233 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:49:09,171 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:52:31,862 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:54:11,523 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:57:33,507 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 13:59:13,719 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:02:35,230 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:04:15,771 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:07:36,957 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:09:17,328 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:12:38,528 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:14:18,908 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:17:40,623 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:19:21,113 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:22:42,192 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:24:22,904 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:27:43,790 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:29:24,757 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:32:45,424 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:34:26,330 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:37:47,046 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:39:27,967 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:42:48,638 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:44:35,629 - WARNING - ring_doorbell.doorbot: Your Ring account does not have an active subscription.
2020-11-25 14:44:46,812 - ERROR - lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.7/http/client.py", line 1336, in getresponse
response.begin()
File "/usr/lib/python3.7/http/client.py", line 306, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.7/http/client.py", line 267, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 307, in recv_into
raise timeout('The read operation timed out')
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 693, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 28, in run_blocking
pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/lib/ring/ring.py", line 192, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests_oauthlib/oauth2_session.py", line 516, in request
method, url, headers=headers, data=data, **kwargs
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2020-11-25 14:44:46,817 - ERROR - rrring: Failed to poll dings...
Traceback (most recent call last):
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.7/http/client.py", line 1336, in getresponse
response.begin()
File "/usr/lib/python3.7/http/client.py", line 306, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.7/http/client.py", line 267, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 307, in recv_into
raise timeout('The read operation timed out')
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/adapters.py", line 449, in send
timeout=timeout
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 638, in urlopen
_stacktrace=sys.exc_info()[2])
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 367, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 693, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 600, in urlopen
chunked=chunked)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 386, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 306, in _raise_timeout
raise ReadTimeoutError(self, url, "Read timed out. (read timeout=%s)" % timeout_value)
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/lib/ring/ring.py", line 119, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 28, in run_blocking
pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/lib/ring/ring.py", line 192, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests_oauthlib/oauth2_session.py", line 516, in request
method, url, headers=headers, data=data, **kwargs
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2020-11-25 14:45:04,626 - ERROR - lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 384, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 380, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.7/http/client.py", line 1336, in getresponse
response.begin()
File "/usr/lib/python3.7/http/client.py", line 306, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.7/http/client.py", line 267, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.7/socket.py", line 589, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 307, in recv_into
raise timeout('The read operation timed out')
socket.timeout: The read operation timed out
Das zieht sich dann so durch ich glaub das ich alles drinnen habe wenn nicht kann ich dir auch das gesamte logfile anhängen.
Hi,
danke, ich versuche das mal im nächsten Update zu beheben, so dass in so einem Fall ein neuer Login erfolgt.
Ich habe gerade ein Update eingespielt. Kannst du bitte die neue Version testen ob es den Fehler behebt? Danke!
Hi
alles klar hab ich gemacht ich teste mal :)
Naben zusammen,
ich hab mich nun auch an das Modul gewagt.
Installation lief ohne Fehler durch.
Leider bekomme ich vom Modul immer:
Login failed
Unter ein Auszug aus dem PythonBinding log.
vielleicht weis einer Rat.
vg
pflock_y
2020-12-02 19:06:42,715 - INFO - lib.fhem_pythonbinding: Starting pythonbinding...
2020-12-02 19:06:53,966 - INFO - lib.fhem_pythonbinding: FHEM connection started: 127.0.0.1
2020-12-02 19:06:54,872 - ERROR - lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/lib/utils.py", line 28, in run_blocking
pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/lib/ring/ring.py", line 215, in blocking_login
self._auth = Auth("MyProject/1.0", None, token_updater)
TypeError: __init__() takes from 1 to 3 positional arguments but 4 were given
2020-12-02 19:06:54,888 - ERROR - rrring: Login failed
Das Passwort hast du bereits gesetzt?
jupp, sogar mehrfach.
Ich hab auch meinen Gast Account ausprobiert, leider auch ohne erfolg.
Poste bitte die Ausgaben von
python3 -V
sudo -u fhem pip3 show ring_doorbell
...:~ $ python3 -V
Python 3.7.3
und
...:~ $ sudo -u fhem pip3 show ring_doorbell
Name: ring-doorbell
Version: 0.4.0
Summary: A Python library to communicate with Ring Door Bell (https://ring.com/)
Home-page: https://github.com/tchellomello/python-ring-doorbell
Author: Marcelo Moreira de Mello
Author-email: tchello.mello@gmail.com
License: LGPLv3+
Location: /opt/fhem/.local/lib/python3.7/site-packages
Requires: pytz, requests, requests-oauthlib, oauthlib
Required-by:
sudo -u fhem pip3 install --upgrade ring_doorbell
Dann klappt es :)
Ich werde noch einbauen, dass die aktuelle Version automatisch installiert wird.
SUPER LÄUFT!!!
Danke....
vg
pflock_y
Hallo, finde ich irgendwo eine Doku was das Modul kann? Auf github steht nur, dass es mit Ring spricht aber was genau kann man machen?
Alarm erkennen
Volume steuern
und jede Menge Readings ausgeben :)
Sollte für alle Ring Devices funktionieren. Ich selbst habe leider keine, aber einige haben hier schon erfolgreich getestet.
Moin zusammen,
seit gestern funktioniert das pybinding nicht mehr.
unten ein list und ein log Auszug.
vielleicht weis jemand was.....
vg
pflock_y
list:
Internals:
BindingType Python
DEF Python
DeviceName ws:127.0.0.1:15733
FUUID 5fc7c384-f33f-e7bf-7b52-2fb33e7e19cb4960
IP 127.0.0.1
NAME local_pybinding
NEXT_OPEN 1607507116.99361
NR 218
NTFY_ORDER 50-local_pybinding
PARTIAL
PORT 15733
STATE disconnected
TYPE BindingsIo
localBinding 1
nextOpenDelay 10
READINGS:
2020-12-09 10:45:06 state disconnected
args:
local_pybinding
BindingsIo
Python
argsh:
Attributes:
room System
log:
Traceback (most recent call last):
File "FHEM/bindings/python/fhempy", line 128, in <module>
import lib.fhem_pythonbinding as fpb
File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 15, in <module>
from .core.zeroconf import zeroconf
File "/opt/fhem/FHEM/bindings/python/lib/core/zeroconf.py", line 2, in <module>
from zeroconf import Zeroconf, ServiceInfo
ModuleNotFoundError: No module named 'zeroconf'
Traceback (most recent call last):
File "FHEM/bindings/python/fhempy", line 128, in <module>
import lib.fhem_pythonbinding as fpb
File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 15, in <module>
from .core.zeroconf import zeroconf
File "/opt/fhem/FHEM/bindings/python/lib/core/zeroconf.py", line 2, in <module>
from zeroconf import Zeroconf, ServiceInfo
ModuleNotFoundError: No module named 'zeroconf'
Traceback (most recent call last):
File "FHEM/bindings/python/fhempy", line 128, in <module>
import lib.fhem_pythonbinding as fpb
File "/opt/fhem/FHEM/bindings/python/lib/fhem_pythonbinding.py", line 15, in <module>
from .core.zeroconf import zeroconf
File "/opt/fhem/FHEM/bindings/python/lib/core/zeroconf.py", line 2, in <module>
from zeroconf import Zeroconf, ServiceInfo
ModuleNotFoundError: No module named 'zeroconf'
Hi
kann ich bestätigen beim update stand etwas von einer änderung im readme kann ich aber nichts entdecken.
Danke für die Info, Fehler kann ich bestätigen. Wird heute Abend behoben.
In der Zwischenzeit sollte ein
sudo -u fhem pip3 install zeroconf
den Fehler beheben.
Zitat von: dominik am 09 Dezember 2020, 17:15:34
Danke für die Info, Fehler kann ich bestätigen. Wird heute Abend behoben.
In der Zwischenzeit sollte ein
sudo -u fhem pip3 install zeroconf
den Fehler beheben.
jupp läuft damit wieder.
vg
pflock_y
I am concerned...
2020.12.09 22:16:17.348 1: Downloading https://raw.githubusercontent.com/dominikkarall/fhempy/master/controls_pythonbinding.txt
2020.12.09 22:16:17.348 1:
2020.12.09 22:16:17.348 1: pythonbinding
2020.12.09 22:16:17.410 1: UPD FHEM/10_PythonBinding.pm
2020.12.09 22:16:17.514 1: UPD FHEM/10_BindingsIo.pm
2020.12.09 22:16:17.753 1: UPD FHEM/10_PythonModule.pm
2020.12.09 22:16:17.937 1: UPD FHEM/bindings/python/fhempy
2020.12.09 22:16:18.101 1: Got 14 bytes for FHEM/bindings/python/fhempy, expected 4096
2020.12.09 22:16:18.101 1: aborting.
Kannst du es bitte nochmals testen. Eventuell ist da gerade mein Update zur gleichen Zeit online gegangen. Im controls File steht naemlich 3912 bytes
https://github.com/dominikkarall/fhempy/blob/master/controls_pythonbinding.txt#L124
Hi Dominik,
leider bleibt es so bei mir
2020.12.09 22:54:50.364 1: Downloading https://raw.githubusercontent.com/dominikkarall/fhempy/master/controls_pythonbinding.txt
2020.12.09 22:54:50.364 1:
2020.12.09 22:54:50.365 1: pythonbinding
2020.12.09 22:54:50.763 1: UPD FHEM/10_PythonBinding.pm
2020.12.09 22:54:50.938 1: UPD FHEM/10_BindingsIo.pm
2020.12.09 22:54:51.124 1: UPD FHEM/10_PythonModule.pm
2020.12.09 22:54:51.309 1: UPD FHEM/bindings/python/fhempy
2020.12.09 22:54:51.456 1: Got 14 bytes for FHEM/bindings/python/fhempy, expected 4096
2020.12.09 22:54:51.456 1: aborting.
Frage: Wie kann ich fhempy komplett aus FHEM entfernen?
Ich brauche es eigentlich nicht, da alles laeuft auf dem gleichen Server (ich habe es installiert als ich seit gestern versuchte zu verstehen warum mein PythonBinding nicht mehr funktioniert :-[ ).
Ich habe es bereits mit 'pip3 uninstall fhempy' und 'sudo pip3 uninstall fhempy' entfernt, aber beim FHEM Update sehe ich es noch.
oder sollte ich einfach
UPD FHEM/10_BindingsIo.pm
UPD FHEM/10_PythonBinding.pm
UPD FHEM/bindings/python/bin/fhempy
UPD FHEM/bindings/python/fhempy/__init__.py
diese drei updaten?
Schoene Gruesse
Manos
Bitte nochmals ein "update" machen.
Was meinst du mit entfernen da du es in FHEM hast? Wenn du es nicht mit pip3 installiert hast, dann ist es auch nur in FHEM vorhanden.
Vielen Dank Dominik,
dieses Mal hat das Update funktioniert! :D
schoene Gruesse
Manos
EDIT: Geloescht! Es war ein "restart" des Pythonbinding_15733 notwendig, jetzt werden alle Werte regelmaessig aktualisiert!
Ich bin zu Dumm fuer den Sch... :-[
Gestern ist das Update gelunden, PythonBinding (local) funktioniert:
Internals:
BindingType Python
CFGFN
DEF Python
DeviceName ws:127.0.0.1:15733
FD 38
FUUID 5fd1520c-f33f-6a06-6ce1-3a0f3126c85bd37b
IP 127.0.0.1
NAME pybinding
NR 409
NTFY_ORDER 50-pybinding
PARTIAL
PORT 15733
STATE opened
TYPE BindingsIo
WEBSOCKET 1
localBinding 1
nextOpenDelay 10
Helper:
DBLOG:
state:
Logdb:
TIME 1607553551.92303
VALUE CONNECTED
version:
Logdb:
TIME 1607553551.93326
VALUE 0.1.6
READINGS:
2020-12-09 23:39:11 state opened
2020-12-09 23:39:11 version 0.1.6
args:
pybinding
BindingsIo
Python
argsh:
Attributes:
devStateIcon opened:rc_GREEN@green
group _connector
room hidden
Seit "2020-12-09 23:39:11 state opened"
upnp habe ich neu definiert (23:40) und funktioniert(e)
Internals:
CFGFN
DEF discover_upnp
FUUID 5fd15262-f33f-6a06-d363-5eec60d34c8f656e
IODev pybinding
NAME upnp
NR 430
PYTHONTYPE discover_upnp
STATE active
TYPE PythonModule
Helper:
DBLOG:
state:
Logdb:
TIME 1607553636.72019
VALUE PythonBinding timeout
READINGS:
2020-12-09 23:40:36 state active
2020-12-09 23:40:40 uuid.xxxxxxxx_urn.schemas-upnp-org.device.tvdevice.1 DMS_AC6F
2020-12-09 23:40:42 uuid.xxxxxxxx_urn.samsung.com.device.MainTVServer2.1 [TV] Bed room
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.fritzbox.1 Repeater-Stock0
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.fritzbox.1 Repeater-Stock2
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.fritzbox.1 Repeater-Stock1
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.fritzbox.1 FRITZ!Box 7590
2020-12-09 23:40:43 uuid.xxxxxxxx_urn.schemas-upnp-org.device.MediaRenderer.1 [TV] Bed room
2020-12-09 23:40:43 uuid.xxxxxxxx_urn.samsung.com.device.RemoteControlReceiver.1 [TV] Bed room
2020-12-09 23:41:33 uuid.xxxxxxxx_urn.dial-multiscreen-org.device.dialreceiver.1 [TV] Bed room
2020-12-09 23:51:04 uuid.xxxxxxxx_urn.dial-multiscreen-org.device.dialreceiver.1 [TV] Samsung 6 Series (50)
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.MediaRenderer.1 [TV] Samsung 7 Series (55)
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.avmnexus.1 FRITZ!Box 7590
2020-12-09 23:40:51 uuid.xxxxxxxx_urn.schemas-upnp-org.device.MediaServer.1 ManosMyCloudEX2
2020-12-10 13:57:41 uuid.xxxxxxxx_urn.dial-multiscreen-org.device.dialreceiver.1 [TV] Samsung 7 Series (55)
2020-12-09 23:40:47 uuid.xxxxxxxx_urn.zenterio-com.device.mediashare.1 DMS_AC6FBB749D92
2020-12-09 23:40:48 uuid.xxxxxxxx_urn.zenterio-com.device.mediashare.1 DMS_AC6FBB6E47A6
2020-12-09 23:51:04 uuid.xxxxxxxx_urn.samsung.com.device.RemoteControlReceiver.1 [TV] Samsung 6 Series (50)
2020-12-09 23:40:51 uuid.xxxxxxxxd_urn.schemas-wd-com.device.WdNAS-DEV_0314.1 ManosMyCloudEX2
2020-12-09 23:40:38 uuid.xxxxxxxx_urn.schemas-upnp-org.device.InternetGatewayDevice.1 FRITZ!Box 7590
2020-12-09 23:40:38 uuid.xxxxxxxx_urn.schemas-upnp-org.device.InternetGatewayDevice.2 InternetGatewayDeviceV2 - FRITZ!Box 7590
2020-12-09 23:40:40 uuid.xxxxxxxx_urn.zenterio-com.device.mediashare.1 DMS_AC8
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.Basic.1 Phoscon-GW-ENS (192.168.188.202)
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.l2tpv3.1 FRITZ!Box 7590
2020-12-09 23:51:04 uuid.xxxxxxxx_urn.schemas-upnp-org.device.MediaRenderer.1 [TV] Samsung 6 Series (50)
2020-12-09 23:40:48 uuid.xxxxxxxx_urn.schemas-upnp-org.device.tvdevice.1 DMS_AC6
2020-12-09 23:40:37 uuid.xxxxxxxx_urn.schemas-upnp-org.device.MediaServer.1 Fritz!Box-MediaServer
2020-12-09 23:40:47 uuid.xxxxxxxx2_urn.schemas-upnp-org.device.tvdevice.1 DMS_AC
args:
upnp
PythonModule
discover_upnp
argsh:
Attributes:
IODev pybinding
devStateIcon active:rc_GREEN@green
icon rc_SEARCH
room _Hood->System
Aber seit 23:40 keine Updates! (und diese "VALUE PythonBinding timeout" macht mich nervoes... )
Das gleiche ist mit RING passiert:
Die alte Definition hat nicht funktioniert, ich musste sie loeschen und RING neu definieren (mit 2FA, Password, neues Geraet usw usw). Dies war erfolgreich (um 01:18), aber seitdem sehe ich keine Updates :-[
Obwohl deviceUpdateInterval, dingPollInterval auf 2 Sekunden sind (ist sowieso default) und verbose auf 5, ich sehe keine Ereignisse im EventMonitor!
Internals:
CFGFN
DEF ring xxxxl@xxx.com "Front Door"
FUUID xxxx-xxxx-xxxx
IODev pybinding
NAME RingDoorBell
NR 1190
PYTHONTYPE ring
RINGDEVICE Front Door
STATE connected
TYPE PythonModule
USERNAME xxxl@xxx.com
Helper:
DBLOG:
battery_life:
Logdb:
TIME 1607559490.71486
VALUE 96
history_1_answered:
Logdb:
TIME 1607559507.87881
VALUE 0
history_1_created_at:
Logdb:
TIME 1607559507.87881
VALUE 2020-12-09 15:54:10+00:00
history_1_kind:
Logdb:
TIME 1607559507.87881
VALUE motion
READINGS:
2020-12-10 01:18:10 address
2020-12-10 01:18:27 alert_current Error
2020-12-10 01:18:10 battery_life 96
2020-12-10 01:18:10 connection_status online
2020-12-10 01:18:10 existing_doorbell_type Mechanical
2020-12-10 01:18:10 existing_doorbell_type_enabled 1
2020-12-10 01:18:10 family doorbots
2020-12-10 01:18:10 firmware Up to Date
2020-12-10 01:18:10 has_subscription 1
2020-12-10 01:18:27 history_1_answered 0
2020-12-10 01:18:27 history_1_created_at 2020-12-09 15:54:10+00:00
2020-12-10 01:18:27 history_1_id 6904285
2020-12-10 01:18:27 history_1_kind motion
2020-12-10 01:18:27 history_2_answered 0
2020-12-10 01:18:27 history_2_created_at 2020-12-09 15:53:35+00:00
2020-12-10 01:18:27 history_2_id 69042854
2020-12-10 01:18:27 history_2_kind motion
2020-12-10 01:18:27 history_3_answered 0
2020-12-10 01:18:27 history_3_created_at 2020-12-09 15:52:41+00:00
2020-12-10 01:18:27 history_3_id 69042851
2020-12-10 01:18:27 history_3_kind motion
2020-12-10 01:18:27 history_4_answered 1
2020-12-10 01:18:27 history_4_created_at 2020-12-09 15:15:06+00:00
2020-12-10 01:18:27 history_4_id 690427548
2020-12-10 01:18:27 history_4_kind motion
2020-12-10 01:18:27 history_5_answered 0
2020-12-10 01:18:27 history_5_created_at 2020-12-09 14:40:50+00:00
2020-12-10 01:18:27 history_5_id 69042666
2020-12-10 01:18:27 history_5_kind motion
2020-12-10 01:18:10 id xxxxxx
2020-12-10 01:18:10 kind doorbell_scallop
2020-12-10 01:18:10 last_recording_id 690428
2020-12-10 01:18:27 last_recording_url https://share-service-download-bucket.s3.amazonaws.com/xxxxxxx
2020-12-10 01:18:10 latitude 50.617718
2020-12-10 01:18:10 longitude 7.3391075
2020-12-10 01:18:10 model Doorbell 3 Plus
2020-12-10 01:18:10 name Front Door
2020-12-10 01:18:08 password xxxxxxxxxxxxx
2020-12-10 01:18:09 state connected
2020-12-10 01:18:10 subscribed 1
2020-12-10 01:18:10 subscribed_motion 1
2020-12-10 01:18:10 timezone Europe/Berlin
2020-12-10 01:18:09 token xxxxxxxxxxxxxxx
2020-12-10 01:18:10 volume 8
2020-12-10 01:18:27 wifi_name FRITZ!Box 7590 WR
2020-12-10 01:18:27 wifi_signal_category good
2020-12-10 01:18:27 wifi_signal_strength -55.0
args:
RingDoorBell2
PythonModule
ring
xxxx@xxxxxcom
Front Door
argsh:
Attributes:
DbLogExclude .*
DbLogInclude battery_life,history_1_answered,history_1_created_at,history_1_kind
IODev pybinding
comment Alarm types: motion, ding, on_demand,
devStateIcon {
my $cnct = 'rc_YELLOW@red';;
$cnct ='rc_GREEN@green' if (ReadingsVal($name, "state", "Offline") eq "connected");;
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 "ring");;
my $bat = 'measure_battery_100@green';;
$bat ='measure_battery_50@orange' if (ReadingsNum($name, "battery_life", "Offline")<55);;$bat ='measure_battery_25@red' if (ReadingsNum($name, "battery_life", "Offline") < 25);;
"
" . FW_makeImage("$cnct","cul_wlan") . " " . FW_makeImage("$bat","cul_wlan") . " " . FW_makeImage("$motion","hue_filled_outlet") . "
Last: " . ReadingsVal($name, "alert_kind", "dead") . " (" . ReadingsTimestamp($name,"alert_kind",0) . ")
" ;;
}
deviceUpdateInterval 2
dingPollInterval 2
room Outside_Perimeter,_Hood->Sensor
userReadings alert_current {ReadingsVal($name,"alert_kind","Error")}
verbose 5
Normalerweise werden meine Probleme "zwischen Tastatuer und Buero-Stuehl" verursacht ::)
Ich frage aber lieber vorher ob irgendetwas anderes nicht funktioniert wie es sollte.
EDIT:
Ich habe vergessen, es gibt noch ein Modul: Pythonbinding_15733
Internals:
CFGFN
DEF 0
FD 37
FUUID xxxxxxxx
LAST_START 2020-12-10 14:28:19
LAST_STOP 2020-12-10 14:28:13
NAME Pythonbinding_15733
NR 410
NTFY_ORDER 50-Pythonbinding_15733
PID 263437
STARTS 3
STATE active
TYPE PythonBinding
currentlogfile ./log/PythonBinding-2020-12-10.log
logfile ./log/PythonBinding-%Y-%m-%d.log
CoProcess:
cmdFn PythonBinding_getCmd
name PythonBinding
state running FHEM/bindings/python/bin/fhempy
Helper:
DBLOG:
PythonBinding:
Logdb:
TIME 1607606899.74838
VALUE running FHEM/bindings/python/bin/fhempy
state:
Logdb:
TIME 1607553548.87302
VALUE active
READINGS:
2020-12-10 14:28:19 PythonBinding running FHEM/bindings/python/bin/fhempy
2020-12-09 23:39:08 state active
Attributes:
logfile ./log/PythonBinding-%Y-%m-%d.log
nrarchive 10
room hidden
Dies konnte ich "restarten" und jetzt sehe ich Pyhon Erreignisse im Event monitor.
Schoene Gruesse
Manos
Hi,
habe ich es richtig verstanden, dass nun alles funktioniert? Auch nach einem FHEM Neustart?
Zitat von: dominik am 10 Dezember 2020, 20:21:12
Hi,
habe ich es richtig verstanden, dass nun alles funktioniert? Auch nach einem FHEM Neustart?
Hallo Dominik,
ich habe mich zu frueh gefreut :-[
Irgendwann gegen 18:00 hat sich wieder aufgehaengt.
Ein "restart" vom Pythonbinding_15733 hat das System wieder in Ordnung gebracht.
Hier sind die Log Dateien von gestern und heute:
2020-12-10 01:03:58,568 - ERROR - fhempy.lib.fhem_pythonbinding: Failed to handle message:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/fhem_pythonbinding.py", line 301, in _onMessage
nmInstance = loadedModuleInstances[hash["NAME"]]
KeyError: 'RingDoorBell2'
2020-12-10 01:37:10,286 - ERROR - fhempy.lib.fhem_pythonbinding: Failed to handle message:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/fhem_pythonbinding.py", line 301, in _onMessage
nmInstance = loadedModuleInstances[hash["NAME"]]
KeyError: 'RingDoorBell.old'
2020-12-10 02:15:43,413 - ERROR - fhempy.lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-10 02:15:43,417 - ERROR - RingDoorBell.old: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-10 03:33:33,688 - ERROR - fhempy.lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-10 03:33:33,689 - ERROR - RingDoorBell.old: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-10 03:48:09,231 - ERROR - fhempy.lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 503 Server Error: Service Unavailable: Back-end server is at capacity for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-10 03:48:09,232 - ERROR - RingDoorBell.old: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 503 Server Error: Service Unavailable: Back-end server is at capacity for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-10 11:04:20,855 - ERROR - fhempy.lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2020-12-10 11:04:20,869 - ERROR - RingDoorBell.old: Failed to poll dings...
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 140, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2020-12-10 11:06:46,412 - ERROR - fhempy.lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2020-12-10 11:06:46,414 - ERROR - RingDoorBell.old: Failed to poll dings...
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "<string>", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 140, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2020-12-10 13:41:31,346 - ERROR - fhempy.lib.fhem_pythonbinding: Failed to handle message:
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/fhem_pythonbinding.py", line 301, in _onMessage
nmInstance = loadedModuleInstances[hash["NAME"]]
KeyError: 'TVSamsung7Series55_MediaRenderer'
2020-12-10 13:41:32,044 - ERROR - async_upnp_client.client: Got invalid value for <UpnpStateVariable(PlaybackStorageMedium, string)>: NETWORK,NONE
2020-12-10 13:41:53,357 - ERROR - fhempy.lib.utils: Error in asyncio thread
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 241, in poll_device
self._rdevice.update_health_data()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 57, in update_health_data
self._ring.query(HEALTH_DOORBELL_ENDPOINT.format(self.id))
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/doorbots/55327801/health?api_version=9
2020-12-10 13:41:53,358 - ERROR - RingDoorBell.old: Failed to poll devices
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 241, in poll_device
self._rdevice.update_health_data()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 57, in update_health_data
self._ring.query(HEALTH_DOORBELL_ENDPOINT.format(self.id))
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/doorbots/55327801/health?api_version=9
2020-12-10 14:28:20,129 - INFO - fhempy.lib.fhem_pythonbinding: Starting pythonbinding...
2020-12-10 14:28:24,005 - INFO - fhempy.lib.fhem_pythonbinding: FHEM connection started: 127.0.0.1
2020-12-10 14:28:27,805 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:30,184 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:32,332 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:34,479 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:36,608 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:38,729 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:40,874 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:43,002 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:45,134 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:47,260 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:49,385 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:51,515 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:54,394 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:56,521 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:28:58,643 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:00,773 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:02,897 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:05,024 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:07,151 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:09,291 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:11,416 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:13,548 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:15,677 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:17,808 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:19,943 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:22,231 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:24,360 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:26,724 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:28,852 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:31,015 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:33,449 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:35,575 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:37,701 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:39,830 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:41,956 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:44,085 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:46,216 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:48,352 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:50,514 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:53,074 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:55,202 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:57,330 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:29:59,458 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:01,580 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:03,712 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:05,832 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:08,336 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:10,465 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:12,595 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:14,718 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:16,849 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:18,976 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:21,110 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:23,241 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:25,373 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:27,851 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:30,007 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:32,136 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:34,262 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:36,395 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:38,577 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:40,703 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:43,039 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:45,166 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:47,295 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:49,425 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:51,554 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:53,686 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:55,817 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:30:57,942 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:00,360 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:02,485 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:04,615 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:06,740 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:08,872 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:10,997 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:13,130 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:15,268 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:17,407 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:19,692 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:21,828 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:23,955 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:26,089 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:28,215 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:30,338 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:32,470 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:34,920 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:37,047 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:39,179 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:41,301 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:43,443 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:45,567 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:47,708 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:49,842 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:51,968 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:54,279 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:56,407 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:31:58,539 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:00,664 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:02,801 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:04,926 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:07,062 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:09,188 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:11,320 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:13,445 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:15,588 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:17,738 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:19,867 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:22,140 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:24,273 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:26,402 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:28,533 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:30,660 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:32,783 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:34,933 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:37,058 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:39,182 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:41,324 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:43,450 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:45,580 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:47,710 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:49,838 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:51,961 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:54,090 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:56,216 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:32:58,340 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:00,462 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:02,587 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:04,713 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:07,214 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:09,341 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:11,487 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:13,616 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:15,746 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:17,870 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:19,995 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:22,512 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:24,676 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:26,800 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:28,926 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:31,052 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:33,180 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:35,330 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:37,460 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:39,587 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:41,716 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:43,844 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:45,971 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:48,095 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:50,221 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:52,347 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:54,472 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:56,607 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:33:58,731 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:00,859 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:02,984 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:05,110 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:07,237 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:09,749 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:11,873 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:14,009 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:16,132 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:18,265 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:20,389 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:22,513 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:24,943 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:27,066 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:29,210 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:31,358 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:33,490 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:35,615 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:37,746 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:39,878 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:42,012 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:44,411 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:46,551 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:48,680 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:50,807 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:52,932 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:55,063 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:57,189 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:34:59,319 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:01,443 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:03,776 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:05,906 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:08,041 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:10,165 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:12,295 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:14,421 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:16,553 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:19,069 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:21,195 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:23,322 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:25,454 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:27,584 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:29,707 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:31,839 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:34,367 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:36,497 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:38,620 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:40,757 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:42,881 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:45,013 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:47,148 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:49,280 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:51,430 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:53,750 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:55,881 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:35:58,008 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:00,187 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:02,309 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:04,446 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:06,571 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:08,701 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:10,822 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:13,218 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:15,346 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:17,472 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:19,602 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:21,731 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:23,858 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:26,012 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:28,148 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:30,277 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:32,740 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:34,865 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:37,010 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:39,132 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:41,261 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:43,407 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:45,571 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:47,701 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:49,834 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:51,957 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:54,082 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:56,546 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:36:59,383 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:01,509 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:03,633 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:05,757 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:08,045 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:10,174 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:12,297 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:14,427 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:16,552 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:18,678 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:20,802 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:23,228 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:25,368 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:27,492 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:29,628 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:31,757 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:33,886 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:36,012 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:38,443 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:40,576 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:42,700 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:44,828 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:46,953 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:49,077 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:51,218 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:53,342 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:55,465 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:57,596 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:37:59,719 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:01,853 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:03,982 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:06,131 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:08,259 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:10,398 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:12,535 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:14,951 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:17,097 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:19,225 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:21,352 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:23,486 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:25,610 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:27,744 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:30,223 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:32,347 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:34,488 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:36,614 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:38,746 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:40,869 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:43,003 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:45,132 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:47,267 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:49,414 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:51,539 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:53,668 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:55,800 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:38:58,157 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:00,280 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:02,408 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:04,534 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:06,666 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:08,791 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:10,922 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:13,047 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:15,178 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:17,314 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:19,449 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:21,974 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:24,098 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:26,226 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:28,351 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:30,494 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:32,619 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:34,745 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:37,188 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:39,322 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:41,450 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:43,578 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:45,705 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:47,834 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:49,960 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:52,106 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:54,245 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:56,380 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:39:58,509 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:01,011 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:03,136 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:05,266 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:07,389 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:09,518 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:11,640 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:13,774 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:15,908 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:18,045 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:20,521 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:22,647 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:24,787 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:26,913 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:29,046 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:31,170 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:33,309 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:35,437 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:37,562 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:39,696 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:41,823 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:43,949 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:46,080 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:48,206 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:50,333 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:52,465 - DEBUG - RingDoorBell: Received dings: []
2020-12-10 14:40:54,589 - DEBUG - RingDoorBell: Received dings: []
EDIT:
Was hast du für update Werte in den Attributen? Sieht so aus als wären die zu niedrig.
requests.exceptions.HTTPError: 503 Server Error: Service Unavailable: Back-end server is at capacity for url: https://api.ring.com/clients_api/dings/active?api_version=9
Da wurdest du schon blockiert.
Danach sieht es wieder gut aus.
PS: Bitte code Block verwenden, wenn die Nachricht zu lang wird, dann bitte kürzen damit sich das Ende vom code Block ausgeht. Ist sonst sehr unübersichtlich hier. Danke.
Zitat von: dominik am 11 Dezember 2020, 20:11:12
Was hast du für update Werte in den Attributen? Sieht so aus als wären die zu niedrig.
requests.exceptions.HTTPError: 503 Server Error: Service Unavailable: Back-end server is at capacity for url: https://api.ring.com/clients_api/dings/active?api_version=9
Da wurdest du schon blockiert.
Danach sieht es wieder gut aus.
PS: Bitte code Block verwenden, wenn die Nachricht zu lang wird, dann bitte kürzen damit sich das Ende vom code Block ausgeht. Ist sonst sehr unübersichtlich hier. Danke.
meinst du
deviceUpdateInterval 2
dingPollInterval 2
vieleicht? Sollte ich die Verzoegerung laenger machen? (ich dachte 2 Sek waere sowieso Default)
sorry fuer den vorherigen Post, [/code] wurde truncated
Was ist der Unterschied zwischen 'pybinding' und 'Pythonbinding_15733' ?
Mein 'pybinding' ist "disconnected". Es ist aber 'Pythonbinding_15733' dass ich neustarten muss.
Internals:
BindingType Python
CFGFN
DEF Python
DeviceName ws:127.0.0.1:15733
FUUID xxxxxxxxxxxxxxx
IP 127.0.0.1
NAME pybinding
NEXT_OPEN 1607742462.9765
NR 409
NTFY_ORDER 50-pybinding
PARTIAL
PORT 15733
STATE disconnected
TYPE BindingsIo
localBinding 1
nextOpenDelay 10
Helper:
DBLOG:
state:
Logdb:
TIME 1607680773.88663
VALUE DISCONNECTED
version:
Logdb:
TIME 1607650885.17643
VALUE 0.1.6
READINGS:
2020-12-12 04:07:32 state disconnected
2020-12-11 02:41:25 version 0.1.6
args:
pybinding
BindingsIo
Python
argsh:
Attributes:
devStateIcon opened:rc_GREEN@green
group _connector
room hidden
verbose 5
Internals:
CFGFN
DEF 0
FD 35
FUUID xxxxxxxxxxxxxxxxxxxxxxxxx
LAST_START 2020-12-11 02:41:14
LAST_STOP 2020-12-11 02:41:14
NAME Pythonbinding_15733
NR 410
NTFY_ORDER 50-Pythonbinding_15733
PID 454628
STARTS 4
STATE active
TYPE PythonBinding
currentlogfile ./log/PythonBinding-2020-12-11.log
logfile ./log/PythonBinding-%Y-%m-%d.log
CoProcess:
cmdFn PythonBinding_getCmd
name PythonBinding
state running FHEM/bindings/python/bin/fhempy
Helper:
DBLOG:
PythonBinding:
Logdb:
TIME 1607650874.45893
VALUE running FHEM/bindings/python/bin/fhempy
state:
Logdb:
TIME 1607553548.87302
VALUE active
READINGS:
2020-12-11 02:41:14 PythonBinding running FHEM/bindings/python/bin/fhempy
2020-12-09 23:39:08 state active
Attributes:
logfile ./log/PythonBinding-%Y-%m-%d.log
nrarchive 10
room hidden
deviceUpdateInterval 2 ist viel zu kurz. Default ist 300, wobei das auch schon bei manchen Probleme machte. Ich würde daher 600 empfehlen.
devicePollInterval kann auf 2 bleiben.
pybinding = BindingsIo Type, dieses Device stellt die Verbindung zum Python Prozess über Websockets her
Pythonbinding_15733 = PythonBinding, dieses Device macht nichts anderes als den Python Prozess zu starten und zu überwachen.
Details findest du auch hier:
https://github.com/dominikkarall/fhempy#call-flow
Guten Morgen
Leider wieder ein Fehler :(. Langsam glaub ich ich bin der einzige der Probleme hat :/
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-12 01:15:34,131 - ERROR - rrring: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 241, in poll_device
self._rdevice.update_health_data()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/doorbot.py", line 57, in update_health_data
self._ring.query(HEALTH_DOORBELL_ENDPOINT.format(self.id))
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests_oauthlib/oauth2_session.py", line 516, in request
method, url, headers=headers, data=data, **kwargs
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
Hi Dominik,
Zitat von: dominik am 12 Dezember 2020, 12:48:25
pybinding = BindingsIo Type, dieses Device stellt die Verbindung zum Python Prozess über Websockets her
Pythonbinding_15733 = PythonBinding, dieses Device macht nichts anderes als den Python Prozess zu starten und zu überwachen.
Details findest du auch hier:
https://github.com/dominikkarall/fhempy#call-flow
Ich weiss, dass es fuer dich "selbstverstaendlich" klingt, ich verstehe trotzdem "Bahnhof" :P
Nee, eigentlich was mich verwirrt ist, dass 'Pythonbinding_15733' scheint OK zu sein und 'pybinding' hat das Problem. Trotzdem, muss ich an 'Pythonbinding_15733' ran (zum neu starten) und nicht an 'pybinding' (siehe Bild).
Zitat von: dominik am 12 Dezember 2020, 12:48:25
deviceUpdateInterval 2 ist viel zu kurz. Default ist 300, wobei das auch schon bei manchen Probleme machte. Ich würde daher 600 empfehlen.
devicePollInterval kann auf 2 bleiben.
Mit deviceUpdateInterval 300 hat deutlich laenger gehalten: Erst heute (13.12.2020 13:56) ist das Python Binding Offline gegangen.
Am Ende ist es gar nicht so dramatisch, ich kann ein Script bauen, um das "Pythonbinding_15733" neu zu starten wenn es offline geht (mache ich bereits fuer mein CONBEE II ).
Was ist eigentlich devicePollInterval und was ist deviceUpdateInterval ?? (oder, wo gibt es eine Erklaerung fuer diese zwei Werte denn ich habe erfolglos gesucht...)
Schoene Gruesse
Manos
Hallo Zusammen,
Ich bin neu in FHEM und kenne mich nicht mit Python aus, kann aber andere Programmiersprachen.
Ich möchte gerne erreichen, das mein FritzPhone klingelt oder sogar ein Bild anzeigt, wenn an der Doorbell jemand klingelt.
Vorweg: Ich nutze Windows.
Ich bin den Anweisungen von https://github.com/markuzzi/ring-fhem-1 gefolgt.
Python und GIT laufen und die Libs habe ich auch installiert. Wenn ich ring.ph starte und über die Ring App ein live video aufzeichne landet dieses nun auf meiner Festplatte.
So weit so gut.
1. Mir ist aufgefallen, dass ich die Meldung fhem_ring - INFO - Snapshot: False erhalten habe. Ist das wichtig für mein Vorhaben?
2. Kann mir jemand erklären was ich nun in FHEM und auf der FritzBox machen muss?
In Fhem habe ich bereits
define Ring_Haustuer dummy
attr Ring_Haustuer setList none motion ring
attr Ring_Haustuer devStateIcon none:it_camera@green motion:secur_alarm@red ring:secur_alarm@orange
gemacht.
Wie geht es weiter? State ist bei mir immer ???
Danke
Zitat von: leachim200 am 14 Dezember 2020, 08:21:50
Guten Morgen
Leider wieder ein Fehler :(. Langsam glaub ich ich bin der einzige der Probleme hat :/
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 401 Client Error: Unauthorized for url: https://api.ring.com/clients_api/dings/active?api_version=9
2020-12-12 01:15:34,131 - ERROR - rrring: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/ring/ring.py", line 241, in poll_device
self._rdevice.update_health_data()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/doorbot.py", line 57, in update_health_data
self._ring.query(HEALTH_DOORBELL_ENDPOINT.format(self.id))
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests_oauthlib/oauth2_session.py", line 516, in request
method, url, headers=headers, data=data, **kwargs
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests/adapters.py", line 516, in send
raise ConnectionError(e, request=request)
Bitte deviceUpdaterInterval und dingUpdateInterval prüfen. Probier mal 600 (device) und 2 (ding).
Zitat von: Manos am 14 Dezember 2020, 23:28:13
Hi Dominik,
Ich weiss, dass es fuer dich "selbstverstaendlich" klingt, ich verstehe trotzdem "Bahnhof" :P
Nee, eigentlich was mich verwirrt ist, dass 'Pythonbinding_15733' scheint OK zu sein und 'pybinding' hat das Problem. Trotzdem, muss ich an 'Pythonbinding_15733' ran (zum neu starten) und nicht an 'pybinding' (siehe Bild).
Mit deviceUpdateInterval 300 hat deutlich laenger gehalten: Erst heute (13.12.2020 13:56) ist das Python Binding Offline gegangen.
Am Ende ist es gar nicht so dramatisch, ich kann ein Script bauen, um das "Pythonbinding_15733" neu zu starten wenn es offline geht (mache ich bereits fuer mein CONBEE II ).
Was ist eigentlich devicePollInterval und was ist deviceUpdateInterval ?? (oder, wo gibt es eine Erklaerung fuer diese zwei Werte denn ich habe erfolglos gesucht...)
Schoene Gruesse
Manos
Schau dir bitte die Grafik unten auf der Seite an:
https://github.com/dominikkarall/fhempy
Dann sollte einiges klarer sein.
Warum du PythonBinding und nicht BindingsIo neu starten musst, ist einfach erklärt:
Stell dir vor PythonBinding ist eine HueBridge.
BindingsIo ist das Modul, welches die Verbindung zu HueBridge aufbaut.
Wenn nun BindingsIo disconnected anzeigt, startest du im Normalfall die HueBridge neu falls ein reconnect nicht funktioniert.
Gleiches ist hier der Fall, du startest PythonBinding neu, damit BindingsIo wieder zum Device connected kann. Dass PythonBinding weiterhin active anzeigt liegt daran, dass PythonBinding nur prüft ob der Prozess läuft und diese im Fehlerfall (crash) neu startet.
updateDeviceInterval: Aktualisiert alle Werte außer Alarme - also im Normalfall uninteressant, außer du prüfst regelmäßig wie hoch der WLAN Empfang des Devices ist oder Batterie. Das reicht aber garantiert alle 10min oder wahrscheinlich sogar jede Stunde.
updateDingInterval: Dies prüft auf einen Alarm (motion, ...). Daher ist dieses Intervall sehr kurz gesetzt. Leider gibt es keine andere Möglichkeit außer alle x Sekunden einen Request beim ring Server zu machen. Und es gibt keine Garantie dafür, dass dieser Service auch zukünftig zur Verfügung steht.
Bitte kein Script für den Neustart bauen. Ich will Fehler beheben und nicht Fehler verstecken.
Zitat von: Tiffytaffy am 15 Dezember 2020, 20:04:45
Hallo Zusammen,
Ich bin neu in FHEM und kenne mich nicht mit Python aus, kann aber andere Programmiersprachen.
Ich möchte gerne erreichen, das mein FritzPhone klingelt oder sogar ein Bild anzeigt, wenn an der Doorbell jemand klingelt.
Vorweg: Ich nutze Windows.
Ich bin den Anweisungen von https://github.com/markuzzi/ring-fhem-1 gefolgt.
Python und GIT laufen und die Libs habe ich auch installiert. Wenn ich ring.ph starte und über die Ring App ein live video aufzeichne landet dieses nun auf meiner Festplatte.
So weit so gut.
1. Mir ist aufgefallen, dass ich die Meldung fhem_ring - INFO - Snapshot: False erhalten habe. Ist das wichtig für mein Vorhaben?
2. Kann mir jemand erklären was ich nun in FHEM und auf der FritzBox machen muss?
In Fhem habe ich bereits
define Ring_Haustuer dummy
attr Ring_Haustuer setList none motion ring
attr Ring_Haustuer devStateIcon none:it_camera@green motion:secur_alarm@red ring:secur_alarm@orange
gemacht.
Wie geht es weiter? State ist bei mir immer ???
Danke
Nutz doch einfach fhempy für Ring:
https://github.com/dominikkarall/fhempy
Installation auf der Seite befolgen und dann das Module definieren
https://github.com/dominikkarall/fhempy/blob/master/FHEM/bindings/python/fhempy/lib/ring/README.md
Guten Morgen dominik,
ich wollte heute morgen fhempy auf meinem produktiven system zum laufen bringen.
Leider hab ich folgendes im log:
PythonBinding-2020-12-16.log:
SyntaxError: invalid syntax
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info(f"Successfully installed {package}")
^
SyntaxError: invalid syntax
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info(f"Successfully installed {package}")
^
SyntaxError: invalid syntax
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info(f"Successfully installed {package}")
^
SyntaxError: invalid syntax
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info(f"Successfully installed {package}")
^
SyntaxError: invalid syntax
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info(f"Successfully installed {package}")
^
SyntaxError: invalid syntax
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info(f"Successfully installed {package}")
^
SyntaxError: invalid syntax
und natürlich auch das im fhem.log
2020.12.16 09:05:57 1: BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
2020.12.16 09:06:08 1: BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
2020.12.16 09:06:08 1: BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
2020.12.16 09:06:18 1: BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
2020.12.16 09:06:18 1: BindingsIo: ERROR local_pybinding - error while connecting: 127.0.0.1: Verbindungsaufbau abgelehnt (111)
vg
pflock_y
ok, den ersten Fehler hab ich weg bekommen.
aus
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info(f"Successfully installed {package}")
hab ich
File "FHEM/bindings/python/bin/fhempy", line 88
logging.getLogger(__name__).info("Successfully installed {package}")
gemacht
(f"Successfully installed {package}")
nun leider ein weiterer
Traceback (most recent call last):
File "FHEM/bindings/python/bin/fhempy", line 22, in <module>
+ MIN_PYTHON_VERSION[2]
TypeError: Can't convert 'int' object to str implicitly
Traceback (most recent call last):
File "FHEM/bindings/python/bin/fhempy", line 22, in <module>
+ MIN_PYTHON_VERSION[2]
TypeError: Can't convert 'int' object to str implicitly
OK, ich hab meinen Fehler gefunden. :(
Ich installiere nach dieser Anleitung,
https://www.ramoonus.nl/2018/06/30/installing-python-3-7-on-raspberry-pi/ (https://www.ramoonus.nl/2018/06/30/installing-python-3-7-on-raspberry-pi/)
python-3-7.
python -V bringt mir die Ausgabe
Python 3.7.0
nach einem reboot des Systems kommt bei python -V das hier:
Python 2.7.13
und bei python3 -V
Python 3.5.3
das hier.
So, ich weis nicht weiter. Vielleicht kann mir jemand auf die Sprünge helfen. :o
vg
pflock_y
Hi
Ja du musst im bashrc für den User (ich nehme an fhem) eintragen das er auf die python V3 zugreifen soll.
Bei mir sehen die Einträge so aus ich verwende aber Version 3.8
alias python=/usr/local/bin/python3.8
alias pip3=pip3.8
@ leachim200
super Tipp, so wusste ich wo ich suchen kann.
Leider :-\
kommt immer noch folgendes:
+ MIN_PYTHON_VERSION[2]
TypeError: Can't convert 'int' object to str implicitly
Traceback (most recent call last):
File "FHEM/bindings/python/bin/fhempy", line 22, in <module>
+ MIN_PYTHON_VERSION[2]
TypeError: Can't convert 'int' object to str implicitly
Traceback (most recent call last):
File "FHEM/bindings/python/bin/fhempy", line 22, in <module>
+ MIN_PYTHON_VERSION[2]
TypeError: Can't convert 'int' object to str implicitly
...:~ $ python3 -V
Python 3.8.4
...:~ $ python -V
Python 3.8.4
...:~ $
Zitat von: dominik am 15 Dezember 2020, 20:18:34
Nutz doch einfach fhempy für Ring:
https://github.com/dominikkarall/fhempy
Installation auf der Seite befolgen und dann das Module definieren
https://github.com/dominikkarall/fhempy/blob/master/FHEM/bindings/python/fhempy/lib/ring/README.md
Habe nun Fhem + Python + Git auf windows neu installiert.
Die Befehle:
sudo apt install python3 python3-pip libssl-dev libffi-dev
sudo cpan Protocol::WebSocket
brauche ich in Windows ja nicht.
Kann ich nun gleich mit
update add https://raw.githubusercontent.com/dominikkarall/fhempy/master/controls_pythonbinding.txt
update
define local_pybinding BindingsIo Python
in Fhem weitermachen?
Danke und Gruß
@pflock_y, warum installierst du nicht per apt python3? Ansonsten empfehle ich python3 systemweit auf 3.7 zu setzen.
https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux#h2-change-python-version-system-wide
@Tiffytaffy
Naja, python3 und Protocol::WebSocket musst du trotzdem installieren. Dann eben nicht per apt und cpan sondern mit entsprechenden Windows Commands - die kenne ich jedoch nicht, da ich alles auf Linux laufen lasse.
Zitat von: dominik am 16 Dezember 2020, 20:30:09
@pflock_y, warum installierst du nicht per apt python3? Ansonsten empfehle ich python3 systemweit auf 3.7 zu setzen.
https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux#h2-change-python-version-system-wide
@Tiffytaffy
Naja, python3 und Protocol::WebSocket musst du trotzdem installieren. Dann eben nicht per apt und cpan sondern mit entsprechenden Windows Commands - die kenne ich jedoch nicht, da ich alles auf Linux laufen lasse.
Ich habe ja bereits Version python-3.9.1 installiert. Oder ist mit python3 etwas anderes gemeint? Wenn ja, dann werde ich das Googeln wie das unter windows gehen kann.
Ok, das konnte ich den Post nicht entnehmen. Ich habe bislang nur mit Python 3.7 getestet, kann daher nicht garantieren, dass 3.9 auch klappt.
Perl Websockets ist auch installiert? Pip? Wenn ja, dann einfach mal starten und die Ergebnisse posten :)
Zitat von: dominik am 16 Dezember 2020, 21:07:06
Ok, das konnte ich den Post nicht entnehmen. Ich habe bislang nur mit Python 3.7 getestet, kann daher nicht garantieren, dass 3.9 auch klappt.
Perl Websockets ist auch installiert? Pip? Wenn ja, dann einfach mal starten und die Ergebnisse posten :)
cpan Protocol::WebSocket ging auch unter Windows.
FHEM:
update add https://raw.githubusercontent.com/dominikkarall/fhempy/master/controls_pythonbinding.txt
update
hat funktioniert.
define local_pybinding BindingsIo Python ist dann gescheitert. Wobei PythonBinding-2020-12-16.log angelegt wird aber leer ist.
Werde es Morgen noch mal Versuchen
2020.12.16 23:35:47 1: starting in console mode
2020.12.16 23:35:47 1: Including fhem.cfg
2020.12.16 23:35:47 3: WEB: port 8083 opened
2020.12.16 23:35:47 2: eventTypes: loaded 0 events from ./log/eventTypes.txt
2020.12.16 23:35:47 1: Including ./log/fhem.save
2020.12.16 23:35:47 1: Messages collected while initializing FHEM:SecurityCheck:
WEB is not password protected
Protect this FHEM installation by defining an allowed device with define allowed allowed
You can disable this message with attr global motd none
2020.12.16 23:35:47 3: initialUsbCheck return value: This command is not yet supported on windows
2020.12.16 23:35:47 0: Featurelevel: 6
2020.12.16 23:35:47 0: Server started with 6 defined entities (fhem.pl:23306/2020-12-07 perl:5.032000 os:MSWin32 user:Ich pid:4128)
2020.12.16 23:36:05 3: BindingsIo v1.0.0
2020.12.16 23:36:05 3: PythonBinding v1.0.0
2020.12.16 23:36:05 3: Pythonbinding_15733: starting
2020.12.16 23:36:05 3: Pythonbinding_15733: using logfile: ./log/PythonBinding-2020-12-16.log
2020.12.16 23:36:05 1: exec failed
2020.12.16 23:36:05 1: set the alexaFHEM-cmd attribut to: <path>/alexa-fhem
Jetzt beendet sich Fhem von selbst.
Zitat von: dominik am 15 Dezember 2020, 20:16:50
Warum du PythonBinding und nicht BindingsIo neu starten musst, ist einfach erklärt:
Stell dir vor PythonBinding ist eine HueBridge.
BindingsIo ist das Modul, welches die Verbindung zu HueBridge aufbaut.
Wenn nun BindingsIo disconnected anzeigt, startest du im Normalfall die HueBridge neu falls ein reconnect nicht funktioniert.
Gleiches ist hier der Fall, du startest PythonBinding neu, damit BindingsIo wieder zum Device connected kann. Dass PythonBinding weiterhin active anzeigt liegt daran, dass PythonBinding nur prüft ob der Prozess läuft und diese im Fehlerfall (crash) neu startet.
Danke, das war verstaendlich! :D
(warum du nicht beides in ein Modul gebunden hast, hat mich verwirrt, ist es aber nicht wichtig).
Zitat von: dominik am 15 Dezember 2020, 20:16:50
updateDeviceInterval: Aktualisiert alle Werte außer Alarme - also im Normalfall uninteressant, außer du prüfst regelmäßig wie hoch der WLAN Empfang des Devices ist oder Batterie. Das reicht aber garantiert alle 10min oder wahrscheinlich sogar jede Stunde.
updateDingInterval: Dies prüft auf einen Alarm (motion, ...). Daher ist dieses Intervall sehr kurz gesetzt. Leider gibt es keine andere Möglichkeit außer alle x Sekunden einen Request beim ring Server zu machen. Und es gibt keine Garantie dafür, dass dieser Service auch zukünftig zur Verfügung steht.
Aha! Vielen Dank. Jetzt habe ich das verstanden.
updateDingInterval ist genau das richtige fuer mich.
updateDeviceInterval dachte ich macht etwas ganz anderes - Jede Stunde ist mehr als ausreichend.
Zitat von: dominik am 15 Dezember 2020, 20:16:50
Bitte kein Script für den Neustart bauen. Ich will Fehler beheben und nicht Fehler verstecken.
Spielverderber ;D Hatte ich bereits gemacht, war aber gar nicht noetig: Mit updateDeviceInterval 300 funktioniert Ring (und PythonBinding) ohne Probleme (jetzt werde ich updateDeviceInterval auf 2000 stellen).
Vielen Dank Dominik, es ist eine unglaublige Hilfe dieses Pythonbinding!
Ich habe mit ring und discover_upnp angefangen aber sehe sehr viele interessante Module (TensorFlow, xiaomi_tokens, miio ) ;D
Schoene Gruesse,
Manos
P.S. Verstehe ich das Richtig? Mit xiaomi_tokens kann ich den verschluesselten Token meines XIOMI Airpurifiers 3H finden, ohne ein gerootetes Smartphone haben zu muessen? Das ist ja Super!
Zitat von: dominik am 16 Dezember 2020, 20:30:09
@pflock_y, warum installierst du nicht per apt python3? Ansonsten empfehle ich python3 systemweit auf 3.7 zu setzen.
https://linuxconfig.org/how-to-change-from-default-to-alternative-python-version-on-debian-linux#h2-change-python-version-system-wide
@Tiffytaffy
Naja, python3 und Protocol::WebSocket musst du trotzdem installieren. Dann eben nicht per apt und cpan sondern mit entsprechenden Windows Commands - die kenne ich jedoch nicht, da ich alles auf Linux laufen lasse.
Hallo dominik,
"warum installierst du nicht per apt python3" ging nicht. Ich weiss auch warum, Raspberry mit Jessy konnte nur python 3.5.x.
Ich hab jetzt den Umstieg auf Buster gemacht, siehe da, läuft.
Auch bei apt-get install python3 --> kommt nun die version 3.7.3 als aktuellste raus.
Danke für die Unterstützung
vg
pflock_y
Zitat von: Manos am 17 Dezember 2020, 02:46:16
(warum du nicht beides in ein Modul gebunden hast, hat mich verwirrt, ist es aber nicht wichtig).
Das hat den Grund, dass fhempy auch über mehrere Nodes verteilt werden kann. Das bedeutet, du lässt fhempy auf einem 2. RPi laufen (wegen Bluetooth, oder Lastverteilung, oder....) und verbindest dann mit dem BindingsIo dort hin. Dafür brauchst aber kein PythonBinding, weil das läuft Remote.
Zitat
P.S. Verstehe ich das Richtig? Mit xiaomi_tokens kann ich den verschluesselten Token meines XIOMI Airpurifiers 3H finden, ohne ein gerootetes Smartphone haben zu muessen? Das ist ja Super!
Ja, genau.
@pflock_y, perfekt, freut mich, dass es funktioniert! :)
@Tiffytaffy, ich glaube das liegt an der fhempy Datei, da wird "#!/usr/bin/env python3" benutzt und ich bin mir nicht sicher wie das unter Windows funktioniert. Schau mal ob das hier hilft:
https://blog.python.org/2011/07/python-launcher-for-windows_11.html
Zitat von: dominik am 17 Dezember 2020, 19:39:03
@Tiffytaffy, ich glaube das liegt an der fhempy Datei, da wird "#!/usr/bin/env python3" benutzt und ich bin mir nicht sicher wie das unter Windows funktioniert. Schau mal ob das hier hilft:
https://blog.python.org/2011/07/python-launcher-for-windows_11.html
Hallo,
ich bin mit dem python-launcher-for-windows leider auch nicht weiter gekommen. Gleiches Verhalten.
Direkt nach dem update Befehl und vor dem define local_pybinding BindingsIo Python
habe ich auch mal die Zeile #!/usr/bin/env python3 mal entfernt oder auch durch #!C:/Users/Ich/AppData/Local/Programs/Python/Python37/python.exe ersetzt. Und einmal auch die ganze fhempy Datei gelöscht.
Die Fehlermeldung bleibt stets gleich.
Sollte ich mal eine Linux-Umgebung haben, dann kann ich das Ganze ja noch mal damit versuchen.
Danke für die Unterstützung
Gruß
Zitat von: dominik am 15 Dezember 2020, 20:16:50
updateDeviceInterval: Aktualisiert alle Werte außer Alarme - also im Normalfall uninteressant, außer du prüfst regelmäßig wie hoch der WLAN Empfang des Devices ist oder Batterie. Das reicht aber garantiert alle 10min oder wahrscheinlich sogar jede Stunde.
updateDingInterval: Dies prüft auf einen Alarm (motion, ...). Daher ist dieses Intervall sehr kurz gesetzt. Leider gibt es keine andere Möglichkeit außer alle x Sekunden einen Request beim ring Server zu machen. Und es gibt keine Garantie dafür, dass dieser Service auch zukünftig zur Verfügung steht.
Hallo Dominik,
ich bin nicht ganz sicher, dass ich alles korrekt mache.
PythonBinding funktioniert ohne Unterbrechungen.
Trotz deviceUpdateInterval 1800 und dingPollInterval 2, ich sehe die alarm Werte nicht aktualisieren.
Ich habe Pythonbinding_15733 vorsichtshalber restarted und trotzdem nicht das erhoffte Ergebnis erzielt
Ich habe zwei Gruppen die mich interessieren (ich verstehe den Unterschied nicht):
alert_id, alert_kind, alert_sip_tound
history_1_answered, history_1_created_at, history_1_id, history_1_kindIn den meisten Faellen sind die Werte in beiden Grippen gleich.
Sie werden aber sehr unregelmaessig aktualisiert (siehe Bild, Pythonbinding_15733 restarted um 12:20:17).
Internals:
DEF ring xxxxxxxx.com "Front Door"
FUUID xxxxxxxx
FVERSION 10_PythonModule.pm:0.182830/2019-01-16
IODev pybinding
NAME RingDoorBell
NR 321
PYTHONTYPE ring
RINGDEVICE Front Door
STATE connected
TYPE PythonModule
USERNAME xxxxxxxx.com
Helper:
DBLOG:
battery_life:
Logdb:
TIME 1608376817.58064
VALUE 91
history_1_created_at:
Logdb:
TIME 1608376824.36776
VALUE 2020-12-19 11:13:33+00:00
READINGS:
2020-12-10 01:18:10 address xxxxxxxx
2020-12-19 00:36:29 alert_current motion
2020-12-19 12:26:15 alert_id 6907927301888687161
2020-12-19 12:26:15 alert_kind motion
2020-12-19 12:26:15 alert_sip_to sip:xxxxxxxx;transport=tls
2020-12-19 12:26:15 alert_sip_token
2020-12-19 12:20:17 battery_life 91
2020-12-10 01:18:10 connection_status online
2020-12-10 01:18:10 existing_doorbell_type Mechanical
2020-12-10 01:18:10 existing_doorbell_type_enabled 1
2020-12-10 01:18:10 family doorbots
2020-12-10 01:18:10 firmware Up to Date
2020-12-10 01:18:10 has_subscription 1
2020-12-18 16:55:47 history_1_answered 0
2020-12-19 12:20:24 history_1_created_at 2020-12-19 11:13:33+00:00
2020-12-19 12:20:24 history_1_id 6907924093548117049
2020-12-17 16:21:12 history_1_kind motion
2020-12-18 18:26:01 history_2_answered 0
2020-12-19 12:20:24 history_2_created_at 2020-12-19 10:31:24+00:00
2020-12-19 12:20:24 history_2_id 6907913231575825465
2020-12-19 12:20:24 history_2_kind motion
2020-12-18 22:06:11 history_3_answered 0
2020-12-19 12:20:24 history_3_created_at 2020-12-19 09:33:07+00:00
2020-12-19 12:20:24 history_3_id 6907898212075191353
2020-12-17 16:21:12 history_3_kind motion
2020-12-14 23:47:00 history_4_answered 0
2020-12-19 12:20:24 history_4_created_at 2020-12-19 09:23:45+00:00
2020-12-19 12:20:24 history_4_id 6907895798303571001
2020-12-17 17:21:25 history_4_kind motion
2020-12-19 12:20:24 history_5_answered 0
2020-12-19 12:20:24 history_5_created_at 2020-12-19 09:15:00+00:00
2020-12-19 12:20:24 history_5_id 6907893543445740601
2020-12-16 16:44:26 history_5_kind motion
2020-12-10 01:18:10 id 54e019f73c41
2020-12-10 01:18:10 kind doorbell_scallop
2020-12-19 12:20:17 last_recording_id 6907924093548117049
2020-12-19 12:20:23 last_recording_url https://share-service-xxxxxxxx
2020-12-10 01:18:10 latitude 50.617718
2020-12-10 01:18:10 longitude 7.3391075
2020-12-10 01:18:10 model Doorbell 3 Plus
2020-12-10 01:18:10 name Front Door
2020-12-10 01:18:08 password xxxxxxxx
2020-12-19 12:26:17 state connected
2020-12-10 01:18:10 subscribed 1
2020-12-10 01:18:10 subscribed_motion 1
2020-12-10 01:18:10 timezone Europe/Berlin
2020-12-19 12:20:15 token xxxxxxxx
2020-12-10 01:18:10 volume 8
2020-12-19 12:20:23 wifi_name xxxxxxxx
2020-12-19 12:20:23 wifi_signal_category good
2020-12-19 12:20:23 wifi_signal_strength -55.0
args:
RingDoorBell
PythonModule
ring
xxxxxxxx.com
Front Door
argsh:
Attributes:
DbLogExclude .*
DbLogInclude battery_life,history_1_answered,history_1_created_at,history_1_kind
IODev pybinding
comment Alarm types: motion, ding, on_demand,
devStateIcon {
my $cnct = 'rc_YELLOW@red';;
$cnct ='rc_GREEN@green' if (ReadingsVal($name, "state", "Offline") eq "connected");;
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 $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@green' if (ReadingsVal("Ring_FrontDoor", "state", "dead") eq "on_demand");;
$motionDummy='it_camera@blue' if (ReadingsVal("Ring_FrontDoor", "state", "dead") eq "none");;
my $bat = 'measure_battery_100@green';;
$bat ='measure_battery_50@orange' if (ReadingsNum($name, "battery_life", "Offline")<55);;
$bat ='measure_battery_25@red' if (ReadingsNum($name, "battery_life", "Offline") < 25);;
"
" . FW_makeImage("$cnct","cul_wlan") . " " . FW_makeImage("$bat","cul_wlan") . " " . FW_makeImage("$motionDummy","hue_filled_outlet") . "
Last: " . ReadingsVal($name, "alert_kind", "dead") . " " . FW_makeImage("$motion","hue_filled_outlet") . " (" . ReadingsTimestamp($name,"alert_kind",0) . ")
" ;;
}
deviceUpdateInterval 1800
dingPollInterval 2
event-on-change-reading alert_kind,battery_life,history_1_answered,history_1_created_at,history_1_kind
room Outside_Perimeter,_Hood->Sensor
verbose 0
Hi,
alles was unter alert_* kommt ist der aktive Alarm. history_* ist nichts anderes als die History der Alarme. Daher muss der history_1 Eintrag eigentlich immer gleich dem alert_* Eintrag sein. Wenn du auf etwas reagieren willst, dann nimm alert oder state.
//Edit: History wird mit dem updateDeviceInterval aktualisiert, daher hat es eine Verzögerung zum Alert.
Hallo Dominik,
nur zur Info: ich habe habe ein bisschen mit ReadingsVal($name, "state", "??") experimentiert, und folgendes festgestellt:
Die einzige Werte die ich bis jetzt "gesehen" habe, sind connected, oder disconnected (die Verbindung zu Python existiert, oder nicht), deswegen habe ich es nur als Indikator fuer die Python Verbindung benutzt.
Per Zufall musste ich feststellen, 'state' reagiert fuer alle andere Ereignisse!
Obwohl, ich es kaum erkennen kann, ich sehe nur "connected" (wahrscheinlich weil ich dingPollInterval sehr kurz (2 Sek.) habe)
Ich habe ploetzlich die Werte auf meine SQL Datenbank endekt.
Hallo,
also bei mir müllt pythonbinding seid einigen Tagen das Log sekündlich zu. Im binding Log finde ich folgendes:
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 140, in <module>
Traceback (most recent call last):
During handling of the above exception, another exception occurred:
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 136, in <module>
Traceback (most recent call last):
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 140, in <module>
Traceback (most recent call last):
During handling of the above exception, another exception occurred:
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 136, in <module>
Im FHEM Log steht wie erwähnt aller Sekunden nur
BindingsIo: ERROR pythonbinding - error while connecting: connect to http://127.0.0.1:15733 timed out
Geändert habe ich nichts. Der Rechner wurde nur nach einem Update des Betriebssystems neu gestartet.
Zitat von: Manos am 20 Dezember 2020, 23:54:53
Hallo Dominik,
nur zur Info: ich habe habe ein bisschen mit ReadingsVal($name, "state", "??") experimentiert, und folgendes festgestellt:
Die einzige Werte die ich bis jetzt "gesehen" habe, sind connected, oder disconnected (die Verbindung zu Python existiert, oder nicht), deswegen habe ich es nur als Indikator fuer die Python Verbindung benutzt.
Per Zufall musste ich feststellen, 'state' reagiert fuer alle andere Ereignisse!
Obwohl, ich es kaum erkennen kann, ich sehe nur "connected" (wahrscheinlich weil ich dingPollInterval sehr kurz (2 Sek.) habe)
Ich habe ploetzlich die Werte auf meine SQL Datenbank endekt.
Ja, state wird auf die Alerts gesetzt für die Zeit solange der Alert aktiv ist. Ich wusste nicht, dass der nur 2s aktiv ist. Aber du kannst definitiv den state Alert mit z.B. DOIF verwenden.
Zitat von: dlehmann69 am 21 Dezember 2020, 09:25:52
Hallo,
also bei mir müllt pythonbinding seid einigen Tagen das Log sekündlich zu. Im binding Log finde ich folgendes:
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 140, in <module>
Traceback (most recent call last):
During handling of the above exception, another exception occurred:
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 136, in <module>
Traceback (most recent call last):
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 140, in <module>
Traceback (most recent call last):
During handling of the above exception, another exception occurred:
ModuleNotFoundError: No module named 'fhempy'
import fhempy.lib.fhem_pythonbinding as fpb
File "FHEM/bindings/python/bin/fhempy", line 136, in <module>
Im FHEM Log steht wie erwähnt aller Sekunden nur
BindingsIo: ERROR pythonbinding - error while connecting: connect to http://127.0.0.1:15733 timed out
Geändert habe ich nichts. Der Rechner wurde nur nach einem Update des Betriebssystems neu gestartet.
Da ist wohl beim Update was schief gegangen. Hast du schon ein "update" in FHEM gemacht?
Ja Update habe ich am 13. Dezember durchgeführt. Der Fehler taucht im Log auch erst seit dem 19. Dezember Mitternacht auf. Bis dahin lief nach dem FHEM Neustart alles einwandfrei.
Mach bitte noch ein "update" in FHEM und gib dann Bescheid ob es läuft.
okay ich habe ein update force für das entsprechende Repository gemacht, da es ja sonst nichts zu tun gibt. Nach einem FHEM Neustart immer noch der Fehler da.
In welchem Ordner hast du deine FHEM Installation?
ganz normal in opt/fhem
Poste bitte mal die Ausgabe von
ls /opt/fhem/FHEM/bindings/python/
dirk@homeserver:~$ ls /opt/fhem/FHEM/bindings/python/
bin delete_fhempy fhempy __init__.py lib pythonbinding.py
Sieht gut aus...bitte noch
ls /opt/fhem/FHEM/bindings/python/fhempy
dirk@homeserver:~$ ls /opt/fhem/FHEM/bindings/python/fhempy
__init__.py lib __pycache__
mach bitte mal
pi@raspberry40:/opt/fhem $ FHEM/bindings/python/bin/fhempy
2020-12-22 15:28:54,420 - INFO - __main__: Attempting install of websockets
...
Habe ich mal gemacht mit folgenden Ausgaben.
root@homeserver:/opt/fhem# FHEM/bindings/python/bin/fhempy
2020-12-22 15:49:04,364 - INFO - __main__: Attempting install of zeroconf>=0.28.6
2020-12-22 15:49:10,141 - INFO - __main__: Successfully installed zeroconf>=0.28.6
2020-12-22 15:49:10,540 - INFO - fhempy.lib.fhem_pythonbinding: Starting pythonbinding...
Traceback (most recent call last):
File "FHEM/bindings/python/bin/fhempy", line 143, in <module>
fpb.run()
File "/opt/fhem/FHEM/bindings/python/fhempy/lib/fhem_pythonbinding.py", line 403, in run
asyncio.get_event_loop().run_until_complete(
File "/usr/lib/python3.8/asyncio/base_events.py", line 616, in run_until_complete
return future.result()
File "/usr/lib/python3.8/asyncio/tasks.py", line 684, in _wrap_awaitable
return (yield from awaitable.__await__())
File "/usr/local/lib/python3.8/dist-packages/websockets/server.py", line 965, in __await_impl__
server = await self._create_server()
File "/usr/lib/python3.8/asyncio/base_events.py", line 1463, in create_server
raise OSError(err.errno, 'error while attempting '
OSError: [Errno 98] error while attempting to bind on address ('0.0.0.0', 15733): address already in use
Sieht gut aus, du hast wahrscheinlich schon in FHEM PythonBinding definiert und daher läuft fhempy schon.
Schau mal ob schon connected in FHEM steht.
Leider immer noch disconnected.
Der pythonbinding_0 will immer wieder neu starten und geht dann aber sofort auf stopped. Im Log stehen die gleichen Meldung wie eben auf der Befehlszeile.
Pythonbinding_0? Das sollte eigentlich nicht existieren, nur Pythonbinding_15733. Schau mal ob das läuft.
Also bei mir gibt es zwei Def mit dem Namen Pythonbinding... Hier mal das List von beiden.
Internals:
BindingType Python
DEF Python
DeviceName ws:127.0.0.1:15733
FUUID 5fa3e696-f33f-73c2-38d2-086fea2bc49bb496
IP 127.0.0.1
NAME pythonbinding
NEXT_OPEN 1608667417.89774
NR 438
NTFY_ORDER 50-pythonbinding
PARTIAL
PORT 15733
STATE disconnected
TYPE BindingsIo
localBinding 1
nextOpenDelay 10
Helper:
DBLOG:
state:
DBLogging:
TIME 1608649843.61117
VALUE DISCONNECTED
READINGS:
2020-12-22 21:03:27 state disconnected
2020-12-13 14:47:23 version 0.1.6
args:
pythonbinding
BindingsIo
Python
argsh:
Attributes:
room hidden
Internals:
DEF 0
FUUID 5fa3e696-f33f-73c2-352a-d5ddf5ae76cd9c07
LAST_START 2020-12-22 21:06:48
LAST_STOP 2020-12-22 21:06:49
NAME Pythonbinding_0
NR 439
NTFY_ORDER 50-Pythonbinding_0
STARTS 847
STATE active
TYPE PythonBinding
logfile ./log/PythonBinding-%Y-%m-%d.log
CoProcess:
cmdFn PythonBinding_getCmd
name PythonBinding
state stopped
Helper:
DBLOG:
PythonBinding:
DBLogging:
TIME 1608667609.29036
VALUE stopped
READINGS:
2020-12-22 21:06:49 PythonBinding stopped
2020-12-22 16:10:29 state active
Attributes:
logfile ./log/PythonBinding-%Y-%m-%d.log
nrarchive 10
room hidden
Mach bitte mal ein
ps -efa|grep fhempy
Irgendwo rennt da der fhempy Prozess schon oder du hast auf Port 15733 einen anderen Prozess laufen.
Vielen Dank für den letzten Tipp. Ja ein Prozess war am laufen. Ich habe mir mal die benutzten Ports auf meinem System anzeigen lassen. Den zugehörigen Prozess einmal abgeschossen und jetzt scheint das ganze zu laufen.
Ich beobachte einmal weiter.
ZitatUPD FHEM/bindings/python/fhempy/lib/xiaomi_gateway3/core/__init__.py
https://raw.githubusercontent.com/dominikkarall/fhempy/master/FHEM/bindings/python/fhempy/lib/xiaomi_gateway3/core/__init__.py: empty file received
bin ich wieder der einzige? :-[
Danke fuer die Info, sollte jetzt behoben sein.
2020.12.23 12:04:46.776 1: UPD FHEM/bindings/python/fhempy/lib/xiaomi_gateway3/core/__init__.py
2020.12.23 12:04:46.936 1: UPD FHEM/bindings/python/fhempy/lib/miio/miio.py
2020.12.23 12:04:47.125 1: UPD FHEM/bindings/python/fhempy/lib/helloworld/__pycache__/__init__.cpython-37.pyc
2020.12.23 12:04:47.268 1: Got 14 bytes for FHEM/bindings/python/fhempy/lib/helloworld/__pycache__/__init__.cpython-37.pyc, expected 191
2020.12.23 12:04:47.269 1: aborting.
__init__.py ist OK jetzt, aber....
jetzt aber...
Danke Dominik, jetzt hat es geklappt! :)
Frohe Weihnachten!
Hi
Auch mit der Änderung auf 600 und 2 leider keine Verbesserung.
Anbei das gesamte Logfile
Probier mal 600/5...das liegt leider an Ring selbst, da kann man nichts tun. Ich weiß auch nicht wie die die Prüfung machen.
Zitat von: leachim200 am 31 Dezember 2020, 12:28:46
Hi
Auch mit der Änderung auf 600 und 2 leider keine Verbesserung.
Anbei das gesamte Logfile
Ich glaube eher es liegt an:
ZitatYour Ring account does not have an active subscription.
Hallo,
ich habe das Pythonmodul bei mir auch jetzt am Laufen - was mich interessieren würde,... gibt es eine Möglichkeit den Videostream abzufassen, ohne dass man ein Abonement als Videoaufnahme hat?
Gruß
Maik
Die Live Stream und Bild Snapshot sollte möglich sein. In der aktuellen Version habe ich beides jedoch deaktiviert, da es nicht funktioniert hat.
Laut Log in der Library welche ich nutze dürfte das Problem aber behoben sein:
https://github.com/tchellomello/python-ring-doorbell/commits/master
Bild Snapshot ist wirklich ein Bild das man speichern kann, beim Live Stream weiß ich nicht in welcher Art der übertragen wird und ob er in FHEM auch darstellbar ist.
Wäre schön, wenn durch das Event "motion" oder "ring" der Live-Stream oder eine Aufnahme vom Live-Stream gestartet werden kann. In dem Fall könnte man sich z.B. über Telegram den aufgenommenen Stream zuschicken.
Was natürlich noch besser wäre, wenn es dann eine Möglichkeit gäbe diesen Stream Live auf dem Handy zu empfangen - dann wäre die Ring Cloud komplett unnötig, bzw. die Abonement müßten nicht gebucht werden!
Ich kann dir sagen, dass der Stream als MP4 Datei runtergeladen werden kann. Bei mir auf der Seite https://share-service-download-bucket.s3.amazonaws.com
Kann dir die komplette URL vom letzten Stream privat mal zuschicken, wenn du möchtest!
Hallo,
ich habe den letzten aufgenommenen Stream als Weblink in fhem eingebettet:
defmod RingVideoHaustuer weblink htmlCode {\
my $url=ReadingsVal('ringdev', 'last_recording_url', '');;;;\
return "\
<video controls width='800'>\
\
<source src=$url\
type='video/mp4'>\
\
Sorry, your browser doesn't support embedded videos.\
</video>\
"\
}
Gruss Jan
Was mir noch aufgefallen ist (ich habe 2 Ring Doorbells), dass wenn z.B. auf der Haustür ein Event passiert, das Event (motion und auch ding) auch in das andere Device geschrieben wird... Aber vielleicht kommt das ja auch aus der lib von tchellomello...
Zitat von: JF Mennedy am 02 Januar 2021, 17:37:20
Was mir noch aufgefallen ist (ich habe 2 Ring Doorbells), dass wenn z.B. auf der Haustür ein Event passiert, das Event (motion und auch ding) auch in das andere Device geschrieben wird... Aber vielleicht kommt das ja auch aus der lib von tchellomello...
Da hab ich etwas gefunden:
https://github.com/tchellomello/python-ring-doorbell/blob/d20243aa19eb115ea2c7562ccb0b2bab864ebb3f/tests/fixtures/ring_ding_active.json
Im Alert wird auch die doorbell_id zurück geliefert. Werde das beim nächsten Update berücksichtigen, damit nur mehr das richtige Device den Ding empfängt.
Zitat von: GreenFHEMfan am 02 Januar 2021, 17:17:34
Wäre schön, wenn durch das Event "motion" oder "ring" der Live-Stream oder eine Aufnahme vom Live-Stream gestartet werden kann. In dem Fall könnte man sich z.B. über Telegram den aufgenommenen Stream zuschicken.
Was natürlich noch besser wäre, wenn es dann eine Möglichkeit gäbe diesen Stream Live auf dem Handy zu empfangen - dann wäre die Ring Cloud komplett unnötig, bzw. die Abonement müßten nicht gebucht werden!
Ich kann dir sagen, dass der Stream als MP4 Datei runtergeladen werden kann. Bei mir auf der Seite https://share-service-download-bucket.s3.amazonaws.com
Kann dir die komplette URL vom letzten Stream privat mal zuschicken, wenn du möchtest!
Ich werde die Funktion wieder aktivieren, dann könnt ihr das testen. Muss aber noch warten bis die Fixes in der Library released sind. Im letzten Release von 21.11. sind die Fixes noch nicht dabei.
Hallo Dominik,
bis gestern vormittag lief das Pythonmodul einwandfrei - doch jetzt scheint es sich nicht mehr zu aktuallisieren.
Es ist weiterhin "connected" aber die ganzen History-Daten sind nicht aktuell.
Ich kann auch keinen aufgenommenen Stream mehr ansehen, indem ich die URL aus dem Modul aufrufe.
Da kommt dann:
This XML file does not appear to have any style information associated with it. The document tree is shown below.
<Error>
<Code>AccessDenied</Code>
<Message>Request has expired</Message>
<X-Amz-Expires>3600</X-Amz-Expires>
<Expires>2021-01-02T16:37:57Z</Expires>
<ServerTime>2021-01-03T11:15:11Z</ServerTime>
<RequestId>xxxxxxxxxxxxxxxxxx</RequestId>
<HostId>
(xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx)
</HostId>
</Error>
RequestId und HostId habe ich mal ausgeblendet!
Was kommt im PythonBinding Log?
OK - ich hatte soviel Pythonmodule aktiviert zum Ausprobieren, daß irgendwo schienbar sich was begissen hat.
Habe jetzt alle unnötigen Module wieder gelöscht - und siehe da, die Aktuallisierung läuft wieder.
Würde es erstmal dabei belassen!
LG
Maik
Zitat von: JF Mennedy am 02 Januar 2021, 17:31:05
Hallo,
ich habe den letzten aufgenommenen Stream als Weblink in fhem eingebettet:
defmod RingVideoHaustuer weblink htmlCode {\
my $url=ReadingsVal('ringdev', 'last_recording_url', '');;;;\
return "\
<video controls width='800'>\
\
<source src=$url\
type='video/mp4'>\
\
Sorry, your browser doesn't support embedded videos.\
</video>\
"\
}
Gruss Jan
Das ist eine tolle Idee Jan - nur leider bekomme ich ihn bei mir nicht zum laufen!
Die Abspielleiste erscheint noch auf der FHEM-Oberfläche - kann den Stream aber über die Play-Taste nicht starten.
Da passiert gar nix. Woran kann das liegen?
Als 'ringdev' habe ich noch meinen Modulnamen eingetragen!
Wenn ich das so eintrage wie bei dir kommt beim Erstellen des Fhem-Moduls -> Experimental aliasing via reference not enabled at (eval 1299) line 1
Gruß Maik
Hallo Dominik,
bei mir erst heute 13:05 ist die Python Verbindung ausgefallen (ich sehe es in meinem Telegram).
letztes Python Update habe ich gestern gemacht.
deviceUpdateInterval 1800
dingPollInterval 5
Ich (=bedeutet nicht viel) kann nichts besonderes im Log erkennen, ein paar polling errors wie immer.
PythonBinding-2021-01-03.log
2021-01-03 01:18:46,507 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
PythonBinding-2021-01-02.log
2021-01-02 01:13:10,669 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 01:32:57,188 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 09:54:36,012 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 12:55:11,830 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 16:30:31,481 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 17:26:10,918 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 17:28:16,419 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 18:26:32,555 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 20:14:45,167 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 22:18:38,287 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 23:28:00,406 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
Internals:
BindingType Python
DEF Python
DeviceName ws:127.0.0.1:15733
FUUID 5fd1520c-f33f-6a06-6ce1-3a0f3126c85bd37b
FVERSION 10_BindingsIo.pm:0.182830/2019-01-16
IP 127.0.0.1
NAME pybinding
NEXT_OPEN 1609676922.00261
NR 313
NTFY_ORDER 50-pybinding
PARTIAL
PORT 15733
STATE disconnected
TYPE BindingsIo
localBinding 1
nextOpenDelay 10
Helper:
DBLOG:
state:
Logdb:
TIME 1609675554.2258
VALUE DISCONNECTED
version:
Logdb:
TIME 1609508985.61191
VALUE 0.1.13
READINGS:
2021-01-03 13:28:32 state disconnected
2021-01-01 14:49:45 version 0.1.13
args:
pybinding
BindingsIo
Python
argsh:
Attributes:
devStateIcon opened:rc_GREEN@green disconnected:rc_RED@red
group _connector
room _Hood->System
verbose 1
Hallo Maik,
ja richtig ringdev ist der Name der Kamera...
bei mir funktioniert es mit mit Chrome und Firefox, Edge oder andere wie Safari habe ich nicht und kann nicht testen... Eventuell etwas in den Einstellungen vom Browser?
Ich hatte es am Anfang mal mit iFrame versucht (return "<iframe src=$url width=700 height=440></iframe>") Damit funktionierte es aber nicht gut unter Chrome, dafür aber in Firefox... Komischerweise wurde in Chrome 1 Kamera immer angezeigt und die andere nicht, da startete ein Download des Videos, obwohl die Definitions gleich waren...
Ich habe dann irgendwann herausgefunden, dass der Typ der Streams nicht beide mp4 waren, daher der Download von einem der beiden...
Bis das bei mir lief habe ich auch ziemlich lange rumgefummelt und mir Beispiele bei selfhtml angeschaut...
Gruss Jan
Zitat von: GreenFHEMfan am 03 Januar 2021, 13:33:11
OK - ich hatte soviel Pythonmodule aktiviert zum Ausprobieren, daß irgendwo schienbar sich was begissen hat.
Habe jetzt alle unnötigen Module wieder gelöscht - und siehe da, die Aktuallisierung läuft wieder.
Würde es erstmal dabei belassen!
LG
Maik
Mit anderen Module sollte es nicht zusammen hängen. Lass mich bitte wissen wenn es wieder auftritt.
Bei mir laufen alle verwendeten PythonBindings recht stabil ohne weitere Ausfälle (Ring, GoogleCast mit ca 15 Devices, Spotify) . Ich würge nachts aber auch über ein at das Pythonbinding einmal ab -> fhem "{system ('sudo killall python3')};
Lässt sich wahrscheinlich auch über set Pythonbinding_15733 restart realisieren...
Zitat von: Manos am 03 Januar 2021, 13:50:14
Hallo Dominik,
bei mir erst heute 13:05 ist die Python Verbindung ausgefallen (ich sehe es in meinem Telegram).
letztes Python Update habe ich gestern gemacht.
deviceUpdateInterval 1800
dingPollInterval 5
Ich (=bedeutet nicht viel) kann nichts besonderes im Log erkennen, ein paar polling errors wie immer.
PythonBinding-2021-01-03.log
2021-01-03 01:18:46,507 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
PythonBinding-2021-01-02.log
2021-01-02 01:13:10,669 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 01:32:57,188 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 09:54:36,012 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 12:55:11,830 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 16:30:31,481 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 17:26:10,918 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 17:28:16,419 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 18:26:32,555 - ERROR - RingDoorBell: Failed to poll devices
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 421, in _make_request
six.raise_from(e, None)
File "", line 3, in raise_from
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 416, in _make_request
httplib_response = conn.getresponse()
File "/usr/lib/python3.8/http/client.py", line 1347, in getresponse
response.begin()
File "/usr/lib/python3.8/http/client.py", line 307, in begin
version, status, reason = self._read_status()
File "/usr/lib/python3.8/http/client.py", line 268, in _read_status
line = str(self.fp.readline(_MAXLINE + 1), "iso-8859-1")
File "/usr/lib/python3.8/socket.py", line 669, in readinto
return self._sock.recv_into(b)
File "/usr/lib/python3/dist-packages/urllib3/contrib/pyopenssl.py", line 326, in recv_into
raise timeout("The read operation timed out")
socket.timeout: The read operation timed out
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 439, in send
resp = conn.urlopen(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 719, in urlopen
retries = retries.increment(
File "/usr/lib/python3/dist-packages/urllib3/util/retry.py", line 400, in increment
raise six.reraise(type(error), error, _stacktrace)
File "/usr/lib/python3/dist-packages/six.py", line 703, in reraise
raise value
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 665, in urlopen
httplib_response = self._make_request(
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 423, in _make_request
self._raise_timeout(err=e, url=url, timeout_value=read_timeout)
File "/usr/lib/python3/dist-packages/urllib3/connectionpool.py", line 330, in _raise_timeout
raise ReadTimeoutError(
urllib3.exceptions.ReadTimeoutError: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
During handling of the above exception, another exception occurred:
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 251, in poll_device
self._lastrecording_url = self._rdevice.recording_url(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/requests_oauthlib/oauth2_session.py", line 515, in request
return super(OAuth2Session, self).request(
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/lib/python3/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/lib/python3/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
2021-01-02 20:14:45,167 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 22:18:38,287 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
2021-01-02 23:28:00,406 - ERROR - RingDoorBell: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/utils.py", line 29, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.8/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.8/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/__init__.py", line 95, in query
return self.auth.query(
File "/opt/fhem/.local/lib/python3.8/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/lib/python3/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
Internals:
BindingType Python
DEF Python
DeviceName ws:127.0.0.1:15733
FUUID 5fd1520c-f33f-6a06-6ce1-3a0f3126c85bd37b
FVERSION 10_BindingsIo.pm:0.182830/2019-01-16
IP 127.0.0.1
NAME pybinding
NEXT_OPEN 1609676922.00261
NR 313
NTFY_ORDER 50-pybinding
PARTIAL
PORT 15733
STATE disconnected
TYPE BindingsIo
localBinding 1
nextOpenDelay 10
Helper:
DBLOG:
state:
Logdb:
TIME 1609675554.2258
VALUE DISCONNECTED
version:
Logdb:
TIME 1609508985.61191
VALUE 0.1.13
READINGS:
2021-01-03 13:28:32 state disconnected
2021-01-01 14:49:45 version 0.1.13
args:
pybinding
BindingsIo
Python
argsh:
Attributes:
devStateIcon opened:rc_GREEN@green disconnected:rc_RED@red
group _connector
room _Hood->System
verbose 1
Die Fehlermeldungen würde ich mal als "übliche" Fehlermeldungen mit ring abtun, da das scheinbar immer wieder auftritt wenn zu oft angefragt wird. Ich habe die Fehlermeldungen auch noch sehr ausführlich gelassen, damit man vielleicht im Fehlerfall doch mal nachvollziehen kann woran es liegt.
Das "disconnected" von fhempy muss aber mit etwas anderen zu tun haben. Der Disconnect dürfte auch ca. 20min später (13:28:32) passiert sein. Leider ist im Log nichts zu erkenne. Läuft der Prozess noch? Oder hast du schon neu gestartet?
Zitat von: JF Mennedy am 03 Januar 2021, 14:02:16
Bei mir laufen alle verwendeten PythonBindings recht stabil ohne weitere Ausfälle (Ring, GoogleCast mit ca 15 Devices, Spotify) . Ich würge nachts aber auch über ein at das Pythonbinding einmal ab -> fhem "{system ('sudo killall python3')};
Lässt sich wahrscheinlich auch über set Pythonbinding_15733 restart realisieren...
Lass bitte mal paar Tage laufen und schick mir Fehler :) Ich freue mich immer über gute Fehlerlogs, weil sonst bekomme ich fhempy nicht aus der BETA raus ;)
@Jan, hast du gar keine Fehlermeldungen im Log? Weil das würde bedeuten, dass ich einen erneuten Login eventuell alle 24h triggern muss.
Doch ich habe immer mal wieder diese beiden Fehler im Log:
2020-12-28 23:56:26,679 - ERROR - ringdev: Failed to poll dings...
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/ring/ring.py", line 127, in update_dings_loop
await utils.run_blocking(functools.partial(self.poll_dings))
File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/utils.py", line 28, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/ring/ring.py", line 238, in poll_dings
self._ring.update_dings()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 89, in update_dings
self.dings_data = self.query(DINGS_ENDPOINT).json()
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 89, in query
req.raise_for_status()
File "/usr/local/lib/python3.7/dist-packages/requests/models.py", line 940, in raise_for_status
raise HTTPError(http_error_msg, response=self)
requests.exceptions.HTTPError: 504 Server Error: Gateway Time-out for url: https://api.ring.com/clients_api/dings/active?api_version=9
Traceback (most recent call last):
File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/ring/ring.py", line 109, in update_loop
await utils.run_blocking(functools.partial(self.poll_device))
File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/utils.py", line 28, in run_blocking
return await asyncio.get_event_loop().run_in_executor(pool, function)
File "/usr/lib/python3.7/concurrent/futures/thread.py", line 57, in run
result = self.fn(*self.args, **self.kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/fhempy/lib/ring/ring.py", line 252, in poll_device
self._rdevice.last_recording_id
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/doorbot.py", line 368, in recording_url
req = self._ring.query(url)
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/__init__.py", line 101, in query
timeout=timeout,
File "/opt/fhem/.local/lib/python3.7/site-packages/ring_doorbell/auth.py", line 84, in query
req = getattr(self._oauth, method.lower())(url, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 546, in get
return self.request('GET', url, **kwargs)
File "/opt/fhem/.local/lib/python3.7/site-packages/requests_oauthlib/oauth2_session.py", line 516, in request
method, url, headers=headers, data=data, **kwargs
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 533, in request
resp = self.send(prep, **send_kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/sessions.py", line 646, in send
r = adapter.send(request, **kwargs)
File "/usr/local/lib/python3.7/dist-packages/requests/adapters.py", line 529, in send
raise ReadTimeout(e, request=request)
requests.exceptions.ReadTimeout: HTTPSConnectionPool(host='api.ring.com', port=443): Read timed out. (read timeout=10)
Trotzdem läufts alles unterbrechungsfrei.. Ich hatte anfangs ja auch mal das Problem, dass irgendwann die Readings nicht mehr beschrieben wurden... Hab mir dann aber die Ring Elite gekauft, die über LAN und PoE betrieben wird und eine echt starke Verbesserung zu den WiFi-betriebenen gebracht hat. Ich schalte mal mein Reset ab und schaue ob es dann wieder passiert...
Zitat von: JF Mennedy am 03 Januar 2021, 13:57:04
Hallo Maik,
ja richtig ringdev ist der Name der Kamera...
bei mir funktioniert es mit mit Chrome und Firefox, Edge oder andere wie Safari habe ich nicht und kann nicht testen... Eventuell etwas in den Einstellungen vom Browser?
Ich hatte es am Anfang mal mit iFrame versucht (return "<iframe src=$url width=700 height=440></iframe>") Damit funktionierte es aber nicht gut unter Chrome, dafür aber in Firefox... Komischerweise wurde in Chrome 1 Kamera immer angezeigt und die andere nicht, da startete ein Download des Videos, obwohl die Definitions gleich waren...
Ich habe dann irgendwann herausgefunden, dass der Typ der Streams nicht beide mp4 waren, daher der Download von einem der beiden...
Bis das bei mir lief habe ich auch ziemlich lange rumgefummelt und mir Beispiele bei selfhtml angeschaut...
Gruss Jan
Ja, das war es - mit dem Firefox-Browser läuft es. Ich schau mal, ob ich am Chrome was einstellen kann - der läuft bei mir nämlich nicht!
Gruß
Zitat von: dominik am 03 Januar 2021, 14:07:45
Die Fehlermeldungen würde ich mal als "übliche" Fehlermeldungen mit ring abtun, da das scheinbar immer wieder auftritt wenn zu oft angefragt wird. Ich habe die Fehlermeldungen auch noch sehr ausführlich gelassen, damit man vielleicht im Fehlerfall doch mal nachvollziehen kann woran es liegt.
Das "disconnected" von fhempy muss aber mit etwas anderen zu tun haben. Der Disconnect dürfte auch ca. 20min später (13:28:32) passiert sein. Leider ist im Log nichts zu erkenne. Läuft der Prozess noch? Oder hast du schon neu gestartet?
pybinding habe ich noch nicht neu gestartet, es bleibt noch "disconnected" (Bilder anbei).
Ich verstehe etwas nicht,
event-on-change-reading finde ich beim
Pythonbinding_15733aber nicht beim
pybindingIch habe Schwierigkeiten das disconnect des pybinding zu identifizieren bzw. danach dem Pythonbinding_15733 neuzustarten:
Mein Notify reagiert nicht:
defmod Python_Notify1 notify pybinding:state:.* {if (ReadingsVal("pybinding","state","??") eq "disconnected") {\
fhem("set myTelegramBot _msg @139 'Python disconnected'");;\
fhem("set Pythonbinding_1533 restart");;\
} }
attr Python_Notify1 room _Hood->Logic
Update:
Notify war nie mein Ding, ich habe DOIF aufgemacht und
defmod Python_restart_DOIF DOIF (ReadingsVal("pybinding","state","??") eq "disconnected") \
(\
set myTelegramBot _msg @1391745765 'Python disconnected', \
set Pythonbinding_15733 restart\
)
attr Python_restart_DOIF do always
jetzt laeuft wieder.
event-on-change-reading kann ich beim nächsten Update mit aufnehmen, war noch nicht mit dabei. Macht aber keinen Unterschied, da generell ein Event ausgelöst wird.
Kannst du bitte prüfen, ob fhempy noch läuft?
ps -efa|grep fhempy
Poste bitte die Ausgabe. Danke!
Notify nutze ich nicht, per DOIF sollt es so funktionieren
define fhempy_restart DOIF ([pybinding] eq "disconnected") ((set myTelegramBot _msg @139 'Python disconnected')) (set Pythonbinding_15733 restart)
attr do always
Zitat von: dominik am 03 Januar 2021, 18:02:22
event-on-change-reading kann ich beim nächsten Update mit aufnehmen, war noch nicht mit dabei. Macht aber keinen Unterschied, da generell ein Event ausgelöst wird.
Kannst du bitte prüfen, ob fhempy noch läuft?
ps -efa|grep fhempy
Poste bitte die Ausgabe. Danke!
ps -efa|grep fhempy
fhem 4023610 3087728 0 Jan03 ? 00:01:30 python3 FHEM/bindings/python/bin/fhempy --local
manos 4123530 4122105 0 00:21 pts/0 00:00:00 grep --color=auto fhempy
Aber es ist normal, ich hatte mein DOIF bereits aktiviert und erwartungsgemaess, hat es sofort das Pythonbinding_15733 neu gestartet.
Ich werde folgendes machen: Das Neustarten vom Pythonbinding_15733 ausser Kraft setzen und wenn es wieder passiert, werde ich davon berichten.
Zitat von: dominik am 03 Januar 2021, 18:02:22
Notify nutze ich nicht, per DOIF sollt es so funktionieren
define fhempy_restart DOIF ([pybinding] eq "disconnected") ((set myTelegramBot _msg @139 'Python disconnected')) (set Pythonbinding_15733 restart)
attr do always
100% Prozent deiner Meinung!
Mal für Menschen gefragt, die nicht alle 33 Seiten gelesen haben:
- was kann denn die Kombination FHEM + Ring Video Doorbell aktuell`?
- braucht man ein Abo für Kernfunktionen (Klingeln erkennen, Snapshot, Livevideo)?
- gibt es irgendwo eine Übersicht, was man wie installieren muss?
Ich habe dazu einen neuen Thread aufgemacht:
https://forum.fhem.de/index.php/topic,117381.0.html
Bitte bei Diskussionen zum fhempy ring Modul den neuen Thread nutzen. Danke!
Wenn es auf dem Pi laufen soll, könnte man einen WLAN-Stick in den Pi stecken und diesen zum WLAN-Acesspoint machen.
Das hat nebenbei den Vorteil, Smart Home-Geräte (die öfters mal mit Sicherheitsproblemen behaftet sind) vom normalen (W)LAN zu isolieren.