36_Shelly.pm: Neue Version, EM3 added, interne Temperatur als Reading
git-svn-id: https://svn.fhem.de/fhem/trunk@25465 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -39,7 +39,7 @@ use vars qw{%attr %defs};
|
|||||||
sub Log($$);
|
sub Log($$);
|
||||||
|
|
||||||
#-- globals on start
|
#-- globals on start
|
||||||
my $version = "3.3";
|
my $version = "3.4";
|
||||||
|
|
||||||
#-- these we may get on request
|
#-- these we may get on request
|
||||||
my %gets = (
|
my %gets = (
|
||||||
@@ -120,6 +120,7 @@ my %shelly_models = (
|
|||||||
"shellyrgbw" => [0,0,4,1],
|
"shellyrgbw" => [0,0,4,1],
|
||||||
"shellydimmer" => [0,0,1,1],
|
"shellydimmer" => [0,0,1,1],
|
||||||
"shellyem" => [1,0,0,2],
|
"shellyem" => [1,0,0,2],
|
||||||
|
"shellyem3" => [1,0,0,3],
|
||||||
"shellybulb" => [0,0,1,1],
|
"shellybulb" => [0,0,1,1],
|
||||||
"shellyuni" => [2,0,0,1]
|
"shellyuni" => [2,0,0,1]
|
||||||
);
|
);
|
||||||
@@ -1062,6 +1063,10 @@ sub Shelly_pwd($){
|
|||||||
readingsBeginUpdate($hash);
|
readingsBeginUpdate($hash);
|
||||||
readingsBulkUpdateIfChanged($hash,"network","<html>connected to <a href=\"http://".$hash->{TCPIP}."\">".$hash->{TCPIP}."</a></html>",1);
|
readingsBulkUpdateIfChanged($hash,"network","<html>connected to <a href=\"http://".$hash->{TCPIP}."\">".$hash->{TCPIP}."</a></html>",1);
|
||||||
|
|
||||||
|
#-- for all models set internal temperature reading
|
||||||
|
if ($jhash->{'temperature'}) {
|
||||||
|
readingsBulkUpdateIfChanged($hash,"inttemp",$jhash->{'temperature'});
|
||||||
|
}
|
||||||
#-- we have a Shelly 1/1pw, Shelly 4, Shelly 2/2.5, ShellyPlug or ShellyEM switch type device
|
#-- we have a Shelly 1/1pw, Shelly 4, Shelly 2/2.5, ShellyPlug or ShellyEM switch type device
|
||||||
if( ($model =~ /shelly1.*/) || ($model eq "shellyuni") || ($model eq "shellyplug") || ($model eq "shelly4") || ($model eq "shellyem") || (($model =~ /shelly2.*/) && ($mode eq "relay")) ){
|
if( ($model =~ /shelly1.*/) || ($model eq "shellyuni") || ($model eq "shellyplug") || ($model eq "shelly4") || ($model eq "shellyem") || (($model =~ /shelly2.*/) && ($mode eq "relay")) ){
|
||||||
for( my $i=0;$i<$channels;$i++){
|
for( my $i=0;$i<$channels;$i++){
|
||||||
@@ -1079,18 +1084,30 @@ sub Shelly_pwd($){
|
|||||||
readingsBulkUpdateIfChanged($hash,"state","OK");
|
readingsBulkUpdateIfChanged($hash,"state","OK");
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
if ($model eq "shelluni") {
|
||||||
|
my $voltage = $jhash->{'adcs'}[0]{'voltage'};
|
||||||
|
readingsBulkUpdateIfChanged($hash,"voltage",$voltage);
|
||||||
|
}
|
||||||
|
|
||||||
my $metern = ($model eq "shellyem")?"emeters":"meters";
|
my $metern = ($model eq "shellyem")?"emeters":"meters";
|
||||||
for( my $i=0;$i<$meters;$i++){
|
for( my $i=0;$i<$meters;$i++){
|
||||||
$subs = ($meters == 1) ? "" : "_".$i;
|
$subs = ($meters == 1) ? "" : "_".$i;
|
||||||
$power = $jhash->{$metern}[$i]{'power'};
|
$power = $jhash->{$metern}[$i]{'power'};
|
||||||
$energy = int($jhash->{$metern}[$i]{'total'}/6)/10;
|
$energy = int($jhash->{$metern}[$i]{'total'}/6)/10;
|
||||||
readingsBulkUpdateIfChanged($hash,"power".$subs,$power);
|
readingsBulkUpdateIfChanged($hash,"power".$subs,$power);
|
||||||
readingsBulkUpdateIfChanged($hash,"energy".$subs,$energy);
|
|
||||||
if ($model eq "shellyem") {
|
if ($model eq "shellyem") {
|
||||||
my $voltage = $jhash->{$metern}[$i]{'voltage'};
|
my $voltage = $jhash->{$metern}[$i]{'voltage'};
|
||||||
readingsBulkUpdateIfChanged($hash,'voltage'.$subs,$voltage);
|
readingsBulkUpdateIfChanged($hash,'voltage'.$subs,$voltage);
|
||||||
|
my $reactivePower = $jhash->{$metern}[$i]{'reactive'};
|
||||||
|
#my $apparentPower = sqrt( ($power * $power) + ($reactivePower * $reactivePower) );
|
||||||
|
#my $powerFactor = ($apparentPower != 0)?(int($power / $apparentPower * 100) / 100):"0";
|
||||||
|
#readingsBulkUpdateIfChanged($hash,'powerFactor'.$subs,$powerFactor);
|
||||||
|
$energy = $jhash->{$metern}[$i]{'total'};
|
||||||
|
}else{
|
||||||
|
$energy = int($jhash->{$metern}[$i]{'total'}/6)/10;
|
||||||
}
|
}
|
||||||
}
|
readingsBulkUpdateIfChanged($hash,"energy".$subs,$energy);
|
||||||
|
}
|
||||||
|
|
||||||
#-- we have a Shelly 2 roller type device
|
#-- we have a Shelly 2 roller type device
|
||||||
}elsif( ($model =~ /shelly2.*/) && ($mode eq "roller") ){
|
}elsif( ($model =~ /shelly2.*/) && ($mode eq "roller") ){
|
||||||
@@ -1221,7 +1238,9 @@ sub Shelly_pwd($){
|
|||||||
readingsBulkUpdateIfChanged($hash,"L-green",$green);
|
readingsBulkUpdateIfChanged($hash,"L-green",$green);
|
||||||
readingsBulkUpdateIfChanged($hash,"L-blue",$blue);
|
readingsBulkUpdateIfChanged($hash,"L-blue",$blue);
|
||||||
readingsBulkUpdateIfChanged($hash,"L-white",$white);
|
readingsBulkUpdateIfChanged($hash,"L-white",$white);
|
||||||
readingsBulkUpdateIfChanged($hash,"overpower",$overpower);
|
#-- taken out in newer firmwares
|
||||||
|
readingsBulkUpdateIfChanged($hash,"overpower",$overpower)
|
||||||
|
if( $overpower);
|
||||||
readingsBulkUpdateIfChanged($hash,"state",$ison);
|
readingsBulkUpdateIfChanged($hash,"state",$ison);
|
||||||
for( my $i=0;$i<$meters;$i++){
|
for( my $i=0;$i<$meters;$i++){
|
||||||
$subs = ($meters == 1) ? "" : "_".$i;
|
$subs = ($meters == 1) ? "" : "_".$i;
|
||||||
|
|||||||
Reference in New Issue
Block a user