2
0
mirror of https://github.com/fhem/fhem-mirror.git synced 2025-03-10 03:06:37 +00:00

36_ShellyMonitor.pm: Adapt for Shelly 3EM

git-svn-id: https://svn.fhem.de/fhem/trunk@26929 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
gvzdus 2022-12-29 19:28:42 +00:00
parent 8d39ff3d54
commit fc60e43d5c
2 changed files with 27 additions and 17 deletions

View File

@ -1,5 +1,6 @@
# Add changes at the top of the list. Keep it in ASCII, and 80-char wide. # Add changes at the top of the list. Keep it in ASCII, and 80-char wide.
# Do not insert empty lines here, update check depends on it. # Do not insert empty lines here, update check depends on it.
- feature: 36_ShellyMonitor: Support Shelly3EM correctly
- feature: 70_ESCVP21net: optimze help text - feature: 70_ESCVP21net: optimze help text
- feature: 70_SVDRP: optimize help text - feature: 70_SVDRP: optimize help text
- feature: 70_ESCVP21net: adding some default attributes on Define - feature: 70_ESCVP21net: adding some default attributes on Define

View File

@ -195,20 +195,28 @@ my $SHELLY_DEF_SEN = {
# Copied from 36_Shelly, keep up to date..: # Copied from 36_Shelly, keep up to date..:
my %shelly_models = ( my %shelly_models = (
#(relays,rollers,dimmers,meters) #(relays,rollers,dimmers,meters,NG)
"generic" => [4,4,4,4], "generic" => [4,4,4,4,0],
"shellygeneric" => [4,4,4,4], "shellygeneric" => [4,4,4,4,0],
"shelly1" => [1,0,0,0], "shelly1" => [1,0,0,0,0],
"shelly1pm" => [1,0,0,1], "shelly1pm" => [1,0,0,1,0],
"shelly2" => [2,1,0,1], "shelly2" => [2,1,0,1,0],
"shelly2.5" => [2,1,0,2], "shelly2.5" => [2,1,0,2,0],
"shellyplug" => [1,0,0,1], "shellyplug" => [1,0,0,1,0],
"shelly4" => [4,0,0,4], "shelly4" => [4,0,0,4,0],
"shellyrgbw" => [0,0,4,1], "shellypro4" => [4,0,0,4,0],
"shellydimmer" => [0,0,1,1], "shellyrgbw" => [0,0,4,1,0],
"shellyem" => [1,0,0,2], "shellydimmer" => [0,0,1,1,0],
"shellybulb" => [0,0,1,1], "shellyem" => [1,0,0,2,0],
); "shelly3em" => [1,0,0,3,0],
"shellybulb" => [0,0,1,1,0],
"shellyuni" => [2,0,0,1,0],
#-- 2nd generation devices
"shellyplus1" => [1,0,0,0,1],
"shellyplus1pm" => [1,0,0,1,1],
"shellypro4pm" => [4,0,0,4,1]
);
my %shelly_models_by_mod_shelly = (); my %shelly_models_by_mod_shelly = ();
@ -696,7 +704,7 @@ sub ShellyMonitor_DoRead
if (defined $defarr) { if (defined $defarr) {
my $rname = $defarr->{"desc"}; my $rname = $defarr->{"desc"};
if ($rname =~ /^(power|output|energy|brightness|extTemp)_(.).*/ || $rname =~ /^(roller.*|mode|L-.*|colorTemp)$/) { if ($rname =~ /^(power|output|energy|energyReturned|brightness|extTemp)_(.).*/ || $rname =~ /^(roller.*|mode|L-.*|colorTemp)$/) {
my $rtype = $1; my $rtype = $1;
my $rno = $2; my $rno = $2;
@ -714,9 +722,10 @@ sub ShellyMonitor_DoRead
if ($rtype eq "power") { if ($rtype eq "power") {
my $subs = ($shelly_models{$model}[3] ==1) ? "" : "_".$rno; my $subs = ($shelly_models{$model}[3] ==1) ? "" : "_".$rno;
readingsBulkUpdateIfChanged($device, "power" . $subs, $svalue); readingsBulkUpdateIfChanged($device, "power" . $subs, $svalue);
} elsif ($rtype eq "energy") { } elsif ($rtype =~ /^energy/) {
my $subs = ($shelly_models{$model}[3] ==1) ? "" : "_".$rno; my $subs = ($shelly_models{$model}[3] ==1) ? "" : "_".$rno;
readingsBulkUpdateIfChanged($device, "energy" . $subs, int($svalue/6)/10); readingsBulkUpdateIfChanged($device, $rtype . $subs,
$defarr->{"unit"} eq "Wmin" ? int($svalue/6)/10 : $svalue);
} elsif ($rtype eq "output") { } elsif ($rtype eq "output") {
my $subs = ($shelly_models{$model}[0] ==1) ? "" : "_".$rno; my $subs = ($shelly_models{$model}[0] ==1) ? "" : "_".$rno;
my $state = ( $svalue == 0 ? "off" : ( $svalue == 1 ? "on" : undef )); my $state = ( $svalue == 0 ? "off" : ( $svalue == 1 ? "on" : undef ));