Ring Video Doorbell

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

Vorheriges Thema - Nächstes Thema

blueberry63

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

Gruß
Blueberry63
FHEM auf BBB mit Wheezy: 1x CUL_HM_HM_SCI_3_FM, 1x INSTAR CAM3010, 1x HM-LC-SW1-PL2, 1x HM-LC-Bl1PBU-FM, 1x HM-Sen-MDIR-O, Viessmann Heizung, Gaszähler via GPIO, Klingel via HM-LC-Bl1PBU-FM an FBox, Mailcheck, AVR, XBMC, NanoCUL 433+668 an Raspi per Ethernet, Funksteckdosen (Pollin, IT), Automower

gloob

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.
Raspberry Pi 3 | miniCUL 433MHz | nanoCUL 868 MHz | nanoCUL 433 MHz | MySensors WLAN Gateway | LaCrosse WLAN Gateway | SignalESP 433 MHz | SignalESP 868 MHz | HM-MOD-UART WLAN Gateway | IR - 360 Grad WLAN Gateway

_Markus_

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

_Markus_

#3
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

Nighthawk

Hi Markus,

danke fürs Teilen!
Fehlt nur noch die Kamerafunktion (Livecam) in FHEM.

Gruß
Alex

Franz

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
RASPBERRY PI 2 B +2 SCC
HM LAN Adapter

Calle78

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
6,RPi4,Buster,HMLAN,HMIP,HUE,ZigBee,piVCCU,C868,C433,JEELINK,ESA2000,IRT1500,HMSECSC2,HMCCTC,HMSECSD,HM132030,HMSCI3FM,HMPB2WM55-2,FHT80,FBAHA,WithingsWS50,Jalousien,Siri,HMS100WD,Fritzbox,Harmony,Twilight,Weather,PushBullet,FHT-9998,HM-CC-TC,Trackr,RolloPort

Todo:ZWave(MieleOfen),LEDWIFI

Franz

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
RASPBERRY PI 2 B +2 SCC
HM LAN Adapter

Calle78

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
6,RPi4,Buster,HMLAN,HMIP,HUE,ZigBee,piVCCU,C868,C433,JEELINK,ESA2000,IRT1500,HMSECSC2,HMCCTC,HMSECSD,HM132030,HMSCI3FM,HMPB2WM55-2,FHT80,FBAHA,WithingsWS50,Jalousien,Siri,HMS100WD,Fritzbox,Harmony,Twilight,Weather,PushBullet,FHT-9998,HM-CC-TC,Trackr,RolloPort

Todo:ZWave(MieleOfen),LEDWIFI

Calle78

#9
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
6,RPi4,Buster,HMLAN,HMIP,HUE,ZigBee,piVCCU,C868,C433,JEELINK,ESA2000,IRT1500,HMSECSC2,HMCCTC,HMSECSD,HM132030,HMSCI3FM,HMPB2WM55-2,FHT80,FBAHA,WithingsWS50,Jalousien,Siri,HMS100WD,Fritzbox,Harmony,Twilight,Weather,PushBullet,FHT-9998,HM-CC-TC,Trackr,RolloPort

Todo:ZWave(MieleOfen),LEDWIFI

Calle78

#10
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

ciao Carlo
6,RPi4,Buster,HMLAN,HMIP,HUE,ZigBee,piVCCU,C868,C433,JEELINK,ESA2000,IRT1500,HMSECSC2,HMCCTC,HMSECSD,HM132030,HMSCI3FM,HMPB2WM55-2,FHT80,FBAHA,WithingsWS50,Jalousien,Siri,HMS100WD,Fritzbox,Harmony,Twilight,Weather,PushBullet,FHT-9998,HM-CC-TC,Trackr,RolloPort

Todo:ZWave(MieleOfen),LEDWIFI

Calle78

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
6,RPi4,Buster,HMLAN,HMIP,HUE,ZigBee,piVCCU,C868,C433,JEELINK,ESA2000,IRT1500,HMSECSC2,HMCCTC,HMSECSD,HM132030,HMSCI3FM,HMPB2WM55-2,FHT80,FBAHA,WithingsWS50,Jalousien,Siri,HMS100WD,Fritzbox,Harmony,Twilight,Weather,PushBullet,FHT-9998,HM-CC-TC,Trackr,RolloPort

Todo:ZWave(MieleOfen),LEDWIFI

DaRealDan

#12
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.

Franz

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 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
RASPBERRY PI 2 B +2 SCC
HM LAN Adapter

_Markus_

@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