98_vitoconnect: Fix duplicate timer in case of password update
git-svn-id: https://svn.fhem.de/fhem/trunk@30401 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
@@ -94,6 +94,9 @@ use FHEM::SynoModules::SMUtils qw (
|
|||||||
); # Hilfsroutinen Modul
|
); # Hilfsroutinen Modul
|
||||||
|
|
||||||
my %vNotesIntern = (
|
my %vNotesIntern = (
|
||||||
|
"0.9.5" => "15.10.2025 Fix duplicate timer in case of password update (getCode)",
|
||||||
|
"0.9.4" => "15.10.2025 More logging for timers",
|
||||||
|
"0.9.3" => "15.10.2025 URL to dev portal updated",
|
||||||
"0.9.2" => "15.09.2025 Fix Not a HASH reference at ./FHEM/98_vitoconnect.pm line 3818 when set action error",
|
"0.9.2" => "15.09.2025 Fix Not a HASH reference at ./FHEM/98_vitoconnect.pm line 3818 when set action error",
|
||||||
"0.9.1" => "11.09.2025 In case of set action when token is expired get new token and try again",
|
"0.9.1" => "11.09.2025 In case of set action when token is expired get new token and try again",
|
||||||
"0.9.0" => "09.03.2025 New api and iam URL (viessmann-climatesolutions.com)",
|
"0.9.0" => "09.03.2025 New api and iam URL (viessmann-climatesolutions.com)",
|
||||||
@@ -1381,7 +1384,7 @@ sub vitoconnect_Set {
|
|||||||
Log(5,$name.", -vitoconnect_Set started: ". $opt); #debug
|
Log(5,$name.", -vitoconnect_Set started: ". $opt); #debug
|
||||||
|
|
||||||
# Setter für die Geräteauswahl dynamisch erstellen
|
# Setter für die Geräteauswahl dynamisch erstellen
|
||||||
Log3($name,4,$name." - Set devices: ".$hash->{devices});
|
Log3($name,5,$name." - Set devices: ".$hash->{devices});
|
||||||
if (defined $hash->{devices} && ref($hash->{devices}) eq 'HASH' && keys %{$hash->{devices}} > 0) {
|
if (defined $hash->{devices} && ref($hash->{devices}) eq 'HASH' && keys %{$hash->{devices}} > 0) {
|
||||||
my @device_serials = keys %{$hash->{devices}};
|
my @device_serials = keys %{$hash->{devices}};
|
||||||
$val .= " selectDevice:" . join(",", @device_serials);
|
$val .= " selectDevice:" . join(",", @device_serials);
|
||||||
@@ -1434,12 +1437,14 @@ sub vitoconnect_Set {
|
|||||||
elsif ($opt eq "password" ) { # set <name> password: store password in key store
|
elsif ($opt eq "password" ) { # set <name> password: store password in key store
|
||||||
my $err = vitoconnect_StoreKeyValue($hash,"passwd",$args[0]); # Kennwort verschlüsselt speichern
|
my $err = vitoconnect_StoreKeyValue($hash,"passwd",$args[0]); # Kennwort verschlüsselt speichern
|
||||||
return $err if ($err);
|
return $err if ($err);
|
||||||
|
RemoveInternalTimer($hash);
|
||||||
vitoconnect_getCode($hash); # Werte für: Access-Token, Install-ID, Gateway anfragen
|
vitoconnect_getCode($hash); # Werte für: Access-Token, Install-ID, Gateway anfragen
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
elsif ($opt eq "apiKey" ) { # set <name> apiKey: bisher keine Beschreibung
|
elsif ($opt eq "apiKey" ) { # set <name> apiKey: bisher keine Beschreibung
|
||||||
$hash->{apiKey} = $args[0];
|
$hash->{apiKey} = $args[0];
|
||||||
my $err = vitoconnect_StoreKeyValue($hash,"apiKey",$args[0]); # apiKey verschlüsselt speichern
|
my $err = vitoconnect_StoreKeyValue($hash,"apiKey",$args[0]); # apiKey verschlüsselt speichern
|
||||||
|
return $err if ($err);
|
||||||
RemoveInternalTimer($hash);
|
RemoveInternalTimer($hash);
|
||||||
vitoconnect_getCode($hash); # Werte für: Access-Token, Install-ID, Gateway anfragen
|
vitoconnect_getCode($hash); # Werte für: Access-Token, Install-ID, Gateway anfragen
|
||||||
return;
|
return;
|
||||||
@@ -2782,7 +2787,7 @@ sub vitoconnect_Attr {
|
|||||||
sub vitoconnect_GetUpdate {
|
sub vitoconnect_GetUpdate {
|
||||||
my ($hash) = @_;# Übergabe-Parameter
|
my ($hash) = @_;# Übergabe-Parameter
|
||||||
my $name = $hash->{NAME};
|
my $name = $hash->{NAME};
|
||||||
Log3($name,4,$name." - GetUpdate called ...");
|
Log3($name,4,$name." GetUpdate called by caller name: $name, memoryadress: $hash");
|
||||||
if (IsDisabled($name)) { # Device disabled
|
if (IsDisabled($name)) { # Device disabled
|
||||||
Log3($name,4,$name." - device disabled");
|
Log3($name,4,$name." - device disabled");
|
||||||
InternalTimer(gettimeofday() + $hash->{intervall},"vitoconnect_GetUpdate",$hash); # nach Intervall erneut versuchen
|
InternalTimer(gettimeofday() + $hash->{intervall},"vitoconnect_GetUpdate",$hash); # nach Intervall erneut versuchen
|
||||||
@@ -3454,6 +3459,7 @@ sub vitoconnect_getResource {
|
|||||||
Log3($name,4,$name." - installation: ".$installation);
|
Log3($name,4,$name." - installation: ".$installation);
|
||||||
Log3($name,4,$name." - gw: ".$gw);
|
Log3($name,4,$name." - gw: ".$gw);
|
||||||
if ($access_token eq "" || $installation eq "" || $gw eq "") { # noch kein: Token, ID, GW
|
if ($access_token eq "" || $installation eq "" || $gw eq "") { # noch kein: Token, ID, GW
|
||||||
|
RemoveInternalTimer($hash);
|
||||||
vitoconnect_getCode($hash);
|
vitoconnect_getCode($hash);
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
@@ -3974,7 +3980,7 @@ sub vitoconnect_errorHandling {
|
|||||||
# RATE_LIMIT_EXCEEDED
|
# RATE_LIMIT_EXCEEDED
|
||||||
readingsSingleUpdate($hash,"state","Anzahl der möglichen API Calls in überschritten!",1);
|
readingsSingleUpdate($hash,"state","Anzahl der möglichen API Calls in überschritten!",1);
|
||||||
Log3 $name, 1,
|
Log3 $name, 1,
|
||||||
"$name - Anzahl der möglichen API Calls in überschritten!";
|
"$name - Anzahl der möglichen API Calls in überschritten! Caller Name: $hash->{NAME}, memoryadress: $hash";
|
||||||
InternalTimer(gettimeofday() + $hash->{intervall},"vitoconnect_GetUpdate",$hash);
|
InternalTimer(gettimeofday() + $hash->{intervall},"vitoconnect_GetUpdate",$hash);
|
||||||
return(1);
|
return(1);
|
||||||
}
|
}
|
||||||
@@ -4178,7 +4184,7 @@ sub vitoconnect_DeleteKeyValue {
|
|||||||
If you have more than one gateway, the gateway serial is attached to the filenames.</li>
|
If you have more than one gateway, the gateway serial is attached to the filenames.</li>
|
||||||
<a id="vitoconnect-set-apiKey"></a>
|
<a id="vitoconnect-set-apiKey"></a>
|
||||||
<li><code>apiKey</code><br>
|
<li><code>apiKey</code><br>
|
||||||
You need to create an API Key under <a href="https://developer.viessmann.com/">https://developer.viessmann.com/</a>.
|
You need to create an API Key under <a href="https://developer.viessmann-climatesolutions.com/">https://developer.viessmann-climatesolutions.com/</a>.
|
||||||
Create an account, add a new client (disable Google reCAPTCHA, Redirect URI = <code>http://localhost:4200/</code>).
|
Create an account, add a new client (disable Google reCAPTCHA, Redirect URI = <code>http://localhost:4200/</code>).
|
||||||
Copy the Client ID here as <code>apiKey</code>.</li>
|
Copy the Client ID here as <code>apiKey</code>.</li>
|
||||||
<li><code>Setters for your device will be available depending on the mapping method you choose with the help of the attributes <code>vitoconnect_raw_readings</code> or <code>vitoconnect_mapping_roger</code>.</code><br>
|
<li><code>Setters for your device will be available depending on the mapping method you choose with the help of the attributes <code>vitoconnect_raw_readings</code> or <code>vitoconnect_mapping_roger</code>.</code><br>
|
||||||
@@ -4413,7 +4419,7 @@ sub vitoconnect_DeleteKeyValue {
|
|||||||
Wenn mehrere Gateways vorhanden sind, wird die Seriennummer des Gateways an die Dateinamen angehängt.</li>
|
Wenn mehrere Gateways vorhanden sind, wird die Seriennummer des Gateways an die Dateinamen angehängt.</li>
|
||||||
<a id="vitoconnect-set-apiKey"></a>
|
<a id="vitoconnect-set-apiKey"></a>
|
||||||
<li><code>apiKey</code><br>
|
<li><code>apiKey</code><br>
|
||||||
Ein API-Schlüssel muss unter https://developer.viessmann.com/ erstellt werden.
|
Ein API-Schlüssel muss unter https://developer.viessmann-climatesolutions.com/ erstellt werden.
|
||||||
Dazu ein Konto anlegen, einen neuen Client hinzufügen (Google reCAPTCHA deaktivieren, Redirect URI = http://localhost:4200/).
|
Dazu ein Konto anlegen, einen neuen Client hinzufügen (Google reCAPTCHA deaktivieren, Redirect URI = http://localhost:4200/).
|
||||||
Die Client-ID muss als apiKey hier eingefügt werden.</li>
|
Die Client-ID muss als apiKey hier eingefügt werden.</li>
|
||||||
<li><code>Die Setter für das Gerät hängen von der gewählten Mappingmethode ab, die durch die Attribute vitoconnect_raw_readings oder vitoconnect_mapping_roger gesteuert wird.</code><br>
|
<li><code>Die Setter für das Gerät hängen von der gewählten Mappingmethode ab, die durch die Attribute vitoconnect_raw_readings oder vitoconnect_mapping_roger gesteuert wird.</code><br>
|
||||||
|
|||||||
Reference in New Issue
Block a user