mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-02-07 16:59:18 +00:00
93_DbLog: contrib 4.9.4
git-svn-id: https://svn.fhem.de/fhem/trunk@20842 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
2c0a0c0df7
commit
87da052625
@ -30,6 +30,7 @@ no if $] >= 5.017011, warnings => 'experimental::smartmatch';
|
||||
|
||||
# Version History intern by DS_Starter:
|
||||
our %DbLog_vNotesIntern = (
|
||||
"4.9.4" => "29.12.2019 correct behavior if value is empty and attribute addStateEvent is set (default), Forum: #106769 ",
|
||||
"4.9.3" => "28.12.2019 check date/time format got from SVG, Forum: #101005 ",
|
||||
"4.9.2" => "16.12.2019 add \$DEVICE to attr DbLogValueFn for readonly access to the device name ",
|
||||
"4.9.1" => "13.11.2019 escape \ with \\ in DbLog_Push and DbLog_PushAsync ",
|
||||
@ -966,8 +967,8 @@ return $ret;
|
||||
################################################################
|
||||
# Parsefunktion, abhaengig vom Devicetyp
|
||||
################################################################
|
||||
sub DbLog_ParseEvent($$$) {
|
||||
my ($device, $type, $event)= @_;
|
||||
sub DbLog_ParseEvent($$$$) {
|
||||
my ($name,$device, $type, $event)= @_;
|
||||
my (@result,$reading,$value,$unit);
|
||||
|
||||
# Splitfunktion der Eventquelle aufrufen (ab 2.9.1)
|
||||
@ -992,7 +993,7 @@ sub DbLog_ParseEvent($$$) {
|
||||
#default
|
||||
if(!defined($reading)) { $reading = ""; }
|
||||
if(!defined($value)) { $value = ""; }
|
||||
if( $value eq "" ) {
|
||||
if($value eq "" && !AttrVal($name, "addStateEvent", 1)) {
|
||||
$reading = "state";
|
||||
$value = $event;
|
||||
}
|
||||
@ -1021,16 +1022,14 @@ sub DbLog_ParseEvent($$$) {
|
||||
$value =~ s/ \(Celsius\)//;
|
||||
$value =~ s/([-\.\d]+).*/$1/;
|
||||
$unit = "°C";
|
||||
}
|
||||
elsif(lc($reading) =~ m/(humidity|vwc)/) {
|
||||
} elsif (lc($reading) =~ m/(humidity|vwc)/) {
|
||||
$value =~ s/ \(\%\)//;
|
||||
$unit = "%";
|
||||
}
|
||||
}
|
||||
}
|
||||
# Onewire
|
||||
elsif(($type eq "OWAD") ||
|
||||
($type eq "OWSWITCH")) {
|
||||
elsif(($type eq "OWAD") || ($type eq "OWSWITCH")) {
|
||||
if(int(@parts)>1) {
|
||||
$reading = "data";
|
||||
$value = $event;
|
||||
@ -1068,8 +1067,7 @@ sub DbLog_ParseEvent($$$) {
|
||||
$value = $1;
|
||||
$reading = "dim";
|
||||
$unit = "%";
|
||||
}
|
||||
elsif(!defined($value) || $value eq "") {
|
||||
} elsif(!defined($value) || $value eq "") {
|
||||
$value = $reading;
|
||||
$reading = "data";
|
||||
}
|
||||
@ -1082,43 +1080,38 @@ sub DbLog_ParseEvent($$$) {
|
||||
$reading = $parts[0];
|
||||
$value = $parts[1];
|
||||
$unit = "";
|
||||
}
|
||||
elsif($reading =~ m(-temp)) { $value=~ s/ \(Celsius\)//; $unit= "°C"; }
|
||||
elsif($reading =~ m(temp-offset)) { $value=~ s/ \(Celsius\)//; $unit= "°C"; }
|
||||
elsif($reading =~ m(^actuator[0-9]*)) {
|
||||
} elsif($reading =~ m(-temp)) {
|
||||
$value =~ s/ \(Celsius\)//; $unit= "°C";
|
||||
} elsif($reading =~ m(temp-offset)) {
|
||||
$value =~ s/ \(Celsius\)//; $unit= "°C";
|
||||
} elsif($reading =~ m(^actuator[0-9]*)) {
|
||||
if($value eq "lime-protection") {
|
||||
$reading = "actuator-lime-protection";
|
||||
undef $value;
|
||||
}
|
||||
elsif($value =~ m(^offset:)) {
|
||||
} elsif($value =~ m(^offset:)) {
|
||||
$reading = "actuator-offset";
|
||||
@parts = split(/: /,$value);
|
||||
$value = $parts[1];
|
||||
if(defined $value) {
|
||||
$value =~ s/%//; $value = $value*1.; $unit = "%";
|
||||
}
|
||||
}
|
||||
elsif($value =~ m(^unknown_)) {
|
||||
} elsif($value =~ m(^unknown_)) {
|
||||
@parts = split(/: /,$value);
|
||||
$reading = "actuator-" . $parts[0];
|
||||
$value = $parts[1];
|
||||
if(defined $value) {
|
||||
$value =~ s/%//; $value = $value*1.; $unit = "%";
|
||||
}
|
||||
}
|
||||
elsif($value =~ m(^synctime)) {
|
||||
} elsif($value =~ m(^synctime)) {
|
||||
$reading = "actuator-synctime";
|
||||
undef $value;
|
||||
}
|
||||
elsif($value eq "test") {
|
||||
} elsif($value eq "test") {
|
||||
$reading = "actuator-test";
|
||||
undef $value;
|
||||
}
|
||||
elsif($value eq "pair") {
|
||||
} elsif($value eq "pair") {
|
||||
$reading = "actuator-pair";
|
||||
undef $value;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$value =~ s/%//; $value = $value*1.; $unit = "%";
|
||||
}
|
||||
}
|
||||
@ -1140,17 +1133,16 @@ sub DbLog_ParseEvent($$$) {
|
||||
}
|
||||
}
|
||||
# HMS
|
||||
elsif($type eq "HMS" ||
|
||||
$type eq "CUL_WS" ||
|
||||
$type eq "OWTHERM") {
|
||||
if($event =~ m(T:.*)) { $reading= "data"; $value= $event; }
|
||||
elsif($reading eq "temperature") {
|
||||
elsif($type eq "HMS" || $type eq "CUL_WS" || $type eq "OWTHERM") {
|
||||
if($event =~ m(T:.*)) {
|
||||
$reading = "data"; $value= $event;
|
||||
} elsif($reading eq "temperature") {
|
||||
$value =~ s/ \(Celsius\)//;
|
||||
$value =~ s/([-\.\d]+).*/$1/; #OWTHERM
|
||||
$unit = "°C";
|
||||
}
|
||||
elsif($reading eq "humidity") { $value=~ s/ \(\%\)//; $unit= "%"; }
|
||||
elsif($reading eq "battery") {
|
||||
} elsif($reading eq "humidity") {
|
||||
$value =~ s/ \(\%\)//; $unit= "%";
|
||||
} elsif($reading eq "battery") {
|
||||
$value =~ s/ok/1/;
|
||||
$value =~ s/replaced/1/;
|
||||
$value =~ s/empty/0/;
|
||||
@ -1158,8 +1150,7 @@ sub DbLog_ParseEvent($$$) {
|
||||
}
|
||||
# CUL_HM
|
||||
elsif ($type eq "CUL_HM") {
|
||||
# remove trailing %
|
||||
$value=~ s/ \%$//;
|
||||
$value =~ s/ \%$//; # remove trailing %
|
||||
}
|
||||
|
||||
# BS
|
||||
@ -1182,15 +1173,14 @@ sub DbLog_ParseEvent($$$) {
|
||||
|
||||
# RFXTRX Sensors
|
||||
elsif($type eq "TRX_WEATHER") {
|
||||
if($reading eq "energy_current") { $value=~ s/ W//; }
|
||||
elsif($reading eq "energy_total") { $value=~ s/ kWh//; }
|
||||
# elsif($reading eq "temperature") {TODO}
|
||||
# elsif($reading eq "temperature") {TODO
|
||||
elsif($reading eq "battery") {
|
||||
if($reading eq "energy_current") {
|
||||
$value =~ s/ W//;
|
||||
} elsif($reading eq "energy_total") {
|
||||
$value =~ s/ kWh//;
|
||||
} elsif($reading eq "battery") {
|
||||
if ($value =~ m/(\d+)\%/) {
|
||||
$value = $1;
|
||||
}
|
||||
else {
|
||||
} else {
|
||||
$value = ($value eq "ok");
|
||||
}
|
||||
}
|
||||
@ -1331,7 +1321,7 @@ sub DbLog_Log($$) {
|
||||
$timestamp = $dev_hash->{CHANGETIME}[$i] if(defined($dev_hash->{CHANGETIME}[$i]));
|
||||
$event =~ s/\|/_ESC_/g; # escape Pipe "|"
|
||||
|
||||
my @r = DbLog_ParseEvent($dev_name, $dev_type, $event);
|
||||
my @r = DbLog_ParseEvent($name,$dev_name, $dev_type, $event);
|
||||
$reading = $r[0];
|
||||
$value = $r[1];
|
||||
$unit = $r[2];
|
||||
@ -4497,7 +4487,7 @@ sub DbLog_AddLog($$$$$) {
|
||||
$event = $dev_reading.": ".$read_val;
|
||||
|
||||
# den zusammengestellten Event parsen lassen (evtl. Unit zuweisen)
|
||||
my @r = DbLog_ParseEvent($dev_name, $dev_type, $event);
|
||||
my @r = DbLog_ParseEvent($name,$dev_name, $dev_type, $event);
|
||||
$dev_reading = $r[0];
|
||||
$read_val = $r[1];
|
||||
$ut = $r[2];
|
||||
|
Loading…
x
Reference in New Issue
Block a user