Freitag, 22. Januar 2021

FHEM und FritzBox mit KODI verbinden

 Tutorial:

 Es wäre doch schön, die Funktionalität von FHEM und Hausautomation für KODI zu nutzen. Wer eine FritzBox hat, kann sogar die Musikwiedergabe anhalten, wenn das Telefon klingelt. Das ist gar nicht schwierig, so wird es gemacht.

Einstellungen in KODI: 


 

Expertenmodus wählen

Einstellungen->Dienste-> Steuerung über http erlauben

-port 8080

-Benutzername <kodi>  (oder irgendeinen anderen)

-Paßwort  < passwort> 

(Diese beiden werden nachher für das Device in FHEM benötigt)

Dann noch die beiden nächsten Zeilen <Fernsteuerung>,  beide zulassen. 

Fertig

 

Jetzt zu FHEM

Sofern noch nicht installiert:

sudo apt-get install libjson-perl  ( Neustart erfoderlich )

und ein Device anlegen: 

define KODI XBMC <IP-Adresse> tcp <Benutzername> <Paßwort> ( wie bei KODI eingetragen)

Jetzt legen wir noch einen schönen Button an  mit rot/grün: 

attr KODI devStateIcon opened:rc_GREEN:on disconnected:rc_RED:off Initialized:message_socket_disabled 

Das müsste etwa so aussehen, natürlich geht auch jeder andere Button:

Wenn man das Device öffnet, sieht das so aus.

Wenn man bei laufender Musik den Volume-Schieber betätigt, wird der Befehl an KODI gesendet.  Mit dem Befehl <set KODI volume xx> läßt sich das natürlich automatisieren, alternativ kann man auch anhalten: <set KODI pause all> hält die Musik oder einen Film an.

Wer einen CallMonitor hat,  kann mit DOIF oder notify Verknüpfungen zum Beispiel einen Film anhalten, wenn das Telefon klingelt:

define notify_KODI_Anrufe notify CallMonitor:event:.ring {if (ReadingsVal("KODI", "playStatus", "") 
eq "playing"){fhem("set KODI pause all")}

Man kann auch Nachrichten auf den Bildschirm schicken: 
set KODI msg 'FHEM' 'Hallo, eben hat das Telefon geklingelt' 100 info
Hierbei ist der  String in einfachen Anführungszeichen die Nachricht, 100 steht für 
Anzeigedauer und info für das Icon. Es stehen drei Icons zur Verfügung: info, error und warning.


Zum Schluß schalten wir KODI aus: set KODI shutdown. 


Mittwoch, 13. Januar 2021

Guck mal, wer da klingelt - sehen, wer vor der Haustür steht

Kann man natürlich fix und fertig kaufen, wird dann aber ein bißchen teurer und die Daten gehen womöglich in eine Cloud. 

Bei dieser Lösung bleibt alles im Hause, Kosten entstehen nur für die IP-Cam, Raspberry mit FHEM wird allerdings vorausgesetzt. 

Eine IP-Cam mit der Fritzbox verbinden und das Bild auf dem FritzFon anzeigen, hatte ich hier gepostet. 

https://www.youtube.com/watch?v=aflcY_9WSik 

Heute gehen wir einen Schritt weiter und lassen uns den Videostream auf das Tablet senden, ausgelöst durch die Klingel. Dazu wird ein Raspberry mit FHEM benötigt und eben eine IP-Kamera. 

Vorausgesetzt wird ein installiertes FHEM, ansonsten bitte in den einschlägigen Tutorials suchen, wie das aufgesetzt wird. Für FHEM wird das Modul AMAD benötigt und für das Tablet die Apps tinyCam und Automagic. 

TinyCamFREE gibt es im Playstore, Automagic hier: 

https://automagic4android.com/download_en.html 

Da steht auch, wie man eine apk installiert. 


Nur erstmal herunterladen und installieren, noch nichts weiter machen, kommt später. 

In FHEM muß nun zunächst die AMADCommBridge definiert werden, z.B. so: 

                                  define AMADBridge AMADCommBridge 

Damit haben wir die Brücke zwischen FHEM und Android, die übrigens in beiden Richtungen funktioniert. FHEM legt automatisch den Raum AMAD an, das erleichtert das Wiederfinden. 

Nun wieder zurück an das Tablet, Automagic starten  und den First Run Assistant ausführen,  einfach den Anweisungen folgen.

Jetzt wieder zurück in FHEM und das device Tablet anlegen, es muß genau so heißen wie in Automagic eingetragen.  Beispiel:

 define TabletWR 192.168.178.xxx meineSSID 

( für den device-Namen, die IP-Adresse und  meine SSID müssen natürlich die eigenen Daten eingegeben werden.)

Wichtig an dieser Stelle: Die Bezeichnung des Device darf kein Leerzeichen enthalten, also Tablet WR geht nicht. Die SSID darf ebenfalls kein Leer- oder Sonderzeichen enthalten. Die IP-Adresse des Device kann in der FritzBox nachgesehen werden. Wenn wir jetzt im Room AMAD das eben angelegte Device anklicken, sehen wir die Verbindung zum Tablet mit allen Daten. 

Jetzt legen wir noch bei den Attributen set openApp an, damit wir fernsgesteuert die App tinyCam öffnen können. Jetzt kommt allerdings ein Trick: Die App heißt zwar tinyCam, trägt aber intern einen Package Namen. Den finden wir heraus, wenn wir uns die App Package Name Viewer aus dem Playstore holen. 

  • Aufrufen, dann wird zu jeder installierten App darunter der package name angezeigt. Für tinyCam ist das com.alexvas.dvr Das Atttribut lautet also komplett: 

 attr TabletWR setOpenApp com.alexvas.dvr 

 Jetzt müßte das so aussehen:

Die AMAD Bridge ist offen, d.h. FHEM und Android können kommunizieren. Das Device TabletWR 

 st aktive.



 

Jetzt nach oben scrollen und ausprobieren: set TabletWR -> Ausklappmenü -> OpenApp -> com.alexvas.dvr Damit sollte, wenn alles richtig installiert ist, das Kamerabild aufgehen. 

Nun kommt der krönende Abschluß: Beim Druck auf den Klingelknopf soll die Aktion ausgelöst werden. Dazu benötigen wir einen freien GPIO, von denen der Raspi ja genügend bereitstellt. Wir legen ein GPIO-device an, je nachdem, welcher noch frei ist etwa so: 

define GPIO2 RPI_GPIO 2 

Ich habe meine ganzen GPIOs im Raum GPIO untergebracht, da hat man dann alle zusammen. Weitere Attribute, die angelegt werden müssen: 

direction input 

interrupt both 

Jetzt muß der GPIO noch hardwareseitig beschaltet werden. Raspi vorsichtshalber herunterfahren und vom Strom trennen, ein Kurzschluß passiert schnell und es raucht, bestenfalls ist nur ein GPIO hinüber, schlimmstenfalls auch mehr. Schaltbild. 

Ich habe den Klingelanschluß folgendermaßen verdrahtet: 

Der Klingeltaster aktiviert das Relais mit 2 Arbeitskontakten. Der aktiviert Klingelpauls, der andere zieht über den Widerstand R1 den GPIO 2 auf low.

 Mit einem DOIF wird jetzt der Befehl für AMAD definiert: 

DOIF_haustuercam_auf_tablet ([GPIO2:Pinlevel]eq"low")(set TabletWR openApp com.alexvas.dvr on) 

Das wars!