Einbindung der kostengünstigen Funkschaltsteckdose PCA 301 mit Energiemessung

Begonnen von Emil, 13 März 2013, 11:22:35

Vorheriges Thema - Nächstes Thema

pnewman

Zitat von: jnewton957 am 01 Januar 2020, 18:02:35
Könnte bitte jemand mal seine funktionierende  cfg und 99.myutils posten. Ich würde das dann gerne für mich und meinen 5 PCA301 anpassen.

Auch auf die Gefahr auf einen alten Post zu antworten.

Hier meine 99_myUtils.pm:

##### PCA301 Tag,Monat,Jahr ######
#
sub setReading($$$){
  my $device       = shift;
  my $readingsName = shift;
  my $readingsWert = shift;

  readingsSingleUpdate($main::defs{$device}, $readingsName, $readingsWert, 1);
}

sub resetPCA301($){
  my $name = shift;
  my $power;

  my ($sec,$min,$hour,$mday,$mon,$year,$wday,$yday,$isdst) = localtime(time);

  if( $wday == 1 ){
    $power = ReadingsVal($name,"consumptionWeek","0");
    setReading($name,"consumptionLastWeek",$power);
    setReading($name,"consumptionWeek","0");
  }
  if( $mday == 1 ){
    $power = ReadingsVal($name,"consumptionMonth","0");
    setReading($name,"consumptionLastMonth",$power);
    setReading($name,"consumptionMonth","0");
  }
  if( $yday == 1 ){
    $power = ReadingsVal($name,"consumptionYear","0");
    setReading($name,"consumptionLastYear",$power);
    setReading($name,"consumptionYear","0");
  }

  $power = ReadingsVal($name,"consumption","0");
  setReading($name,"consumptionYesterday",$power);
  fhem("set $name reset");
}

sub sysResetPCA301(){
  # SD_GarageGefriertruhe
  resetPCA301("SD_GarageGefriertruhe");
 
  # SD_GarageKuehlschrank
  resetPCA301("SD_GarageKuehlschrank");
 
  # SD_HWR_Trockner
  resetPCA301("SD_HWR_Trockner");
 
  # SD_HWR_Waschmaschine
  resetPCA301("SD_HWR_Waschmaschine");
 
  # SD_HeizungZirkulationspumpe
  resetPCA301("SD_HeizungZirkulationspumpe");
 
  # SD_Hyundai_Ioniq
  resetPCA301("SD_Hyundai_Ioniq");
 
  # SD_KuecheGeschirrspueler
  resetPCA301("SD_KuecheGeschirrspueler");
 
  # SD_KuecheKuehlschrank
  resetPCA301("SD_KuecheKuehlschrank");
 
  # SD_WZ_Angel
  resetPCA301("SD_WZ_Angel");
 
  # SD_Wasserbett_Amelie
  resetPCA301("SD_Wasserbett_Amelie");
 
  # SD_Wasserbett_Schlafzimmer
  resetPCA301("SD_Wasserbett_Schlafzimmer");
 
  # SD_Wasserbett_Zoe
  resetPCA301("SD_Wasserbett_Zoe");
 
  # SD_WohnMedia
  resetPCA301("SD_WohnMedia");
 
}
#
##### ENDE PCA301 Tag,Monat,Jahr ######
#
##### PCA301 Euro Berechnung #####
#
sub euroBerechnen($){
  my $consumption = shift;

  my $euro = 0;
  my $kwhPreis = 0.300;

  $euro = $consumption * $kwhPreis;

  return (sprintf("%.2f",$euro));
}
#
##### ENDE PCA301 Euro Berechnung #####
#
######## Watchdog PCA301 ##########################################
#
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");
    }   
  }
}
#
######## Ende Watchdog PCA301 ##########################################
#


Hier einer meiner RAW:
defmod SD_GarageGefriertruhe PCA301 0690CA 0B
attr SD_GarageGefriertruhe IODev JeelinkPCA301
attr SD_GarageGefriertruhe devStateIcon on:message_socket_enabled@green:off off:message_socket_off@red:on
attr SD_GarageGefriertruhe forceOn 1
attr SD_GarageGefriertruhe group Steckdosen
attr SD_GarageGefriertruhe icon on
attr SD_GarageGefriertruhe room Garage,PCA301
attr SD_GarageGefriertruhe userReadings consumptionTotal:consumption.* monotonic {ReadingsVal($name,'consumption',0)}, \
consumptionWeek:consumption.* monotonic {ReadingsVal($name,'consumption',0)}, \
consumptionMonth:consumption.* monotonic {ReadingsVal($name,'consumption',0)}, \
consumptionYear:consumption.* monotonic {ReadingsVal($name,'consumption',0)}, \
consumptionEuro {euroBerechnen(ReadingsVal($name,"consumption","?"))}, \
consumptionYearEuro {euroBerechnen(ReadingsVal($name,"consumptionYear","?"))}
attr SD_GarageGefriertruhe webCmd on:toggle:off



Zufällig hatte ich vorhin auch suchen müssen, da ich die myUtils verändert/verschrieben hatte.

Gruß
Ralf
Raspberry Pi3B+ / Nano-Cul 868 - MAX!=Heizung, HM-Lan - Rollo+Licht, JeeLink-Clone 868 - LaCrosse, JeeLink-Clone 868 - PCA301, CUL 434 - IT-Steckdosen+Fernbedienung

The Spirit

hi,
hab die tage noch eine PCA301 gefunden und wollte diese in FHEM anlernen.
Bisher habe ich immer
set jeelink JeeLinkPairForSec 180gemacht und danach die PCA301 in die Steckdose gesteckt.
Kurz danach wurde mir die neue PCA301 in FHEM angezeigt.
Diese will jetzt aber nicht in FHEM erscheinen.
Was kann ich noch probierenn?
Danke
THZ 304 Eco Baujahr 2015

JoWiemann

Zitat von: The Spirit am 28 Februar 2024, 14:12:00hi,
hab die tage noch eine PCA301 gefunden und wollte diese in FHEM anlernen.
Bisher habe ich immer
set jeelink JeeLinkPairForSec 180gemacht und danach die PCA301 in die Steckdose gesteckt.
Kurz danach wurde mir die neue PCA301 in FHEM angezeigt.
Diese will jetzt aber nicht in FHEM erscheinen.
Was kann ich noch probierenn?
Danke

Hallo,

autocreate deaktiviert?

Grüße Jörg
Jörg Wiemann

Slave: RPi B+ mit 512 MB, COC (868 MHz), CUL V3 (433.92MHz SlowRF); FHEMduino, Aktuelles FHEM

Master: CubieTruck; Debian; Aktuelles FHEM