From ee15ce461ebf8f2b59d5ae2c237aa4912988c816 Mon Sep 17 00:00:00 2001 From: immi <> Date: Sun, 9 Aug 2020 14:59:22 +0000 Subject: [PATCH] THZ: THZ_Val implemented git-svn-id: https://svn.fhem.de/fhem/trunk@22565 2b470e98-0d58-463d-a4d8-8e2adae1ed80 --- fhem/FHEM/00_THZ.pm | 42 ++++++++++++++++++++++++++++++++++++++---- 1 file changed, 38 insertions(+), 4 deletions(-) diff --git a/fhem/FHEM/00_THZ.pm b/fhem/FHEM/00_THZ.pm index 1222a3ff6..09c9888a0 100644 --- a/fhem/FHEM/00_THZ.pm +++ b/fhem/FHEM/00_THZ.pm @@ -1,8 +1,8 @@ ############################################## # 00_THZ # $Id$ -# by immi 05/2020 -my $thzversion = "0.184"; +# by immi 08/2020 +my $thzversion = "0.186"; # this code is based on the hard work of Robert; I just tried to port it # http://robert.penz.name/heat-pump-lwz/ ######################################################################################## @@ -29,7 +29,6 @@ package main; use strict; use warnings; use Time::HiRes qw(gettimeofday); -use feature ":5.10"; use SetExtensions; use Blocking; use DevIo; @@ -56,6 +55,7 @@ sub THZ_RemoveInternalTimer($); sub THZ_Set($@); sub function_heatSetTemp($$); sub THZ_Get($@); +sub THZ_Val($;$$); ######################################################################################## # @@ -1641,6 +1641,38 @@ sub THZ_overwritechecksum($) { return($checksumadded); } + +#################################### +# +## usage {THZ_Val("sGlobal",3,0)} register, position or subregistername, defaultval +## adding an optional parameter to ReadingsVal which selects the column in the reading +##{THZ_Val("sGlobal",5)} is equivalent to {THZ_Val("sGlobal","returnTemp")} +## +# +######################################################################################## +sub THZ_Val($;$$){ + my ($n,$col,$default) = @_; + my $d; #normally Mythz but could be defined differently + foreach (keys %defs) { + $d=$_; + last if(($defs{$_}{TYPE}) =~ "THZ"); + } + if(defined($defs{$d}) && + defined($defs{$d}{READINGS}) && + defined($defs{$d}{READINGS}{$n}) && + defined($defs{$d}{READINGS}{$n}{VAL})) { + my $tmp=$defs{$d}{READINGS}{$n}{VAL}; + if (defined($col)) { + if (($col =~ (/^\d+$/) ) && (defined((split ' ',$tmp)[$col]))) {return((split ' ',$tmp)[$col]);} + if ($tmp =~ m/$col\w*: ((-|\w|\d)+\.?\d*)/) {return($1);} + } + return $tmp; + } + #if (!defined($default)) { return 0}; + return $default; +} + + #################################### # # THZ_encodecommand - creates a telegram for the heatpump with a given command @@ -1811,7 +1843,7 @@ sub THZ_Parse1($$) { } } } - return (undef, $ParsedMsg); + return($ParsedMsg); } ######################################################################################## @@ -2214,6 +2246,7 @@ sub THZ_backup_readings($){ attr Mythz interval_sHeatRecoveredTotal 43200
attr Mythz interval_sHistory 86400
attr Mythz interval_sLast10errors 86400
+ attr Mythz userReadings insideSetTemp:sHC1.* {THZ_Val("sHC1",21)}, insideTemp:sHC1.* {THZ_Val("sHC1",27)}, AussenTemp:sGlobal.* {THZ_Val("sGlobal",1)}
attr Mythz room pompa
attr FileLog_Mythz room pompa
@@ -2290,6 +2323,7 @@ sub THZ_backup_readings($){ attr Mythz interval_sHeatRecoveredTotal 43200
attr Mythz interval_sHistory 86400
attr Mythz interval_sLast10errors 86400
+ attr Mythz userReadings insideSetTemp:sHC1.* {THZ_Val("sHC1",21)}, insideTemp:sHC1.* {THZ_Val("sHC1",27)}, AussenTemp:sGlobal.* {THZ_Val("sGlobal",1)}
attr Mythz room pompa
attr FileLog_Mythz room pompa