Projekt Raspberry Pi: Kommandos per Button in FHEM ausführen

Michael hat mich in einem anderen Beitrag folgendes gefragt:

Hallo Matthias,
eine super Serie. Ich bin gerade dabei Fhem von Raspbian zu Raspbmc umzuziehen, da sind die Post sehr hilfreich. Lässt Du XBMC die ganze Zeit parallel laufen oder beendest Du es, um Ressourcen zu sparen?
Ich schalte den Raspberry Pi abends aus. Gibt es eine Möglichkeit dies über einen Button in Fhem zu realisieren?
Beste Grüße,
Michael

Die Antwort ist: Ja, klar! Wenn man sich die FHEM-Befehlsreferenz durchliest, liest man auch von Shell-Commands. Doch wie führt man diese aus? Folgendes bauen wir zusammen:

Dummy-Attribut:

Set the device attribute dummy to define devices which should not output any radio signals. Associated notifys will be executed if the signal is received. Used e.g. to react to a code from a sender, but it will not emit radio signal if triggered in the web frontend.

Notify-Define:

Execute a command when received an event for the definition <pattern>. If <command> is enclosed in {}, then it is a perl expression, if it is enclosed in „“, then it is a shell command, else it is a „plain“ fhem.pl command (chain). See the trigger command for testing it.

Möglichkeit 1: Einen Schalter umbauen

FS20 ist nicht konfiguriert, macht aber nichts (und wird von meinem auf HomeMatic konfigurierten Stick auch nicht unterstützt). Eigentlich sogar gut, da ich es als Indikator dafür nutzen kann, die entsprechenden Dummy-Buttons ohne Funktion damit zu kennzeichnen. Wie oben gesehen, sorgt das Dummy-Attribut dafür, dass keine Signale versendet werden. Perfekt also – wenn auch etwas umständlich gemacht. Ein notify wird aber dennoch ausgeführt – dieses nutzen wir also, um einen Befehl auszuführen.

Mit dem Befehl eventMap, kann man die Standard-Kommandos umbenennen. So heißt „off“ ab jetzt „speak“. Den On-Button entfernen wir, indem wir per webCmd nur noch den speak-Befehl angeben.

Um zu testen, ob es funktioniert, sende ich „test“ an die Wall. Wenn man nun per SSH angemeldet ist, sieht man die Ausgabe auch sofort. Funktioniert also!

Möglichkeit 2: Einen Dummy anlegen

Beim Erstellen der ersten Möglichkeit, ist mir folgendes in den Sinn gekommen:

Wir legen ein Dummy-Gerät an. Dieses hat noch keine Kommandos, also legen wir welche an (so viele wie man möchte). In diesem Fall nur „test“. Per notify lassen wir uns benachrichtigen, wenn ein entsprechender Befehl gesendet wurde. Das schöne: Wir können beliebig viele Befehle unter einem „Dummy-Gerät“ anlegen und mit verschiedenen Notify-Actions, unterschiedliche Aktionen ausführen. Perfekt!

Ich würde sagen: Frage beantwortet, oder Michael?

Über

Jahrgang 87, gelernter Softwareentwickler und fast ein Jahrzehnt Erfahrung im Bereich Web-Entwicklung mit PHP und Web-Design. Diese Eigenschaften machen mich zu einem geeigneten und geschätzten Ansprechpartner für die Umsetzung Ihres Projektes. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.

6 Kommentare


  • Ich hatte gestern auch etwas rumprobiert und es über den Aufruf eines Scripts in pearl hinbekommen:
    define System dummy
    attr System webCmd on:off
    attr System devStateIcon on:general_an:off off:general_aus:on
    define shutdown notify System:off {fhem(„set System on“);;fhem(„set Strom_Pi on-for-timer 120“);;system(„/opt/fhem/script/shutdown-pi.sh“)}

    Wichtig ist für den Shutdwown dem User fhem noch die entsprechenden Rechte zu geben. Der Funkschalter am Pi geht nach zwei Minuten aus. Morgens kann ich dann per Handsender das System einfach wieder einschalten.

  • Hallo,
    konnte diesen „code“ auch gut verwenden, nur leider bekomme ich es es nicht hin, der Funktion bzw. dem Button ein Icon zuzuweisen, welches beim anklicken dann die Funktion ausführt 🙁
    Eine Idee?

    Grüße
    Bastian

  • Pingback: Raspberry Pi

  • Klaus

    Hallo Michael, klasse Blog den du hier hast. Ich hänge jedoch bei einem wget fest der per notify getriggert werden soll. Ist das überhaupt lösbar?

    Gruß, Klaus

    • Puh – ich habe für mich FHEM mittlerweile aufgegeben, weil genau solche Aktionen relativ nervig zu implementieren sind. Eventuell geht es ganz einfach, oder gar nicht. Ich kann auf die Schnelle leider nicht helfen, da ich aktuell selbst kein Laufendes FHEM mehr im Einsatz habe. Sorry!

    • Hi Tom,

      aktuell bin ich nach wie vor bei FHEM. Wenn man sich etwas näher damit beschäftigt, erkennt man doch noch sehr viele Stärken.
      Daher habe ich mir noch keine andere Alternative angeschaut.

Kommentar verfassen