Hallo
Ich möchte hiermit mein kWh-Zähler vorstellen.
Er rechnet die kWhs aus dem Aktor-Strom.
Jedesmal wenn ein neuer Stromwert auf der GA gesendet wird
wird eine neue Rechnung durchgeführt,
gerechnet wird nach dieser Formel
kWh = I(mA)/1000*230V* cos_phi * Delta_Zeit s/3600 * 1/1000
der Zähler wird in der "conf.d/kWh_Zaehler.conf" konfiguriert.
Im Plugin braucht nichts eingstellt werden.
Hier das Plugin "kWh-Zaehler.pl"
viel Spaß
Gruß NetFritz
Ich möchte hiermit mein kWh-Zähler vorstellen.
Er rechnet die kWhs aus dem Aktor-Strom.
Jedesmal wenn ein neuer Stromwert auf der GA gesendet wird
wird eine neue Rechnung durchgeführt,
gerechnet wird nach dieser Formel
kWh = I(mA)/1000*230V* cos_phi * Delta_Zeit s/3600 * 1/1000
der Zähler wird in der "conf.d/kWh_Zaehler.conf" konfiguriert.
Code:
#!/usr/bin/perl # # kWh_Zaehler.pl - Konfiguration # # zaehler_F = frei waehlbar F hier Aktor Kanal # name => 'trockn' = Trockner wir im Plugin fuers abspeichern gebraucht # I_GA=>'1/4/20', = GA vom Aktor die den Stromwert liefert # kWh_GA=>'15/0/20' = GA die der kWh Wert auf den Bus schreibt # kWh_DPT=>'9'} = DPT der kWh GA %zaehler=( zaehler_F =>{name => 'trockn', I_GA=>'1/4/20', kWh_GA=>'15/0/20', kWh_DPT=>'9'}, zaehler_G =>{name => 'waschm', I_GA=>'1/4/15', kWh_GA=>'15/0/18', kWh_DPT=>'9'}, zaehler_H =>{name => 'spueler', I_GA=>'1/4/16', kWh_GA=>'15/0/19', kWh_DPT=>'9'}, );
Hier das Plugin "kWh-Zaehler.pl"
Code:
# Errechnet die kWhs aus dem Aktor-Strom. # Jedesmal wenn ein neuer Stromwert auf der GA gesendet wird # wird eine neue Rechnung durchgeführt, # gerechnet wird nach dieser Formel # kWh = I(mA)/1000*230V* cos_phi * Delta_Zeit s/3600 * 1/1000 # by NetFritz 07/2012 # my $cos_phi = 0.95; my $Volt = 230; my @Zaehler_config; $plugin_info{$plugname.'_cycle'} = 0; # Konfigurationsfile einlesen my $conf=$plugname; $conf=~s/\.pl$/.conf/; $conf="/etc/wiregate/plugin/generic/conf.d/$conf"; my %zaehler=(); my $err=read_from_config(); return $err if $err; #------------------------------------------------------ # Alle I_GAs aus der config abonnieren for my $r (grep ref($zaehler{$_}), keys %zaehler) { $plugin_subscribe{$zaehler{$r}{I_GA}}{$plugname}=1; } # BUS ueberwachen if ($msg{'apci'} eq "A_GroupValue_Write") { # A_GroupValue_Write Telegramm eingetroffen for my $r (grep ref($zaehler{$_}), keys %zaehler){ # Ueberwachte GAs durchlaufen if ($msg{'dst'} eq $zaehler{$r}{I_GA}){ # GAs vergleichen my $time_delta = time() - $plugin_info{$plugname.$zaehler{$r}{name} . '_time'}; my $I = $plugin_info{$plugname.$zaehler{$r}{name} . '_I'}; my $kWh = $plugin_info{$plugname.$zaehler{$r}{name} . '_kWh'} + (($I/1000) * $Volt * $cos_phi * ($time_delta/3600)); $plugin_info{$plugname. $zaehler{$r}{name} . '_I'} = $msg{'value'}/1000; # I mA ablegen $plugin_info{$plugname. $zaehler{$r}{name} . '_time'} = time(); # Timestamp ablegen $plugin_info{$plugname. $zaehler{$r}{name} . '_kWh'} = $kWh; # kWh ablegen knx_write($zaehler{$r}{kWh_GA},$kWh*1000,$zaehler{$r}{kWh_DPT}); return($zaehler{$r}{kWh_GA} . "=" . $kWh); } } }else{ for my $r (grep ref($zaehler{$_}), keys %zaehler){ # Ueberwachte GAs durchlaufen # knx_write($zaehler{$r}{kWh_GA},$plugin_info{$plugname.$zaehler{$r}{name} . '_kWh'},$zaehler{$r}{kWh_DPT}); } } # return; # ------------- config einlesen ---------------------- sub read_from_config { open CONFIG, "<$conf" || return "no config found"; my @lines = <CONFIG>; close CONFIG; eval("@lines"); return "config error" if $@; }
Gruß NetFritz
Kommentar