From 5d832d347c264c5815ea8ad86786cbfc67f27983 Mon Sep 17 00:00:00 2001 From: oskarfessel <> Date: Tue, 1 May 2012 06:11:04 +0000 Subject: [PATCH] New functionality to support Floorplan Aggregate, depends on statusHTML attribute being set git-svn-id: https://svn.fhem.de/fhem/trunk/fhem@1510 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- contrib/23_LUXTRONIK2.pm | 38 ++++++++++++++++++++++++++++---------- contrib/README | 4 ++++ contrib/serial.pl | 11 ++++++----- 3 files changed, 38 insertions(+), 15 deletions(-) diff --git a/contrib/23_LUXTRONIK2.pm b/contrib/23_LUXTRONIK2.pm index 14c102219..a4e980d7a 100644 --- a/contrib/23_LUXTRONIK2.pm +++ b/contrib/23_LUXTRONIK2.pm @@ -39,7 +39,7 @@ LUXTRONIK2_Initialize($) my ($hash) = @_; $hash->{DefFn} = "LUXTRONIK2_Define"; - $hash->{AttrList} = "loglevel:0,1,2,3,4,5,6"; + $hash->{AttrList} = "loglevel:0,1,2,3,4,5,6 firmware statusHTML"; } sub @@ -178,7 +178,7 @@ LUXTRONIK2_GetStatus($) if($err_log ne "") { Log GetLogLevel($name,2), "LUXTRONIK2 ".$err_log; - return(""); + return("LUXTRONIK2 general problem with heatpump connection"); } my %wpOpStat1 = ( 0 => "Waermepumpe laeuft", @@ -210,6 +210,13 @@ LUXTRONIK2_GetStatus($) # Erst die operativen Stati und Parameterenstellungen + if(AttrVal($hash->{NAME}, "firmware", "none") ne "none") { + $attr{$hash->{NAME}}{firmware} = $heatpump_values[81]; + for(my $fi=82; $fi<91; $fi++) { + $attr{$hash->{NAME}}{firmware} .= $heatpump_values[$fi]; + } + } + $sensor = "currentOperatingStatus1"; $switch = $heatpump_values[117]; $value = $wpOpStat1{$switch}; @@ -288,17 +295,17 @@ LUXTRONIK2_GetStatus($) LUXTRONIK2_TempValueMerken($hash,$heatpump_values[17],"hotWaterTemperature"); # Wert 10 gibt die Vorlauftemperatur an, die - # korrekte Übersetzung ist flow temperature. + # korrekte Uebersetzung ist flow temperature. LUXTRONIK2_TempValueMerken($hash,$heatpump_values[10],"flowTemperature"); - # Rücklauftempereatur + # Ruecklauftempereatur LUXTRONIK2_TempValueMerken($hash,$heatpump_values[11],"returnTemperature"); - # Rücklauftemperatur Sollwert + # Ruecklauftemperatur Sollwert LUXTRONIK2_TempValueMerken($hash,$heatpump_values[12],"returnTemperatureTarget"); - # Rücklauftemperatur am externen Sensor. + # Ruecklauftemperatur am externen Sensor. LUXTRONIK2_TempValueMerken($hash,$heatpump_values[13],"returnTemperatureExtern"); - - # Durchfluss Wärmemengenzähler - # Durchfluss Wärmemengenzähler + + + # Durchfluss Waermemengenzaehler $sensor = "flowRate"; $value = $heatpump_values[155]; if($hash->{READINGS}{$sensor}{VAL} != $value) { @@ -307,7 +314,18 @@ LUXTRONIK2_GetStatus($) $hash->{READINGS}{$sensor}{UNIT} = "l/h"; $hash->{CHANGED}[$cc++] = $sensor.": ".$value; } - + + if(AttrVal($hash->{NAME}, "statusHTML", "none") ne "none") { + $sensor = "floorplanHTML"; + $value = '
' . $name . "
"; + $value .= $hash->{READINGS}{'currentOperatingStatus1'}{VAL} . '
'; + $value .= $hash->{READINGS}{'currentOperatingStatus2'}{VAL} . '
'; + $value .= "Brauchwasser:" . $hash->{READINGS}{hotWaterTemperature}{VAL} . '°C'; + $hash->{READINGS}{$sensor}{TIME} = TimeNow(); + $hash->{READINGS}{$sensor}{VAL} = $value; + $hash->{READINGS}{$sensor}{UNIT} = "HTML"; + } + DoTrigger($name, undef) if($init_done); } diff --git a/contrib/README b/contrib/README index c5a4ea699..1c8db4314 100755 --- a/contrib/README +++ b/contrib/README @@ -2,6 +2,10 @@ Module to control FHT8V valve servos via CUL/CUN precondition: support must be added to 00_CUL.pm. This support is primary tested with a modified send-method of the culfw. +- 23_LUXTRONIK2.pm + Support for the heatpump controller LUXTRONIK2 used by Alpha-Innotec + and Siemens and probably some other vendors, too. LUX2.gplot is one + example plotting template. - 70_SCIVT.pm Support for an SCD series solar controler device. Details see http://english.ivt-hirschau.de/content.php?parent_id=CAT_64&doc_id=DOC_118 diff --git a/contrib/serial.pl b/contrib/serial.pl index 47e01f82f..234719e44 100755 --- a/contrib/serial.pl +++ b/contrib/serial.pl @@ -6,13 +6,14 @@ use Device::SerialPort; use Time::HiRes qw(gettimeofday); sub pp($$); -if(@ARGV != 3) { - printf("Usage: perl serial.pl serial-device outfile initial-hex-msg\n"); +if(@ARGV != 4) { + printf("Usage: perl serial.pl serial-device baudrate outfile initial-hex-msg\n"); exit(1); } my $ser = $ARGV[0]; -my $fil = $ARGV[1]; -my $hm = $ARGV[2]; +my $baud = $ARGV[1]; +my $fil = $ARGV[2]; +my $hm = $ARGV[3]; my $fd; open($fd, ">$fil") || die("Can't open $fil for writing\n"); @@ -22,7 +23,7 @@ $| = 1; my $serport = new Device::SerialPort ($ser); die "Can't open $ser: $!\n" if(!$serport); $serport->reset_error(); -$serport->baudrate(38400); +$serport->baudrate($baud); $serport->databits(8); $serport->parity('none'); $serport->stopbits(1);