add batteryLevel reading, add mor fetch data information

This commit is contained in:
Marko Oldenburg 2017-10-15 07:36:13 +02:00
parent 7ce13714c8
commit a21a2c8a87

View File

@ -66,7 +66,7 @@ use HttpUtils;
eval "use JSON;1" or $missingModul .= "JSON "; eval "use JSON;1" or $missingModul .= "JSON ";
my $version = "0.0.25"; my $version = "0.1.2";
@ -126,8 +126,8 @@ sub TeslaPowerwall2AC_Define($$) {
my @a = split( "[ \t][ \t]*", $def ); my @a = split( "[ \t][ \t]*", $def );
return "too few parameters: define <name> SmartPi <HOST>" if( @a != 3); return "too few parameters: define <name> TeslaPowerwall2AC <HOST>" if( @a != 3);
return "Cannot define a HEOS device. Perl modul $missingModul is missing." if ( $missingModul ); return "Cannot define a TeslaPowerwall2AC device. Perl modul $missingModul is missing." if ( $missingModul );
my $name = $a[0]; my $name = $a[0];
@ -173,36 +173,45 @@ sub TeslaPowerwall2AC_Undef($$) {
sub TeslaPowerwall2AC_Attr(@) { sub TeslaPowerwall2AC_Attr(@) {
my ( $cmd, $name, $attrName, $attrVal ) = @_; my ( $cmd, $name, $attrName, $attrVal ) = @_;
my $hash = $defs{$name}; my $hash = $defs{$name};
my $orig = $attrVal;
if( $attrName eq "disable" ) { if( $attrName eq "disable" ) {
if( $cmd eq "set" and $attrVal eq "1" ) {
RemoveInternalTimer($hash);
readingsSingleUpdate ( $hash, "state", "disabled", 1 );
Log3 $name, 3, "TeslaPowerwall2AC ($name) - disabled";
} elsif( $cmd eq "del" ) {
readingsSingleUpdate ( $hash, "state", "active", 1 );
Log3 $name, 3, "TeslaPowerwall2AC ($name) - enabled";
TeslaPowerwall2AC_Timer_GetData($hash);
}
}
if( $attrName eq "disabledForIntervals" ) {
if( $cmd eq "set" ) { if( $cmd eq "set" ) {
if( $attrVal eq "0" ) { return "check disabledForIntervals Syntax HH:MM-HH:MM or 'HH:MM-HH:MM HH:MM-HH:MM ...'"
unless($attrVal =~ /^((\d{2}:\d{2})-(\d{2}:\d{2})\s?)+$/);
readingsSingleUpdate ( $hash, "state", "enabled", 1 ); Log3 $name, 3, "TeslaPowerwall2AC ($name) - disabledForIntervals";
Log3 $name, 3, "TeslaPowerwall2AC ($name) - enabled"; readingsSingleUpdate ( $hash, "state", "disabled for Intervals", 1 );
} else {
} elsif( $cmd eq "del" ) {
readingsSingleUpdate ( $hash, "state", "disabled", 1 ); readingsSingleUpdate ( $hash, "state", "active", 1 );
Log3 $name, 3, "TeslaPowerwall2AC ($name) - disabled";
}
} else {
readingsSingleUpdate ( $hash, "state", "enabled", 1 );
Log3 $name, 3, "TeslaPowerwall2AC ($name) - enabled"; Log3 $name, 3, "TeslaPowerwall2AC ($name) - enabled";
} }
}
} elsif( $attrName eq "interval" ) {
if( $attrName eq "interval" ) {
if( $cmd eq "set" ) { if( $cmd eq "set" ) {
$hash->{INTERVAL} = $attrVal; $hash->{INTERVAL} = $attrVal;
Log3 $name, 3, "TeslaPowerwall2AC ($name) - set interval to $attrVal";
TeslaPowerwall2AC_Timer_GetData($hash) if($init_done);
} else { } elsif( $cmd eq "del" ) {
$hash->{INTERVAL} = 300; $hash->{INTERVAL} = 300;
Log3 $name, 3, "TeslaPowerwall2AC ($name) - set interval to default";
TeslaPowerwall2AC_Timer_GetData($hash);
} }
} }
@ -294,7 +303,7 @@ sub TeslaPowerwall2AC_GetData($) {
my $uri = $host . ':' . $port . '/api/' . $paths{$path}; my $uri = $host . ':' . $port . '/api/' . $paths{$path};
readingsSingleUpdate($hash,'state','fetch data',1); readingsSingleUpdate($hash,'state','fetch data - ' . sclara(@{$hash->{actionQueue}}) . ' paths in actionQueue',1);
HttpUtils_NonblockingGet( HttpUtils_NonblockingGet(
{ {
@ -425,9 +434,9 @@ sub TeslaPowerwall2AC_WriteReadings($$$) {
readingsBeginUpdate($hash); readingsBeginUpdate($hash);
while( my ($r,$v) = each %{$readings} ) { while( my ($r,$v) = each %{$readings} ) {
readingsBulkUpdate($hash,$path.'-'.$r,$v); readingsBulkUpdate($hash,$path.'-'.$r,$v);
readingsBulkUpdate($hash,$path.'-'.$r,sprintf("%.1f",$v)) if($r eq 'percentage');
} }
readingsBulkUpdate($hash,'batteryLevel',sprintf("%.1f",$readings->{percentage})) if( defined($readings->{percentage}) );
readingsBulkUpdateIfChanged($hash,'state','ready'); readingsBulkUpdateIfChanged($hash,'state','ready');
readingsEndUpdate($hash,1); readingsEndUpdate($hash,1);
} }
@ -499,6 +508,11 @@ sub TeslaPowerwall2AC_ReadingsProcessing_Powerwalls($$) {
<ul> <ul>
<li> </li> <li> </li>
</ul> </ul>
<a name="TeslaPowerwall2ACattribute"></a>
<b>Attribute</b>
<ul>
<li> </li>
</ul>
</ul> </ul>
=end html =end html