Instanz/Variable aus dem MQTT Konfigurator aktualisiert sich nicht

Hallo,
ich habe mir aus dem MQTT Konfigurator einige Instanzen anlegen lassen von meinem Sonoff und die enthält eine String Variable. die sich aber nicht automatisch aktualisiert. Wie muss ich vorgehen das sich die Variable aktualisiert?

Es gehen nur die normal abgefragt werden:

tele/Sonoff_01/STATE
tele/Sonoff_01/SENSOR

Wenn ich die z.B. Status abfrage machen möchte funktioniert das nicht wie z.B.:

stat/Sonoff_01/STATUS6

Geht das Definitiv nicht oder muss ich am Sonoff noch weitere Einstellungen vornehmen.

VG
Stefan

Frage: Warum nutzt du die Module von Kai nicht? Soweit ich weiß, hat er passende gemacht.

paresy

Ich glaube Stefan möchte gerne die Status Variablen in Symcon haben, diese Werte ich aber nicht alle aus.
Kann ich aber bei Gelegenheit mal noch einbauen.

Grüße,
Kai

Hallo paresy,
ich nutze das Modul von KaiS, aber wie er oben schon schreibt sind die dann nicht eingebaut im Modul.

Ich kann diese Meldungen/Instanzen zwar mit dem MQTT Konfigurator anlegen, aber die aktualisieren sich nicht kontinuierlich.

Ich glaube Stefan möchte gerne die Status Variablen in Symcon haben, diese Werte ich aber nicht alle aus.
Kann ich aber bei Gelegenheit mal noch einbauen.

Hallo Kai,
wenn du das bewerkstelligen würdest, wäre das Super.

Die Instanzen empfangen automatisch wenn der Tasmota was sendet. Somit musst du was etwas schicken damit die Geräte empfangen.

paresy

Ich glaube du musst den Status explizit anfragen.
Ansonsten wird dieser nicht ständig gesendet.

Grüße,
Kai

Gesendet von iPhone mit Tapatalk

Hallo Stefan,

den Status(status 0 - status 12) muss man abfragen, da kommt nix von selber.
Aber da kommen ne Menge an Var’s zusammen und könnte schnell mal eine kleine IPS Lizenz sprengen,

Warum möchtest du die Daten denn in VAR’s haben?

Und wenn du aus dem MQTT Configurator stat/Sonoff_01/STATUS6 angelegt hast, wird die auch gefüllt, wenn du z.B. in der tsamota Console „status 6“ absendest. Oder auch über Befehl testen in KaiS Modul, bei dir im Sonoff_01.

Das steht dann bei mir in der Var STATUS6 drin und wird nach jeder anfrage auch neu gesetzt.:
{„StatusMQT“:{„MqttHost“:„10.10.0.11“,„MqttPort“:1883,„MqttClientMask“:„DVES_%06X“,„MqttClient“:„DVES_EEB159“,„MqttUser“:„DVES_USER“,„MqttCount“:2,„MAX_PACKET_SIZE“:1200,„KEEPALIVE“:30}}

Hallo,
habe eine Unlimited:D

Ich habe mir aus dem MQTT Konfigurator des Status 1 und Status 2 angelegt und mir ein Skript und Event dazu angelegt:

Das Skript:

<?php

$s = $_IPS['VALUE'];
$a = json_decode($s, true);
print_r($a); 


$array_var = json_decode($s, true);

 
//setvalue (34515, $array_var['StatusPRM']['Baudrate']);
//setvalue (51084, $array_var['StatusPRM']['BootCount']);
setvalue (42351, $array_var['Wifi']['Channel']);
setvalue (30177, $array_var['Wifi']['Signal']);

//echo $a['Status']['Power'];

Ereignis:

Konsole:

Wie man bei der Konsole sieht wird die Status 1 Instanz und die Variablen alle 20 sek. automatisch aktualisiert. Die Status 2 Instanz aber nur alle paar Stunden, jetzt kann es sein das die heute Abend erst wieder aktualisiert wird. Beide haben das gleiche Skript und Event.

Habe jetzt im Sonoff den Status 6 abgesendet und im Konfigurator kommt dann das Thema an und lege die Instanz an. Wenn ich dann im Sonoff in der Konsole den Befehl erneut absetzte, wird die Variable Value gefüllt. Hatte aber auch schon das das nach einer gewissen Zeit von selbst befüllt wurde.

Und das stört dich?
Oder ist es jetzt so wie gewünscht?

Grüße,
Kai

Hallo Stefan,

08:36:20 MQT: tele/tasmota118/STATE = {„Time“:„2020-07-03T08:36:20“,„Uptime“:„1T18:13:27“,„UptimeSec“:152007,„Heap“:25,„SleepMode“:„Dynamic“,„Sleep“:50,„LoadAvg“:23,„MqttCount“:2,„POWER1“:„OFF“,„POWER2“:„OFF“,„Wifi“:{„AP“:1,„SSId“:„wlan-ts 7490“,„BSSId“:„DC:39:6F:69:94:18“,„Channel“:7,„RSSI“:100,„Signal“:-41,„LinkCount“:1,„Downtime“:„0T00:00:03“}}

Kommt über die Logging Zeit Einstellung im Tasmota Modul, der Rest muss abgefragt werden.
Da könntest du noch mit einem Skritp und Timer arbeiten, um status6 abzufragen. (Tasmota_sendMQTTCommand)

Wenn Kai alle Var’s anlegen würde, wird es bei kleinen IPS Lizenzen eng, ich würde es nicht so machen. Oder man müßte es einstellbar machen, was angelegt werden soll.(Halte ich aber für zuviel Aufwand).

Mmmhh…stören nicht wirklich. Lieber wäre mir wenn es da auch einen bestimmten Abstand gäbe und sich aktualisiert.

Kommt über die Logging Zeit Einstellung im Tasmota Modul, der Rest muss abgefragt werden.
Da könntest du noch mit einem Skritp und Timer arbeiten, um status6 abzufragen. (Tasmota_sendMQTTCommand)

Wäre vielleicht eine bzw. die Möglichkeit. Wie würde das Skript aussehen?

Teste mal:

Tasmota_sendMQTTCommand($InstanceID,"status","6");

Grüße,
Kai

Funktioniert nicht.

Fehler:

Parse error:  syntax error, unexpected '59319' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$' in C:\ProgramData\Symcon\scripts\17790.ips.php on line 3
Abort Processing during Fatal-Error: syntax error, unexpected '59319' (T_LNUMBER), expecting variable (T_VARIABLE) or '{' or '$'
   Error in Script C:\ProgramData\Symcon\scripts\17790.ips.php on Line 3

Edit: Meinst du in deinem Modul oder die Instanz die ich mit dem Konfigurator erstellt habe?

Du machst dir ein Script und nimmst die InstanzID von dem Tasmota Gerät.
Und führst damit genau den Befehl aus.

Grüße,
Kai

Hatte den Fehler gemacht das ich die Instanz ID der Status 6 Instanz eingetragen habe im Skript. Habe nun die „Haupt“ ID des eigentlichen Tasmota Gerätes genommen, aber die Variable bleibt leer.

Edit: Fehler wurde gefunden, hatte die falsche Instanz ID genommen, anstatt von Sonoff_1 hatte ich die Sonoff_2 ID eingetragen :smiley: .Funktioniert jetzt also soweit.

Danke für deine Mühe KaiS.

Hallo Kai,
habe das Skript jetzt erweitert von Status Meldungen 2 bis 8 und bekomme dann einen Fehler, bis 6 ging es noch:

Fatal error:  Maximum execution time of 30 seconds exceeded in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tasmota\libs\TasmotaService.php on line 43
Abort Processing during Fatal-Error: Maximum execution time of 30 seconds exceeded
   Error in Script C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tasmota\libs\TasmotaService.php on Line 43

Skript:

//Tasmota_sendMQTTCommand(19240,"status","0");
Tasmota_sendMQTTCommand(19240,"status","1"); //Geräteparameterinformationen anzeigen
Tasmota_sendMQTTCommand(19240,"status","2"); //Firmware-Informationen anzeigen
Tasmota_sendMQTTCommand(19240,"status","3"); //Protokollierungs- und Telemetrieinformationen anzeigen
//Tasmota_sendMQTTCommand(19240,"status","4"); //Speicherinformationen anzeigen
//Tasmota_sendMQTTCommand(19240,"status","5"); //Netzwerkinformationen anzeigen
//Tasmota_sendMQTTCommand(19240,"status","6"); //MQTT-Informationen anzeigen
//Tasmota_sendMQTTCommand(19240,"status","7"); //Zeitinformationen anzeigen
//Tasmota_sendMQTTCommand(19240,"status","8"); //angeschlossene Sensoren anzeigen information

//Tasmota_sendMQTTCommand(19240,"status","11");

Sobald ich alle aktiviere kommt der Fehler.

Skript zum füllen der Variablen: (Variablen beschreiben aus Array)

<?php

$s = $_IPS['VALUE'];
$a = json_decode($s, true);
print_r($a); 


$array_var = json_decode($s, true);

 
setvalue (34515, $array_var['StatusPRM']['Baudrate']);
setvalue (20487, $array_var['StatusPRM']['SerialConfig']);
setvalue (26210, $array_var['StatusPRM']['GroupTopic']);
setvalue (29303, $array_var['StatusPRM']['OtaUrl']);
setvalue (42948, $array_var['StatusPRM']['RestartReason']);
setvalue (43346, $array_var['StatusPRM']['StartupUTC']);
setvalue (57910, $array_var['StatusPRM']['Uptime']);
setvalue (57167, $array_var['StatusPRM']['Sleep']);
setvalue (47899, $array_var['StatusPRM']['CfgHolder']);
setvalue (51084, $array_var['StatusPRM']['BootCount']);
setvalue (40934, $array_var['StatusPRM']['SaveCount']);
setvalue (50667, $array_var['StatusPRM']['SaveAddress']);

Beim ausführen des Skriptes bekomme ich auch folgende Ausgabe:

Notice:  Undefined index: VALUE in C:\ProgramData\Symcon\scripts\13137.ips.php on line 3

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 11

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 11

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 12

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 12

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 13

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 13

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 14

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 14

Notice:  Trying to access array offset on value of type null in C:\ProgramData\Symcon\scripts\13137.ips.php on line 15
Abort Processing during exceed of maximal ErrorCount: Trying to access array offset on value of type null
   Error in Script C:\ProgramData\Symcon\scripts\13137.ips.php on Line 15

@KaiS

Kannst du was zu dieser Meldung sagen?

Fatal error:  Maximum execution time of 30 seconds exceeded in C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tasmota\libs\TasmotaService.php on line 43
Abort Processing during Fatal-Error: Maximum execution time of 30 seconds exceeded
   Error in Script C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tasmota\libs\TasmotaService.php on Line 43

Hallo Stefan,

wenn du alle Befehle abschickst läuft das Script zu lange.
Im Modul wird gewartet, bis eine Rückmeldung kommt, dadurch läuft das Script dann zu lange.

Du musst für die Befehle einzelne Scripte erstellen.

Grüße,
Kai

Hallo Kai,
Ok, danke für die Info.

Habe gerade gesehen jetzt kommt eine andere Fehlermeldung:

08.07.2020, 18:00:01 | PHP                  | Error: Warning: First parameter must either be an object or the name of an existing class
   Error in Script C:\ProgramData\Symcon\modules\.store\info.schnittcher.ips.tasmota\Tasmota\module.php on Line 85
  134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
   37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
      in IPSLogger_PhpErrorHandler
   85 in modules\.store\info.schnittcher.ips.tasmota\Tasmota\module.php (call property_exists)
    3 in C:\Windows\System32\- (call ReceiveData)