FHEM Tutorial-Reihe - Part 3: Müllplan in FHEM integrieren und Pushbenachrichtigungen

Mit ** gekennzeichne Links auf dieser Seite sind Affiliatelinks.

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).

FHEM-Kurs

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");

Newsletter

Trage Dich jetzt in den Newsletter ein und genieße dadurch viele Vorteile:

  • 5€-Gutschein als Dankeschön
  • Zugang zu exklusiven Inhalten
  • Rabattaktionen für Kurse
  • Angebote für Produkte

* Durch Angabe meiner E-Mail-Adresse erkläre ich mich damit einverstanden, dass mir regelmäßig Informationen und Produktempfehlungen aus dem Fachgebiet Smart Home zugesendet werden. Mit dem Eintrag akzeptieren Sie unsere Datenschutzbestimmungen. Meine Einwilligung kann ich jederzeit widerrufen.

Matthias Kleine

Matthias Kleine

Großer Fan und Anhänger von OpenSource-Projekten und erweiterbaren Haus-Automatisierungskomponenten. Je offener und flexibler das System, desto besser. Ich lege mich ungern auf einzelne Protokolle oder Standards fest, sondern probiere aus allen Welten das Beste zu verheiraten. Unterwegs als Softwareentwickler, Trainer und Blogger im Bereich Smart Home.

Auf YouTube und hier im Blog gibt es bereits unzählige kostenlose Videos, Informationen und Tutorials. Wenn Dir das noch nicht reicht, ist ein Training genau das richtige für Dich! Die folgenden Trainings haben den Vorteil, dass immer von Anfang an gestartet wird und Du ohne Vorwissen teilnehmen kannst.