change Code PBP conform
This commit is contained in:
		@@ -62,6 +62,7 @@ use strict;
 | 
				
			|||||||
use warnings;
 | 
					use warnings;
 | 
				
			||||||
use POSIX;
 | 
					use POSIX;
 | 
				
			||||||
use FHEM::Meta;
 | 
					use FHEM::Meta;
 | 
				
			||||||
 | 
					use Data::Dumper;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
use HttpUtils;
 | 
					use HttpUtils;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -69,7 +70,7 @@ my $missingModul = '';
 | 
				
			|||||||
eval "use Encode qw(encode encode_utf8 decode_utf8);1"
 | 
					eval "use Encode qw(encode encode_utf8 decode_utf8);1"
 | 
				
			||||||
  or $missingModul .= "Encode ";
 | 
					  or $missingModul .= "Encode ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# eval "use JSON;1"            or $missingModul .= 'JSON ';
 | 
					# eval "use JSON;1"            || $missingModul .= 'JSON ';
 | 
				
			||||||
eval "use IO::Socket::SSL;1" or $missingModul .= 'IO::Socket::SSL ';
 | 
					eval "use IO::Socket::SSL;1" or $missingModul .= 'IO::Socket::SSL ';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
# try to use JSON::MaybeXS wrapper
 | 
					# try to use JSON::MaybeXS wrapper
 | 
				
			||||||
@@ -275,7 +276,7 @@ sub Attr {
 | 
				
			|||||||
    my $hash = $defs{$name};
 | 
					    my $hash = $defs{$name};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( $attrName eq 'disable' ) {
 | 
					    if ( $attrName eq 'disable' ) {
 | 
				
			||||||
        if ( $cmd eq 'set' and $attrVal eq '1' ) {
 | 
					        if ( $cmd eq 'set' && $attrVal eq '1' ) {
 | 
				
			||||||
            RemoveInternalTimer($hash);
 | 
					            RemoveInternalTimer($hash);
 | 
				
			||||||
            readingsSingleUpdate( $hash, 'state', 'inactive', 1 );
 | 
					            readingsSingleUpdate( $hash, 'state', 'inactive', 1 );
 | 
				
			||||||
            Log3 $name, 3, "GardenaSmartBridge ($name) - disabled";
 | 
					            Log3 $name, 3, "GardenaSmartBridge ($name) - disabled";
 | 
				
			||||||
@@ -289,7 +290,7 @@ sub Attr {
 | 
				
			|||||||
        if ( $cmd eq 'set' ) {
 | 
					        if ( $cmd eq 'set' ) {
 | 
				
			||||||
            return
 | 
					            return
 | 
				
			||||||
"check disabledForIntervals Syntax HH:MM-HH:MM or 'HH:MM-HH:MM HH:MM-HH:MM ...'"
 | 
					"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?)+$/ );
 | 
					              if ( $attrVal !~ /^((\d{2}:\d{2})-(\d{2}:\d{2})\s?)+$/ );
 | 
				
			||||||
            Log3 $name, 3, "GardenaSmartBridge ($name) - disabledForIntervals";
 | 
					            Log3 $name, 3, "GardenaSmartBridge ($name) - disabledForIntervals";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elsif ( $cmd eq 'del' ) {
 | 
					        elsif ( $cmd eq 'del' ) {
 | 
				
			||||||
@@ -301,7 +302,7 @@ sub Attr {
 | 
				
			|||||||
        if ( $cmd eq 'set' ) {
 | 
					        if ( $cmd eq 'set' ) {
 | 
				
			||||||
            RemoveInternalTimer($hash);
 | 
					            RemoveInternalTimer($hash);
 | 
				
			||||||
            return 'Interval must be greater than 0'
 | 
					            return 'Interval must be greater than 0'
 | 
				
			||||||
              unless ( $attrVal > 0 );
 | 
					              if ( $attrVal == 0 );
 | 
				
			||||||
            $hash->{INTERVAL} = $attrVal;
 | 
					            $hash->{INTERVAL} = $attrVal;
 | 
				
			||||||
            Log3 $name, 3,
 | 
					            Log3 $name, 3,
 | 
				
			||||||
              "GardenaSmartBridge ($name) - set interval: $attrVal";
 | 
					              "GardenaSmartBridge ($name) - set interval: $attrVal";
 | 
				
			||||||
@@ -343,7 +344,7 @@ sub Notify {
 | 
				
			|||||||
      if (
 | 
					      if (
 | 
				
			||||||
        (
 | 
					        (
 | 
				
			||||||
            $devtype eq 'Global'
 | 
					            $devtype eq 'Global'
 | 
				
			||||||
            and (
 | 
					            && (
 | 
				
			||||||
                grep /^INITIALIZED$/,
 | 
					                grep /^INITIALIZED$/,
 | 
				
			||||||
                @{$events} or grep /^REREADCFG$/,
 | 
					                @{$events} or grep /^REREADCFG$/,
 | 
				
			||||||
                @{$events} or grep /^DEFINED.$name$/,
 | 
					                @{$events} or grep /^DEFINED.$name$/,
 | 
				
			||||||
@@ -353,11 +354,11 @@ sub Notify {
 | 
				
			|||||||
            )
 | 
					            )
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        or (
 | 
					        || (
 | 
				
			||||||
            $devtype eq 'GardenaSmartBridge'
 | 
					            $devtype eq 'GardenaSmartBridge'
 | 
				
			||||||
            and (
 | 
					            && (
 | 
				
			||||||
                grep /^gardenaAccountPassword.+/,
 | 
					                grep /^gardenaAccountPassword.+/,
 | 
				
			||||||
                @{$events} or ReadingsVal( '$devname', 'token', '' ) eq 'none'
 | 
					                @{$events} || ReadingsVal( '$devname', 'token', '' ) eq 'none'
 | 
				
			||||||
            )
 | 
					            )
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
@@ -365,19 +366,19 @@ sub Notify {
 | 
				
			|||||||
    getDevices($hash)
 | 
					    getDevices($hash)
 | 
				
			||||||
      if (
 | 
					      if (
 | 
				
			||||||
        $devtype eq 'Global'
 | 
					        $devtype eq 'Global'
 | 
				
			||||||
        and (
 | 
					        && (
 | 
				
			||||||
            grep /^DELETEATTR.$name.disable$/,
 | 
					            grep /^DELETEATTR.$name.disable$/,
 | 
				
			||||||
            @{$events} or grep /^ATTR.$name.disable.0$/,
 | 
					            @{$events} or grep /^ATTR.$name.disable.0$/,
 | 
				
			||||||
            @{$events} or grep /^DELETEATTR.$name.interval$/,
 | 
					            @{$events} or grep /^DELETEATTR.$name.interval$/,
 | 
				
			||||||
            @{$events} or grep /^ATTR.$name.interval.[0-9]+/,
 | 
					            @{$events} or grep /^ATTR.$name.interval.[0-9]+/,
 | 
				
			||||||
            @{$events}
 | 
					            @{$events}
 | 
				
			||||||
        )
 | 
					        )
 | 
				
			||||||
        and $init_done
 | 
					        && $init_done
 | 
				
			||||||
      );
 | 
					      );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (
 | 
					    if (
 | 
				
			||||||
        $devtype eq 'GardenaSmartBridge'
 | 
					        $devtype eq 'GardenaSmartBridge'
 | 
				
			||||||
        and (
 | 
					        && (
 | 
				
			||||||
            grep /^state:.Connected$/,
 | 
					            grep /^state:.Connected$/,
 | 
				
			||||||
            @{$events} or grep /^lastRequestState:.request_error$/,
 | 
					            @{$events} or grep /^lastRequestState:.request_error$/,
 | 
				
			||||||
            @{$events}
 | 
					            @{$events}
 | 
				
			||||||
@@ -484,7 +485,7 @@ sub ErrorHandling {
 | 
				
			|||||||
    my $dhash = $hash;
 | 
					    my $dhash = $hash;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $dhash = $modules{GardenaSmartDevice}{defptr}{ $param->{'device_id'} }
 | 
					    $dhash = $modules{GardenaSmartDevice}{defptr}{ $param->{'device_id'} }
 | 
				
			||||||
      unless ( not defined( $param->{'device_id'} ) );
 | 
					      if ( defined( $param->{'device_id'} ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $dname = $dhash->{NAME};
 | 
					    my $dname = $dhash->{NAME};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -510,7 +511,7 @@ sub ErrorHandling {
 | 
				
			|||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            elsif ($err =~ /Keine Route zum Zielrechner/
 | 
					            elsif ($err =~ /Keine Route zum Zielrechner/
 | 
				
			||||||
                or $err =~ /no route to target/ )
 | 
					                || $err =~ /no route to target/ )
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Log3 $dname, 5,
 | 
					                Log3 $dname, 5,
 | 
				
			||||||
@@ -535,7 +536,7 @@ sub ErrorHandling {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( $data eq "" and exists( $param->{code} ) and $param->{code} != 200 ) {
 | 
					    if ( $data eq "" && exists( $param->{code} ) && $param->{code} != 200 ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        readingsBeginUpdate($dhash);
 | 
					        readingsBeginUpdate($dhash);
 | 
				
			||||||
        readingsBulkUpdate( $dhash, "state", $param->{code}, 1 )
 | 
					        readingsBulkUpdate( $dhash, "state", $param->{code}, 1 )
 | 
				
			||||||
@@ -544,7 +545,7 @@ sub ErrorHandling {
 | 
				
			|||||||
        readingsBulkUpdateIfChanged( $dhash, "lastRequestState",
 | 
					        readingsBulkUpdateIfChanged( $dhash, "lastRequestState",
 | 
				
			||||||
            "request_error", 1 );
 | 
					            "request_error", 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ( $param->{code} == 401 and $hash eq $dhash ) {
 | 
					        if ( $param->{code} == 401 && $hash eq $dhash ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            if ( ReadingsVal( $dname, 'token', 'none' ) eq 'none' ) {
 | 
					            if ( ReadingsVal( $dname, 'token', 'none' ) eq 'none' ) {
 | 
				
			||||||
                readingsBulkUpdate( $dhash, "state", "no token available", 1 );
 | 
					                readingsBulkUpdate( $dhash, "state", "no token available", 1 );
 | 
				
			||||||
@@ -557,8 +558,8 @@ sub ErrorHandling {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elsif ($param->{code} == 204
 | 
					        elsif ($param->{code} == 204
 | 
				
			||||||
            and $dhash ne $hash
 | 
					            && $dhash ne $hash
 | 
				
			||||||
            and defined( $dhash->{helper}{deviceAction} ) )
 | 
					            && defined( $dhash->{helper}{deviceAction} ) )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            readingsBulkUpdate( $dhash, "state", "the command is processed",
 | 
					            readingsBulkUpdate( $dhash, "state", "the command is processed",
 | 
				
			||||||
@@ -591,9 +592,9 @@ sub ErrorHandling {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (
 | 
					    if (
 | 
				
			||||||
        $data =~ /Error/
 | 
					        $data =~ /Error/
 | 
				
			||||||
        or (    defined($decode_json)
 | 
					        || (   defined($decode_json)
 | 
				
			||||||
            and ref($decode_json) eq 'HASH'
 | 
					            && ref($decode_json) eq 'HASH'
 | 
				
			||||||
            and defined( $decode_json->{errors} ) )
 | 
					            && defined( $decode_json->{errors} ) )
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        readingsBeginUpdate($dhash);
 | 
					        readingsBeginUpdate($dhash);
 | 
				
			||||||
@@ -605,7 +606,7 @@ sub ErrorHandling {
 | 
				
			|||||||
        if ( $param->{code} == 400 ) {
 | 
					        if ( $param->{code} == 400 ) {
 | 
				
			||||||
            if ($decode_json) {
 | 
					            if ($decode_json) {
 | 
				
			||||||
                if ( ref( $decode_json->{errors} ) eq "ARRAY"
 | 
					                if ( ref( $decode_json->{errors} ) eq "ARRAY"
 | 
				
			||||||
                    and defined( $decode_json->{errors} ) )
 | 
					                    && defined( $decode_json->{errors} ) )
 | 
				
			||||||
                {
 | 
					                {
 | 
				
			||||||
                    readingsBulkUpdate(
 | 
					                    readingsBulkUpdate(
 | 
				
			||||||
                        $dhash,
 | 
					                        $dhash,
 | 
				
			||||||
@@ -644,7 +645,7 @@ sub ErrorHandling {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elsif ( $param->{code} == 404 ) {
 | 
					        elsif ( $param->{code} == 404 ) {
 | 
				
			||||||
            if ( defined( $dhash->{helper}{deviceAction} ) and $dhash ne $hash )
 | 
					            if ( defined( $dhash->{helper}{deviceAction} ) && $dhash ne $hash )
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                readingsBulkUpdate( $dhash, "state", "device Id not found", 1 );
 | 
					                readingsBulkUpdate( $dhash, "state", "device Id not found", 1 );
 | 
				
			||||||
                readingsBulkUpdate( $dhash, "lastRequestState",
 | 
					                readingsBulkUpdate( $dhash, "lastRequestState",
 | 
				
			||||||
@@ -708,7 +709,9 @@ sub ResponseProcessing {
 | 
				
			|||||||
        }
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( defined( $decode_json->{sessions} ) and $decode_json->{sessions} ) {
 | 
					    #     print Dumper $decode_json;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					    if ( defined( $decode_json->{sessions} ) && $decode_json->{sessions} ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $hash->{helper}{session_id} = $decode_json->{sessions}{token};
 | 
					        $hash->{helper}{session_id} = $decode_json->{sessions}{token};
 | 
				
			||||||
        $hash->{helper}{user_id}    = $decode_json->{sessions}{user_id};
 | 
					        $hash->{helper}{user_id}    = $decode_json->{sessions}{user_id};
 | 
				
			||||||
@@ -720,13 +723,12 @@ sub ResponseProcessing {
 | 
				
			|||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    elsif ( not defined( $hash->{helper}{locations_id} )
 | 
					    elsif ( !defined( $hash->{helper}{locations_id} )
 | 
				
			||||||
        and defined( $decode_json->{locations} )
 | 
					        && defined( $decode_json->{locations} )
 | 
				
			||||||
        and ref( $decode_json->{locations} ) eq "ARRAY"
 | 
					        && ref( $decode_json->{locations} ) eq 'ARRAY'
 | 
				
			||||||
        and scalar( @{ $decode_json->{locations} } ) > 0 )
 | 
					        && scalar( @{ $decode_json->{locations} } ) > 0 )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					        for my $location ( @{ $decode_json->{locations} } ) {
 | 
				
			||||||
        foreach my $location ( @{ $decode_json->{locations} } ) {
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $hash->{helper}{locations_id} = $location->{id};
 | 
					            $hash->{helper}{locations_id} = $location->{id};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -739,11 +741,10 @@ sub ResponseProcessing {
 | 
				
			|||||||
        Write( $hash, undef, undef, undef );
 | 
					        Write( $hash, undef, undef, undef );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        return;
 | 
					        return;
 | 
				
			||||||
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    elsif (defined( $decode_json->{devices} )
 | 
					    elsif (defined( $decode_json->{devices} )
 | 
				
			||||||
        and ref( $decode_json->{devices} ) eq "ARRAY"
 | 
					        && ref( $decode_json->{devices} ) eq 'ARRAY'
 | 
				
			||||||
        and scalar( @{ $decode_json->{devices} } ) > 0 )
 | 
					        && scalar( @{ $decode_json->{devices} } ) > 0 )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        my @buffer = split( '"devices":\[', $json );
 | 
					        my @buffer = split( '"devices":\[', $json );
 | 
				
			||||||
@@ -765,19 +766,18 @@ sub ResponseProcessing {
 | 
				
			|||||||
              . " Tail: "
 | 
					              . " Tail: "
 | 
				
			||||||
              . $tail;
 | 
					              . $tail;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            unless ( not defined($tail) and not($tail) ) {
 | 
					            if ( defined($tail) and $tail ) {
 | 
				
			||||||
 | 
					 | 
				
			||||||
                $decode_json = eval { decode_json($json) };
 | 
					                $decode_json = eval { decode_json($json) };
 | 
				
			||||||
                if ($@) {
 | 
					                if ($@) {
 | 
				
			||||||
                    Log3 $name, 3,
 | 
					                    Log3 $name, 5,
 | 
				
			||||||
"GardenaSmartBridge ($name) - JSON error while request: $@";
 | 
					"GardenaSmartBridge ($name) - JSON error while request: $@";
 | 
				
			||||||
                }
 | 
					                }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Dispatch( $hash, $json, undef )
 | 
					                Dispatch( $hash, $json, undef )
 | 
				
			||||||
                  unless ( $decode_json->{category} eq 'gateway' );
 | 
					                  if ( $decode_json->{category} ne 'gateway' );
 | 
				
			||||||
                WriteReadings( $hash, $decode_json )
 | 
					                WriteReadings( $hash, $decode_json )
 | 
				
			||||||
                  if ( defined( $decode_json->{category} )
 | 
					                  if ( defined( $decode_json->{category} )
 | 
				
			||||||
                    and $decode_json->{category} eq 'gateway' );
 | 
					                    && $decode_json->{category} eq 'gateway' );
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            ( $json, $tail ) = ParseJSON( $hash, $tail );
 | 
					            ( $json, $tail ) = ParseJSON( $hash, $tail );
 | 
				
			||||||
@@ -808,9 +808,9 @@ sub WriteReadings {
 | 
				
			|||||||
    my $name = $hash->{NAME};
 | 
					    my $name = $hash->{NAME};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if (   defined( $decode_json->{id} )
 | 
					    if (   defined( $decode_json->{id} )
 | 
				
			||||||
        and $decode_json->{id}
 | 
					        && $decode_json->{id}
 | 
				
			||||||
        and defined( $decode_json->{name} )
 | 
					        && defined( $decode_json->{name} )
 | 
				
			||||||
        and $decode_json->{name} )
 | 
					        && $decode_json->{name} )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        readingsBeginUpdate($hash);
 | 
					        readingsBeginUpdate($hash);
 | 
				
			||||||
        if ( $decode_json->{id} eq $hash->{helper}{locations_id} ) {
 | 
					        if ( $decode_json->{id} eq $hash->{helper}{locations_id} ) {
 | 
				
			||||||
@@ -831,8 +831,8 @@ sub WriteReadings {
 | 
				
			|||||||
                scalar( @{ $decode_json->{zones} } ) );
 | 
					                scalar( @{ $decode_json->{zones} } ) );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elsif ($decode_json->{id} ne $hash->{helper}{locations_id}
 | 
					        elsif ($decode_json->{id} ne $hash->{helper}{locations_id}
 | 
				
			||||||
            and ref( $decode_json->{abilities} ) eq 'ARRAY'
 | 
					            && ref( $decode_json->{abilities} ) eq 'ARRAY'
 | 
				
			||||||
            and ref( $decode_json->{abilities}[0]{properties} ) eq 'ARRAY' )
 | 
					            && ref( $decode_json->{abilities}[0]{properties} ) eq 'ARRAY' )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            my $properties =
 | 
					            my $properties =
 | 
				
			||||||
              scalar( @{ $decode_json->{abilities}[0]{properties} } );
 | 
					              scalar( @{ $decode_json->{abilities}[0]{properties} } );
 | 
				
			||||||
@@ -852,20 +852,20 @@ sub WriteReadings {
 | 
				
			|||||||
                          {name} . '-' . $t,
 | 
					                          {name} . '-' . $t,
 | 
				
			||||||
                        $v
 | 
					                        $v
 | 
				
			||||||
                      )
 | 
					                      )
 | 
				
			||||||
                      unless (
 | 
					                      if (
 | 
				
			||||||
                        $decode_json->{abilities}[0]{properties}[$properties]
 | 
					                        $decode_json->{abilities}[0]{properties}[$properties]
 | 
				
			||||||
                        {name} eq 'ethernet_status'
 | 
					                        {name} ne 'ethernet_status'
 | 
				
			||||||
                        or $decode_json->{abilities}[0]{properties}[$properties]
 | 
					                        || $decode_json->{abilities}[0]{properties}
 | 
				
			||||||
                        {name} eq 'wifi_status' );
 | 
					                        [$properties]{name} ne 'wifi_status' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                    if (
 | 
					                    if (
 | 
				
			||||||
                        (
 | 
					                        (
 | 
				
			||||||
                            $decode_json->{abilities}[0]{properties}
 | 
					                            $decode_json->{abilities}[0]{properties}
 | 
				
			||||||
                            [$properties]{name} eq 'ethernet_status'
 | 
					                            [$properties]{name} eq 'ethernet_status'
 | 
				
			||||||
                            or $decode_json->{abilities}[0]{properties}
 | 
					                            || $decode_json->{abilities}[0]{properties}
 | 
				
			||||||
                            [$properties]{name} eq 'wifi_status'
 | 
					                            [$properties]{name} eq 'wifi_status'
 | 
				
			||||||
                        )
 | 
					                        )
 | 
				
			||||||
                        and ref($v) eq 'HASH'
 | 
					                        && ref($v) eq 'HASH'
 | 
				
			||||||
                      )
 | 
					                      )
 | 
				
			||||||
                    {
 | 
					                    {
 | 
				
			||||||
                        if ( $decode_json->{abilities}[0]{properties}
 | 
					                        if ( $decode_json->{abilities}[0]{properties}
 | 
				
			||||||
@@ -945,17 +945,17 @@ sub getToken {
 | 
				
			|||||||
      if ( AttrVal( $name, 'gardenaAccountEmail', 'none' ) eq 'none' );
 | 
					      if ( AttrVal( $name, 'gardenaAccountEmail', 'none' ) eq 'none' );
 | 
				
			||||||
    return readingsSingleUpdate( $hash, 'state',
 | 
					    return readingsSingleUpdate( $hash, 'state',
 | 
				
			||||||
        'please set gardena account password first', 1 )
 | 
					        'please set gardena account password first', 1 )
 | 
				
			||||||
      if ( not defined( ReadPassword( $hash, $name ) ) );
 | 
					      if ( !defined( ReadPassword( $hash, $name ) ) );
 | 
				
			||||||
    readingsSingleUpdate( $hash, 'state', 'get token', 1 );
 | 
					    readingsSingleUpdate( $hash, 'state', 'get token', 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    delete $hash->{helper}{session_id}
 | 
					    delete $hash->{helper}{session_id}
 | 
				
			||||||
      if ( defined( $hash->{helper}{session_id} )
 | 
					      if ( defined( $hash->{helper}{session_id} )
 | 
				
			||||||
        and $hash->{helper}{session_id} );
 | 
					        && $hash->{helper}{session_id} );
 | 
				
			||||||
    delete $hash->{helper}{user_id}
 | 
					    delete $hash->{helper}{user_id}
 | 
				
			||||||
      if ( defined( $hash->{helper}{user_id} ) and $hash->{helper}{user_id} );
 | 
					      if ( defined( $hash->{helper}{user_id} ) && $hash->{helper}{user_id} );
 | 
				
			||||||
    delete $hash->{helper}{locations_id}
 | 
					    delete $hash->{helper}{locations_id}
 | 
				
			||||||
      if ( defined( $hash->{helper}{locations_id} )
 | 
					      if ( defined( $hash->{helper}{locations_id} )
 | 
				
			||||||
        and $hash->{helper}{locations_id} );
 | 
					        && $hash->{helper}{locations_id} );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    Write(
 | 
					    Write(
 | 
				
			||||||
        $hash,
 | 
					        $hash,
 | 
				
			||||||
@@ -1072,14 +1072,14 @@ sub ParseJSON {
 | 
				
			|||||||
    my $tail  = '';
 | 
					    my $tail  = '';
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ($buffer) {
 | 
					    if ($buffer) {
 | 
				
			||||||
        foreach my $c ( split //, $buffer ) {
 | 
					        for my $c ( split //, $buffer ) {
 | 
				
			||||||
            if ( $open == $close and $open > 0 ) {
 | 
					            if ( $open == $close && $open > 0 ) {
 | 
				
			||||||
                $tail .= $c;
 | 
					                $tail .= $c;
 | 
				
			||||||
                Log3 $name, 5,
 | 
					                Log3 $name, 5,
 | 
				
			||||||
                  "GardenaSmartBridge ($name) - $open == $close and $open > 0";
 | 
					                  "GardenaSmartBridge ($name) - $open == $close and $open > 0";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            }
 | 
					            }
 | 
				
			||||||
            elsif ( ( $open == $close ) and ( $c ne '{' ) ) {
 | 
					            elsif ( ( $open == $close ) && ( $c ne '{' ) ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                Log3 $name, 5,
 | 
					                Log3 $name, 5,
 | 
				
			||||||
"GardenaSmartBridge ($name) - Garbage character before message: "
 | 
					"GardenaSmartBridge ($name) - Garbage character before message: "
 | 
				
			||||||
@@ -1124,25 +1124,25 @@ sub createHttpValueStrings {
 | 
				
			|||||||
    $header .= "\r\nX-Session: $session_id"
 | 
					    $header .= "\r\nX-Session: $session_id"
 | 
				
			||||||
      if ( defined( $hash->{helper}{session_id} ) );
 | 
					      if ( defined( $hash->{helper}{session_id} ) );
 | 
				
			||||||
    $payload = '{' . $payload . '}' if ( defined($payload) );
 | 
					    $payload = '{' . $payload . '}' if ( defined($payload) );
 | 
				
			||||||
    $payload = '{}' if ( not defined($payload) );
 | 
					    $payload = '{}' if ( !defined($payload) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( $payload eq '{}' ) {
 | 
					    if ( $payload eq '{}' ) {
 | 
				
			||||||
        $method = 'GET';
 | 
					        $method = 'GET';
 | 
				
			||||||
        $uri .= '/locations/?user_id=' . $hash->{helper}{user_id}
 | 
					        $uri .= '/locations/?user_id=' . $hash->{helper}{user_id}
 | 
				
			||||||
          if ( exists( $hash->{helper}{user_id} )
 | 
					          if ( exists( $hash->{helper}{user_id} )
 | 
				
			||||||
            and not defined( $hash->{helper}{locations_id} ) );
 | 
					            && !defined( $hash->{helper}{locations_id} ) );
 | 
				
			||||||
        readingsSingleUpdate( $hash, 'state', 'fetch locationId', 1 )
 | 
					        readingsSingleUpdate( $hash, 'state', 'fetch locationId', 1 )
 | 
				
			||||||
          if ( not defined( $hash->{helper}{locations_id} ) );
 | 
					          if ( !defined( $hash->{helper}{locations_id} ) );
 | 
				
			||||||
        $uri .= '/sessions' if ( not defined( $hash->{helper}{session_id} ) );
 | 
					        $uri .= '/sessions' if ( !defined( $hash->{helper}{session_id} ) );
 | 
				
			||||||
        $uri .= '/devices'
 | 
					        $uri .= '/devices'
 | 
				
			||||||
          if ( not defined($abilities)
 | 
					          if (!defined($abilities)
 | 
				
			||||||
            and defined( $hash->{helper}{locations_id} ) );
 | 
					            && defined( $hash->{helper}{locations_id} ) );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    $uri .= '/sessions' if ( not defined( $hash->{helper}{session_id} ) );
 | 
					    $uri .= '/sessions' if ( !defined( $hash->{helper}{session_id} ) );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( defined( $hash->{helper}{locations_id} ) ) {
 | 
					    if ( defined( $hash->{helper}{locations_id} ) ) {
 | 
				
			||||||
        if ( defined($abilities) and $abilities eq 'mower_settings' ) {
 | 
					        if ( defined($abilities) && $abilities eq 'mower_settings' ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            $method = 'PUT';
 | 
					            $method = 'PUT';
 | 
				
			||||||
            my $dhash = $modules{GardenaSmartDevice}{defptr}{$deviceId};
 | 
					            my $dhash = $modules{GardenaSmartDevice}{defptr}{$deviceId};
 | 
				
			||||||
@@ -1152,13 +1152,13 @@ sub createHttpValueStrings {
 | 
				
			|||||||
              . '/settings/'
 | 
					              . '/settings/'
 | 
				
			||||||
              . $dhash->{helper}{STARTINGPOINTID}
 | 
					              . $dhash->{helper}{STARTINGPOINTID}
 | 
				
			||||||
              if ( defined($abilities)
 | 
					              if ( defined($abilities)
 | 
				
			||||||
                and defined($payload)
 | 
					                && defined($payload)
 | 
				
			||||||
                and $abilities eq 'mower_settings' );
 | 
					                && $abilities eq 'mower_settings' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elsif (defined($abilities)
 | 
					        elsif (defined($abilities)
 | 
				
			||||||
            and defined($payload)
 | 
					            && defined($payload)
 | 
				
			||||||
            and $abilities eq 'watering' )
 | 
					            && $abilities eq 'watering' )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            my $valve_id;
 | 
					            my $valve_id;
 | 
				
			||||||
            $method = 'PUT';
 | 
					            $method = 'PUT';
 | 
				
			||||||
@@ -1176,8 +1176,8 @@ sub createHttpValueStrings {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elsif (defined($abilities)
 | 
					        elsif (defined($abilities)
 | 
				
			||||||
            and defined($payload)
 | 
					            && defined($payload)
 | 
				
			||||||
            and $abilities eq 'manual_watering' )
 | 
					            && $abilities eq 'manual_watering' )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            my $valve_id;
 | 
					            my $valve_id;
 | 
				
			||||||
            $method = 'PUT';
 | 
					            $method = 'PUT';
 | 
				
			||||||
@@ -1191,8 +1191,8 @@ sub createHttpValueStrings {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
        elsif (defined($abilities)
 | 
					        elsif (defined($abilities)
 | 
				
			||||||
            and defined($payload)
 | 
					            && defined($payload)
 | 
				
			||||||
            and $abilities eq 'power' )
 | 
					            && $abilities eq 'power' )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            my $valve_id;
 | 
					            my $valve_id;
 | 
				
			||||||
            $method = 'PUT';
 | 
					            $method = 'PUT';
 | 
				
			||||||
@@ -1208,7 +1208,7 @@ sub createHttpValueStrings {
 | 
				
			|||||||
        else {
 | 
					        else {
 | 
				
			||||||
            $uri .=
 | 
					            $uri .=
 | 
				
			||||||
              '/devices/' . $deviceId . '/abilities/' . $abilities . '/command'
 | 
					              '/devices/' . $deviceId . '/abilities/' . $abilities . '/command'
 | 
				
			||||||
              if ( defined($abilities) and defined($payload) );
 | 
					              if ( defined($abilities) && defined($payload) );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        $uri .= '?locationId=' . $hash->{helper}{locations_id};
 | 
					        $uri .= '?locationId=' . $hash->{helper}{locations_id};
 | 
				
			||||||
 
 | 
				
			|||||||
@@ -57,8 +57,6 @@
 | 
				
			|||||||
package FHEM::GardenaSmartDevice;
 | 
					package FHEM::GardenaSmartDevice;
 | 
				
			||||||
use GPUtils qw(GP_Import GP_Export);
 | 
					use GPUtils qw(GP_Import GP_Export);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $missingModul = "";
 | 
					 | 
				
			||||||
 | 
					 | 
				
			||||||
use strict;
 | 
					use strict;
 | 
				
			||||||
use warnings;
 | 
					use warnings;
 | 
				
			||||||
use POSIX;
 | 
					use POSIX;
 | 
				
			||||||
@@ -198,9 +196,6 @@ sub Define {
 | 
				
			|||||||
    return
 | 
					    return
 | 
				
			||||||
      "too few parameters: define <NAME> GardenaSmartDevice <device_Id> <model>"
 | 
					      "too few parameters: define <NAME> GardenaSmartDevice <device_Id> <model>"
 | 
				
			||||||
      if ( scalar( @{$a} ) < 3 );
 | 
					      if ( scalar( @{$a} ) < 3 );
 | 
				
			||||||
    return
 | 
					 | 
				
			||||||
"Cannot define Gardena Bridge device. Perl modul $missingModul is missing."
 | 
					 | 
				
			||||||
      if ($missingModul);
 | 
					 | 
				
			||||||
 | 
					
 | 
				
			||||||
    my $name     = $a->[0];
 | 
					    my $name     = $a->[0];
 | 
				
			||||||
    my $deviceId = $a->[2];
 | 
					    my $deviceId = $a->[2];
 | 
				
			||||||
@@ -233,8 +228,8 @@ sub Define {
 | 
				
			|||||||
    return
 | 
					    return
 | 
				
			||||||
"GardenaSmartDevice device $name on GardenaSmartBridge $iodev already defined."
 | 
					"GardenaSmartDevice device $name on GardenaSmartBridge $iodev already defined."
 | 
				
			||||||
      if ( defined($d)
 | 
					      if ( defined($d)
 | 
				
			||||||
        and $d->{IODev} == $hash->{IODev}
 | 
					        && $d->{IODev} == $hash->{IODev}
 | 
				
			||||||
        and $d->{NAME} ne $name );
 | 
					        && $d->{NAME} ne $name );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    CommandAttr( undef, $name . ' room GardenaSmart' )
 | 
					    CommandAttr( undef, $name . ' room GardenaSmart' )
 | 
				
			||||||
      if ( AttrVal( $name, 'room', 'none' ) eq 'none' );
 | 
					      if ( AttrVal( $name, 'room', 'none' ) eq 'none' );
 | 
				
			||||||
@@ -335,9 +330,9 @@ sub Set {
 | 
				
			|||||||
          . ',"valve_id":'
 | 
					          . ',"valve_id":'
 | 
				
			||||||
          . $valve_id . '}}';
 | 
					          . $valve_id . '}}';
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    elsif ( lc $cmd eq 'on' or lc $cmd eq 'off' or lc $cmd eq 'on-for-timer' ) {
 | 
					    elsif ( lc $cmd eq 'on' || lc $cmd eq 'off' || lc $cmd eq 'on-for-timer' ) {
 | 
				
			||||||
        my $val = (
 | 
					        my $val = (
 | 
				
			||||||
            defined($a) and ref($a) eq 'ARRAY'
 | 
					            defined($a) && ref($a) eq 'ARRAY'
 | 
				
			||||||
            ? $a->[0] * 60
 | 
					            ? $a->[0] * 60
 | 
				
			||||||
            : lc $cmd
 | 
					            : lc $cmd
 | 
				
			||||||
        );
 | 
					        );
 | 
				
			||||||
@@ -402,7 +397,7 @@ sub Set {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    $abilities = 'mower'
 | 
					    $abilities = 'mower'
 | 
				
			||||||
      if ( AttrVal( $name, 'model', 'unknown' ) eq 'mower' )
 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'mower' )
 | 
				
			||||||
      and $abilities ne 'mower_settings';
 | 
					      && $abilities ne 'mower_settings';
 | 
				
			||||||
    $abilities = 'watering'
 | 
					    $abilities = 'watering'
 | 
				
			||||||
      if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24'
 | 
					      if ( AttrVal( $name, 'model', 'unknown' ) eq 'ic24'
 | 
				
			||||||
        || AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' );
 | 
					        || AttrVal( $name, 'model', 'unknown' ) eq 'watering_computer' );
 | 
				
			||||||
@@ -480,11 +475,10 @@ sub WriteReadings {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
        if (
 | 
					        if (
 | 
				
			||||||
            ref( $decode_json->{abilities}[$abilities]{properties} ) eq "ARRAY"
 | 
					            ref( $decode_json->{abilities}[$abilities]{properties} ) eq "ARRAY"
 | 
				
			||||||
            and
 | 
					            && scalar( @{ $decode_json->{abilities}[$abilities]{properties} } )
 | 
				
			||||||
            scalar( @{ $decode_json->{abilities}[$abilities]{properties} } ) >
 | 
					            > 0 )
 | 
				
			||||||
            0 )
 | 
					 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            foreach my $propertie (
 | 
					            for my $propertie (
 | 
				
			||||||
                @{ $decode_json->{abilities}[$abilities]{properties} } )
 | 
					                @{ $decode_json->{abilities}[$abilities]{properties} } )
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                readingsBulkUpdateIfChanged(
 | 
					                readingsBulkUpdateIfChanged(
 | 
				
			||||||
@@ -494,21 +488,21 @@ sub WriteReadings {
 | 
				
			|||||||
                    RigRadingsValue( $hash, $propertie->{value} )
 | 
					                    RigRadingsValue( $hash, $propertie->{value} )
 | 
				
			||||||
                  )
 | 
					                  )
 | 
				
			||||||
                  if ( defined( $propertie->{value} )
 | 
					                  if ( defined( $propertie->{value} )
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} ne 'radio-quality'
 | 
					                    . $propertie->{name} ne 'radio-quality'
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} ne 'battery-level'
 | 
					                    . $propertie->{name} ne 'battery-level'
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} ne 'internal_temperature-temperature'
 | 
					                    . $propertie->{name} ne 'internal_temperature-temperature'
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} ne 'ambient_temperature-temperature'
 | 
					                    . $propertie->{name} ne 'ambient_temperature-temperature'
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} ne 'soil_temperature-temperature'
 | 
					                    . $propertie->{name} ne 'soil_temperature-temperature'
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} ne 'humidity-humidity'
 | 
					                    . $propertie->{name} ne 'humidity-humidity'
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} ne 'light-light'
 | 
					                    . $propertie->{name} ne 'light-light'
 | 
				
			||||||
                    and ref( $propertie->{value} ) ne "HASH" );
 | 
					                    && ref( $propertie->{value} ) ne "HASH" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                readingsBulkUpdate(
 | 
					                readingsBulkUpdate(
 | 
				
			||||||
                    $hash,
 | 
					                    $hash,
 | 
				
			||||||
@@ -518,21 +512,21 @@ sub WriteReadings {
 | 
				
			|||||||
                  )
 | 
					                  )
 | 
				
			||||||
                  if (
 | 
					                  if (
 | 
				
			||||||
                    defined( $propertie->{value} )
 | 
					                    defined( $propertie->{value} )
 | 
				
			||||||
                    and ( $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && (  $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                        . $propertie->{name} eq 'radio-quality'
 | 
					                        . $propertie->{name} eq 'radio-quality'
 | 
				
			||||||
                        or $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                        || $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                        . $propertie->{name} eq 'battery-level'
 | 
					                        . $propertie->{name} eq 'battery-level'
 | 
				
			||||||
                        or $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                        || $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                        . $propertie->{name} eq
 | 
					                        . $propertie->{name} eq
 | 
				
			||||||
                        'internal_temperature-temperature'
 | 
					                        'internal_temperature-temperature'
 | 
				
			||||||
                        or $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                        || $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                        . $propertie->{name} eq
 | 
					                        . $propertie->{name} eq
 | 
				
			||||||
                        'ambient_temperature-temperature'
 | 
					                        'ambient_temperature-temperature'
 | 
				
			||||||
                        or $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                        || $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                        . $propertie->{name} eq 'soil_temperature-temperature'
 | 
					                        . $propertie->{name} eq 'soil_temperature-temperature'
 | 
				
			||||||
                        or $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                        || $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                        . $propertie->{name} eq 'humidity-humidity'
 | 
					                        . $propertie->{name} eq 'humidity-humidity'
 | 
				
			||||||
                        or $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                        || $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                        . $propertie->{name} eq 'light-light' )
 | 
					                        . $propertie->{name} eq 'light-light' )
 | 
				
			||||||
                  );
 | 
					                  );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -543,7 +537,7 @@ sub WriteReadings {
 | 
				
			|||||||
                    join( ',', @{ $propertie->{value} } )
 | 
					                    join( ',', @{ $propertie->{value} } )
 | 
				
			||||||
                  )
 | 
					                  )
 | 
				
			||||||
                  if ( defined( $propertie->{value} )
 | 
					                  if ( defined( $propertie->{value} )
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} eq 'ic24-valves_connected' );
 | 
					                    . $propertie->{name} eq 'ic24-valves_connected' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                readingsBulkUpdateIfChanged(
 | 
					                readingsBulkUpdateIfChanged(
 | 
				
			||||||
@@ -553,7 +547,7 @@ sub WriteReadings {
 | 
				
			|||||||
                    join( ',', @{ $propertie->{value} } )
 | 
					                    join( ',', @{ $propertie->{value} } )
 | 
				
			||||||
                  )
 | 
					                  )
 | 
				
			||||||
                  if ( defined( $propertie->{value} )
 | 
					                  if ( defined( $propertie->{value} )
 | 
				
			||||||
                    and $decode_json->{abilities}[$abilities]{name} . '-'
 | 
					                    && $decode_json->{abilities}[$abilities]{name} . '-'
 | 
				
			||||||
                    . $propertie->{name} eq 'ic24-valves_master_config' );
 | 
					                    . $propertie->{name} eq 'ic24-valves_master_config' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
                if ( ref( $propertie->{value} ) eq "HASH" ) {
 | 
					                if ( ref( $propertie->{value} ) eq "HASH" ) {
 | 
				
			||||||
@@ -576,7 +570,7 @@ sub WriteReadings {
 | 
				
			|||||||
    do {
 | 
					    do {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
        if ( ref( $decode_json->{settings}[$settings]{value} ) eq "ARRAY"
 | 
					        if ( ref( $decode_json->{settings}[$settings]{value} ) eq "ARRAY"
 | 
				
			||||||
            and $decode_json->{settings}[$settings]{name} eq 'starting_points' )
 | 
					            && $decode_json->{settings}[$settings]{name} eq 'starting_points' )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
            #save the startingpointid needed to update the startingpoints
 | 
					            #save the startingpointid needed to update the startingpoints
 | 
				
			||||||
            if ( $hash->{helper}{STARTINGPOINTID} ne
 | 
					            if ( $hash->{helper}{STARTINGPOINTID} ne
 | 
				
			||||||
@@ -591,7 +585,7 @@ sub WriteReadings {
 | 
				
			|||||||
              . encode_json( $decode_json->{settings}[$settings]{value} ) . '}';
 | 
					              . encode_json( $decode_json->{settings}[$settings]{value} ) . '}';
 | 
				
			||||||
            my $startpoint_cnt = 0;
 | 
					            my $startpoint_cnt = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            foreach my $startingpoint (
 | 
					            for my $startingpoint (
 | 
				
			||||||
                @{ $decode_json->{settings}[$settings]{value} } )
 | 
					                @{ $decode_json->{settings}[$settings]{value} } )
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                $startpoint_cnt++;
 | 
					                $startpoint_cnt++;
 | 
				
			||||||
@@ -762,9 +756,9 @@ sub ReadingLangGerman {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if (
 | 
					    if (
 | 
				
			||||||
        defined( $langGermanMapp{$readingValue} )
 | 
					        defined( $langGermanMapp{$readingValue} )
 | 
				
			||||||
        and (  AttrVal( 'global', 'language', 'none' ) eq 'DE'
 | 
					        && (   AttrVal( 'global', 'language', 'none' ) eq 'DE'
 | 
				
			||||||
            or AttrVal( $name, 'readingValueLanguage', 'none' ) eq 'de' )
 | 
					            || AttrVal( $name, 'readingValueLanguage', 'none' ) eq 'de' )
 | 
				
			||||||
        and AttrVal( $name, 'readingValueLanguage', 'none' ) ne 'en'
 | 
					        && AttrVal( $name, 'readingValueLanguage', 'none' ) ne 'en'
 | 
				
			||||||
      )
 | 
					      )
 | 
				
			||||||
    {
 | 
					    {
 | 
				
			||||||
        return $langGermanMapp{$readingValue};
 | 
					        return $langGermanMapp{$readingValue};
 | 
				
			||||||
@@ -841,9 +835,9 @@ sub SetPredefinedStartPoints {
 | 
				
			|||||||
    my $payload;
 | 
					    my $payload;
 | 
				
			||||||
    my $abilities;
 | 
					    my $abilities;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if ( defined($startpoint_state) and defined($startpoint_num) ) {
 | 
					    if ( defined($startpoint_state) && defined($startpoint_num) ) {
 | 
				
			||||||
        if ( defined( $hash->{helper}{STARTINGPOINTS} )
 | 
					        if ( defined( $hash->{helper}{STARTINGPOINTS} )
 | 
				
			||||||
            and $hash->{helper}{STARTINGPOINTS} ne '' )
 | 
					            && $hash->{helper}{STARTINGPOINTS} ne '' )
 | 
				
			||||||
        {
 | 
					        {
 | 
				
			||||||
# add needed parameters to saved settings config and change the value in request
 | 
					# add needed parameters to saved settings config and change the value in request
 | 
				
			||||||
            my $decode_json_settings =
 | 
					            my $decode_json_settings =
 | 
				
			||||||
@@ -861,8 +855,8 @@ sub SetPredefinedStartPoints {
 | 
				
			|||||||
            #set more startpoints
 | 
					            #set more startpoints
 | 
				
			||||||
            if (
 | 
					            if (
 | 
				
			||||||
                defined scalar(@morestartpoints)
 | 
					                defined scalar(@morestartpoints)
 | 
				
			||||||
                and (  scalar(@morestartpoints) == 2
 | 
					                && (   scalar(@morestartpoints) == 2
 | 
				
			||||||
                    or scalar(@morestartpoints) == 4 )
 | 
					                    || scalar(@morestartpoints) == 4 )
 | 
				
			||||||
              )
 | 
					              )
 | 
				
			||||||
            {
 | 
					            {
 | 
				
			||||||
                if ( scalar(@morestartpoints) == 2 ) {
 | 
					                if ( scalar(@morestartpoints) == 2 ) {
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user