THZ: THZ_Val implemented

git-svn-id: https://svn.fhem.de/fhem/trunk@22565 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
immi
2020-08-09 14:59:22 +00:00
parent 49310a4f6f
commit d16e628372

View File

@@ -1,8 +1,8 @@
############################################## ##############################################
# 00_THZ # 00_THZ
# $Id$ # $Id$
# by immi 05/2020 # by immi 08/2020
my $thzversion = "0.184"; my $thzversion = "0.186";
# this code is based on the hard work of Robert; I just tried to port it # this code is based on the hard work of Robert; I just tried to port it
# http://robert.penz.name/heat-pump-lwz/ # http://robert.penz.name/heat-pump-lwz/
######################################################################################## ########################################################################################
@@ -29,7 +29,6 @@ package main;
use strict; use strict;
use warnings; use warnings;
use Time::HiRes qw(gettimeofday); use Time::HiRes qw(gettimeofday);
use feature ":5.10";
use SetExtensions; use SetExtensions;
use Blocking; use Blocking;
use DevIo; use DevIo;
@@ -56,6 +55,7 @@ sub THZ_RemoveInternalTimer($);
sub THZ_Set($@); sub THZ_Set($@);
sub function_heatSetTemp($$); sub function_heatSetTemp($$);
sub THZ_Get($@); sub THZ_Get($@);
sub THZ_Val($;$$);
######################################################################################## ########################################################################################
# #
@@ -1641,6 +1641,38 @@ sub THZ_overwritechecksum($) {
return($checksumadded); 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 # 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 <br> attr Mythz interval_sHeatRecoveredTotal 43200 <br>
attr Mythz interval_sHistory 86400 <br> attr Mythz interval_sHistory 86400 <br>
attr Mythz interval_sLast10errors 86400 <br> attr Mythz interval_sLast10errors 86400 <br>
attr Mythz userReadings insideSetTemp:sHC1.* {THZ_Val("sHC1",21)}, insideTemp:sHC1.* {THZ_Val("sHC1",27)}, AussenTemp:sGlobal.* {THZ_Val("sGlobal",1)} <br>
attr Mythz room pompa <br> attr Mythz room pompa <br>
attr FileLog_Mythz room pompa <br> attr FileLog_Mythz room pompa <br>
</code></ul> </code></ul>
@@ -2290,6 +2323,7 @@ sub THZ_backup_readings($){
attr Mythz interval_sHeatRecoveredTotal 43200 <br> attr Mythz interval_sHeatRecoveredTotal 43200 <br>
attr Mythz interval_sHistory 86400 <br> attr Mythz interval_sHistory 86400 <br>
attr Mythz interval_sLast10errors 86400 <br> attr Mythz interval_sLast10errors 86400 <br>
attr Mythz userReadings insideSetTemp:sHC1.* {THZ_Val("sHC1",21)}, insideTemp:sHC1.* {THZ_Val("sHC1",27)}, AussenTemp:sGlobal.* {THZ_Val("sGlobal",1)} <br>
attr Mythz room pompa <br> attr Mythz room pompa <br>
attr FileLog_Mythz room pompa <br> attr FileLog_Mythz room pompa <br>
</code></ul> </code></ul>