add commandref summary, code design
This commit is contained in:
		
							
								
								
									
										494
									
								
								74_HOMBOT.pm
									
									
									
									
									
								
							
							
						
						
									
										494
									
								
								74_HOMBOT.pm
									
									
									
									
									
								
							@@ -35,7 +35,7 @@ use Time::HiRes qw(gettimeofday);
 | 
				
			|||||||
use HttpUtils;
 | 
					use HttpUtils;
 | 
				
			||||||
use Blocking;
 | 
					use Blocking;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
my $version = "0.2.4";
 | 
					my $version = "0.2.5";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -51,14 +51,14 @@ sub HOMBOT_Initialize($) {
 | 
				
			|||||||
    $hash->{FW_detailFn}  = "HOMBOT_DetailFn";
 | 
					    $hash->{FW_detailFn}  = "HOMBOT_DetailFn";
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    $hash->{AttrList} 	= "interval ".
 | 
					    $hash->{AttrList} 	= "interval ".
 | 
				
			||||||
			  "disable:1 ".
 | 
					                "disable:1 ".
 | 
				
			||||||
			  $readingFnAttributes;
 | 
					                $readingFnAttributes;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    foreach my $d(sort keys %{$modules{HOMBOT}{defptr}}) {
 | 
					    foreach my $d(sort keys %{$modules{HOMBOT}{defptr}}) {
 | 
				
			||||||
	my $hash = $modules{HOMBOT}{defptr}{$d};
 | 
					        my $hash = $modules{HOMBOT}{defptr}{$d};
 | 
				
			||||||
	$hash->{VERSION} 	= $version;
 | 
					        $hash->{VERSION} 	= $version;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
@@ -126,56 +126,56 @@ sub HOMBOT_Attr(@) {
 | 
				
			|||||||
    my $hash = $defs{$name};
 | 
					    my $hash = $defs{$name};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    if( $attrName eq "disable" ) {
 | 
					    if( $attrName eq "disable" ) {
 | 
				
			||||||
	if( $cmd eq "set" ) {
 | 
					        if( $cmd eq "set" ) {
 | 
				
			||||||
	    if( $attrVal eq "0" ) {
 | 
					            if( $attrVal eq "0" ) {
 | 
				
			||||||
		RemoveInternalTimer( $hash );
 | 
					            RemoveInternalTimer( $hash );
 | 
				
			||||||
		InternalTimer( gettimeofday()+2, "HOMBOT_Get_stateRequest", $hash, 0 ) if( ReadingsVal( $hash->{NAME}, "state", 0 ) eq "disabled" );
 | 
					            InternalTimer( gettimeofday()+2, "HOMBOT_Get_stateRequest", $hash, 0 ) if( ReadingsVal( $hash->{NAME}, "state", 0 ) eq "disabled" );
 | 
				
			||||||
		readingsSingleUpdate ( $hash, "state", "active", 1 );
 | 
					            readingsSingleUpdate ( $hash, "state", "active", 1 );
 | 
				
			||||||
		Log3 $name, 3, "HOMBOT ($name) - enabled";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - enabled";
 | 
				
			||||||
	    } else {
 | 
					            } else {
 | 
				
			||||||
		readingsSingleUpdate ( $hash, "state", "disabled", 1 );
 | 
					            readingsSingleUpdate ( $hash, "state", "disabled", 1 );
 | 
				
			||||||
		RemoveInternalTimer( $hash );
 | 
					            RemoveInternalTimer( $hash );
 | 
				
			||||||
		Log3 $name, 3, "HOMBOT ($name) - disabled";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - disabled";
 | 
				
			||||||
	    }
 | 
					            }
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
	elsif( $cmd eq "del" ) {
 | 
					        elsif( $cmd eq "del" ) {
 | 
				
			||||||
	    RemoveInternalTimer( $hash );
 | 
					            RemoveInternalTimer( $hash );
 | 
				
			||||||
	    InternalTimer( gettimeofday()+2, "HOMBOT_Get_stateRequest", $hash, 0 ) if( ReadingsVal( $hash->{NAME}, "state", 0 ) eq "disabled" );
 | 
					            InternalTimer( gettimeofday()+2, "HOMBOT_Get_stateRequest", $hash, 0 ) if( ReadingsVal( $hash->{NAME}, "state", 0 ) eq "disabled" );
 | 
				
			||||||
	    readingsSingleUpdate ( $hash, "state", "active", 1 );
 | 
					            readingsSingleUpdate ( $hash, "state", "active", 1 );
 | 
				
			||||||
	    Log3 $name, 3, "HOMBOT ($name) - enabled";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - enabled";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	} else {
 | 
					        } else {
 | 
				
			||||||
	    if($cmd eq "set") {
 | 
					            if($cmd eq "set") {
 | 
				
			||||||
		$attr{$name}{$attrName} = $attrVal;
 | 
					            $attr{$name}{$attrName} = $attrVal;
 | 
				
			||||||
		Log3 $name, 3, "HOMBOT ($name) - $attrName : $attrVal";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - $attrName : $attrVal";
 | 
				
			||||||
	    }
 | 
					            }
 | 
				
			||||||
	    elsif( $cmd eq "del" ) {
 | 
					            elsif( $cmd eq "del" ) {
 | 
				
			||||||
	    }
 | 
					            }
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
    }
 | 
					        }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    if( $attrName eq "interval" ) {
 | 
					        if( $attrName eq "interval" ) {
 | 
				
			||||||
	if( $cmd eq "set" ) {
 | 
					        if( $cmd eq "set" ) {
 | 
				
			||||||
	    if( $attrVal < 60 ) {
 | 
					            if( $attrVal < 60 ) {
 | 
				
			||||||
		Log3 $name, 3, "HOMBOT ($name) - interval too small, please use something > 60 (sec), default is 180 (sec)";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - interval too small, please use something > 60 (sec), default is 180 (sec)";
 | 
				
			||||||
		return "interval too small, please use something > 60 (sec), default is 180 (sec)";
 | 
					            return "interval too small, please use something > 60 (sec), default is 180 (sec)";
 | 
				
			||||||
	    } else {
 | 
					            } else {
 | 
				
			||||||
		$hash->{INTERVAL} = $attrVal;
 | 
					            $hash->{INTERVAL} = $attrVal;
 | 
				
			||||||
		Log3 $name, 3, "HOMBOT ($name) - set interval to $attrVal";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - set interval to $attrVal";
 | 
				
			||||||
	    }
 | 
					            }
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
	elsif( $cmd eq "del" ) {
 | 
					        elsif( $cmd eq "del" ) {
 | 
				
			||||||
	    $hash->{INTERVAL} = 180;
 | 
					            $hash->{INTERVAL} = 180;
 | 
				
			||||||
	    Log3 $name, 3, "HOMBOT ($name) - set interval to default";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - set interval to default";
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
	} else {
 | 
					        } else {
 | 
				
			||||||
	    if( $cmd eq "set" ) {
 | 
					            if( $cmd eq "set" ) {
 | 
				
			||||||
		$attr{$name}{$attrName} = $attrVal;
 | 
					            $attr{$name}{$attrName} = $attrVal;
 | 
				
			||||||
		Log3 $name, 3, "HOMBOT ($name) - $attrName : $attrVal";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - $attrName : $attrVal";
 | 
				
			||||||
	    }
 | 
					            }
 | 
				
			||||||
	    elsif( $cmd eq "del" ) {
 | 
					            elsif( $cmd eq "del" ) {
 | 
				
			||||||
	    }
 | 
					            }
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    return undef;
 | 
					    return undef;
 | 
				
			||||||
@@ -229,16 +229,16 @@ sub HOMBOT_getStatusTXT($) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    HttpUtils_NonblockingGet(
 | 
					    HttpUtils_NonblockingGet(
 | 
				
			||||||
	{
 | 
					    {
 | 
				
			||||||
	    url		=> $url,
 | 
					        url         => $url,
 | 
				
			||||||
	    timeout	=> 10,
 | 
					        timeout     => 10,
 | 
				
			||||||
	    hash	=> $hash,
 | 
					        hash        => $hash,
 | 
				
			||||||
	    method	=> "GET",
 | 
					        method      => "GET",
 | 
				
			||||||
	    doTrigger	=> 1,
 | 
					        doTrigger   => 1,
 | 
				
			||||||
	    callback	=> \&HOMBOT_RetrieveHomebotInfoFinished,
 | 
					        callback    => \&HOMBOT_RetrieveHomebotInfoFinished,
 | 
				
			||||||
	    id          => "statustxt",
 | 
					        id          => "statustxt",
 | 
				
			||||||
	}
 | 
					    });
 | 
				
			||||||
    );
 | 
					    
 | 
				
			||||||
    Log3 $name, 4, "HOMBOT ($name) - NonblockingGet get URL";
 | 
					    Log3 $name, 4, "HOMBOT ($name) - NonblockingGet get URL";
 | 
				
			||||||
    Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Retrieve status.txt Information: calling Host: $host";
 | 
					    Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Retrieve status.txt Information: calling Host: $host";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -255,16 +255,16 @@ sub HOMBOT_getStatisticHTML($) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    HttpUtils_NonblockingGet(
 | 
					    HttpUtils_NonblockingGet(
 | 
				
			||||||
	{
 | 
					    {
 | 
				
			||||||
	    url		=> $url,
 | 
					        url         => $url,
 | 
				
			||||||
	    timeout	=> 10,
 | 
					        timeout     => 10,
 | 
				
			||||||
	    hash	=> $hash,
 | 
					        hash        => $hash,
 | 
				
			||||||
	    method	=> "GET",
 | 
					        method      => "GET",
 | 
				
			||||||
	    doTrigger	=> 1,
 | 
					        doTrigger   => 1,
 | 
				
			||||||
	    callback	=> \&HOMBOT_RetrieveHomebotInfoFinished,
 | 
					        callback    => \&HOMBOT_RetrieveHomebotInfoFinished,
 | 
				
			||||||
	    id          => "statistichtml",
 | 
					        id          => "statistichtml",
 | 
				
			||||||
	}
 | 
					    });
 | 
				
			||||||
    );
 | 
					    
 | 
				
			||||||
    Log3 $name, 4, "HOMBOT ($name) - NonblockingGet get URL";
 | 
					    Log3 $name, 4, "HOMBOT ($name) - NonblockingGet get URL";
 | 
				
			||||||
    Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Retrieve statistic.html Information: calling Host: $host";
 | 
					    Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Retrieve statistic.html Information: calling Host: $host";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -281,16 +281,16 @@ sub HOMBOT_getSchedule($) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    HttpUtils_NonblockingGet(
 | 
					    HttpUtils_NonblockingGet(
 | 
				
			||||||
	{
 | 
					    {
 | 
				
			||||||
	    url		=> $url,
 | 
					        url         => $url,
 | 
				
			||||||
	    timeout	=> 10,
 | 
					        timeout     => 10,
 | 
				
			||||||
	    hash	=> $hash,
 | 
					        hash        => $hash,
 | 
				
			||||||
	    method	=> "GET",
 | 
					        method      => "GET",
 | 
				
			||||||
	    doTrigger	=> 1,
 | 
					        doTrigger   => 1,
 | 
				
			||||||
	    callback	=> \&HOMBOT_RetrieveHomebotInfoFinished,
 | 
					        callback    => \&HOMBOT_RetrieveHomebotInfoFinished,
 | 
				
			||||||
	    id          => "schedule",
 | 
					        id          => "schedule",
 | 
				
			||||||
	}
 | 
					    });
 | 
				
			||||||
    );
 | 
					    
 | 
				
			||||||
    Log3 $name, 4, "HOMBOT ($name) - NonblockingGet get URL";
 | 
					    Log3 $name, 4, "HOMBOT ($name) - NonblockingGet get URL";
 | 
				
			||||||
    Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Retrieve Schedule Information: calling Host: $host";
 | 
					    Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Retrieve Schedule Information: calling Host: $host";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
@@ -311,57 +311,58 @@ sub HOMBOT_RetrieveHomebotInfoFinished($$$) {
 | 
				
			|||||||
    ### Begin Error Handling
 | 
					    ### Begin Error Handling
 | 
				
			||||||
    if( $hash->{helper}{requestErrorCounter} > 1 ) {
 | 
					    if( $hash->{helper}{requestErrorCounter} > 1 ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsSingleUpdate( $hash, "lastStatusRequestState", "statusRequest_error", 1 );
 | 
					    readingsSingleUpdate( $hash, "lastStatusRequestState", "statusRequest_error", 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					        if( $hash->{helper}{requestErrorCounter} > 1 && ReadingsVal( $name, "luigiHttpSrvState", "not running" ) eq "running"  ) {
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
	if( $hash->{helper}{requestErrorCounter} > 1 && ReadingsVal( $name, "luigiHttpSrvState", "not running" ) eq "running"  ) {
 | 
					                Log3 $name, 3, "HOMBOT ($name) - Connecting Problem, will check Luigi HTTP Server" unless(exists($hash->{helper}{RUNNING_PID}));
 | 
				
			||||||
                
 | 
					                
 | 
				
			||||||
            Log3 $name, 3, "HOMBOT ($name) - Connecting Problem, will check Luigi HTTP Server" unless(exists($hash->{helper}{RUNNING_PID}));
 | 
					                $hash->{helper}{RUNNING_PID} = BlockingCall("HOMBOT_Check_Bot_Alive", $name."|request", "HOMBOT_Evaluation_Bot_Alive", 15, "HOMBOT_Aborted_Bot_Alive", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
 | 
				
			||||||
            
 | 
					 | 
				
			||||||
            $hash->{helper}{RUNNING_PID} = BlockingCall("HOMBOT_Check_Bot_Alive", $name."|request", "HOMBOT_Evaluation_Bot_Alive", 15, "HOMBOT_Aborted_Bot_Alive", $hash) unless(exists($hash->{helper}{RUNNING_PID}));
 | 
					 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsBeginUpdate( $hash );
 | 
					        readingsBeginUpdate( $hash );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} > 3 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
					        if( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} > 3 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    readingsBulkUpdate( $hash, "lastStatusRequestError", "unknown error, please contact the developer" );
 | 
					            readingsBulkUpdate( $hash, "lastStatusRequestError", "unknown error, please contact the developer" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Log3 $name, 4, "HOMBOT ($name) - UNKNOWN ERROR, PLEASE CONTACT THE DEVELOPER, DEVICE DISABLED";
 | 
					            Log3 $name, 4, "HOMBOT ($name) - UNKNOWN ERROR, PLEASE CONTACT THE DEVELOPER, DEVICE DISABLED";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    $attr{$name}{disable} = 1;
 | 
					            $attr{$name}{disable} = 1;
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "state", "Unknown Error, device disabled");
 | 
					            readingsBulkUpdate ( $hash, "state", "Unknown Error, device disabled");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    $hash->{helper}{requestErrorCounter} = 0;
 | 
					            $hash->{helper}{requestErrorCounter} = 0;
 | 
				
			||||||
	    $hash->{helper}{setErrorCounter} = 0;
 | 
					            $hash->{helper}{setErrorCounter} = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    return;
 | 
					            return;
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} == 0 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
					        if( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} == 0 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
				
			||||||
	    readingsBulkUpdate( $hash, "lastStatusRequestError", "Homebot is offline" );
 | 
					            readingsBulkUpdate( $hash, "lastStatusRequestError", "Homebot is offline" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Log3 $name, 4, "HOMBOT ($name) - Homebot is offline";
 | 
					            Log3 $name, 4, "HOMBOT ($name) - Homebot is offline";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
					            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "state", "Homebot offline");
 | 
					            readingsBulkUpdate ( $hash, "state", "Homebot offline");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    $hash->{helper}{requestErrorCounter} = 0;
 | 
					            $hash->{helper}{requestErrorCounter} = 0;
 | 
				
			||||||
	    $hash->{helper}{setErrorCounter} = 0;
 | 
					            $hash->{helper}{setErrorCounter} = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    return;
 | 
					            return;
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	elsif( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} > 0 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
					        elsif( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} > 0 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
				
			||||||
	    readingsBulkUpdate( $hash, "lastStatusRequestError", "to many errors, check your network configuration" );
 | 
					            readingsBulkUpdate( $hash, "lastStatusRequestError", "to many errors, check your network configuration" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Log3 $name, 4, "HOMBOT ($name) - To many Errors please check your Network Configuration";
 | 
					            Log3 $name, 4, "HOMBOT ($name) - To many Errors please check your Network Configuration";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
				
			||||||
 | 
					            readingsBulkUpdate ( $hash, "state", "To many Errors");
 | 
				
			||||||
 | 
					            $hash->{helper}{requestErrorCounter} = 0;
 | 
				
			||||||
 | 
					        }
 | 
				
			||||||
 | 
					    
 | 
				
			||||||
 | 
					    readingsEndUpdate( $hash, 1 );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
					 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "state", "To many Errors");
 | 
					 | 
				
			||||||
	    $hash->{helper}{requestErrorCounter} = 0;
 | 
					 | 
				
			||||||
	}
 | 
					 | 
				
			||||||
	readingsEndUpdate( $hash, 1 );
 | 
					 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if( defined( $err ) && $err ne "" ) {
 | 
					    if( defined( $err ) && $err ne "" ) {
 | 
				
			||||||
@@ -373,37 +374,37 @@ sub HOMBOT_RetrieveHomebotInfoFinished($$$) {
 | 
				
			|||||||
        readingsBulkUpdate( $hash, "lastStatusRequestState", "statusRequest_error" );
 | 
					        readingsBulkUpdate( $hash, "lastStatusRequestState", "statusRequest_error" );
 | 
				
			||||||
        readingsBulkUpdate($hash, "lastStatusRequestError", $err );
 | 
					        readingsBulkUpdate($hash, "lastStatusRequestError", $err );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsEndUpdate( $hash, 1 );
 | 
					        readingsEndUpdate( $hash, 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Parse_HomebotInfomations: error while request: $err";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Parse_HomebotInfomations: error while request: $err";
 | 
				
			||||||
	return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    elsif( $data eq "" and exists( $param->{code} ) ) {
 | 
					    elsif( $data eq "" and exists( $param->{code} ) ) {
 | 
				
			||||||
	readingsBeginUpdate( $hash );
 | 
					        readingsBeginUpdate( $hash );
 | 
				
			||||||
	readingsBulkUpdate ( $hash, "state", $param->{code} ) if( ReadingsVal( $name, "state", 1 ) ne "initialized" );
 | 
					        readingsBulkUpdate ( $hash, "state", $param->{code} ) if( ReadingsVal( $name, "state", 1 ) ne "initialized" );
 | 
				
			||||||
	$hash->{helper}{requestErrorCounter} = ( $hash->{helper}{requestErrorCounter} + 1 );
 | 
					        $hash->{helper}{requestErrorCounter} = ( $hash->{helper}{requestErrorCounter} + 1 );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	readingsBulkUpdate( $hash, "lastStatusRequestState", "statusRequest_error" );
 | 
					        readingsBulkUpdate( $hash, "lastStatusRequestState", "statusRequest_error" );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	if( $param->{code} ne 200 ) {
 | 
					        if( $param->{code} ne 200 ) {
 | 
				
			||||||
	    readingsBulkUpdate( $hash," lastStatusRequestError", "http Error ".$param->{code} );
 | 
					            readingsBulkUpdate( $hash," lastStatusRequestError", "http Error ".$param->{code} );
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsBulkUpdate( $hash, "lastStatusRequestError", "empty response" );
 | 
					        readingsBulkUpdate( $hash, "lastStatusRequestError", "empty response" );
 | 
				
			||||||
	readingsEndUpdate( $hash, 1 );
 | 
					        readingsEndUpdate( $hash, 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - HOMBOT_RetrieveHomebotInfomationsFinished: received http code ".$param->{code}." without any data after requesting HOMBOT Device";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - HOMBOT_RetrieveHomebotInfomationsFinished: received http code ".$param->{code}." without any data after requesting HOMBOT Device";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    elsif( ( $data =~ /Error/i ) and exists( $param->{code} ) ) {    
 | 
					    elsif( ( $data =~ /Error/i ) and exists( $param->{code} ) ) {    
 | 
				
			||||||
	readingsBeginUpdate( $hash );
 | 
					        readingsBeginUpdate( $hash );
 | 
				
			||||||
	readingsBulkUpdate( $hash, "state", $param->{code} ) if( ReadingsVal( $name, "state" ,0) ne "initialized" );
 | 
					        readingsBulkUpdate( $hash, "state", $param->{code} ) if( ReadingsVal( $name, "state" ,0) ne "initialized" );
 | 
				
			||||||
	$hash->{helper}{requestErrorCounter} = ( $hash->{helper}{requestErrorCounter} + 1 );
 | 
					        $hash->{helper}{requestErrorCounter} = ( $hash->{helper}{requestErrorCounter} + 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsBulkUpdate( $hash, "lastStatusRequestState", "statusRequest_error" );
 | 
					        readingsBulkUpdate( $hash, "lastStatusRequestState", "statusRequest_error" );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
        if( $param->{code} eq 404 ) {
 | 
					        if( $param->{code} eq 404 ) {
 | 
				
			||||||
            readingsBulkUpdate( $hash, "lastStatusRequestError", "HTTP Server at Homebot offline" );
 | 
					            readingsBulkUpdate( $hash, "lastStatusRequestError", "HTTP Server at Homebot offline" );
 | 
				
			||||||
@@ -411,11 +412,11 @@ sub HOMBOT_RetrieveHomebotInfoFinished($$$) {
 | 
				
			|||||||
            readingsBulkUpdate( $hash, "lastStatusRequestError", "http error ".$param->{code} );
 | 
					            readingsBulkUpdate( $hash, "lastStatusRequestError", "http error ".$param->{code} );
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsEndUpdate( $hash, 1 );
 | 
					        readingsEndUpdate( $hash, 1 );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Parse_HomebotInfomations: received http code ".$param->{code}." receive Error after requesting HOMBOT";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - HOMBOT_Parse_HomebotInfomations: received http code ".$param->{code}." receive Error after requesting HOMBOT";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    ### End Error Handling
 | 
					    ### End Error Handling
 | 
				
			||||||
@@ -552,42 +553,42 @@ sub HOMBOT_Set($$@) {
 | 
				
			|||||||
    my ( $hash, $name, $cmd, @val ) = @_;
 | 
					    my ( $hash, $name, $cmd, @val ) = @_;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $list = "";
 | 
					    my $list = "";
 | 
				
			||||||
	$list .= "cleanStart:noArg ";
 | 
					    $list .= "cleanStart:noArg ";
 | 
				
			||||||
	$list .= "homing:noArg ";
 | 
					    $list .= "homing:noArg ";
 | 
				
			||||||
	$list .= "pause:noArg ";
 | 
					    $list .= "pause:noArg ";
 | 
				
			||||||
	$list .= "statusRequest:noArg ";
 | 
					    $list .= "statusRequest:noArg ";
 | 
				
			||||||
	$list .= "cleanMode:SB,ZZ,SPOT ";
 | 
					    $list .= "cleanMode:SB,ZZ,SPOT ";
 | 
				
			||||||
	$list .= "repeat:true,false ";
 | 
					    $list .= "repeat:true,false ";
 | 
				
			||||||
	$list .= "turbo:true,false ";
 | 
					    $list .= "turbo:true,false ";
 | 
				
			||||||
	$list .= "nickname ";
 | 
					    $list .= "nickname ";
 | 
				
			||||||
	$list .= "schedule ";
 | 
					    $list .= "schedule ";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if( lc $cmd eq 'cleanstart'
 | 
					    if( lc $cmd eq 'cleanstart'
 | 
				
			||||||
	    || lc $cmd eq 'homing'
 | 
					        || lc $cmd eq 'homing'
 | 
				
			||||||
	    || lc $cmd eq 'pause'
 | 
					        || lc $cmd eq 'pause'
 | 
				
			||||||
	    || lc $cmd eq 'statusrequest'
 | 
					        || lc $cmd eq 'statusrequest'
 | 
				
			||||||
	    || lc $cmd eq 'cleanmode'
 | 
					        || lc $cmd eq 'cleanmode'
 | 
				
			||||||
	    || lc $cmd eq 'repeat'
 | 
					        || lc $cmd eq 'repeat'
 | 
				
			||||||
	    || lc $cmd eq 'turbo' 
 | 
					        || lc $cmd eq 'turbo' 
 | 
				
			||||||
	    || lc $cmd eq 'nickname'
 | 
					        || lc $cmd eq 'nickname'
 | 
				
			||||||
	    || lc $cmd eq 'schedule' ) {
 | 
					        || lc $cmd eq 'schedule' ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Log3 $name, 5, "HOMBOT ($name) - set $name $cmd ".join(" ", @val);
 | 
					        Log3 $name, 5, "HOMBOT ($name) - set $name $cmd ".join(" ", @val);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    my $val = join( " ", @val );
 | 
					        my $val = join( " ", @val );
 | 
				
			||||||
	    my $wordlenght = length($val);
 | 
					        my $wordlenght = length($val);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    return HOMBOT_SelectSetCmd( $hash, $cmd, @val ) if( lc $cmd eq 'statusrequest' );
 | 
					        return HOMBOT_SelectSetCmd( $hash, $cmd, @val ) if( lc $cmd eq 'statusrequest' );
 | 
				
			||||||
	    return "set command only works if state not equal initialized, please wait for next interval run" if( ReadingsVal( $hash->{NAME}, "state", 0 ) eq "initialized");
 | 
					        return "set command only works if state not equal initialized, please wait for next interval run" if( ReadingsVal( $hash->{NAME}, "state", 0 ) eq "initialized");
 | 
				
			||||||
	    return "to many character for Nickname" if(( $wordlenght < 2 || $wordlenght > 16 ) && lc $cmd eq 'nickname' );
 | 
					        return "to many character for Nickname" if(( $wordlenght < 2 || $wordlenght > 16 ) && lc $cmd eq 'nickname' );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    return HOMBOT_SelectSetCmd( $hash, $cmd, @val ) if( ( ( @val ) || lc $cmd eq 'cleanstart'|| lc $cmd eq 'homing' || lc $cmd eq 'pause' ) );
 | 
					        return HOMBOT_SelectSetCmd( $hash, $cmd, @val ) if( ( ( @val ) || lc $cmd eq 'cleanstart'|| lc $cmd eq 'homing' || lc $cmd eq 'pause' ) );
 | 
				
			||||||
	}
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return "Unknown argument $cmd, bearword as argument or wrong parameter(s), choose one of $list";
 | 
					    return "Unknown argument $cmd, bearword as argument or wrong parameter(s), choose one of $list";
 | 
				
			||||||
}
 | 
					}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
sub HOMBOT_SelectSetCmd($$@) {
 | 
					sub HOMBOT_SelectSetCmd($$@) {
 | 
				
			||||||
@@ -599,74 +600,74 @@ sub HOMBOT_SelectSetCmd($$@) {
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
    if( lc $cmd eq 'cleanstart' ) {
 | 
					    if( lc $cmd eq 'cleanstart' ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%22CLEAN_START%22%7d";
 | 
					        my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%22CLEAN_START%22%7d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - Homebot start cleaning";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - Homebot start cleaning";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'homing' ) {
 | 
					    elsif( lc $cmd eq 'homing' ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%22HOMING%22%7d";
 | 
					        my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%22HOMING%22%7d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - Homebot come home";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - Homebot come home";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'pause' ) {
 | 
					    elsif( lc $cmd eq 'pause' ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%22PAUSE%22%7d";
 | 
					        my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%22PAUSE%22%7d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - Homebot paused";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - Homebot paused";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'cleanmode' ) {
 | 
					    elsif( lc $cmd eq 'cleanmode' ) {
 | 
				
			||||||
        my $mode = join( " ", @data );
 | 
					        my $mode = join( " ", @data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%7b%22CLEAN_MODE%22:%22CLEAN_".$mode."%22%7d%7d";
 | 
					        my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%7b%22CLEAN_MODE%22:%22CLEAN_".$mode."%22%7d%7d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - set Cleanmode to $mode";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - set Cleanmode to $mode";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'statusrequest' ) {
 | 
					    elsif( lc $cmd eq 'statusrequest' ) {
 | 
				
			||||||
	HOMBOT_Get_stateRequestLocal( $hash );
 | 
					        HOMBOT_Get_stateRequestLocal( $hash );
 | 
				
			||||||
	return undef;
 | 
					        return undef;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'repeat' ) {
 | 
					    elsif( lc $cmd eq 'repeat' ) {
 | 
				
			||||||
        my $repeat = join( " ", @data );
 | 
					        my $repeat = join( " ", @data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%7b%22REPEAT%22:%22".$repeat."%22%7d%7d";
 | 
					        my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%7b%22REPEAT%22:%22".$repeat."%22%7d%7d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - set Repeat to $repeat";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - set Repeat to $repeat";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'turbo' ) {
 | 
					    elsif( lc $cmd eq 'turbo' ) {
 | 
				
			||||||
        my $turbo = join( " ", @data );
 | 
					        my $turbo = join( " ", @data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%7b%22TURBO%22:%22".$turbo."%22%7d%7d";
 | 
					        my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22COMMAND%22:%7b%22TURBO%22:%22".$turbo."%22%7d%7d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - set Turbo to $turbo";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - set Turbo to $turbo";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'nickname' ) {
 | 
					    elsif( lc $cmd eq 'nickname' ) {
 | 
				
			||||||
        my $nick = join( " ", @data );
 | 
					        my $nick = join( " ", @data );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22NICKNAME%22:%7b%22SET%22:%22".$nick."%22%7d%7d";
 | 
					        my $url = "http://" . $host . ":" . $port . "/json.cgi?%7b%22NICKNAME%22:%7b%22SET%22:%22".$nick."%22%7d%7d";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - set Nickname to $nick";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - set Nickname to $nick";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    elsif( lc $cmd eq 'schedule' ) {
 | 
					    elsif( lc $cmd eq 'schedule' ) {
 | 
				
			||||||
@@ -686,11 +687,11 @@ sub HOMBOT_SelectSetCmd($$@) {
 | 
				
			|||||||
        #my $su = $data[6];
 | 
					        #my $su = $data[6];
 | 
				
			||||||
        $data[6] =~ s/So/SUNDAY/g;
 | 
					        $data[6] =~ s/So/SUNDAY/g;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	my $url = "http://" . $host . ":" . $port . "/sites/schedule.html?".$data[0]."&".$data[1]."&".$data[2]."&".$data[3]."&".$data[4]."&".$data[5]."&".$data[6]."&SEND=Save";
 | 
					        my $url = "http://" . $host . ":" . $port . "/sites/schedule.html?".$data[0]."&".$data[1]."&".$data[2]."&".$data[3]."&".$data[4]."&".$data[5]."&".$data[6]."&SEND=Save";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 4, "HOMBOT ($name) - set schedule to $data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6]";
 | 
					        Log3 $name, 4, "HOMBOT ($name) - set schedule to $data[0],$data[1],$data[2],$data[3],$data[4],$data[5],$data[6]";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return HOMBOT_HTTP_POST( $hash,$url );
 | 
					        return HOMBOT_HTTP_POST( $hash,$url );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    return undef;
 | 
					    return undef;
 | 
				
			||||||
@@ -706,15 +707,15 @@ sub HOMBOT_HTTP_POST($$) {
 | 
				
			|||||||
    readingsSingleUpdate( $hash, "state", "Send HTTP POST", 1 );
 | 
					    readingsSingleUpdate( $hash, "state", "Send HTTP POST", 1 );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    HttpUtils_NonblockingGet(
 | 
					    HttpUtils_NonblockingGet(
 | 
				
			||||||
	{
 | 
					    {
 | 
				
			||||||
	    url		=> $url,
 | 
					        url         => $url,
 | 
				
			||||||
	    timeout	=> 10,
 | 
					        timeout     => 10,
 | 
				
			||||||
	    hash	=> $hash,
 | 
					        hash        => $hash,
 | 
				
			||||||
	    method	=> "GET",
 | 
					        method      => "GET",
 | 
				
			||||||
	    doTrigger	=> 1,
 | 
					        doTrigger   => 1,
 | 
				
			||||||
	    callback	=> \&HOMBOT_HTTP_POSTerrorHandling,
 | 
					        callback    => \&HOMBOT_HTTP_POSTerrorHandling,
 | 
				
			||||||
	}
 | 
					    });
 | 
				
			||||||
    );
 | 
					    
 | 
				
			||||||
    Log3 $name, 4, "HOMBOT ($name) - Send HTTP POST with URL $url";
 | 
					    Log3 $name, 4, "HOMBOT ($name) - Send HTTP POST with URL $url";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
    readingsSingleUpdate( $hash, "state", $state, 1 );
 | 
					    readingsSingleUpdate( $hash, "state", $state, 1 );
 | 
				
			||||||
@@ -732,10 +733,10 @@ sub HOMBOT_HTTP_POSTerrorHandling($$$) {
 | 
				
			|||||||
    ### Begin Error Handling
 | 
					    ### Begin Error Handling
 | 
				
			||||||
    if( $hash->{helper}{setErrorCounter} > 1 ) {
 | 
					    if( $hash->{helper}{setErrorCounter} > 1 ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsSingleUpdate( $hash, "lastSetCommandState", "statusRequest_error", 1 );
 | 
					        readingsSingleUpdate( $hash, "lastSetCommandState", "statusRequest_error", 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if( $hash->{helper}{setErrorCounter} > 1 && ReadingsVal( $name, "luigiHttpSrvState", "not running" ) eq "running"  ) {
 | 
					        if( $hash->{helper}{setErrorCounter} > 1 && ReadingsVal( $name, "luigiHttpSrvState", "not running" ) eq "running"  ) {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
            Log3 $name, 3, "HOMBOT ($name) - Connecting Problem, will check Luigi HTTP Server" unless(exists($hash->{helper}{RUNNING_PID}));
 | 
					            Log3 $name, 3, "HOMBOT ($name) - Connecting Problem, will check Luigi HTTP Server" unless(exists($hash->{helper}{RUNNING_PID}));
 | 
				
			||||||
            
 | 
					            
 | 
				
			||||||
@@ -744,41 +745,42 @@ sub HOMBOT_HTTP_POSTerrorHandling($$$) {
 | 
				
			|||||||
        
 | 
					        
 | 
				
			||||||
        readingsBeginUpdate( $hash );
 | 
					        readingsBeginUpdate( $hash );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	if( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} > 2 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
					        if( $hash->{helper}{requestErrorCounter} > 6 && $hash->{helper}{setErrorCounter} > 2 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
				
			||||||
	    readingsBulkUpdate($hash, "lastSetCommandError", "unknown error, please contact the developer" );
 | 
					            readingsBulkUpdate($hash, "lastSetCommandError", "unknown error, please contact the developer" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Log3 $name, 4, "HOMBOT ($name) - UNKNOWN ERROR, PLEASE CONTACT THE DEVELOPER, DEVICE DISABLED";
 | 
					            Log3 $name, 4, "HOMBOT ($name) - UNKNOWN ERROR, PLEASE CONTACT THE DEVELOPER, DEVICE DISABLED";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    $attr{$name}{disable} = 1;
 | 
					            $attr{$name}{disable} = 1;
 | 
				
			||||||
	    readingsBulkUpdate( $hash, "state", "Unknown Error" );
 | 
					            readingsBulkUpdate( $hash, "state", "Unknown Error" );
 | 
				
			||||||
	    $hash->{helper}{requestErrorCounter} = 0;
 | 
					            $hash->{helper}{requestErrorCounter} = 0;
 | 
				
			||||||
	    $hash->{helper}{setErrorCounter} = 0;
 | 
					            $hash->{helper}{setErrorCounter} = 0;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    return;
 | 
					            return;
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	elsif( $hash->{helper}{setErrorCounter} > 3 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "not running" ){
 | 
					        elsif( $hash->{helper}{setErrorCounter} > 3 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "not running" ){
 | 
				
			||||||
	    readingsBulkUpdate( $hash, "lastSetCommandError", "HTTP Server at Homebot offline" );
 | 
					            readingsBulkUpdate( $hash, "lastSetCommandError", "HTTP Server at Homebot offline" );
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
					            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Log3 $name, 4, "HOMBOT ($name) - Please check HTTP Server at Homebot";
 | 
					            Log3 $name, 4, "HOMBOT ($name) - Please check HTTP Server at Homebot";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    $hash->{helper}{requestErrorCounter} = 0;
 | 
					            $hash->{helper}{requestErrorCounter} = 0;
 | 
				
			||||||
	    $hash->{helper}{setErrorCounter} = 0;
 | 
					            $hash->{helper}{setErrorCounter} = 0;
 | 
				
			||||||
	} 
 | 
					        } 
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	elsif( $hash->{helper}{setErrorCounter} > 3 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
					        elsif( $hash->{helper}{setErrorCounter} > 3 && ReadingsVal( $name, "luigiHttpSrvState", "running" ) eq "running" ) {
 | 
				
			||||||
	    readingsBulkUpdate( $hash, "lastSetCommandError", "to many errors, check your network or device configuration" );
 | 
					            readingsBulkUpdate( $hash, "lastSetCommandError", "to many errors, check your network or device configuration" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    Log3 $name, 4, "HOMBOT ($name) - To many Errors please check your Network or Device Configuration";
 | 
					            Log3 $name, 4, "HOMBOT ($name) - To many Errors please check your Network or Device Configuration";
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    readingsBulkUpdate( $hash, "state", "To many Errors" );
 | 
					            readingsBulkUpdate( $hash, "state", "To many Errors" );
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
					            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	    $hash->{helper}{setErrorCounter} = 0;
 | 
					            $hash->{helper}{setErrorCounter} = 0;
 | 
				
			||||||
	    $hash->{helper}{requestErrorCounter} = 0;
 | 
					            $hash->{helper}{requestErrorCounter} = 0;
 | 
				
			||||||
	}
 | 
					        }
 | 
				
			||||||
	readingsEndUpdate( $hash, 1 );
 | 
					        
 | 
				
			||||||
 | 
					        readingsEndUpdate( $hash, 1 );
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    if( defined( $err ) && $err ne "" ) {
 | 
					    if( defined( $err ) && $err ne "" ) {
 | 
				
			||||||
@@ -798,35 +800,35 @@ sub HOMBOT_HTTP_POSTerrorHandling($$$) {
 | 
				
			|||||||
    }
 | 
					    }
 | 
				
			||||||
 
 | 
					 
 | 
				
			||||||
    if( $data eq "" and exists( $param->{code} ) && $param->{code} ne 200 ) {
 | 
					    if( $data eq "" and exists( $param->{code} ) && $param->{code} ne 200 ) {
 | 
				
			||||||
	readingsBeginUpdate( $hash );
 | 
					        readingsBeginUpdate( $hash );
 | 
				
			||||||
	readingsBulkUpdate( $hash, "state", $param->{code} ) if( ReadingsVal( $hash, "state", 0 ) ne "initialized" );
 | 
					        readingsBulkUpdate( $hash, "state", $param->{code} ) if( ReadingsVal( $hash, "state", 0 ) ne "initialized" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	$hash->{helper}{setErrorCounter} = ( $hash->{helper}{setErrorCounter} + 1 );
 | 
					        $hash->{helper}{setErrorCounter} = ( $hash->{helper}{setErrorCounter} + 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsBulkUpdate($hash, "lastSetCommandState", "cmd_error" );
 | 
					        readingsBulkUpdate($hash, "lastSetCommandState", "cmd_error" );
 | 
				
			||||||
	readingsBulkUpdate($hash, "lastSetCommandError", "http Error ".$param->{code} );
 | 
					        readingsBulkUpdate($hash, "lastSetCommandError", "http Error ".$param->{code} );
 | 
				
			||||||
	readingsEndUpdate( $hash, 1 );
 | 
					        readingsEndUpdate( $hash, 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	Log3 $name, 5, "HOMBOT ($name) - HOMBOT_HTTP_POST: received http code ".$param->{code};
 | 
					        Log3 $name, 5, "HOMBOT ($name) - HOMBOT_HTTP_POST: received http code ".$param->{code};
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
    if( ( $data =~ /Error/i ) and exists( $param->{code} ) ) {
 | 
					    if( ( $data =~ /Error/i ) and exists( $param->{code} ) ) {
 | 
				
			||||||
	readingsBeginUpdate( $hash );
 | 
					        readingsBeginUpdate( $hash );
 | 
				
			||||||
	readingsBulkUpdate( $hash, "state", $param->{code} ) if( ReadingsVal( $name, "state", 0 ) ne "initialized" );
 | 
					        readingsBulkUpdate( $hash, "state", $param->{code} ) if( ReadingsVal( $name, "state", 0 ) ne "initialized" );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	$hash->{helper}{setErrorCounter} = ( $hash->{helper}{setErrorCounter} + 1 );
 | 
					        $hash->{helper}{setErrorCounter} = ( $hash->{helper}{setErrorCounter} + 1 );
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	readingsBulkUpdate( $hash, "lastSetCommandState", "cmd_error" );
 | 
					        readingsBulkUpdate( $hash, "lastSetCommandState", "cmd_error" );
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
	    if( $param->{code} eq 404 ) {
 | 
					        if( $param->{code} eq 404 ) {
 | 
				
			||||||
		readingsBulkUpdate( $hash, "lastSetCommandError", "HTTP Server at Homebot is offline!" );
 | 
					            readingsBulkUpdate( $hash, "lastSetCommandError", "HTTP Server at Homebot is offline!" );
 | 
				
			||||||
	    } else {
 | 
					        } else {
 | 
				
			||||||
		readingsBulkUpdate( $hash, "lastSetCommandError", "http error ".$param->{code} );
 | 
					            readingsBulkUpdate( $hash, "lastSetCommandError", "http error ".$param->{code} );
 | 
				
			||||||
	    }
 | 
					        }
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	return;
 | 
					        return;
 | 
				
			||||||
    }
 | 
					    }
 | 
				
			||||||
    
 | 
					    
 | 
				
			||||||
    ### End Error Handling
 | 
					    ### End Error Handling
 | 
				
			||||||
@@ -923,7 +925,7 @@ sub HOMBOT_Evaluation_Bot_Alive($) {
 | 
				
			|||||||
            
 | 
					            
 | 
				
			||||||
            readingsBulkUpdate( $hash, "luigiHttpSrvState", "running");
 | 
					            readingsBulkUpdate( $hash, "luigiHttpSrvState", "running");
 | 
				
			||||||
            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
					            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "state", "Homebot offline");
 | 
					            readingsBulkUpdate ( $hash, "state", "Homebot offline");
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
            Log3 $name, 3, "HOMBOT ($name) - Hombot is not online";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - Hombot is not online";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -958,7 +960,7 @@ sub HOMBOT_Evaluation_Bot_Alive($) {
 | 
				
			|||||||
            
 | 
					            
 | 
				
			||||||
            readingsBulkUpdate( $hash, "luigiHttpSrvState", "running");
 | 
					            readingsBulkUpdate( $hash, "luigiHttpSrvState", "running");
 | 
				
			||||||
            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
					            readingsBulkUpdate ( $hash, "hombotState", "OFFLINE");
 | 
				
			||||||
	    readingsBulkUpdate ( $hash, "state", "Homebot offline");
 | 
					            readingsBulkUpdate ( $hash, "state", "Homebot offline");
 | 
				
			||||||
        
 | 
					        
 | 
				
			||||||
            Log3 $name, 3, "HOMBOT ($name) - Hombot is not online";
 | 
					            Log3 $name, 3, "HOMBOT ($name) - Hombot is not online";
 | 
				
			||||||
        }
 | 
					        }
 | 
				
			||||||
@@ -995,6 +997,8 @@ sub HOMBOT_DetailFn() {         # Patch von Andre (justme1968)
 | 
				
			|||||||
 | 
					
 | 
				
			||||||
 | 
					
 | 
				
			||||||
=pod
 | 
					=pod
 | 
				
			||||||
 | 
					=item summary    connection to LG Homebot robotic vacuum cleaner
 | 
				
			||||||
 | 
					=item summary_DE Anbindung LG Homebot Staubsaugerroboter
 | 
				
			||||||
=begin html
 | 
					=begin html
 | 
				
			||||||
 | 
					
 | 
				
			||||||
<a name="HOMBOT"></a>
 | 
					<a name="HOMBOT"></a>
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user