NEWS
Test Adapter History 2.0.0
-
@marty56 Also zu aller erst mal kann dein Code ggf gar nicht tun ... du speicherst den State und ZEITGLEICH sendest du das update.
Beides wird aber asynchron verarbeitet.
Weiterhin ... wie willst Du sehen ob das was tut? Das update setzt den gleichen Wert wie das "store" Uuund wenn Du das Skript nochmals ausführst hast Du danach zwei oder mehr Datenpunkte mit dem genannten Zeitstempel (wegen dem StoreState). Wenn Du dann ein Update sendest dann ändert er irgendeinen von denen.
Die Adaptertests nutzen mindestens mal storeState aktuell in allen 3 Adaptern, also das Tut in jedem Fall!
Zu Update und delete bitte checke ob es per Admin geht. Wenn ja dann geht es erstmal generell - aber auch hier bitte mit einem State der nicht mehrfach existiert zum gleichen Zeitstempel
-
@apollon77
Ich habe natürlich die beiden Code Stücke nicht gleichzeitig ausgeführt! Das ist mir schon klar, dass das nicht möglich ist.Es waren nur Beispiele, die ich ausprobiert habe, mangels Dokumentation der Syntax.
Also einmalvar timestamp = new Date("2021-05-31 23:55:00.000").getTime(); sendTo('history.0', 'storeState', [ {id: 'javascript.0.Test', state: {ts: timestamp, val: 15, ack: true, q: 0}}, ], result => console.log('deleted'));
ausgeführt und dann nachgeschaut über die Admin Oberfläche, ob der Wert mit dem richtigen Wert und Timestamp gespeichert wird. Das ist nicht der Fall. Und dann habe noch die andere Varianten getestet und dann noch weitere. Funktionieren tut die alle nicht.
Nochmal die Frage. Die meinst, dass der Code oben (nicht die zwei Teile hintereinander) den Wert "15" in den Datenpunkt 'javascript.0.Test' mit dem TimeStamp 31.5.2021 um 23:55 schreiben kann?
Ich gebe auf und bleibe jetzt erst mal bei meiner direkten Bearbeitung der History Files. Das möchte ich eigentlich nicht, weil ich dadurch keine Möglichkeit habe, meinen Code leicht auf SQL umzustellen.
-
@marty56
so jetzt habe ich eine Millionen verschiedene Syntax Versionen ausprobiert.var timestamp = new Date("2022-05-06 23:55:00.000").getTime(); sendTo('history.0', 'storeState', { 'id': 'javascript.0.Test', 'state': {'ts': timestamp, 'val': 1} } , result => console.log('deleted'));
funktioniert.
Schade, ein kleines bisschen Dokumentation hätte mir viel Zeit erspar!
-
Funktioniert leider nicht zuverlässig.
Ich gebe auf. Das ist Zeitverschwendung. -
@marty56 sagte in Test Adapter History 2.0.0:
Funktioniert leider nicht zuverlässig.
Das heisst?
Wie prüfst Du es denn? Indem Du schaust ob es im File steht? Kann es sein das es nicht gespeichert wurde weil du mehrere Datensätze im RAM hälst? Dann wird es nach spätestens 10 Mins gespeichert. Oder was ist dein Problem?
-
@marty56 Also storeState kann drei varianten:
- Wenn das Message Objekt (der parameter nach storeState) ein Array ist dann kann man mehrere "id + jeweils ein State Objekt" speichern
- Wenn message.state ein Array ist dann kann man mehrere States für eine ID speichern
- Sanst ist der Call für eine ID mit einem State in einem Objekt.
Wenn du mich sosoooo lieb fragst kann ich das gern mal noch in die Doku aufnehmen
Ergo: Dein Code von oben muss genauso tun wie der jetzt hier.
-
@apollon77 Danke, eine bessere Doku wäre wirklich super.
Außerdem der Code oben funktioniert so nicht, wenn derselbe Datenpunkt zur selben Zeit schon vorhanden ist. Dann muss man den erst vorher löschen.
Ich habe jetzt hingefummelt und es scheint zu funktionieren. Mal sehn, ob's hält.
-
Kleiner Bug bei V2.0
Wenn man sich die Verlaufsdaten anschauen möchte, kann man nicht scrollen.
Getestet mit Safari unter MacOS MontereySoll ich einen Github Issue anlegen?
-
@marty56 Ja aber im Admin Repo ... und am besten mit Chrome versuchen ...
-
Vielen Dank für Eure Unterstützung. die 2.0.1 geht jetzt ins Bea/Latest Repo!
--> https://forum.iobroker.net/topic/54832/history-2-0-0-zusammenfassung
@Marty56 StoreState Doku ist aktualisiert