FHEM module “pilight”

As you might have read, I am constructing a FHEM-based solution to switch on my floor heating system. For preparation, I needed to control power plugs via FHEM.
Despite there are many ready-to-use products like FS20 to do that, I was searching for a really cheap solution, which means about 10€/plug instead of 50€. Then i noticed pilight.


After some googling, I found a blog which uses these very cheap power plugs found in nearly every supermarket nowadays:

Intertechno Funksteckdosen 3 fach Set IT-1500

Switching these plugs is usually done via remote control, but I wanted it via my raspberry pi:

Raspberry Pi Model B – Mainboard – 512 MB RAM, RASPBERRY PI TYPE B

With a GPIO port found at the raspberry, we can build a DIY 433Mhz transceiver/receiver, see the blog.

Having the hardware set up ready, we can proceed installing pilight to send messages to the plugs like

pilight-send -p kaku_switch -i 4762303 -u 0 -t

to switch on a plug.

Now, to control these plugs from FHEM an actor device is much more comfortable than a script execution. Therefore, I decided to write a module for pilight.
You can download the code from github.

The installation is pretty easy:

  1. Install pilight and ensure the service is running
  2. Copy the 98_pilight.pm into your FHEM folder
  3. Create a pilight device (example):

    define HeizungBuero pilight kaku_switch
    attr HeizungBuero housecode 4762303
    attr HeizungBuero unitcode 1
  4. Switch on/off the device using FHEMWEB or the andFHEM app

Pilight FHEM

If you have questions, please use the comment field below. If you need more protocols or found a bug, please go directly to github and file a issue there. Thanks!

77 thoughts on “FHEM module “pilight”

  1. Lieber Andreas,

    zunächst einmal vielen Dank für das module. Hat auf Anhieb geklappt.
    Allerdings funktionieren elro Schalter nicht.:
    pilight-send -p elro -i 1 -u 1 -t .

    Interessanter Weise auch nicht in pilight. Hast Du eine Idee?

    Darüberhinaus habe ich noch eine andere Frage. Kann man auch pilight Sensoren z.B. dht22 in FHEM integrieren?

    Beste Grüße W

    (PS. Zu Deinem Tweet: Die Kosten der Haftpflichtversicherung “meiner” 5 Beleghebammen (alle arbeiten freiberuflich), werden durch die Klinik übernommen! Ein für alle optimales Modell.

    1. Hallo,

      ich hatte parallel eine zweite Anfrage, da sich die Parameter anderer Protokolle wohl unterscheiden. Ich schaue mir das und und dann gibt es ein Update.

    2. Bekomme es nicht hin meine Elro Funksteckdose per pilight zu schalten.
      Was muss ich anstelle der 1 bei -s und -u eintragen?
      Meine DIPs stehen wie folgt: Hauscode: 11010 und dann A, B und C.

        1. Hallo Andreas,
          dank dir.
          Kannst mich / uns ja auf dem laufenden halten.
          Ich hoffe mein neuer Empfänger kommt die Tage.
          Dann bekomme ich es hoffentlich hin.

  2. Hallo,

    leider kommt beim Laden des Moduls in FHEM

    cannot load modul pilight

    reload: Error:Modul 98_pilight deactivated:
    Unrecognized character \xC2; marked by <– HERE after at master <– HERE near column 53 at ./FHEM/98_pilight.pm line 11, line 77.

    2014.01.24 21:33:20 0: Unrecognized character \xC2; marked by <– HERE after at master <– HERE near column 53 at ./FHEM/98_pilight.pm line 11, line 77.

  3. Hello

    Thanks for creating this Pilight module. I have problem adding pilight devices. I get this error in Fhem logfile after “Define”-command

    “Unrecognized character \xC2; marked by <– HERE after at master <– HERE near column 53 at ./FHEM/98_pilight.pm line 11."

    Can you help me?

    1. Hi Tuomas,

      please try to re-download the script from GitHub, an other user seems to had the same problem. Maybe the encoding of the file gets broken.

      1. Hello Andreas

        Thank you for the quick reply.
        I removed the file and re-downloaded it and reboot after that but it’s still not working. It gives me the same error in the log-file.

          1. Ok, now it’s working.

            Previously I downloaded only the .pm-file from Github and it didn’t work. But now I downloaded the zip-file and extracted it and now it works.

            I’m a noobie with Linux and the Raspberry but I’m learning more while doing things.

            Thank you for your help.

  4. Hi, gute Arbeit!

    Leider hab ich ein Verbindungsproblem bei pilight v3.0:


    2014.02.26 19:04:26 3: pilight command: off
    2014.02.26 19:04:26 3: pilight: ERROR. Can't open socket to pilight-daemon: Verbindungsaufbau abgelehnt


    [Feb 26 19:00:33:727292] pilight-daemon: INFO: new client, ip: 192.168.10.11, port: 36931
    [Feb 26 19:00:33:729151] pilight-daemon: INFO: client recognized as sender
    [Feb 26 19:00:33:731021] pilight-daemon: INFO: client disconnected, ip 192.168.10.11, port 36931

    Irgendein Tip?
    Gruß Tim

    1. Hallo,
      konnte die 3.0er bisher leider noch nicht testen, aber bei dir scheint es schon Probleme beim Verbindungsaufbau zu geben; bist du sicher, dass dein pilight daemon auf dem selben Gerät und auf Port 5000 läuft?

      1. Hi, ja hab alles auf Standard gelassen.
        Bin leider auf die 3.0 angewiesen.

        Sieht so aus, als ob er beim socket recieve aussteigt…

        1. Hallo Tim,
          ich denke, es liegt daran, dass pilight überhaupt nicht richtig startet weil deine settings noch nicht auf die neue Version angepasst wurden. Stoppe und Starte mal den pilight daemon manuell und schau in die logs und versuche dich ggf. mal mit telnet darauf zu verbinden.

  5. Hi, danke für das update.

    Leider geht es immer noch nicht:
    pilight-log:
    [code]
    [Mar 01 11:45:21:597397] pilight-daemon: INFO: new client, ip: 192.168.10.11, port: 51169
    [Mar 01 11:45:21:599646] pilight-daemon: INFO: client recognized as sender
    [Mar 01 11:45:21:603300] pilight-daemon: INFO: client disconnected, ip 192.168.10.11, port 51169
    [Mar 01 11:45:35:997465] pilight-daemon: INFO: new client, ip: 192.168.10.11, port: 51171
    [Mar 01 11:45:35:999674] pilight-daemon: INFO: client recognized as sender
    [ Mar 01 11:45:36:3740] pilight-daemon: INFO: client disconnected, ip 192.168.10.11, port 51171
    [Mar 01 11:45:42:315017] pilight-daemon: INFO: new client, ip: 192.168.10.11, port: 51172
    [Mar 01 11:45:42:316030] pilight-daemon: INFO: client recognized as sender
    [Mar 01 11:45:42:317124] pilight-daemon: INFO: client disconnected, ip 192.168.10.11, port 51172
    [/code]

    fhem-log:
    [code]
    2014.03.01 11:43:48 3: pilight command: on
    2014.03.01 11:43:48 3: pilight: ERROR. Can't open socket to pilight-daemon: Connection refused
    [/code]

    gruß

    tim

    1. Hallo,

      ich denke, das liegt zu 99,9% daran, dass pilight selbst nicht korrekt startet.
      Stoppe den Daemon mal auf kommandozeile (sudo /etc/init.d/pilight stop) und versuche ihn wieder zu starten (sudo /etc/init.d/pilight start), da wird garanitiert eine Fehlermeldung ausgegeben.

  6. pilight läuft ohne Probleme. Also schalten geht ohne Probleme, pimatic funktioniert, das senden von temperaturdaten per python-script an den pilight-deamon funktioniert auch.
    Keine Fehler beim Starten im debugmodus oder im log.

    Könnte es nicht am ssdp protocol liegen?

    1. Sehr komisch; hattest du die neuste Version ausprobiert? Sonst schalte vielleicht mal alle Loglevel höher und schick mir die Logs mal. Bei mir funktioniert es jetzt mit pilight3 einwandfrei…

  7. Hallo Andreas,

    Brauche für pilight noch das Intertechno_old protokoll.
    Beispiel einer Eingabe am PI:
    Aus => sudo pilight-send -p intertechno_old -i 1 -u 2 -f
    An => sudo pilight-send -p intertechno_old -i 1 -u 2 -t

    Das Intertechno protokoll sollte ja mit dem kaku_switch kompatibel sein und funktionieren oder?

    Kann man auch Wettersensor Daten aus Pilight auslesen und in fhem darstellen?

    Habe da einen Aldi Sensor 433Mhz angebunden und würde diesen gerne in fhem verarbeiten und anzeigen.

    Gruß Peter

    1. Hallo,

      ja, die Protokolle sollten analog funktionieren. Ersetze in meinen Beispielen einfach mal kaku_switch durch intertechno_old.
      Das Auslesen der Werte geht bisher noch nicht, ich habe dazu einen JeeLink Stick (Siehe meine anderen Beiträge). Aber ich schau es mir bei Gelegenheit mal an.

      1. So wie das in 98_pilight.pm steht kann man kaku_switch nicht einfach durch intertechno_old ersetzen.

        kaku_switch benutzt attr housecode, das wird bei intertechno_old in der source nicht ausgewertet, da wird $systemcode gesendet. Eine Intertechnodose mit Hauscode A, Kanal 8 musste ich so definieren:

        define Drucker pilight intertechno_old
        attr Drucker unitcode 0
        attr Drucker systemcode 7

        Ist das so gewollt, oder gehen da noch Parameter durcheinander? Aus der Dokumentation konnte ich das nicht entnehmen, ich hab musste mir das FHEM-Modul anschauen. Das Ganze müsste man wohl mal für die einzelnen Protokolle mal genauer dokumentieren.

  8. Hi, zunächst danke für das pilight Modul.
    Ich habe heute meine ersten Versuche mit fhem gemacht, und konnte erfolgreich meine bereits laufende pilight instanz in ein frisch installiertes fhem (5.5) integrieren.
    Die Einträge im Logfile sehen so aus:

    2014.04.01 21:44:53 3: pilight command: off
    2014.04.01 21:44:53 3: pilight data: { "message": "send", "code": {"protocol":[ "elro_hc" ],"systemcode":14, "unitcode":23,"off":1}}

    Nach einem “update” in der fhem Befehlszeile und anschließendem “shutdown restart” funktioniert das pilight-Modul jedoch nicht mehr:

    2014.04.01 22:25:12 3: pilight command: off
    2014.04.01 22:25:12 3: pilight data: { "message": "send", "code": {"protocol":[ "elro_hc" ],}}

    Scheinbar gibt fhem die Optionen nicht mehr an das pilight Modul weiter. Aber wie behebe ich das?

    1. Hi, das hört sich danach an, als ob du vor dem Reboot die Attribute nicht gespeichert hast (auf der Webseite oben links “Save config” drücken); schau doch mal, ob sie in deinem fhem.cfg File stehen.

  9. Hi, ich würde gerne Dein Modul in FHEM verwenden. Könntest Du das “silvercrest” Protokoll hinzufügen? Wäre super! Danke!

    Marcel

  10. Hi, super Modul. Leider klappt es bei mir noch nicht richtig.
    pilight funktioniert super, ich kann meine Steckdosen mit pilight-send -p pollin -s 9 -u 8 -f/t ein und aus schalten.
    Leider klappt das mit dem Modul noch nicht. Im Log steht folgendes (verbose 0)

    2014.04.04 21:00:37 3: pilight command: on
    2014.04.04 21:00:37 3: pilight: ERROR. Can’t open socket to pilight-daemon: Connection refused

    Im pilight log wird kein Eintrag gemacht.
    Der daemon läuft lokal ohne veränderte Einstellungen, pilight-send und -receive funktionieren einwandfrei. Hier nochmal meine fhem Einstellung

    define LGTV.Light pilight pollin
    attr LGTV.Light systemcode 9
    attr LGTV.Light unitcode 8
    attr LGTV.Light room Wohnzimmer
    attr LGTV.Light verbose 0

    Achja, ich habe die aktuelle Version von Github

    1. Schau mal die anderen Kommentare durch, das Problem hatten schon einige, lag meist daran, dass die GitHub-Datei verkehrt heruntergeladen wurde oder beim Download was anderes schief ging.

  11. So, nachgesehen, in /opt/fhem/fhem.cfg sind meine Einstellungen noch enthalten:

    define LeseEcke pilight elro_hc
    attr LeseEcke room Wohnzimmer
    attr LeseEcke systemcode 14
    attr LeseEcke unitcode 23

    Woran könnt es noch liegen?

  12. Hallo,
    ich hab alles wie beschrieben installiert. Jetzt bekomme ich beim Senden eines Befehls im LogFile immer folgende Meldung angezeigt:
    pilight: ERROR. No handshake with pilight-daemon. Received:
    Woran kann das liegen?

    1. Hi,
      hast du die Datei von GitHub gecloned oder via Copy&Paste heruntergeladen? Notfalls clone wiederholen. Läuft Pilight auf dem Standardport und auf dem gleichen Gerät? Kannst du dich via Telnet auf den Pilight Server verbinden?

  13. Hallo Andreas,
    erstmal danke für das super Modul. Leider bekomme ich meine Brennenstuhl Steckdosen damit nicht geschaltet (laut pilight-receiver pollin protocol). Über Pilight-send funktioniert es auch einwandfrei. Aber unter fhem bekomme ich im log folgendes:
    pilight: ERROR. Can’t open socket to pilight-daemon: Connection refused

    meine definition sieht folgendermaßen aus:
    define HIGHBOARD_LICHT pilight pollin
    attr HIGHBOARD_LICHT protocol pollin
    attr HIGHBOARD_LICHT room Test
    attr HIGHBOARD_LICHT systemcode 19
    attr HIGHBOARD_LICHT unitcode 1

    Sollte das nicht funktionieren?
    Gruß
    Jens

      1. Hallo Andreas,

        also ich habe die 98_pilight.pm nicht per Hand runter geladen, sondern einfach über die offizielle fhem update Funktion geholt. Ist ja soweit ich weiß eingecheckt?
        Und pilight läuft auf demselben pi wie fhem (habe nur einen Pi)
        Ich habe allerdings pilight nicht selber dompiliert sondern die Anleitung auf pilight.org für die “Stable Version Through Apt” genommen.

        Gruß
        Jens

  14. Hallo Andreas,
    hast Du das pilight Modul für fhem schon mit der aktuellen pilight Version 4.0 getestet?
    Ich habe noch kein Update durchgeführt, und benutze noch die 3.0 .
    Es schein bei der Version 4.0 ein paar Änderungen zu geben:
    http://www.pilight.org/post/pilight-40-1

    Bevor ich ein Update durchführe, würde ich gern Deine Erfahrungen damit wissen.
    Gruß
    Jens

    1. Hallo,

      habe ich noch nicht getestet; die Releasezyklen von pilight sind ja verdammt kurz. Ich schau mir das bei Gelegenheit an.

      1. Hallo Andreas,
        Das ist ja super. Ich hab bisher noch 3.0, werde dann aber auch Updaten.
        Ich wollte meine aussensteckdose mit der 3.0 schalten das klappte aber nicht. Es ist eine homeeasy hs833 von Elro.
        Mal sehn ob es mit der 4.0 geht.
        Gruß
        Jens

  15. Hallo Andreas,

    ich habe folgendes Problem, (meine Systemumgebung: Raspi, pilight 4.0 (version Fhem 5.3),
    die Verbindung per Telnet 127.0.0.1 5000 geht, per pilight_send geht auch, und per WEB geht auch, nur per FHEN geht es nicht, hier meine config:

    define Schalter2 pilight pollin
    attr Schalter2 room Arbeitszimmer
    attr Schalter2 housecode 13
    attr Schalter2 unitcode 2

    Funktioniert
    pilight-send -p pollin -P 5000 -s 13 -u 2 –on

    meine Fehlermeldung im fhem log:
    pilight command: on
    pilight: ERROR. No handshake with pilight-daemon. Received: >>><<<

    Was mache ich falsch ??

    1. Hallo Olaf,
      leider ändert sich gerade jeden Monat bei den neuen pilight Releases das Interface; Version 4.0 scheint so nicht zu funktionieren. Kannst du es mit mit 3.0 testen? Ich weiss noch nicht, wann ich zum Umbau für 4.0 komme.

  16. Hallo Andreas ich habe leider ein kleines Problem ich finde den Download der Version 3 von pilight nicht, kannst du mir da weiter helfen ?

    1. Hallo,

      da musst du dir wohl in dem GIT Repository die korrekte Version raussuchen. Ich habe aber zwischenzeitlich mal getestet, Version 4.0 geht bei mir auch.

      1. Hallo,

        leider kann ich das Problem bestätigen, wenn ich den Daemon auf Port 5000 laufen lasse, reagiert FHEM eine Zeit lang nicht mehr und ich erhalte

        pilight command: on
        pilight: ERROR. No handshake with pilight-daemon. Received: >>><<<

        sudo pilight-send -p elro_he -s 31 -u 1 -i F10 -t funktioniert.

        BTW warum kann ich eigentlich pilight-send nit mit SUID laufen lassen, ich erhalte immer "etc/pilight/settings.json" nicht lesbar.

        1. Das Gleiche tritt bei mir auch auf. Von Version 3 auf Version 4 ist bei pilight wohl etwas an der Message-Länge geändert worden. Ich befürchte, dass das Probleme verursacht.
          Inzwischen ist eine Beta von pilight 5 schon abrufbar. Wäre es sinnvoll Version 4 auszulassen und das FHEM-Modul für pilight gleich auf Version 5 zu heben?

          1. Hallo,

            sehr komisch, dass das bei mir lokal geht. Ihr benutzt die 98_pilight Version aus dem GitHub, nicht die aus FHEM?

            Versucht mal, die Zeile
            my $data = ‘{ “message”: “client sender” }’;

            durch
            my $data = ‘{ “message”: “client sender” }\n\n’;
            zu ersetzen, wahlweise auch durch
            my $data = ‘{ “message”: “client sender” }\n’;

            Wenn sich danach die Fehlermeldung ändert, bitte Bescheid geben!
            Zwischendurch freue ich mich, wenn ich mal auf die tolle und nützliche Werbung oben rechts klickt :-)

          2. Ich habe eben nochmal die aktuellste Version aus dem Git geladen und die Änderungen gemacht, aber leider ändert sich dadurch an den Fehlermeldungen nichts. :-(

  17. Wie kann ich PIR sensor definieren in Fhem?
    Ich bekome signal aus pilight vie:

    “code”: {
    “id”: 5,
    “state”: “on”
    },
    “origin”: “receiver”,
    “protocol”: “selectremote”,
    “uuid”: “0000-00-00-cd-b7d56e”,
    “repeats”: 13

  18. Auch bei mir leider keine Änderung:
    Ich verwende allerdings pilight 5.0 , bei dem Tempo ist es wohl schwierig Schritt zu halten…

    1. Also ich habe folgende Änderungen im pilight-Modul gemacht:
      my $remote_ip = AttrVal($name, “remote_ip”, ’10.0.1.228′);
      my $remote_port = AttrVal($name, “remote_port”, ’5001′);

      Das ist die IP-Adresse von meinem Raspi und der Port, auf dem bei mir PiLight läuft. Damit läuft’s aber leider nicht bei mir. :-(

      Ich habe das Logins etwas erweitert, vielleicht hast Du noch eine Idee:

      2014.06.19 22:51:29 3: pilight command: on
      2014.06.19 22:51:29 3: pilight: VERA. Remote_ip:
      2014.06.19 22:51:29 3: 10.0.1.228
      2014.06.19 22:51:29 3: pilight: VERA. Remote_port:
      2014.06.19 22:51:29 3: 5001
      2014.06.19 22:51:29 3: pilight: VERA. Socket erfolgreich geöffnet
      2014.06.19 22:51:29 3: pilight: VERA. Folgende Daten weden verschickt:
      2014.06.19 22:51:29 3: { “message”: “client sender” }
      2014.06.19 22:52:00 3: pilight: ERROR. No handshake with pilight-daemon. Received: >>><<<

        1. Jetzt hab’ ich den Port-Eintrag gefunden (hatte ihn mit dem Webserver-Port verwechselt), aber es will einfach trotzdem nicht bei mir. Telnet funktioniert, aber das FHEM-Modul läuft immer noch auf den gleichen Fehler.

          Ich denke ich werde es aufgeben und versuchen irgendwie anders zu integrieren.

          Trotzdem Danke für Deine Hilfe! :-)

          Vera

  19. Hi ich bin echt interessiert an deinem Module allerdings hab ich ein Problem damit. Ich hatte pillight schon soweit eingerichtet und das funktioniert auch super, allerdings verwende ich das Protokoll “Mumbi”, und wenn ich das richtig verstanden habe, ist das in deinem Modul nicht integriert. Gibt es die Möglichkeit, diese noch zu implementieren? Vielen Dank schonmal

  20. Hallo! Habe mit großem Interesse diesen Blog gelesen und habe eine Frage!
    Mein FHem Server läuft auf einer anderen Maschine.
    Kann ich meinen Raspi (+ PCB Module) via Pilight auch als eine Art CUL verwenden?
    Also kann ich den Raspi mit meinem Fhem Server ansteuern und über ihn z.B Funksteckdosen steuern? Wenn ich das richtig verstanden habe, setzt Pilight voraus das der Fhem auf dem RPI läuft, was mir allerdings nichts nützen würde.

    Vielen Dank für die Tipps!!

    1. Hallo,

      mit dem CUL kenne ich mich leider nicht aus, besitze selbst keinen. Dass man pilight als Client/Server auf verschiedenen Rechnern betreiben kann ist auch ein Feature von pilight selbst, nicht von mir.

      Viel Erfolg,
      Andreas

  21. Hallo,
    habe bei FHEM mit pilight / pimatic immer das problem dass der Fehler

    pilight: ERROR. No handshake with pilight-daemon. Received: >>><< pilight anzusteuern.
    Konfig des Schalters sollte passen, ist in pilight als

    “protocol”: [ "kaku_switch" ],
    “id”: [{
    "id": 7464450,
    "unit": 0
    }],
    definiert und in FHEM als

    define Tageslicht pilight kaku_switch
    attr Tageslicht id 0
    attr Tageslicht unitcode 7464450

    aufgenommen.
    Irgend jemand eine Idee? (Habe überall die neusten Versionen an SW)

    Gruess, Marcel

    1. Hi,

      schau dir meine Doku mal an:

      define Weihnachtsbaum pilight kaku_switch
      attr Weihnachtsbaum housecode 12323578
      attr Weihnachtsbaum unitcode 0

      einen “ID” Parameter gibt es nicht, du müsstest den housecode nehmen. Zusätzlich sieht es noch danach aus, als hättest du housecode und unitcode vertauscht (unitcode bewegt sich meist im einstelligen Bereich).

  22. Hi,

    cooles Modul. Geht das auch für receive? Ich habe eine Wetterstation von TFA, die laut pilight unterstützt wird. Zwar habe ich aktuell die Yahoo Wettervorhersage eingebunden, aber die aktuellen Daten meiner Wetterstation in FHEM anzuzeigen wäre super. Könnte dann z.B. im Winter meinen Wecker steuern, je nachdem ob ich Schnee räumen muß, oder auch nicht.

    VG

    Christian

  23. Hi,

    das Modul ist echt spitze. Wirst Du es in Punkto receive weiterentwickeln? Hast Du eine Idee, wie ich die Daten meiner Wetterstation, die in pilight gervorragend funktioniert in FHEM ziehen kann?

    VG

    Christian

    1. Hallo,

      vielen Dank!
      Ich denke, das könnte klappen, aber mangels geeigneter Hardware bin ich das Thema noch nicht angegangen. Wenn mir jemand sowas zur Verfügung stellen würde, könnte ich mal prüfen, was sich machen lässt.

      VG
      Andreas

      1. Das fände ich auch äußerst interessant. Nutze das Plugin momentan für meine Intertechno Steckdose und Intertechno Schaltempfänger (an den ich 3 Lampen angeschlossen habe), für letzteren habe ich noch herkömmliche Funkschalter, die ich benutze. Da wäre es sehr interessant wenn man simultan den Pilight-Receive Service laufen lassen könnte, welcher dann erkennt wenn der entsprechende Befehl von der Fernbedienung oder dem Lichtschalter kam und den Status des angesteuerten Geräts ändert. Vielen Dank für dieses wunderbare Plugin,
        Gruß Daniel

Leave a Reply

Your email address will not be published. Required fields are marked *

You may use these HTML tags and attributes: <a href="" title=""> <abbr title=""> <acronym title=""> <b> <blockquote cite=""> <cite> <code> <del datetime=""> <em> <i> <q cite=""> <strike> <strong>