Ring Video Doorbell

Begonnen von blueberry63, 23 August 2017, 11:06:28

Vorheriges Thema - Nächstes Thema

budy

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
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

onkel-tobi

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


budy

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
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

onkel-tobi

Habe ein ü und ein ß.


Gesendet von iPhone mit Tapatalk

budy

#79
Moin Tobi,

das Umlautproblem ist im letzten commit gefixt.

Gruß,
budy
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

marko67

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

Otto123

#81
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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

budy

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
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

onkel-tobi

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

Gruß,
Tobi

budy

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

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
Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

marko67

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!!

Otto123

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
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz

budy

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

Debian stretch, FHEM 5.9.
HM-CC-RT-DN, HM-ES-PMSw1-Pl, HM-LC-Dim1TPBU-FM, HMUARTLGW, HMLAN, HM-SEC-KEY, HM-SEC-RHS, HM-SEC-SC-2, HM-SEC-SCo, HM-SEC-SD-2, HM-OU-CFM-TW, div. HUEs, Wifilight, Ring Video Pro

marko67

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?


Otto123

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.
Viele Grüße aus Leipzig  ⇉  nächster Stammtisch an der Lindennaundorfer Mühle
RaspberryPi B B+ B2 B3 B3+ ZeroW,HMLAN,HMUART,Homematic,Fritz!Box 7590,WRT3200ACS-OpenWrt,Sonos,VU+,Arduino nano,ESP8266,MQTT,Zigbee,deconz