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 15 Jahr Erfahrung im Bereich Web-Entwicklung mit PHP. Weiterhin bin ich seit Ende 2013 Magento Certified Developer.

8 Kommentare


  • Michael

    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.

  • Bastian

    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

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

  • Hallo Matthias,

    ich habe mich auch mit FHEM befasst. Nun meine Frage dazu:

    Könnte man mit einer Action über einen Fibaro Taster oder einen Binärsensor auch ein Script am Raspberry ausführen ? Ich denke über eine Art Tür-Gegensprechanlage nach. Ein eingebundener Taster soll dabei einen Gong betätigen und einen Bildschirm anschalten auf dem ein Videostream läuft. Denkst du das wäre umsetzbar?

    vielen Dank

    Daniel

    • Grundsätzlich: Ja. Die Frage ist nur wieviel Aufwand man da reinstecken möchte. FHEM selbst hätte damit dann wahrscheinlich gar nicht mehr so viel mit zu tun und Du würdest das meiste selbst Scripen oder Programmieren müssen.

Schreibe eine Antwort zu tom Antwort abbrechen