Wie kann per Karotz eine Sprachausgabe (Klingelbenachrichtigung) über Fhem und Raspberry Pi mit PushingBox realisiert werden?

Seit langem habe ich einen Karotz und schon einige Beiträge darüber hier veröffentlicht.

Karotz kann blinken!
Karotz kann Hausautomatisation!
Nun wollte ich ihn mal in Fhem für die Hausautomatisation einsetzen.

Habe nun eine generelle Lösung über die kostenlose PushingBox realisiert.

Es können jegliche Textausgaben auf den Karotz gemacht werden. Bei mir läuft eine Ansage, wenn es an der Haustür klingelt. Es könnte auch jede Stunde die Temperatur von Karotz angesagt werden oder … (weitere Ideen als Kommentar).

Was ist also nötig?

1. Die kostenlose App PushingBox auf den Karotz über die Karotz Seite installieren. Es ist diese App, die auch über die Suchefunktion im englischen Store gefunden werden kann. Klickt man dann auf die installierte App, findet man dort die Install id die wird für weiter installation benötigt.
Bildschirmfoto 2014-04-17 um 19.38.19
Bildschirmfoto 2014-04-17 um 19.36.42

2. Einen kostenlosen Account bei PushingBox mit dem Google-Account einrichten.

3. Im Menü auf My Services klicken und auf Add a Service Button klicken:
Bildschirmfoto 2014-04-17 um 20.55.28
Dann den Karotz Service auswählen mit klick auf den Button „Select this Service“.
Bildschirmfoto 2014-04-17 um 20.56.15

4. Im folgenden Dialog den „Namen der Karotz configuration“ eingeben, der kann frei gewählt werden und der InstallID eintragen. Die kann wie unter 1. beschrieben ermittelt werden. Die Sprache auswählen, damit Karotz auch deutsch spricht einstellen und klick auf „Submit“.
Bildschirmfoto 2014-04-17 um 17.43.04

5. Dann unter „My Scenarios“ über den Button „Add an Action“ hinzufügen. Bei dem Parameter folgenden Text eingeben: $nachricht$
Der Service Name ist frei wählbar. Nach dem speichern erscheint in der Tabelle die DeviceId die später noch verwendet wird.Bildschirmfoto 2014-04-17 um 21.16.15
Jetzt einmal auf den „Test“ Button klicken. Karotz muss nun „Nachricht“ sagen. Wenn das alles läuft, kann es an die Einrichtung in Fhem gehen.

6. In der 99_Utils.pm (oder besser eine neue anlegen 99_myUtils.pm analog zu 99_Utils.pm) folgende Funktion ergänzen und abspeichern. Neueste Version kann auch von GitHub geladen werden.

#
# Sendet eine Nachricht an Karotz.
#
# Aufruf z.B.: {Set_Karotz_Nachricht('Device ID','Hallo herzlich Willkommen zu Hause')}
#
sub
Set_Karotz_Nachricht
{
my ($devid, $text) = @_;

Log 5, ">>> Set_Karotz_Nachricht: $text";
Log 5, ">>> ---------------------------------------------------------------------------------";

system("curl -d \"devid=$devid&nachricht=$text\" http://api.pushingbox.com/pushingbox");

return "OK, sende die Nachricht:\"$text\" an Karotz.";
}

7. Fhem restarten und in der Kommandline die Funktion testen mit (?? durch DeviceID ersetzen):
{Set_Karotz_Nachricht(‚v??????????‘,’Hallo herzlich Willkommen zu Hause‘)}
und return. Schon spricht Karotz!

8. Jetzt kann diese Zeile in die gewünschten Abläufe in Fhem integriert werden.
Z.b. wenn es klingelt:
define klingenOffPush notify fl_klingel_1:on* {\
Set_Karotz_Nachricht('v???????','Hallo, es hat an der Haustür geklingelt.');;\
}

wird nun die Meldung: „Hallo, es hat an der Haustür geklingelt.“ von Karotz ausgegeben.

Hast Du noch weitere Anwendungsfälle, dann hinterlasse einen Kommentar?

Wie können Benachrichtigungen (notifications) von einem Fhem-Server unter Raspberry Pi an iOS (iPhone, iPad) und Android mit Pushover versendet werden?

Wie können Benachrichtigungen von einem Fhem-Server unter Raspberry Pi und auch anderen Programmiersprachen (Bash, Perl, PHP, Web…) an ein Handy versendet werden. Z.B. will man benachrichtigt werden wenn die Tür geöffnet wird oder wenn der Speicherplatz auf dem Rechner voll ist. Oder wenn die Temperatur unter 0 Grad ist oder oder…

Das geht mit Pushover. Es wird die kostenplichtige App (ein paar Euro) einmalig benötigt, und dann kann man diese REST-API kostenlos nutzen:
Pushover-REST-API

In Fhem in der fhem.cfg kann dann ein Eintrag erstellt werden, der z.B. täglich um 18 Uhr eine Nachricht versenden, wenn die Batterie von einem Gerät (hier Pulse von Withings) kleiner als 50 Prozent der Accu-Ladung ist. Versendete Nachrichten kommen innerhalb von wenigen Sekunden auf den Mobilen Geräten an. Es könnte also auch leicht alle 10 Sekunden abgefragt werden.

Es muss auf der Pushover-Seite nach der Anmeldung eine Application angelegt werden. Von der Seite erhält man dann auch den API-Token und auf der Hauptseite den User-Key. Die müssen hier ersetzt werden:


define pushPulseAccuStand at *18:00:00 {\
my $temp=ReadingsVal("withings_pulse_geraet", "batteryLevel", "0");;\
if($temp < 50){\ system ("curl -s -F 'token=--API-TOKEN' -F 'user=--USER-KEY---' -F 'message=Accu von Pulse beträgt: $temp.' -F 'title=Fhem: Accu Status zu Pulse' http://api.pushover.net/1/messages.json");;}\ }

Es gibt nun auch ein Fhem Modul, was die Nutzung mir dem Pushover Service vereinfacht.
Es muss nun kein curl mehr verwendet werden. Es reicht ein zwei Zeiler.
Erst das Device definieren und dann die Befehle absetzen. Z.B. täglich um 12 Uhr eine Nachricht senden "Pulse laden":


define Pushover1 Pushover TOKEN KEY
define at_Push at *12:00 set Pushover1 msg 'Titel' 'Pulse laden' '' 0 ''

Oder täglich um 12 Uhr Accu Warnung wenn kleiner als 70% Ladung:

define pushPulseAccuStandPulse at *12:00:00 {\
my $accu=ReadingsVal("withings_pulse_geraet", "batteryLevel", "0");;\
if($accu < 70){\ set Pushover1 msg 'Titel' 'Pulse laden, da nur noch $accu Prozent.' '' 0 ''\ }\ }

Habt ihr noch weitere Anwendungsgebiete? Dann bitte als Kommentar.