Hallo,
mir ist eben aufgefallen das immer wieder falsche Werte ins Archiv geschrieben werden und somit die richtigen Werte verfälschen. Es geht dabei um einen Shelly Plus Plug S.
Ich lasse mir die Werte für den heutigen und gestrigen Tag berechnen aus dem Archiv und da kommt es dann für den heutigen Tag zu absolut komischen Werten.
Das sind die Archivdaten für die Variable „Verbrauch Heute“.
Was kann ich tun um den Fehler zu finden wo die 0 Werte und flaschen Werte herkommen? Habe schon gefühlte 100x die Skripte etc. kontolliert. Andere Geräte funktionieren wunderbar. Muss aber dabei sagen das ich einen zusätzlichen Plug S im Gartenhaus montiert habe und die Kategorie etc. vom „Gartenhaus: Technikschrank“ kopiert habe und angepasst hatte wie Namen etc. Das neue KAtegorie habe ich aber wieder gelöscht um den Fehler einzugrenzen.
<?php
$werte = AC_GetAggregatedValues(13449, 13562, 1 /* täglich */, strtotime("yesterday 23:59"), time(), -1);
foreach($werte as $wert) {
echo date("d.m.Y H:i:s", $wert['TimeStamp']) . " -> " . $wert['Avg'] . PHP_EOL;
}
SetValue(57551, $wert['Avg']); // Schreibt den Wert in die Variable
Skript für „Verbrauch Heute“:
<?php
$werteday = AC_GetAggregatedValues(13449, 13562, 1 /* täglich */, strtotime("today 00:00"), strtotime("now"), 0);
//print_r($werteday); // Ganzes Array ausgeben
//echo $werteday[0]['Avg']; // Den Wert möchte ich ausgeben
// Wenn das Skript durch den ScriptTimer aufgerufen wurde, den ScriptTimer deaktivieren
if (@$_IPS['EVENT'] === @IPS_GetObjectIDByName('ScriptTimer', $_IPS['SELF'])) {
IPS_SetScriptTimer($_IPS['SELF'], 0);
}
// Wenn das Skript nicht durch den ScriptTimer aufgerufen wurde, ScriptTimer aktivieren
else {
IPS_SetScriptTimer($_IPS['SELF'], 70);
}
// Veranlasst, dass das Skript alle 10 Sekunden ausgeführt wird
//IPS_SetScriptTimer(24782, 10); // ID des Skriptes
// Hier die Daten aus dem Archiv abrufen und in Variable schreiben
SetValue(49524, $werteday[0]['Avg']); // Schreibt den Wert in die Variable
ID13449 ist das Archiv
ID13562 ist die Variable „Gesamt Energie“ der Shelly Instanz.
Habe jetzt mal die anderen Geräte gecheckt und da ist alles normal. Gleiche Variablen, gleiche Skripte etc. Es sieht so aus als wäre was passiert heute mittag beim kopieren der Kategorie für das neue Gerät. Was mir noch gerade einfällt, ich habe heute Mittag die Firmware geändert. Ich gehe mal zurück auf die vorherige.
Da die fehlerhaften Daten ja recht oft kommen, kannst du ja auch im Debug vom MQTT Server reinschauen, was genau dort ankommt. Meistens kann man dort ja gut mitlesen. Kurios aber denkbar wären auch zwei Geräte, die auf das selbe Topic senden, falls du das evtl. angepasst hast.
Ich schaue mal da nach. Topics waren jedenfalls unterschiedlich, habe auch das andere Gerät wieder gelöscht wofür ich die Kategorie kopiert hatte.
Selbst wenn ich alle Events deaktiviere, bekomme ich immer wieder diese 0,01 Werte reingeschrieben. Denke mal das es dann mit den Events und Skripte nichts zu tun hat.
Im Debug vom MQTT Server kommen folgende Daten an für das Shelly Gerät:
Ich glaube er hatte Probleme mit dem Topic „ShellyPlusPlugS-Gartenhaus“. Habe jetzt umbenannt in der alten Instanz in „ShellyPlusPlugS-Gartenhaus-Technik“ und wie es aussieht funktioniert es wieder. Ist doch seltsam oder?
Ne, da bin ich mir eigentlich 100%tig sicher. Und wenn ich wirklich das gleiche Topic verwendet hätte, dann hätte es ja zumindest wieder richtig laufen müssen als ich das neue Gerät komplett gelöscht hatte, denke ich mir mal. Hatte auch alle falschen Werte aus dem Archiv gelöscht und neu reaggregiert oder wie das heißt
Fehler liegt übrigens am Modul. Da muss @KaiS noch mal den Filter anpassen.
Ein issue dazu ist in GitHub eröffnet.
Sobald man ein Topic konfiguriert, welches in Teilen auch in anderen Topics vorhanden ist, werden die Daten durchgemischt.
Michael