JeeLink Clone – Funksteckdose PCA301 mit FHEM steuern

Ein interessanter Punkt wenn es um Hausautomation geht ist das Schalten unterschiedlicher elektrischer Geräte. Anstatt sich direkt „smarte“ Geräte zu kaufen, reicht es bei den meisten Geräten aus diese mit einer schaltbaren Funksteckdose auszustatten. Hier kommen die PCA301 Steckdosen von ELV zum Einsatz. Diese lassen sich problemlos in FHEM einbinden. In diesem Artikel möchte ich euch erklären, was ihr dafür benötigt und wie ihr eure FHEM-Installation entsprechend konfiguriert.PCA301 Steckdose

Hardware

Um die Steckdosen schalten zu können wird ein Sender benötigt. In unserem Fall bauen wir uns den natürlich selber. Alles was man dazu benötigt ist ein Arduino und ein Transceiver, der die digitalen Signale an die Steckdosen sendet:

Wichtig ist hierbei die Kombination von Funkmodul und Raspberry. Das RFM12B-Modul arbeitet mit 3,3V und benötigt somit auch eine 3,3V Versorgungsspannung. Es liegt also nahe auch einen 3,3V-Arduino zu verwenden. Das Funkmodul wird wie folgt mit dem Arduino verbunden:

Hardware JeeLink Clone PCA301

ArduinoFunkmodul RFM12B
D2IRQ
D10SEL
D11SDI
D12SDO
D13SCK
GNDGND
3V3VDD

Es gibt auch Arduinos mit 5V die auch einen 3,3V Anschluss bereitstellen. Aber ACHTUNG: Die digitalen Pins arbeiten dann auch mit 5V und würden das Funkmodul zerstören. Hier ist es notwendig auf den Leitungen D10, D11 und D13  mit Spannungsteilern zu Arbeiten:

Spannungsteiler

Ein weiterer wichtiger Punkt ist die Antenne. Die Steckdosen kommunizieren über die Frequenz 868,4 Mhz. Die Antenne braucht also eine Länge von 82,2mm. Dazu einfach ein Draht auf diese Länge zurecht schneiden und an den entsprechenden PIN des Funkmoduls anlöten (siehe Bild oben).

Wenn man etwa geschickt mit dem Lötkolben umgehen kann, kann man versuchen das Funkmodul direkt auf den Arduino zu setzen und alles mit einem Schrumpfschlauch umhüllen.

jeelinkClone

Software

Nach dem die Hardware aufgebaut ist, machen wir uns an die Software. Dazu muss die Arduino Software installiert werden. Nach dem man den Arduino mit einem USB-Kabell an den PC angeschlossen hat wählt man unter „Werkzeuge / Boards“ seinen Arduino, in diesem fall den Arduino Nano. Dann noch unter „Werkzeug / Port“ den passenden Port auswählen und schon kann man mit dem Programmieren des Arduinos beginnen.

Sollte es keinen Port zur Auswahl geben, fehlen noch die Passenden Treiber. Diese können einfach über die automatische Treiber-Suche beim Geräte-Manager installiert werden.

Zum Flashen des Arduinos laden wir uns erstmal den passenden Sketch runter. Diesen erhält man auf sourceforge. Für die Steckdosen ist es der „36_PCA301-pcaSerial.zip„. Nach dem Entpacken einfach über die Arduino-Software öffnen und auf den Arduino laden.

PCA301 sketch

Anschließen an den Raspberry

Nun können wir den Arduino an unseren Raspberry anschließen und testen ob er erkannt wurde:

Wurde er korrekt erkannt sollte man in etwa so eine Ausgabe erhalten:

PCA301 jeelink clone

Wie man sieht, wurde er an USB1 erkannt. Dies sollten wir uns für die Einrichtung in FHEM merken.

Einrichten unter FHEM

Unter FHEM lässt sich unser JeeLink Clone nun wie folgt einrichten:

Hier darauf achten, dass man den oben erkannten Anschluss verwendet. Der Name „JeeLinkClone“ kann natürlich angepasst werden.

JeeLink FHEM

Steckt man nun die Steckdosen in die Steckdose, werden diese direkt bei FHEM mit dem Namen „PCA301_xxxx“ angelegt. Sollte dies nicht der Fall sein, einfach „autocreate“ aktivieren.

Am besten das Device direkt umbenennen um es zuordnen zu können.

In meinem Fall schaltet die Steckdose meine Papierlampe im Wohnzimmer.

PCA301 FHEM

Wie man erkennt, bekommt man von der Steckdose einige Readings zur Verfügung gestellt. Zu einem „state“ welches den Schaltzustand der Steckdose repräsentiert (on/off). Der Vorteil der PCA301-Steckdosen ist der, dass er uns auch den Verbrauch des angeschlossenen Gerätes mitteilt. Zu einem das Reading „power“, welches die aktuelle Leistung in Watt angibt und das Reading „consumption“, welches den Stromverbauch in kW/h angibt.

Hier ergibt sich bereits ein kleines Problem der Steckdosen. Bei einem Stromausfall kann es vorkommen, dass das Reading „consumption“ auf 0 gesetzt wird. Das ist natürlich schlecht, wenn man den Verbrauch über einen längeren Zeitraum untersuchen will. FHEM hat dazu eine passende Lösung. Ein userReadings mit der Option monotonic.

Hiermit wird dem Reading „consumptionTotal“ der Wert des Readings „consumption“ immer dazu addiert. Sollte also nach einem Stromausfall das Reading „consumption“ auf 0 fallen ist dies nun kein Problem mehr. „consumptionTotal“ zählt weiter fleißig hoch und addiert jede Änderung von „cunsumption“ dazu.

Die in meinem Fall angeschlossene Lampe lässt sich nun ganz einfach über FHEM an und ausschalten.

Papierlampe

Standartmäßig ist als Schaltsymbol eine Glühlampe eingestellt. Über das Attribut „devStateIcon“ lässt sich dies Ändern. Zum Beispiel eine Steckdose:

TV devStateIcon

Um auch die Leistungsaufnahme der Geräte komfortabel anzeigen zu lassen, habe ich ein Dummy erstellt, der mit einem at-Befehl mit den Werten gefüttert wird.

Den at-Befehl habe ich wie folgt definiert:

Über den DEF-Editor habe ich dann das a-Device entsprechend angepasst:

Wer will kann das gleiche natürlich noch mit dem Verbrauch (consumptionTotal) machen. Hier würde ich jedoch den Aktualisierungs-Intervall auf 3 Minuten stellen, da sich dieser Wert ja nicht alle 5 Sekunden ändern wird.

Zum Schluss noch das stateFormat ändern

und alle Geräte der Gruppe „Papierlampe“ hinzufügen und man erhält für das angeschlossene Gerät eine hübsche Anzeige aller wichtigen Werten:

Papierlampe PCA301

TV PCA301

INFO: Wer sich gerne ein Balkendiagramm seiner Stromkosten erstellen möchte, der kann sich gerne meinen Blog-Beitrag dazu anschauen.

3 Kommentare zu “JeeLink Clone – Funksteckdose PCA301 mit FHEM steuern

  1. Hallo,

    Leider gibt es zu der Funksteckdose keine Ferbedienung, Handsender oder ähnliches.

    Dann wäre es eine Alternative zu den „teuren“ Funksteckdosen von Homematic.

    Kennt vielleicht jemand eine Bastellösung für eine Handfernbedienung der PCA301 Funksteckdosen.

  2. Hallo,

    leider kommt beim absetzten des Befehls
    define atPapierlampePower at +*00:00:05 {my $d=(ReadingsVal(„WZ_Papierlampe“,„power“,0));fhem(„set WZ_Papierlampe_Power $d“);}

    immer eine Fehlermeldung bezüglich des set Befehls!
    Kann es sein das hier was fehlt oder faslch gesetzt ist?

    Gruß
    Fred

    • Hallo Fred,
      bei mir kommt der Fehler auch, wenn ich den Befehl über die Befehlszeile eingebe. Habe damals das at-Device über den DEF-Editor erstellt, da kam keine Fehlermeldung und das at-Device hat problemlos funktioniert.
      Ich habe erst das atDevice wie folgt definiert:
      define atPapierlampePower at +*00:00:05 a
      und dann über den DEF-Editor das Device entsprechend angepasst. Warum über die Befehlszeile der Fehler kommt, kann ich leider nicht sagen. Auch wenn man es über "setreading WZ_Papierlampe_Power state $d" macht, kommt der Fehler. Aber wie gesagt, wenn man es über den DEF-Editor macht, dann klappt es.

      Gruß Daniel

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert.

Hinweis: Das Betreiben dieser Homepage kostet einiges an Zeit und Geld. Ich bitte euch deswegen von eigenen Affiliate-Links abzusehen. Vielen Dank.

*