Initiale Version für HArgassner FHEM Modul
git-svn-id: svn://svn.compuextreme.de/Projects/PelletsTank/FHEM_Hargassner@77 8b25ccb4-ac81-0410-8091-8ccfc2efc008
This commit is contained in:
commit
f4f9b87a0f
|
@ -0,0 +1,463 @@
|
|||
# 20_HGNanopk.pm
|
||||
# HGNanopk Device (readings only)
|
||||
#
|
||||
# based on 20_HARGASSNER.pm from:
|
||||
# (c) 2016 Alexander Kneer <alexander.kneer@gmx.de>
|
||||
# 2020 tb. (modify readings)
|
||||
#
|
||||
# 20_HGNanopk.pm
|
||||
|
||||
package main;
|
||||
|
||||
use Net::Telnet;
|
||||
use List::Util 'first';
|
||||
use strict;
|
||||
use warnings;
|
||||
use HttpUtils;
|
||||
use Unicode::String;
|
||||
|
||||
sub HGNanopk_UpdateValue($$$);
|
||||
|
||||
my %gets = (
|
||||
"Fehlerdaten" => "Fehlerdaten",
|
||||
);
|
||||
|
||||
#################################################################################
|
||||
sub HGNanopk_Initialize($) {
|
||||
#################################################################################
|
||||
|
||||
my ($hash) = @_;
|
||||
|
||||
# Normal devices
|
||||
$hash->{UndefFn} = "HGNanopk_Undef";
|
||||
$hash->{DefFn} = "HGNanopk_Define";
|
||||
$hash->{AttrFn} = "HGNanopk_Attr";
|
||||
$hash->{NOTIFYDEV} = "global";
|
||||
# $hash->{AttrList} = "dummy:1,0 ";
|
||||
# $hash->{AttrList} = $readingFnAttributes;
|
||||
# $hash->{GetFn} = "HGNanopk_Get";
|
||||
$hash->{DbLog_splitFn} = "HGNanopk_DbLog_split";
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
sub HGNanopk_Define($$) {
|
||||
#################################################################################
|
||||
|
||||
my ($hash, $def) = @_;
|
||||
my @a = split("[ \t]+", $def);
|
||||
|
||||
if(@a != 4) {
|
||||
return "wrong syntax: define <name> HGNanopk <hostname> <interval>";
|
||||
}
|
||||
|
||||
my $name= $a[0];
|
||||
my $hostname= $a[2];
|
||||
my $interval= $a[3];
|
||||
|
||||
$hash->{DeviceName} = $name;
|
||||
$hash->{Device} = $hostname;
|
||||
$hash->{STATE} = 'Initialized';
|
||||
$hash->{interval} = $interval;
|
||||
|
||||
|
||||
Log 4,"HGNanopk_Define -> $name at $hostname (Update every $interval seconds)";
|
||||
|
||||
RemoveInternalTimer($hash);
|
||||
InternalTimer(gettimeofday()+$hash->{interval}, "HGNanopk_GetUpdate", $hash, 0);
|
||||
return undef;
|
||||
}
|
||||
|
||||
#################################################################################
|
||||
sub HGNanopk_Undef($@) {
|
||||
#################################################################################
|
||||
|
||||
my ( $hash, $arg ) = @_;
|
||||
|
||||
RemoveInternalTimer($hash);
|
||||
|
||||
return undef;
|
||||
}
|
||||
|
||||
##################################################################################
|
||||
sub HGNanopk_DbLog_split($$) {
|
||||
#################################################################################
|
||||
|
||||
my ( $event, $device_name ) = @_;
|
||||
my ( $reading, $value, $unit) = split / /, $event;
|
||||
|
||||
$reading =~ s/://;
|
||||
#$reading = substr($reading, 4);
|
||||
|
||||
return ( $reading, $value, $unit );
|
||||
}
|
||||
|
||||
##################################################################################
|
||||
sub HGNanopk_GetUpdate($)
|
||||
#################################################################################
|
||||
{
|
||||
my ($hash) = @_;
|
||||
my $name = $hash->{NAME};
|
||||
|
||||
sub query_bit($$) {
|
||||
my ( $bitarray, $bit ) = @_;
|
||||
$bitarray = hex("0x".$bitarray);
|
||||
return ( ( $bitarray & 2**$bit ) ? 1 : 0);
|
||||
}
|
||||
|
||||
Log3 $name, 4, "HGNanopk ($name) - Get Update";
|
||||
|
||||
my $telnet = Net::Telnet->new(Timeout => 30, Errmode => 'die');
|
||||
if (!$telnet) {
|
||||
Log3 $name, 4, "HGNanopk ($name) - telnet bad";
|
||||
}
|
||||
else
|
||||
{
|
||||
Log3 $name, 4, "HGNanopk ($name) - telnet ok";
|
||||
|
||||
if($telnet->open($hash->{Device}))
|
||||
{
|
||||
|
||||
Log3 $name, 4, "HGNanopk ($name) - connected to pellet oven via telnet";
|
||||
|
||||
my $line1 = $telnet->getline();
|
||||
my $line2 = $telnet->getline();
|
||||
|
||||
$telnet->close;
|
||||
|
||||
Log3 $name, 4, "HGNanopk ($name) - line ($line2)";
|
||||
|
||||
my @array = split(/ /, $line2);
|
||||
|
||||
readingsBeginUpdate($hash);
|
||||
|
||||
if ($array[0] eq "pm") {
|
||||
#will contain the data readed from DAQ00001.translation
|
||||
#First a hash (key = name of DAQ00001.DAQ, Value = Translation from DAQ00001.translation)
|
||||
my %HG_TRANSLATION_HASH;
|
||||
#second a hash (key = reading name, as used in fhem, Value is 0 or 1 for not displayed or displayed)
|
||||
my %HG_ACTIVE_HASH;
|
||||
my %HG_STATUS_CODES;
|
||||
my $translation=1;
|
||||
my $states=1;
|
||||
my @HG_HEADER_ANALOG;
|
||||
my @HG_HEADER_DIGITAL;
|
||||
my $NAME;
|
||||
my @HG_Reading_Names;
|
||||
#my @array;
|
||||
my @databuff;
|
||||
|
||||
sub query_bit($$) {
|
||||
my ( $bitarray, $bit ) = @_;
|
||||
$bitarray = hex("0x" . $bitarray);
|
||||
return ( ( $bitarray & 2**$bit ) ? 1 : 0);
|
||||
}
|
||||
|
||||
if ( -e "DAQ00001.translation" ) {
|
||||
my @filebuffer;
|
||||
|
||||
open(TRANSLATE,'<','DAQ00001.translation') or $translation=0;
|
||||
while(<TRANSLATE>) {
|
||||
push(@filebuffer,$_);
|
||||
}
|
||||
close(TRANSLATE);
|
||||
chomp(@filebuffer);
|
||||
|
||||
foreach(@filebuffer) {
|
||||
my @data=split /;/,$_;
|
||||
$HG_TRANSLATION_HASH{$data[0]} = $data[1];
|
||||
if ( $data[1] ne "" ) {
|
||||
$HG_ACTIVE_HASH{$data[1]} = $data[2];
|
||||
} else {
|
||||
$HG_ACTIVE_HASH{$data[0]} = $data[2];
|
||||
}
|
||||
}
|
||||
} else {
|
||||
$translation=0;
|
||||
}
|
||||
|
||||
if ( -e "DAQ00001.states" ) {
|
||||
open(STATUSCODE,"<","DAQ00001.states" ) or $states=0
|
||||
} else {
|
||||
$states=0;
|
||||
}
|
||||
|
||||
if ( $states eq "1" ) {
|
||||
my @filebuffer;
|
||||
while (<STATUSCODE>) {
|
||||
push(@filebuffer,$_);
|
||||
}
|
||||
close(STATUSCODE);
|
||||
chomp(@filebuffer);
|
||||
|
||||
foreach(@filebuffer) {
|
||||
my @data=split /;/,$_;
|
||||
my @codes=split /,/,$data[1];
|
||||
if ( $HG_TRANSLATION_HASH{$data[0]} ) {
|
||||
$HG_STATUS_CODES{$HG_TRANSLATION_HASH{$data[0]}} = [ @codes ];
|
||||
} else {
|
||||
$HG_STATUS_CODES{$data[0]} = [ @codes ];
|
||||
}
|
||||
}
|
||||
}
|
||||
open(HGDATA,'<','DAQ00001.DAQ') or die "File DAQ00001.DAQ not found in FHEM Root dir";
|
||||
while (<HGDATA>) {
|
||||
push(@databuff,$_);
|
||||
}
|
||||
close(HGDATA);
|
||||
chomp(@databuff);
|
||||
my @data = split /</,$databuff[1];
|
||||
foreach(@data) {
|
||||
$_ = Unicode::String::latin1 ( $_ );
|
||||
my @buffer;
|
||||
if ( $_ =~ /unit/ ) {
|
||||
$_ =~ s/^CHANNEL id=\'//;
|
||||
$_ =~ s/\' name='/;/;
|
||||
$_ =~ s/\' unit='/;/;
|
||||
$_ =~ s/\'\/>//;
|
||||
push(@HG_HEADER_ANALOG,$_);
|
||||
@buffer = split /;/,$_;
|
||||
$buffer[1] =~ s/ /_/g;
|
||||
if ($HG_TRANSLATION_HASH{$buffer[1]}) {
|
||||
push(@HG_Reading_Names,$HG_TRANSLATION_HASH{$buffer[1]})
|
||||
} else {
|
||||
push(@HG_Reading_Names,$buffer[1]);
|
||||
}
|
||||
|
||||
}
|
||||
if ( $_ =~ /bit/ ) {
|
||||
$_ =~ s/^CHANNEL id=\'//;
|
||||
$_ =~ s/\' bit='/;/;
|
||||
$_ =~ s/' name='/;/;
|
||||
$_ =~ s/\'\/>//;
|
||||
push(@HG_HEADER_DIGITAL,$_);
|
||||
@buffer = split /;/,$_;
|
||||
$buffer[2] =~ s/ /_/g;
|
||||
$buffer[2] =~ s/^/BIT-/;
|
||||
if ($HG_TRANSLATION_HASH{$buffer[2]}) {
|
||||
push(@HG_Reading_Names,$HG_TRANSLATION_HASH{$buffer[2]})
|
||||
} else {
|
||||
push(@HG_Reading_Names,$buffer[2]);
|
||||
}
|
||||
}
|
||||
}
|
||||
chomp(@HG_HEADER_ANALOG);
|
||||
chomp(@HG_HEADER_DIGITAL);
|
||||
my @readingList = sort keys %{$hash->{READINGS}};
|
||||
foreach(@readingList) {
|
||||
my $found=0;
|
||||
my $Read=$_;
|
||||
foreach(@HG_Reading_Names) {
|
||||
if ( $Read eq $_ && $HG_ACTIVE_HASH{$_} == 1 ) {
|
||||
$found=1;
|
||||
}
|
||||
}
|
||||
if ( $found eq "0" ) {
|
||||
readingsDelete($hash, $_);
|
||||
print "$hash->{NAME}: Reading $_ deleted\n";
|
||||
}
|
||||
}
|
||||
if ( $translation eq "0" ) {
|
||||
open(TRANSLATE,'>','DAQ00001.translation') or die "could not open new translation file for Hargassner Module\n";
|
||||
foreach(@HG_HEADER_ANALOG) {
|
||||
my @data=split /;/,$_;
|
||||
if ( $data[1] ne "DUMMY" ) {
|
||||
$data[1] =~ s/ /_/g;
|
||||
print(TRANSLATE $data[1] . ";;1\n");
|
||||
}
|
||||
}
|
||||
foreach(@HG_HEADER_DIGITAL) {
|
||||
my @data=split /;/,$_;
|
||||
if ( $data[2] ne "DUMMY" ) {
|
||||
$data[2] =~ s/ /_/g;
|
||||
$data[2] =~ s/^/BIT-/;
|
||||
print(TRANSLATE $data[2] . ";\n");
|
||||
}
|
||||
}
|
||||
close(TRANSLATE);
|
||||
}
|
||||
my $LastID=0;
|
||||
foreach(@HG_HEADER_ANALOG) {
|
||||
my @data = split /;/,$_;
|
||||
if ( $data[1] ne "DUMMY" ) {
|
||||
$data[1] =~ s/ /_/g;
|
||||
if ( $HG_TRANSLATION_HASH{$data[1]} ) {
|
||||
if ( $HG_ACTIVE_HASH{$HG_TRANSLATION_HASH{$data[1]}} == 1 ) {
|
||||
if ( $HG_STATUS_CODES{$HG_TRANSLATION_HASH{$data[1]}}[$array[$data[0]+1]] ) {
|
||||
readingsBulkUpdate($hash, $HG_TRANSLATION_HASH{$data[1]}, $HG_STATUS_CODES{$HG_TRANSLATION_HASH{$data[1]}}[$array[$data[0]+1]].' ') if( ReadingsVal($name, $HG_TRANSLATION_HASH{$data[1]}, '') ne $HG_STATUS_CODES{$HG_TRANSLATION_HASH{$data[1]}}[$array[$data[0]+1]].' ');
|
||||
} else {
|
||||
readingsBulkUpdate($hash, $HG_TRANSLATION_HASH{$data[1]}, $array[$data[0]+1].' ') if( ReadingsVal($name, $HG_TRANSLATION_HASH{$data[1]}, '') ne $array[$data[0]+1].' ');
|
||||
}
|
||||
}
|
||||
} else {
|
||||
if ($HG_ACTIVE_HASH{$data[1]} == 1 ) {
|
||||
if ( $HG_STATUS_CODES{$data[1]}[$array[$data[0]+1]] ) {
|
||||
readingsBulkUpdate($hash, $data[1], $HG_STATUS_CODES{$data[1]}[$array[$data[0]+1]] .' ') if( ReadingsVal($name, $data[1], '') ne $HG_STATUS_CODES{$data[1]}[$array[$data[0]+1]-1].' ');
|
||||
} else {
|
||||
readingsBulkUpdate($hash, $data[1], $array[$data[0]+1].' ') if( ReadingsVal($name, $data[1], '') ne $array[$data[0]+1].' ');
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
$LastID=$data[0];
|
||||
}
|
||||
foreach(@HG_HEADER_DIGITAL) {
|
||||
my @data = split /;/,$_;
|
||||
if ( $data[2] ne "DUMMY" ) {
|
||||
$data[2] =~ s/ /_/g;
|
||||
$data[2] =~ s/^/BIT-/;
|
||||
if ( $HG_TRANSLATION_HASH{$data[2]} ) {
|
||||
if ( $HG_ACTIVE_HASH{$HG_TRANSLATION_HASH{$data[2]}} == 1 ) {
|
||||
readingsBulkUpdate($hash, $HG_TRANSLATION_HASH{$data[2]}, query_bit($array[$data[0]+$LastID+1], $data[1])) if( ReadingsVal($name, $HG_TRANSLATION_HASH{$data[2]}, '') ne query_bit($array[$data[0]+$LastID+1], $data[1]));
|
||||
}
|
||||
} else {
|
||||
if ( $HG_ACTIVE_HASH{$data[2]} == 1 ) {
|
||||
readingsBulkUpdate($hash, $data[2], query_bit($array[$data[0]+$LastID+1], $data[1])) if( ReadingsVal($name, $data[2], '') ne query_bit($array[$data[0]+$LastID+1], $data[1]));
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
readingsEndUpdate($hash, 1);
|
||||
|
||||
$hash->{STATE} = 'Updated';
|
||||
}
|
||||
else
|
||||
{
|
||||
Log3 $name, 4, "HGNanopk ($name) - open telnet failed";
|
||||
$hash->{STATE} = 'Failed';
|
||||
}
|
||||
}
|
||||
RemoveInternalTimer($hash);
|
||||
InternalTimer(gettimeofday()+$hash->{interval}, "HGNanopk_GetUpdate", $hash, 0);
|
||||
}
|
||||
|
||||
|
||||
##################################################################################
|
||||
sub HGNanopk_Get($@) {
|
||||
##################################################################################
|
||||
|
||||
my ($hash, @a) = @_;
|
||||
|
||||
return "\"get HGNanopk\" needs only one parameter" if(@a != 2);
|
||||
return "Unknown argument $a[1], choose one of " . join(" ", sort keys %gets)
|
||||
if(!defined($gets{$a[1]}));
|
||||
|
||||
my ($fn, $arg) = split(" ", $gets{$a[1]});
|
||||
my $v = join(" ", @a);
|
||||
my $name = $hash->{NAME};
|
||||
Log3 $name, 4, "HGNanopk get $v";
|
||||
#HGNanopk_GetParameter($hash, $fn);
|
||||
|
||||
return "";
|
||||
}
|
||||
|
||||
##################################################################################
|
||||
sub HGNanopk_Attr($$$) {
|
||||
##################################################################################
|
||||
|
||||
my ($cmd, $name, $attrName, $attrVal) = @_;
|
||||
|
||||
my $orig = $attrVal;
|
||||
$attrVal = int($attrVal) if($attrName eq "interval");
|
||||
$attrVal = 60 if($attrName eq "interval" && $attrVal < 60 && $attrVal != 0);
|
||||
|
||||
my $hash = $defs{$name};
|
||||
# if( $attrName eq 'disable' ) {
|
||||
# if( $cmd eq "set" && $attrVal ) {
|
||||
# plex_stopTimelineListener($hash);
|
||||
# plex_stopDiscovery($hash);
|
||||
# foreach my $ip ( keys %{$hash->{clients}} ) {
|
||||
# $hash->{clients}{$ip}{online} = 0;
|
||||
# }
|
||||
# } else {
|
||||
# $attr{$name}{$attrName} = 0;
|
||||
# plex_startDiscovery($hash);
|
||||
# plex_startTimelineListener($hash);
|
||||
# }
|
||||
#
|
||||
# } elsif( $attrName eq 'responder' ) {
|
||||
# if( $cmd eq "set" && $attrVal ) {
|
||||
# $attr{$name}{$attrName} = 1;
|
||||
# plex_startDiscovery($hash);
|
||||
#
|
||||
# } else {
|
||||
# $attr{$name}{$attrName} = 0;
|
||||
# plex_startDiscovery($hash);
|
||||
#
|
||||
# }
|
||||
# }
|
||||
|
||||
if( $cmd eq "set" ) {
|
||||
if( $attrVal && $orig ne $attrVal ) {
|
||||
$attr{$name}{$attrName} = $attrVal;
|
||||
return $attrName ." set to ". $attrVal if( $init_done );
|
||||
}
|
||||
}
|
||||
|
||||
return;
|
||||
}
|
||||
|
||||
|
||||
|
||||
#################################################################################
|
||||
1;
|
||||
|
||||
=pod
|
||||
=begin html
|
||||
|
||||
<a name="HGNanopk"></a>
|
||||
<h3>HGNanopk</h3>
|
||||
<ul>
|
||||
This module connects to the Hargassner Pellet Heating.
|
||||
<br /><br />
|
||||
<a name="HGNanopk_define"></a>
|
||||
<b>Define</b>
|
||||
<ul>
|
||||
<code>define <name> HGNanopk <hostname> <interval></code>
|
||||
<br />
|
||||
<br />
|
||||
<hostname> is the name or ip address of the HGNanopk Pellet Heating.
|
||||
<br />
|
||||
<br />
|
||||
<interval> is the interval in seconds between fhem try to get new data from heating. (e.g. 60)
|
||||
<br /><br />
|
||||
<b>installation</b>
|
||||
<br />
|
||||
make sure this is running on a Linux/Unix System, and on the system ist the recode command installed.
|
||||
<br />
|
||||
Insert an SD Card into your Hargassner pellets oven (left Touchdisplay blow the rubber cover)
|
||||
<br />
|
||||
then enable in display setup the storage of logdata, let it run vor a few seconds, disable it
|
||||
<br />
|
||||
and remove the SD Card. Insert the Card into your PC, and copy the file named DAQ00001.DAQ from this card
|
||||
<br />
|
||||
into the root of your fhem installation.
|
||||
This file will contain a header line, which define all the readings for this module
|
||||
<br />
|
||||
after the first run of the module you will find in your fhem root another file, named "DAQ00001.tranlations"
|
||||
<br />
|
||||
with all the named of the radings from hargassner. You can add you own interpretation of this names after each parameter.
|
||||
<br />
|
||||
when ready delete each configured HGNanopk device, and redefine it - you will now get your translated names for the radings.
|
||||
<br />
|
||||
Example:
|
||||
<ul>
|
||||
<code>define Pelletoven HGNanopk 192.168.1.69 60</code>
|
||||
</ul>
|
||||
</ul>
|
||||
<br />
|
||||
<b>Readings</b>
|
||||
|
||||
Actual readings vary with the oven and the Software version.
|
||||
<br />
|
||||
the readings are dynamically generated based on the <code>DAQ00001.DAQ</code> file, which must (!) be installed
|
||||
<br /> in the root of your fhem installation.
|
||||
<br />
|
||||
|
||||
</ul>
|
||||
</ul>
|
||||
|
||||
|
||||
=end html
|
||||
|
||||
=cut
|
|
@ -0,0 +1,4 @@
|
|||
kesselzustand;unknown_0,Brenner_aus,refill_in_x_minutes,refill_pellets,Zuendueberwachung,Zuendung,Uebergang_LB,Leistungsbrand,ignition_reduced,Ausbrand,ember_preservation,deashing_fan,sliding_grate_open,cleaning_stated,cleaning,cleaning_ended
|
||||
kessel_programm;Handbetrieb,Aus,WarmWasser,Automatik,Brenner_Aus
|
||||
heizkreis1_einstellung;unknown_0,Zeitschaltung,Nacht,Tag,Aus,Party,Frostschutz
|
||||
Stoerungs_nummer;Kein_Fehler,Uebertemperatur_STB_gefallen,Ueberstrom_Einschub,Ueberstrom_Raumaustragung,Thermoschutz_Raumschnecke,Aschelade_entleeren,Aschelade_zu_voll,Schieberost_oeffnet_nicht,Schieberost_schliesst_nicht,Ueberstrom_Putzeinrichtung,Fuehler_Rauchgastemp_anschluss,Fuehler_Rauchgastemp_unterbrechung,Fuehler_Kesseltemperatur_kurzschluss
|
|
@ -0,0 +1,274 @@
|
|||
ZK;kesselzustand;1
|
||||
O2;sauerstoff;1
|
||||
O2soll;sauerstoff_soll;1
|
||||
TK;kessel_temp;1
|
||||
TKsoll;kessel_temp_soll;1
|
||||
TRG;rauchgas_temp;1
|
||||
SZist;saugzug_ist;1
|
||||
SZsoll;saugzug_soll;1
|
||||
Leistung;leistung;1
|
||||
ESsoll;einschub_soll;1
|
||||
I_Es;einschub_strom;1
|
||||
I_Ra;raumaustragung_strom;1
|
||||
I_Aa;ascheaustragung_strom;1
|
||||
I_Sr;schieberost_strom;1
|
||||
I_Rein;putzeinheit_strom;1
|
||||
Taus;aussen_temp;1
|
||||
TA_Gem.;aussen_temp_gemittelt;1
|
||||
TPo;puffer_temp_oben;1
|
||||
TPmo;puffer_temp_mitteoben;0
|
||||
TPm;puffer_temp_mitte;1
|
||||
TPmu;puffer_temp_mitteunten;0
|
||||
TPu;puffer_temp_unten;1
|
||||
TFW;frischwasser_temp;1
|
||||
TRL;ruecklauf_temp;1
|
||||
TRLsoll;ruecklauf_temp_soll;1
|
||||
Tplat;platine_temp;1
|
||||
BRT;brennraum_temp;1
|
||||
Regler_K;regler_k;1
|
||||
KeBrstScale;kesselbrannstoff_scale;1
|
||||
ESRegler;einschubregler;1
|
||||
BLDC_ES_ist;;1
|
||||
BLDC_ES_soll;;1
|
||||
LZ_ES_seit_Füll.;einschubschnecke_laufzeit_seit_fuellung;1
|
||||
LZ_ES_seit_Ent.;einschubschnecke_laufzeit_seit_Entaschen;1
|
||||
Anzahl_Entasch.;entaschungslaeufe;1
|
||||
Anzahl_SR_Beweg.;schieberost_bewegung;1
|
||||
Heiz_P_Lambda;lambdasondenheizung_watt;1
|
||||
Heiz_U_Lambda;lambdasondenheizung_spannung;1
|
||||
Heiz_I_Lambda;lambdasondenheizung_strom;1
|
||||
Sens_U_Lambda;lambdasonde_spannung;1
|
||||
PuffZustand;pufferzustand;1
|
||||
Puffer_soll;puffer_soll;1
|
||||
Puff_Füllgrad;puffer_fuellstand;1
|
||||
max.Leist.P3F.HT;;1
|
||||
Spreizung;;1
|
||||
AIN17;;1
|
||||
Lagerstand;lager_kg;1
|
||||
Verbrauchszähler;verbrauch_kg;1
|
||||
UsePos;lager_saugsonde_nr;1
|
||||
Störungs_Nr;stoerungs_nummer;1
|
||||
TVL_A;vorlaufA_temp;0
|
||||
TVLs_A;vorlaufA_temp_soll;0
|
||||
TRA_A;raumA_temp;0
|
||||
TRs_A;raumA_temp_soll;0
|
||||
HKZustand_A;heizkreisA_zustand;0
|
||||
FRA_Zustand;heizkreisA_einstellung;0
|
||||
TVL_1;vorlauf1_temp;1
|
||||
TVLs_1;vorlauf1_temp_soll;1
|
||||
TRA_1;raum1_temp;1
|
||||
TRs_1;raum1_temp_soll;1
|
||||
HKZustand_1;heizkreis1_zustand;1
|
||||
FR1_Zustand;heizkreis1_einstellung;1
|
||||
TVL_2;vorlauf2_temp;0
|
||||
TVLs_2;vorlauf2_temp_soll;0
|
||||
TRA_2;raum2_temp;0
|
||||
TRs_2;raum2_temp_soll;0
|
||||
HKZustand_2;heizkreis2_zustand;0
|
||||
FR2_Zustand;heizkreis2_einstellung;0
|
||||
TVL_3;vorlauf3_temp;0
|
||||
TVLs_3;vorlauf3_temp_soll;0
|
||||
TRA_3;raum3_temp;0
|
||||
TRs_3;raum3_temp_soll;0
|
||||
HKZustand_3;heizkreis3_zustand;0
|
||||
FR3_Zustand;heizkreis3_einstellung;0
|
||||
TVL_4;vorlauf4_temp;0
|
||||
TVLs_4;vorlauf4_temp_soll;0
|
||||
TRA_4;raum4_temp;0
|
||||
TRs_4;raum4_temp_soll;0
|
||||
HKZustand_4;heizkreis4_zustand;0
|
||||
FR4_Zustand;heizkreis4_einstellung;0
|
||||
TVL_5;vorlauf5_temp;0
|
||||
TVLs_5;vorlauf5_temp_soll;0
|
||||
TRA_5;raum5_temp;0
|
||||
TRs_5;raum5_temp_soll;0
|
||||
HKZustand_5;heizkreis5_zustand;0
|
||||
FR5_Zustand;heizkreis5_einstellung;0
|
||||
TVL_6;vorlauf6_temp;0
|
||||
TVLs_6;vorlauf6_temp_soll;0
|
||||
TRA_6;raum6_temp;0
|
||||
TRs_6;raum6_temp_soll;0
|
||||
HKZustand_6;heizkreis6_zustand;0
|
||||
FR6_Zustand;heizkreis6_einstellung;0
|
||||
TBA;boiler_temp_A;0
|
||||
TBs_A;boiler_temp_A_soll;0
|
||||
TB1;boiler_temp_1;1
|
||||
TBs_1;boiler_temp_1_soll;1
|
||||
TB2;boiler_temp_2;0
|
||||
TBs_2;boiler_temp_2_soll;0
|
||||
TB3;boiler_temp_3;0
|
||||
TBs_3;boiler_temp_3_soll;0
|
||||
Ext.HK_Soll;externer_heizkreis_1_soll;0
|
||||
Ext.HK_Soll_2;externer_heizkreis_2_soll;0
|
||||
Ext.HK_Soll_3;externer_heizkreis_3_soll;0
|
||||
Höchste_Anf;;1
|
||||
Anf._HKR0;heizkreis0_anforderung;1
|
||||
Anf._HKR1;heizkreis1_anforderung;1
|
||||
Anf._HKR2;heizkreis2_anforderung;0
|
||||
Anf._HKR3;heizkreis3_anforderung;0
|
||||
Anf._HKR4;heizkreis4_anforderung;0
|
||||
Anf._HKR5;heizkreis5_anforderung;0
|
||||
Anf._HKR6;heizkreis6_anforderung;0
|
||||
Anf._HKR7;heizkreis7_anforderung;0
|
||||
Anf._HKR8;heizkreis8_anforderung;0
|
||||
Anf._HKR9;heizkreis9_anforderung;0
|
||||
Anf._HKR10;heizkreis10_anforderung;0
|
||||
Anf._HKR11;heizkreis11_anforderung;0
|
||||
Anf._HKR12;heizkreis12_anforderung;0
|
||||
Anf._HKR13;heizkreis13_anforderung;0
|
||||
Anf._HKR14;heizkreis14_anforderung;0
|
||||
Anf._HKR15;heizkreis15_anforderung;0
|
||||
T_Spülung;spuelung_temp;1
|
||||
Programm_HKM1;;1
|
||||
Programm_HKM2;;1
|
||||
TVG;;1
|
||||
U_Netzteil;netzteil_spannung;1
|
||||
TBB;boiler_temp_B;0
|
||||
TBs_B;boiler_temp_B_soll;0
|
||||
TVL_B;vorlaufB_temp;0
|
||||
TVLs_B;vorlaufB_temp_soll;0
|
||||
TRB;;1
|
||||
TRs_B;raumB_temp_soll;0
|
||||
HKZustand_B;heizkreisB_zustand;0
|
||||
TRA_B;raumB_temp;0
|
||||
FRB_Zustand;heizkreisB_einstellung;0
|
||||
Programm;kessel_programm;1
|
||||
Anf._EHK_Spg;;1
|
||||
FWS_VORL;frischwasserstation_temp_vorlauf;1
|
||||
FWS1_Anf.;frischwasserstation_1_temp_1_anforderung;1
|
||||
FWS1_Pumpe;frischwasserstation_1_pumpe;1
|
||||
FWS1_Leist;frischwasserstation_1_leistung;1
|
||||
FWS1_T;frischwasserstation_1_temp;1
|
||||
FWS1_D;;1
|
||||
FWS1_PID_I_Anteil;;1
|
||||
FWS1_PID_D_Anteil;;1
|
||||
FWS1_Basis_Regler;;1
|
||||
FWS2_Anf.;frischwasserstation_2_temp_anforderung;0
|
||||
FWS2_Pumpe;frischwasserstation_2_pumpe;0
|
||||
FWS2_Leist;frischwasserstation_2_leistung;0
|
||||
FWS2_T;frischwasserstation_2_temp;0
|
||||
FWS2_D;;0
|
||||
FWS2_PID_I_Anteil;;0
|
||||
FWS2_PID_D_Anteil;;0
|
||||
FWS2_Basis_Regler;;0
|
||||
FWS3_Anf.;frischwasserstation_3_temp_anforderung;0
|
||||
FWS3_Pumpe;frischwasserstation_3_pumpe;0
|
||||
FWS3_Leist;frischwasserstation_3_leistung;0
|
||||
FWS3_T;frischwasserstation_3_temp;0
|
||||
FWS3_D;;0
|
||||
FWS3_PID_I_Anteil;;0
|
||||
FWS3_PID_D_Anteil;;0
|
||||
FWS3_Basis_Regler;;0
|
||||
FWS4_Anf.;frischwasserstation_4_temp_anforderung;0
|
||||
FWS4_Pumpe;frischwasserstation_4_pumpe;0
|
||||
FWS4_Leist;frischwasserstation_4_leistung;0
|
||||
FWS4_T;frischwasserstation_4_temp;0
|
||||
FWS4_D;;0
|
||||
FWS4_PID_I_Anteil;;0
|
||||
FWS4_PID_D_Anteil;;0
|
||||
FWS4_Basis_Regler;;0
|
||||
FWS_PWR_KASK;;1
|
||||
Puffer_soll_oben;puffer_soll_oben;1
|
||||
Puffer_soll_unten;puffer_soll_unten;1
|
||||
AUPSoll;;1
|
||||
AUPIst;;1
|
||||
AUPStrom;;1
|
||||
BIT-Stb;;1
|
||||
BIT-Fuellstand;;1
|
||||
BIT-Es_Rein_Endl;;1
|
||||
BIT-HKPA;heizkreisA_pumpe;0
|
||||
BIT-MAA;;1
|
||||
BIT-MAZ;;1
|
||||
BIT-HKP1;heizkreis1_pumpe;1
|
||||
BIT-M1A;;1
|
||||
BIT-M1Z;;1
|
||||
BIT-HKP2;heizkreis2_pumpe;0
|
||||
BIT-M2A;;1
|
||||
BIT-M2Z;;1
|
||||
BIT-Störung;stoerung_aktiv;1
|
||||
BIT-WS_freig.;;1
|
||||
BIT-Akt._Code;;1
|
||||
BIT-L_Heiz.;;1
|
||||
BIT-Z_Heiz.;;1
|
||||
BIT-Z_Geb.;;1
|
||||
BIT-AA_Run;;1
|
||||
BIT-AA_Dir;;1
|
||||
BIT-ES_Run;;1
|
||||
BIT-ES_Dir;;1
|
||||
BIT-AS_Saug;;1
|
||||
BIT-AS_RA_Run;;1
|
||||
BIT-AS_RA_Dir;;1
|
||||
BIT-Rein_En;;1
|
||||
BIT-Rein_Run;;1
|
||||
BIT-RLm_auf;ruecklaufmischer_auf;1
|
||||
BIT-RLm_zu;ruecklaufmischer_zu;1
|
||||
BIT-RLP/PuffP;ruecklaufpumpe_puffer;1
|
||||
BIT-BPA;boilerpumpe_A;0
|
||||
BIT-BP1;boilerpumpe_1;1
|
||||
BIT-BP2;boilerpumpe_2;0
|
||||
BIT-BP3;boilerpumpe_3;0
|
||||
BIT-BZPA;;1
|
||||
BIT-BZP1;;1
|
||||
BIT-BZP2;;1
|
||||
BIT-BZP3;;1
|
||||
BIT-EHKP;;0
|
||||
BIT-EHKP2;;0
|
||||
BIT-EHKP3;;0
|
||||
BIT-EHK_Anf;;0
|
||||
BIT-EHK_Anf2;;0
|
||||
BIT-EHK_Anf3;;0
|
||||
BIT-HKP3;heizkreis3_pumpe;0
|
||||
BIT-M3A;;1
|
||||
BIT-M3Z;;1
|
||||
BIT-HKP4;heizkreis4_pumpe;0
|
||||
BIT-M4A;;1
|
||||
BIT-M4Z;;1
|
||||
BIT-HKP5;heizkreis5_pumpe;0
|
||||
BIT-M5A;;1
|
||||
BIT-M5Z;;1
|
||||
BIT-HKP6;heizkreis6_pumpe;0
|
||||
BIT-M6A;;1
|
||||
BIT-M6Z;;1
|
||||
BIT-Entasch_gesp.;;1
|
||||
BIT-ATW;;1
|
||||
BIT-HKPB;heizkreis7_pumpe;0
|
||||
BIT-MBA;;1
|
||||
BIT-MBZ;;1
|
||||
BIT-BPB;boilerpumpe_B;1
|
||||
BIT-BZPB;;1
|
||||
BIT-KASK_KWK_OK;;1
|
||||
BIT-KASK_FW_OK;;1
|
||||
BIT-KASK1_Run;;1
|
||||
BIT-KASK2_Run;;1
|
||||
BIT-KASK3_Run;;1
|
||||
BIT-KASK4_Run;;1
|
||||
BIT-FW_Freig.;;1
|
||||
BIT-sAS_Anf_Füll;;1
|
||||
BIT-HKV;;1
|
||||
BIT-FLP;;1
|
||||
BIT-Netztrafo;;1
|
||||
BIT-Netzrelais;;1
|
||||
BIT-Lagerraum;;1
|
||||
BIT-Aschebox;;1
|
||||
BIT-KASK1_OK;;1
|
||||
BIT-KASK2_OK;;1
|
||||
BIT-KASK3_OK;;1
|
||||
BIT-KASK4_OK;;1
|
||||
BIT-gFlP;;1
|
||||
BIT-gFlM_auf;;1
|
||||
BIT-gFlM_zu;;1
|
||||
BIT-Spülung_Aktiv;spuelung_aktiv;1
|
||||
BIT-DReg_P2;;1
|
||||
BIT-DReg_P3;;1
|
||||
BIT-DReg_Mi_auf;;1
|
||||
BIT-DReg_Mi_zu;;1
|
||||
BIT-Kask_FW_Out;;1
|
||||
BIT-DReg2_P2;;1
|
||||
BIT-DReg2_P3;;1
|
||||
BIT-DReg2_Mi_auf;;1
|
||||
BIT-DReg2_Mi_zu;;1
|
||||
BIT-Kask_KWK_Out;;1
|
||||
BIT-DReg3_P2;;1
|
||||
BIT-DReg3_P3;;1
|
||||
BIT-DReg3_Mi_auf;;1
|
||||
BIT-DReg3_Mi_zu;;1
|
Loading…
Reference in New Issue