FHEM Tutorial-Reihe - Part 3: Müllplan in FHEM integrieren und Pushbenachrichtigungen
Um etwas über die ersten Schritte in FHEM zu lernen, nutzen wir in diesem Teil ical-Kalender und Dummy-Geräte um Mülltonnen zu simulieren. Ziel ist es, auf dem Smartphone benachrichtigt zu werden, wenn eine Mülltonne abgeholt wird. Natürlich zeige ich wie immer jeden einzelnen Schritt im Video.
Außerdem wird gelernt:
- wie ein Apache-Webserver auf dem Raspberry installiert wird
- wie Notifications arbeiten
- wie man mit dem Calender-Gerät arbeiten kann
- wie man eigenen Code als Modul einbringt
- wie man das Syntax-Highlighing im Editor aktiviert
- wie Systemfunktionen aufgerufen werden können
- wie Pushbenachrichtigungen auf das Smartphone geschickt werden können
Also ein Teil mit ziemlich viel Input! Dafür geht das Ganze auch entsprechend lange. Ich würde dazu raten, Zettel und Stift zur Hand zu nehmen, um einige Befehle oder auch Tricks mitzuschreiben. Ansonsten viel Spaß und viel Erfolg mit dem dritten Teil der FHEM-Tutorial-Reihe!
Mittlerweile gibt es zu diesem Tutorial einen zweiten Teil, welcher über das Modul ABFALL eine viel einfachere Integration erlaubt. Bitte nicht erst das hier alles umsetzen, und am Ende wundern, dass es eine bessere und einfachere Lösung gibt. Schaut am besten auch in den anderen Teil (3.2).
Die folgenden Befehle sind für diesen Teil relevant:
sudo apt-get update
sudo apt-get install apache2 -y
define Muelltonnen_Kalender Calendar ical url http://localhost/muellkalender.ics 14400
Alternativ kann an dieser Stelle natürlich auch eine Kalender-Url von Google oder einem anderen Anbieter genutzt werden. Der Apache muss auch nicht zwingend installiert werden, wenn man diesen Weg nicht geht. Allerdings nutzen wir den Apache-Server in späteren Videos noch, wodurch ich an Eurer Stelle dieser Schritte trotzdem durchführen würde.
define Bio_Tonne dummy
attr Bio_Tonne room Kalender
attr Bio_Tonne setList ja nein
attr Bio_Tonne webCmd ja:nein
define Restmuell_Tonne dummy
attr Restmuell_Tonne room Kalender
attr Restmuell_Tonne setList ja nein
attr Restmuell_Tonne webCmd ja:nein
define Papier_Tonne dummy
attr Papier_Tonne room Kalender
attr Papier_Tonne setList ja nein
attr Papier_Tonne webCmd ja:nein
get Muelltonnen_Kalender full all
99_myUtils.pm
attr <FHEMWEB> JavaScripts codemirror/fhem_codemirror.js
sub Kalenderstart ($)
{
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/, $Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/, $Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Muelltonnen_Kalender summary $uid");
if ($Kalendertext =~ /Biotonne/) {
fhem("set Bio_Tonne ja");
};
if ($Kalendertext =~ /Restabfalltonne/) {
fhem("set Restmuell_Tonne ja");
};
if ($Kalendertext =~ /Papiertonne/) {
fhem("set Papier_Tonne ja");
};
};
}
sub Kalenderende ($) {
my ($Ereignis) = @_;
my @Ereignisarray = split(/.*:\s/, $Ereignis);
my $Ereignisteil1 = $Ereignisarray[1];
my @uids = split(/;/, $Ereignisteil1);
foreach my $uid (@uids) {
my $Kalendertext = fhem("get Muelltonnen_Kalender summary $uid");
if ($Kalendertext =~ /Biotonne/) {
fhem("set Bio_Tonne nein");
};
if ($Kalendertext =~ /Restabfalltonne/) {
fhem("set Restmuell_Tonne nein");
};
if ($Kalendertext =~ /Papiertonne/) {
fhem("set Papier_Tonne nein");
};
};
}
define Muelltonnen_Kalender_EventStart notify Muelltonnen_Kalender:modeStarted.* { Kalenderstart("$EVENT");; }
define Muelltonnen_Kalender_EventEnde notify Muelltonnen_Kalender:modeEnded.* { Kalenderende("$EVENT");; }
system("curl -s -F 'token=qwertzuioasdfghjk' -F 'user=qwertzuioasdfghjk' -F 'message=Biotonne wird heute abgeholt' https://api.pushover.net/1/messages.json");