Umbau
This commit is contained in:
		| @@ -232,7 +232,8 @@ sub SmarterCoffee_ParseMessage { | |||||||
|                             $updateReading->( "last_command_$key", $value ); |                             $updateReading->( "last_command_$key", $value ); | ||||||
|                         } |                         } | ||||||
|                         $updateReading->( "last_command", $hash->{".last_set_command"} ); |                         $updateReading->( "last_command", $hash->{".last_set_command"} ); | ||||||
|                     }, 1); |                     }, 1 | ||||||
|  |                     , 1); | ||||||
|             } else { |             } else { | ||||||
|                 Log3 $hash->{NAME}, 3, "Connection :: Unknown command response '$message'."; |                 Log3 $hash->{NAME}, 3, "Connection :: Unknown command response '$message'."; | ||||||
|             } |             } | ||||||
| @@ -386,9 +387,9 @@ sub SmarterCoffee_ParseStatusValues { | |||||||
| sub SmarterCoffee_Connect($) { | sub SmarterCoffee_Connect($) { | ||||||
|     my ($hash) = @_; |     my ($hash) = @_; | ||||||
|  |  | ||||||
|     my $isNewConnection = $hash->{STATE} eq "initializing"; |     my $isNewConnection = ReadingsVal($hash->{NAME},'state','none') eq "initializing"; | ||||||
|  |  | ||||||
|     $hash->{STATE} = "disconnected"; |     readingsSingleUpdate($hash,'state','disconnected',0); | ||||||
|     delete $hash->{INVALID_DEVICE} if defined($hash->{INVALID_DEVICE}); |     delete $hash->{INVALID_DEVICE} if defined($hash->{INVALID_DEVICE}); | ||||||
|  |  | ||||||
|     if ($hash->{AUTO_DETECT}) { |     if ($hash->{AUTO_DETECT}) { | ||||||
| @@ -400,14 +401,9 @@ sub SmarterCoffee_Connect($) { | |||||||
|             $hash->{DeviceName} .= ":$SmarterCoffee_Port"; |             $hash->{DeviceName} .= ":$SmarterCoffee_Port"; | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         RemoveInternalTimer($hash); |  | ||||||
|  |  | ||||||
|         DevIo_CloseDev($hash) if DevIo_IsOpen($hash); |         DevIo_CloseDev($hash) if DevIo_IsOpen($hash); | ||||||
|         delete $hash->{DevIoJustClosed} if ($hash->{DevIoJustClosed}); |         delete $hash->{DevIoJustClosed} if ($hash->{DevIoJustClosed}); | ||||||
|  |  | ||||||
|         InternalTimer(gettimeofday() + 15, "SmarterCoffee_ReConnectTimer", $hash) |  | ||||||
|         unless( AttrVal($hash->{NAME},'reconnectTimer',0) == 0 ); |  | ||||||
|          |  | ||||||
|         return SmarterCoffee_OpenIfRequiredAndWritePending($hash, $isNewConnection); |         return SmarterCoffee_OpenIfRequiredAndWritePending($hash, $isNewConnection); | ||||||
|     } |     } | ||||||
|     return 0; |     return 0; | ||||||
| @@ -423,10 +419,10 @@ sub SmarterCoffee_HandleInitialConnectState($) { | |||||||
|  |  | ||||||
|     return if ($hash->{".initial-connection-state"}); |     return if ($hash->{".initial-connection-state"}); | ||||||
|  |  | ||||||
|     if (DevIo_IsOpen($hash) and ($hash->{STATE} eq "disconnected" or $hash->{STATE} eq "opened")) { |     if (DevIo_IsOpen($hash) and (ReadingsVal($hash->{NAME},'state','none') eq "disconnected" or ReadingsVal($hash->{NAME},'state','none') eq "opened")) { | ||||||
|         $hash->{".initial-connection-state"} = 1; |         $hash->{".initial-connection-state"} = 1; | ||||||
|  |  | ||||||
|         $hash->{STATE} = "connected"; |         readingsSingleUpdate($hash,'state','connected',0); | ||||||
|         SmarterCoffee_Get($hash, @{[ $hash->{NAME}, "info" ]}) if (not $hash->{AUTO_DETECT}); |         SmarterCoffee_Get($hash, @{[ $hash->{NAME}, "info" ]}) if (not $hash->{AUTO_DETECT}); | ||||||
|         SmarterCoffee_Get($hash, @{[ $hash->{NAME}, "carafe_required_status" ]}); |         SmarterCoffee_Get($hash, @{[ $hash->{NAME}, "carafe_required_status" ]}); | ||||||
|         SmarterCoffee_Get($hash, @{[ $hash->{NAME}, "cups_single_mode_status" ]}); |         SmarterCoffee_Get($hash, @{[ $hash->{NAME}, "cups_single_mode_status" ]}); | ||||||
| @@ -446,7 +442,7 @@ sub SmarterCoffee_WritePending { | |||||||
|  |  | ||||||
|         # Processing pending commands |         # Processing pending commands | ||||||
|         if (($hash->{INVALID_DEVICE} // "0") eq "1") { |         if (($hash->{INVALID_DEVICE} // "0") eq "1") { | ||||||
|             $hash->{STATE} = "invalid"; |             readingsSingleUpdate($hash,'state','invalid',0); | ||||||
|         } else { |         } else { | ||||||
|             if ($pending) { |             if ($pending) { | ||||||
|                 delete $hash->{PENDING_COMMAND} if defined($hash->{PENDING_COMMAND}); |                 delete $hash->{PENDING_COMMAND} if defined($hash->{PENDING_COMMAND}); | ||||||
| @@ -514,7 +510,6 @@ sub SmarterCoffee_Initialize($) { | |||||||
|     $hash->{ReadyFn} = 'SmarterCoffee_OpenIfRequiredAndWritePending'; |     $hash->{ReadyFn} = 'SmarterCoffee_OpenIfRequiredAndWritePending'; | ||||||
|     $hash->{NotifyFn} = 'SmarterCoffee_Notify'; |     $hash->{NotifyFn} = 'SmarterCoffee_Notify'; | ||||||
|  |  | ||||||
|     $hash->{AttrFn} = 'SmarterCoffee_Attr'; |  | ||||||
|     $hash->{AttrList} = "" |     $hash->{AttrList} = "" | ||||||
|         ."default-hotplate-on-for-minutes " |         ."default-hotplate-on-for-minutes " | ||||||
|         ."ignore-max-cups " |         ."ignore-max-cups " | ||||||
| @@ -524,8 +519,6 @@ sub SmarterCoffee_Initialize($) { | |||||||
|         ."strength-extra-pre-brew-cups " |         ."strength-extra-pre-brew-cups " | ||||||
|         ."strength-extra-pre-brew-delay-seconds " |         ."strength-extra-pre-brew-delay-seconds " | ||||||
|         ."strength-extra-start-on-device-strength:off,weak,medium,strong " |         ."strength-extra-start-on-device-strength:off,weak,medium,strong " | ||||||
|         ."devioLoglevel:0,1,2,3,4,5 " |  | ||||||
|         ."reconnectTimer:1 " |  | ||||||
|         .$readingFnAttributes; |         .$readingFnAttributes; | ||||||
|  |  | ||||||
|     Log 5, "Initialized module 'SmarterCoffee'"; |     Log 5, "Initialized module 'SmarterCoffee'"; | ||||||
| @@ -556,15 +549,13 @@ sub SmarterCoffee_Define($$) { | |||||||
|     } |     } | ||||||
|  |  | ||||||
|     $hash->{NOTIFYDEV} = "global,$name"; |     $hash->{NOTIFYDEV} = "global,$name"; | ||||||
|     $hash->{STATE} = "initializing"; |     readingsSingleUpdate($hash,'state','initializing',0); | ||||||
|  |  | ||||||
|     $hash->{".last_command"} = |     $hash->{".last_command"} = | ||||||
|         $hash->{".last_response"} = |         $hash->{".last_response"} = | ||||||
|         $hash->{".last_status"} = |         $hash->{".last_status"} = | ||||||
|         $hash->{".raw_last_status"} = ""; |         $hash->{".raw_last_status"} = ""; | ||||||
|  |  | ||||||
|     RemoveInternalTimer($hash); |  | ||||||
|      |  | ||||||
|     SmarterCoffee_Connect($hash); |     SmarterCoffee_Connect($hash); | ||||||
|  |  | ||||||
|     Log3 $hash->{NAME}, 4, "Instance :: Defined module 'SmarterCoffee': ".Dumper($hash); |     Log3 $hash->{NAME}, 4, "Instance :: Defined module 'SmarterCoffee': ".Dumper($hash); | ||||||
| @@ -582,38 +573,6 @@ sub SmarterCoffee_Undefine($$) { | |||||||
|     return undef; |     return undef; | ||||||
| } | } | ||||||
|  |  | ||||||
| sub SmarterCoffee_Attr(@) { |  | ||||||
|  |  | ||||||
|     my ( $cmd, $name, $attrName, $attrVal ) = @_; |  | ||||||
|     my $hash                                = $defs{$name}; |  | ||||||
|  |  | ||||||
|  |  | ||||||
|     if( $attrName eq "devioLoglevel" ) { |  | ||||||
|         if( $cmd eq "set" ) { |  | ||||||
|             $hash->{devioLoglevel}   = $attrVal; |  | ||||||
|             Log3 $name, 3, "SmarterCoffee ($name) - set devioLoglevel to $attrVal"; |  | ||||||
|          |  | ||||||
|         } elsif( $cmd eq "del" ) { |  | ||||||
|             delete $hash->{devioLoglevel}; |  | ||||||
|             Log3 $name, 3, "SmarterCoffee ($name) - delete Internal devioLoglevel"; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     elsif( $attrName eq "reconnectTimer" ) { |  | ||||||
|         if( $cmd eq "set" ) { |  | ||||||
|             RemoveInternalTimer($hash,'SmarterCoffee_ReConnectTimer'); |  | ||||||
|             SmarterCoffee_ReConnectTimer($hash); |  | ||||||
|             Log3 $name, 3, "SmarterCoffee ($name) - set Attribute reconnectTimer"; |  | ||||||
|          |  | ||||||
|         } elsif( $cmd eq "del" ) { |  | ||||||
|             RemoveInternalTimer($hash,'SmarterCoffee_ReConnectTimer'); |  | ||||||
|             Log3 $name, 3, "SmarterCoffee ($name) - delete Attribute reconnectTimer"; |  | ||||||
|         } |  | ||||||
|     } |  | ||||||
|  |  | ||||||
|     return undef; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| sub SmarterCoffee_Get { | sub SmarterCoffee_Get { | ||||||
|     my ($hash, @param) = @_; |     my ($hash, @param) = @_; | ||||||
|  |  | ||||||
| @@ -858,7 +817,7 @@ sub SmarterCoffee_Notify($$) { | |||||||
|     } |     } | ||||||
| } | } | ||||||
|  |  | ||||||
| sub SmarterCoffee_ReadConfiguration($) { | sub SmarterCoffee_ReadConfiguration($$) { | ||||||
|     my ($hash) = @_; |     my ($hash) = @_; | ||||||
|  |  | ||||||
|     # Restoring extra strength |     # Restoring extra strength | ||||||
| @@ -873,7 +832,7 @@ sub SmarterCoffee_LogCommands($$) { | |||||||
|         if ($1 eq "yes") { |         if ($1 eq "yes") { | ||||||
|             Log3 $hash->{NAME}, 4, "Command :: Success [$command]; Message: $message"; |             Log3 $hash->{NAME}, 4, "Command :: Success [$command]; Message: $message"; | ||||||
|         } else { |         } else { | ||||||
|             Log3 $hash->{NAME}, 4, "Command :: Failed [$command]; Cause: $message"; |             Log3 $hash->{NAME}, 3, "Command :: Failed [$command]; Cause: $message"; | ||||||
|         } |         } | ||||||
|     } |     } | ||||||
| } | } | ||||||
| @@ -1128,11 +1087,11 @@ sub SmarterCoffee_UpdateReadings($$;$) { | |||||||
|  |  | ||||||
|         my $changed = ReadingsVal($hash->{NAME}, $name, "##undefined") ne $value; |         my $changed = ReadingsVal($hash->{NAME}, $name, "##undefined") ne $value; | ||||||
|         if ($changed or $forceUpdate) { |         if ($changed or $forceUpdate) { | ||||||
|             readingsBulkUpdateIfChanged($hash, $name, $value); |             readingsBulkUpdate($hash, $name, $value); | ||||||
|             $updated = 1 if ($changed); |             $updated = 1 if ($changed); | ||||||
|         } |         } | ||||||
|  |  | ||||||
|         $updated = 1 if ($name eq "state" and $hash->{STATE} ne $value); |         $updated = 1 if ($name eq "state" and ReadingsVal($name,'state','none') ne $value); | ||||||
|     }; |     }; | ||||||
|  |  | ||||||
|     readingsBeginUpdate($hash); |     readingsBeginUpdate($hash); | ||||||
| @@ -1331,21 +1290,6 @@ sub SmarterCoffee_GetDevStateIcon { | |||||||
|     return $icon; |     return $icon; | ||||||
| } | } | ||||||
|  |  | ||||||
| sub SmarterCoffee_ReConnectTimer($) { |  | ||||||
|  |  | ||||||
|     my $hash    = shift; |  | ||||||
|      |  | ||||||
|      |  | ||||||
|     if( defined($hash->{FD}) ) { |  | ||||||
|         DevIo_Disconnected($hash); |  | ||||||
|         DevIo_OpenDev($hash, 1, "SmarterCoffee_WritePending"); |  | ||||||
|         Log3 $hash->{NAME}, 4, "SmarterCoffee_ReConnectTimer - Socket Reconnected"; |  | ||||||
|     } |  | ||||||
|      |  | ||||||
|     InternalTimer(gettimeofday() + 360, "SmarterCoffee_ReConnectTimer", $hash); |  | ||||||
|     Log3 $hash->{NAME}, 4, "SmarterCoffee_ReConnectTimer - Call InternalTimer"; |  | ||||||
| } |  | ||||||
|  |  | ||||||
| ## ------------------------------------------------------------------------------------------------------------------- | ## ------------------------------------------------------------------------------------------------------------------- | ||||||
| ## Documentation follows | ## Documentation follows | ||||||
|  |  | ||||||
|   | |||||||
		Reference in New Issue
	
	Block a user