Doorbell

Doorbell – OpenSSL & PiCamera

Ich kümmere mich alle Zeit mal, dass alle Geräte im Haus die Updates bekommen.

Never change a running system

… halte ich für nicht die beste Wahl. Mir geht es bei den Updates in erster Linie um die Sicherheit™. Neue Funktionalitäten bringen die Updates selten, zumindest welche mich interessieren.

Nun gut… Somit schnell mal per SSH den Raspberry geupdatet… kurze Zeit drauf fällt mir auf dass der Push der Türklingel nicht mehr geht. Mal nachgeschaut, stimmt, der Log sagt dass alles gemacht wird: Gong, Bild abspeichern… aber beim Push ist nichts los… Warum dann keine Exception? Tja, da hat Jemand (ich) nicht aufgepasst und es fehlte der Log in die Logdatei:

except Exception, e:
    logger.info(e)
    traceback.print_exc()
    logging.exception("!!!")

Das schönste an der Geschichte: Wenn ich das Python Script als User pi oder auch als sudo starte geht der Push. Dann mal den Autostart angeschaut. Den hab ich dann mal schnell auf crontab umgestellt, weil mir das am liebsten ist:

crontab -e

Aber nix… dann schauen wir mal in den jetzt verfügbaren Log. Der Log sagt mir aber dann komische Sachen:

2019-07-13 16:42:11,225 INFO HTTPSConnectionPool(host='api.pushover.net', port=443): Max retries exceeded with url: /1/messages.json (Caused by SSLError(SSLError("bad handshake: Error([('', 'osrandom_rand_bytes', 'getrandom() initialization failed.')],)",),))

Mhhh, Google sagt da nicht viel… eigentlich dass das SSL Zertifikat von Pushover kaputt ist. Stimmt aber nicht. Und es geht ja nur nicht wenn es beim Boot gestartet ist.

Lange Rede kurze Lösung:
Ich hab mal OpenSSL vom Pi geupdatet, da ich diesen Issue gefunden habe.
Nutze requests, weil es so in der Pushover API Hilfe drin steht um Bilder hochzuladen.

So wie ich es verstehe wird das lokal geprüft ob die Zertifikate OK sind, wundert mich aber OK. Warum dass dann nur Probleme macht beim Boot, keine Ahnung. Aber es geht dann zumindest wieder. Kann sein dass ihr paar Pakete manuell installieren müsst damit OpenSSL über apt-get läuft.

 

Weil ich grad dabei war, hab ich auch den Code für das Erstellen des Fotos geändert von:

cmdCam='raspistill -q 10 -o ' + '/home/pi/Desktop/doorbell/web/photos/' +  filename
subprocess.call(cmdCam, shell=True)

auf:

camera = PiCamera()
[...]
camera.capture('/home/pi/Desktop/doorbell/web/photos/' +  filename)

Gibt es nun standardgemäß im Raspbian via from picamera import PiCamera.
Hab die Änderungen gleich ins Repo, hier ist der Commit.

Von |2019-07-18T16:15:10+02:002019-07-18|Doorbell, Projekte|

Doorbell – Gong

Wir haben ja als Gong eine Funkbox eingesetzt welche über den AUX des Raspberries bespielt wird.
Leider bekommen wir Störgeräusche der Nachbarn rein, welche Funkkopfhörer benutzen. Diese funken wohl auf der gleichen Frequenz.

Nach Tests mit verschiedenen Kanälen (A & B) haben wir aber immer noch Hörspiele der Nachbarn gehört.

Generell war ich nie Fan von der Lösung da die Box und der Sender ständig am Strom hängen.
Ich hatte im Kopf schon die Lösung, aber mir fehlte die Zeit.

Da die Störungen aber immer mehr wurden hab ich mich mal hingesetzt und folgendes umgesetzt:

  • Box weg
  • Audio abspielen über Pi weg
  • Eine Funktürklingel gekauft
  • Den Sender an den Pi über Relais angebunden (12V)
  • Die Gong-Musik von den Kindern einstellen lassen

Technisch ist es nun meiner Meinung nach die bessere Lösung. Einziger Nachteil ist, dass ich die Gong-Musik nicht mehr selbst wählen kann. Somit musste meine geliebtes Super-Mario-Theme weichen.

Der Sender der Türklingel hatte einen SMD Taster den ich entlötet habe. Danach getestet ob es auch ein Schließer ist (ja).
Dort hab ich dann den Relaiskontakt integriert.

Die 12V Batterie vom Sender muss ich noch durch ein Netzteil tauschen wenn Sie oft leer ist.
Hier noch ein Bild der wilden Verdrahtung:

Als Ausgang hab ich die rote LED genommen. Diese ist während der Aufnahme des Fotos aktiv gewesen. Den Code musste ich dem entsprechend anpassen.

 

Von |2019-02-02T11:24:35+01:002019-02-02|Doorbell, Projekte|

Doorbell – Pushover

Ich bin ja damals von Pushover weg, weil das mit den Bildern nicht so geklappt hat.
Mit dem neuen Update funktioniert das aber grandios. Zusätzlich klappt der Push bei Slack nicht immer… liegt aber wohl an Slack.

Nun hab ich das mal ausprobiert und Pushover hat derzeit paar Vorteile:

  • Vorschau in der Push Notification
  • Push funktioniert zuverlässig
  • Größere Übersicht der Fotos

Ich hab das mal wie folgt mit Requests implementiert:

import requests

...

r = requests.post("https://api.pushover.net/1/messages.json", data = {
  "token": "-- API Token --",
  "user": "-- User Key --",
  "message": "Knock Knock Knock"
},
files = {
  "attachment": ("image.jpg", open('/home/pi/Desktop/doorbell/web/photos/' +  filename, "rb"), "image/jpeg")
})
print(r.text)

  

Von |2018-02-26T07:12:49+01:002018-02-26|Doorbell, Projekte|

Doorbell – Homebridge

Ich hab ja den Pi neu aufgesetzt… da wollte ich Homebridge mal wieder testen. Da fiel mir ein, es wäre doch praktisch wenn man einen Live-Stream hätte…
Gesagt, getan.

Hab das Script angepasst, dass der Video Treiber automatisch geladen wird:

# Camera for Homebridge
cmdCamHomebridge='sudo modprobe bcm2835-v4l2'
subprocess.call(cmdCamHomebridge, shell=True)

Ihr müsst auch euren User (pi), zur video Gruppe hinzufügen:

sudo usermod -a -G video pi

In der HomeKit App musste ich dann den Code (gleicher wie Bridge) manuell hinzufügen. Dann erscheint die Kamera. Nun kann ich bequem vom iPhone oder der Apple Watch meine Haustüre betrachten…

Von |2018-02-18T20:39:06+01:002018-02-19|Doorbell, Projekte|

Doorbell – Installation

Ich hatte schon lang auf meiner Todo-Liste, den Rapsberry 1 gegen 3 zu tauschen. Nehme diesen oft zum Testen her und da ist er schon ziemlich langsam. Nun konnte ich den alten nicht mehr im Netzwerk erreichen, aber er klingelte noch fröhlich. Nach dem Austausch musste ich feststellen dass die PV-Anlage die IP Adresse nicht freigegeben hatte… Warum auch immer… 🤦‍♂️

Natürlich hatte ich ein Backup, aber ich wollte den Pi neu einrichten. Clean-Install ist eh meist die bessere Entscheidung. Darum schreib ich hier kurz eine Notiz an mein Zukunfts-Ich, was alles zu tun ist:

  • raspi-config
    • Sprachen einstellen
    • Hostname einstellen
    • Kamera aktivieren
  • Update/Upgrade OS
  • Kamera LED ausschalten
  • VNC installieren
  • Doorbell
    • Python-Script auf den Desktop
    • slacker  mit pip  installieren
    • Autostart des python scriptes: sudo lxterminal -e python Desktop/doorbell/doorbell.py
Von |2018-02-18T20:26:24+01:002018-02-18|Doorbell, Projekte|
Nach oben