PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung: Unterschied zwischen den Versionen

Aus FHEMWiki
Zeile 94: Zeile 94:
Eine auf notify und einer Routine in 99_myUtil.pm basierende variante ist in diesem [http://forum.fhem.de/index.php/topic,42080.msg342781.html#msg342781 Thread] beschrieben:
Eine auf notify und einer Routine in 99_myUtil.pm basierende variante ist in diesem [http://forum.fhem.de/index.php/topic,42080.msg342781.html#msg342781 Thread] beschrieben:


   define PCA301.ntfy notify .*.(on|off|set-on|set-off) {if("$TYPE" eq 'PCA301') {PCA301_check("$NAME","$EVENT")}}
   define PCA301.ntfy notify .*.(on|off|set-on|set-off) {if($TYPE eq 'PCA301') {PCA301_check($NAME,$EVENT)}}


<pre>sub PCA301_check($$){
<pre>sub PCA301_check($$){
Zeile 100: Zeile 100:
    
    
   #Reading warte auf acknowledge setzen
   #Reading warte auf acknowledge setzen
   if (("$Event" eq "set-on") or ("$Event" eq "set-off"))  {
   if (($Event eq "set-on") or ($Event eq "set-off"))  {
     readingsSingleUpdate($defs{$Name}, "waitforACK", "$Event",1);
     readingsSingleUpdate($defs{$Name}, "waitforACK", $Event,1);
     Log 1, ("PCA301_check: Schaltsignal $Event zu $Name gesendet");
     Log 1, ("PCA301_check: Schaltsignal $Event zu $Name gesendet");
   }  
   }  
    
    
   #Rückmeldung Kontrollieren
   #Rückmeldung Kontrollieren
   if ("$Event" eq "on") {
   if ($Event eq "on") {
     if (ReadingsVal("$Name", 'waitforACK', '') eq "set-on") {
     if (ReadingsVal($Name, 'waitforACK', '') eq "set-on") {
       readingsSingleUpdate($defs{$Name}, "waitforACK", "ACK:on",1);
       readingsSingleUpdate($defs{$Name}, "waitforACK", "ACK:on",1);
       Log 1, ("PCA301_check: Rückmeldung $Event von $Name erhalten");
       Log 1, ("PCA301_check: Rückmeldung $Event von $Name erhalten");
    
    
     } elsif (ReadingsVal("$Name", 'waitforACK', '') eq "set-off") {
     } elsif (ReadingsVal($Name, 'waitforACK', '') eq "set-off") {
       fhem ("sleep 1;set $Name off");
       fhem ("sleep 1;set $Name off");
       Log 1, ("PCA301_check: Falsche Rückmeldung $Event von $Name erhalten");
       Log 1, ("PCA301_check: Falsche Rückmeldung $Event von $Name erhalten");
     }
     }
    
    
   } elsif ("$Event" eq "off") {
   } elsif ($Event eq "off") {
     if (ReadingsVal("$Name", 'waitforACK', '') eq "set-off") {
     if (ReadingsVal("$Name", 'waitforACK', '') eq "set-off") {
       readingsSingleUpdate($defs{$Name}, "waitforACK", "ACK:off",1);
       readingsSingleUpdate($defs{$Name}, "waitforACK", "ACK:off",1);
       Log 1, ("PCA301_check: Rückmeldung $Event von $Name erhalten");
       Log 1, ("PCA301_check: Rückmeldung $Event von $Name erhalten");
    
    
     } elsif (ReadingsVal("$Name", 'waitforACK', '') eq "set-on") {
     } elsif (ReadingsVal($Name, 'waitforACK', '') eq "set-on") {
     fhem ("sleep 1;set $Name on");
     fhem ("sleep 1;set $Name on");
     Log 1, ("PCA301_check: Falsche Rückmeldung $Event von $Name erhalten");
     Log 1, ("PCA301_check: Falsche Rückmeldung $Event von $Name erhalten");

Version vom 24. November 2015, 21:42 Uhr

PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung
PCA301 Funkschaltsteckdose
Allgemein
Protokoll PCA
Typ Sender, Empfänger, Sensor
Kategorie PCA
Technische Details
Kommunikation 868 MHz
Kanäle 1
Betriebsspannung 230 V~
Leistungsaufnahme Eigenverbrauch ca. 0,4 W
Versorgung Netz
Abmessungen 120*62*36(72) mm
Sonstiges
Modulname 36_PCA301.pm
Ersteller Andre / justme1968
Hersteller ELV / eQ-3


Die PCA301 ist eine über 868,40 MHz per Funk kommunizierende Schaltsteckdose (Zwischenstecker), die gleichzeitig auch den Energieverbrauch eines angeschlossenen Verbrauchers ermittelt und sendet.

Es gibt eine zu diesem System passende Anzeige- und Bedieneinheit (PSA301), mit der bis zu acht der PCA301 Steckdosen geschaltet und deren gemessene Energieverbrauchswerte angezeigt werden können.

Features

  • Schalten über Funk (PSA301 oder Fhem)
  • Schalten über Taste am Gerät
  • Messen des Energieverbrauchs und Übertragung der gemessenen Werte
  • Die Anzeigeeinheit kann bis zu acht Schaltsteckdosen gleichzeitig verwalten

Hinweise zum Betrieb mit Fhem

Die PCA301 Unterstützung in Fhem wird über JeeLink als Interface abgewickelt.

PCA301
Zweck / Funktion
Modul zur Unterstützung der PCA301 Funkschaltsteckdose mit Energieverbrauchsmessung
Allgemein
Typ Gerätemodul
Details
Dokumentation EN / DE
Modulname 36_PCA301.pm
Ersteller justme1968
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref!


Zum Betrieb mit FHEM ist die PCA eigene Anzeigeeinheit nicht nötig, kann aber gleichzeitig genutzt werden. Dabei ist jedoch zu beachten, dass die Anzeigeeinheit auch aktiv mit den Schaltsteckdosen kommuniziert und z. B. in regelmäßigen Abständen die kumulierten Verbrauchswerte zurücksetzt.

Die Beschränkung (der PSA301) auf den Betrieb von bis zu acht Schaltsteckdosen gleichzeitig gilt unter Fhem nicht. Das Fhem Modul kann eine größere Anzahl PCA301 gleichzeitig verwalten.

Definition in fhem.cfg

Das Gerät wird definiert mit

define <name> PCA301 <addr> <channel>

Bei aktiviertem "autocreate" werden die erforderlichen Definitionen von Fhem beim Erkennen eines entsprechenden Geräts automatisch angelegt.

Bekannte Probleme

Verhalten nach Stromausfall

X mark.svgEin (natürlich mit Verlust der Gewährleistung verbundener) Umbau zum reinen Energieverbrauchsmesser durch Überbrückung des Relais ist im Forum beschrieben.
Nachbau - wie üblich - auf eigene Gefahr.

Nach einem Stromausfall (bzw. direkt nach dem Einstecken in eine Steckdose) befindet sich der PCA301 im Zustand "Aus". Je nach Anwendungssituation (z. B. Einsatz als Verbrauchsmessgerät bei einem Kühlschrank) könnte das unerwünschte Auswirkungen haben. Um dem entgegenwirken zu können, gibt es für dieses Device die Möglichkeit mit

attr <name> forceOn 1

den Status "On" zu erzwingen. Fhem versucht dann, das Gerät einzuschalten, sobald ein Zustand oder Schaltvorgang "Off" erkannt wird. Das setzt natürlich ein laufendes Fhem-System voraus.

Pairen der zweiten und weiterer Steckdosen

Werden weitere Steckdosen durch autocreate angelegt, stimmt unter Umständen die Kanalnummer nicht und die Steckdose ist von Fhem aus nicht schaltbar. In diesem Fall sollte das Gerät gelöscht werden (mit dem Befehl

delete PCA301_xxxxxx

einzugeben im Befehlsfenster im Webinterface). Nach der erneuten automatischen Erkennung sollte das Gerät dann funktionieren.

Die Ursache für Unstimmigkeiten bei der Kanalzuornung sind in der Regel Dosen, die zuerst an fhem und dann an der Displayeinheit angelernt werden. Die nächste Version des fhem moduls wird automatisch geänderte Kanalnummern lernen und im Device aktualisieren. Das Problem sollte dann nicht mehr auftreten.

Häufiges Polling mit PCA Sketch pcaSerial10.0h

Mit Version 10.0h des pcaSerial Sketches wurden die definierten Geräte fälschlicherweise im Abstand von drei Sekunden gepollt. Dieses Problem wurde mit Version 10.0i behoben.

Nach Aufspielen der Version 10.0i auf den JeeLink müssen die folgenden Befehle abgesetzt werden (Eingabe in das Fhem-Befehlsfeld unter der Annahme, dass der JeeLink mit dem Namen myJeeLink definiert wurde):

set myJeeLink raw 0c
set myJeeLink raw 2c

um die Konfiguration im EEPROM des JeeLink neu zu füllen.

"Leerlaufanzeige" zwischen 20W und 35W

PCA301 der Charge, die ca. Anfang November 2013 ausgeliefert wurde, zeigen teilweise im Leerlauf (d.h. eingeschaltet aber ohne angeschlossenen oder eingeschalteten Verbraucher) eine konstante Leistungsaufnahe von 20 bis 35 Watt an. Exemplare mit dieser Fehlfunktion sind zu reklamieren und an der Lieferanten zurückzugeben.

Auch die Ende Januar 2014 ausgelieferte Charge hat offensichtlich eine Fehlerquote von bis zu 50%. ELV hat mittlerweile darauf reagiert und folgende Information herausgegeben:

Es ist korrekt, dass der Artikel aktuell nicht verfügbar ist. Es gab bei einigen Steckdosen eine fehlerhafte Anzeige im Leerlauf. Dieses Verhalten wird aktuell mit dem Hersteller geklärt und der Lagerbestand ist für diese Zeit gesperrt. Die Steckdosen werden jedoch nach Klärung dieses Sachverhalts wieder im ELV Shop angeboten. (ELV)

Löschen von PCA301 Geräten erfordert Nacharbeiten

Zumindest derzeit (d.h. 02/2014 mit Version 10.0i des JeeLink Sketches) müssen nach dem Löschen von nicht mehr erwünschten PCA301 Geräten die beiden Befehle

set myJeeLink raw 0c
set myJeeLink raw 2c

abgesetzt werden. Anderenfalls werden die Steckdosen von der autocreate Funktion bei jedem Fhem-Neustart oder dem Neueinlesen der Konfiguration wieder angelegt.

Empfangsfrequenz korrigieren

Siehe PCA301 Sketch.

Schalten bei Empfangsproblemem erzwingen

Es gibt verschiedene Möglichkeiten das Schalten auch bei Empfangsproblemen zu erzwingen. Eine Watchdog basierte aus diesem Thread:

 define watchOn watchdog <pca301>:set-on 00:00:02 <pca301>:on set <pca301> on; trigger watchOn .
 define watchOff watchdog <pca301>:set-off 00:00:02 <pca301>:off set <pca301> off; trigger watchOff .

Damit wird zwei Sekunden nach dem ersten Fehlversuch erneut versucht zu schalten. wenn man im watchdog die Reihenfolge von set und trigger vertauscht wird so lange versucht zu schalten bis es erfolgreich war. Die watchdogs müssen jeweils für jede Dose angelegt werden.

Eine auf notify und einer Routine in 99_myUtil.pm basierende variante ist in diesem Thread beschrieben:

 define PCA301.ntfy notify .*.(on|off|set-on|set-off) {if($TYPE eq 'PCA301') {PCA301_check($NAME,$EVENT)}}
sub PCA301_check($$){
  my ($Name,$Event) = @_;
   
  #Reading warte auf acknowledge setzen
  if (($Event eq "set-on") or ($Event eq "set-off"))  {
    readingsSingleUpdate($defs{$Name}, "waitforACK", $Event,1);
    Log 1, ("PCA301_check: Schaltsignal $Event zu $Name gesendet");
  } 
   
  #Rückmeldung Kontrollieren
  if ($Event eq "on") {
    if (ReadingsVal($Name, 'waitforACK', '') eq "set-on") {
      readingsSingleUpdate($defs{$Name}, "waitforACK", "ACK:on",1);
      Log 1, ("PCA301_check: Rückmeldung $Event von $Name erhalten");
   
    } elsif (ReadingsVal($Name, 'waitforACK', '') eq "set-off") {
      fhem ("sleep 1;set $Name off");
      Log 1, ("PCA301_check: Falsche Rückmeldung $Event von $Name erhalten");
    }
   
  } elsif ($Event eq "off") {
    if (ReadingsVal("$Name", 'waitforACK', '') eq "set-off") {
      readingsSingleUpdate($defs{$Name}, "waitforACK", "ACK:off",1);
      Log 1, ("PCA301_check: Rückmeldung $Event von $Name erhalten");
   
    } elsif (ReadingsVal($Name, 'waitforACK', '') eq "set-on") {
     fhem ("sleep 1;set $Name on");
     Log 1, ("PCA301_check: Falsche Rückmeldung $Event von $Name erhalten");
   
    }
   
  }
}  

Links

  • Bedienungsanleitung der Funkschaltsteckdose (PDF [1])
  • Bedienungsanleitung (Steckdose und Bedien-/Anzeigeeinheit)
  • Blog zum Thema JeeLink zur Anbindung von PCA301 und von Lacrosse Temperatursensoren an Fhem
  • JeeLink / PCA301 - Analyse des Funkprotokolls; Anfänge der Entstehung der PCA301 Unterstützung in Fhem.