NEWS
extendObject vs. setObjectNotExists
-
Hallo zusammen,
eine Verständnisfrage (ich hoffe, ich bin in der richtigen Rubrik):
setObjectNotExists tut nur etwas, wenn das Objekt/state noch nicht exisitiert.
extendObject aktualisiert ein Object/state mit den übergebenen Daten.Wenn ich extendObject nutzt, dann wird ein evtl. vorhandenes Logging laut Log unterbrochen udn wieder aufgesetzt (wobei ich nicht immer disabled/enabled-Pärchen sehe).
- Ist es bedenklich, wenn nicht immer disabled/enabled-Pärchen erscheinen?
- Sollten zu viele extenObject-Aufrufe vermieden werden (update alle paar Minuten)?
- Legt extendObject auch ein Objekt/state an, wenn es noch nicht existiert? Oder muss dann immer setObjectNotExists und extendObject gerufen werden?
In den Doku wurde ich diesbezüglich nicht fündig.
Viele Grüße
Sneak-L8 -
@Sneak-L8 sagte in extendObject vs. setObjectNotExists:
Legt extendObject auch ein Objekt/state an, wenn es noch nicht existiert? Oder muss dann immer setObjectNotExists und extendObject gerufen werden?
extendObject legt ein Objekt an wenn es nicht vorhanden ist.
@Sneak-L8 sagte in extendObject vs. setObjectNotExists:
Sollten zu viele extenObject-Aufrufe vermieden werden (update alle paar Minuten)?
Hm da stellt sich mir die Frage ob das nicht eher in einen State geschrieben werden sollte. Im Objekt sind normal Statische Daten. Warum genau wird das Objekt alle paar Minuten Aktualisiert?
-
@Jey-Cee Danke für die Erläuterung.
Es sind eigentlich states. Dort will ich "unit" aktualsieren. Und bei Channels (das sit doch der richtige Name für einen "Ordner" in dem States enthalten sind?) die Beschreibung.
Ich habe bisher nur rausgefunden, dass man das mittels ExtendObject machen muss. Wenn das anders geht, dann mach ich das gerne. -
@Sneak-L8 ok unit ist teil vom Objekt, wenn es nötig ist die Abhängig vom Wert zu ändern musst du das so machen.
Ja Channels enthalten states das ist richtig.
-
@Jey-Cee Danke. Dann muss ich mir also keine Sorgen machen, wenn ich hier immer Meldungen im Log sehe?
Nicht dass die Aufzeichnung in sql.0 flöten geht ...
-
@Sneak-L8 sagte:
Dort will ich "unit" aktualsieren.
Welchen Grund kann es geben, die "unit" zu ändern ?
-
@paul53 Es sind generische Daten von extern. Diese werden in States gemappt. Ich kann mir nicht sicher sein, dass die Einheit des Wertes sich in dem entfernten API ändert. Deswegen will ich sie (ggfs. auch zusammen mit dem Wert) aktualisieren.
Den wert kann ich mit setState ändern, aber die unit m.W. nicht. -
@Sneak-L8 sagte:
Ich kann mir nicht sicher sein, dass die Einheit des Wertes sich in dem entfernten API ändert.
Dann prüfst Du hoffentlich, ob sich die "unit" geändert hat, bevor sie per extendObject() überschrieben wird ?
-
@paul53 Nein, warum sollte ich? Stellt das ein Problem dar? Dann müsste ich zusätzlich im Adapter die Werte erstmal auslesen und dann updaten. Da das über Callback geht ist das dann recht aufwändig ...
-
@Sneak-L8 sagte:
Dann müsste ich zusätzlich im Adapter die Werte erstmal auslesen und dann updaten.
Man kann sich die "unit" auch in Variablen merken. Objekte sollten quasi-statisch bleiben, da sie sonst zu oft in die Datei/Datenbank geschrieben werden.
-
@paul53 sagte in extendObject vs. setObjectNotExists:
@Sneak-L8 sagte:
Dort will ich "unit" aktualsieren.
Welchen Grund kann es geben, die "unit" zu ändern ?
Bei EnOcean gibt es dafür 2 Szenarien:
- die Unit kann im Gerät ausgewählt werden werden.
- die Einheit hängt vom Wert ab. z.B Wh werden beim Überschreiten von 1000 in kWh übertragen, die Unit wird dann sepperat mit gesendet.
@Sneak-L8 sagte in extendObject vs. setObjectNotExists:
Da das über Callback geht ist das dann recht aufwändig .
Dafür gibt es Promises und Await/Async.
-
@Jey-Cee sagte:
die Unit kann im Gerät ausgewählt werden werden.
Die Auswahl wird man nicht ständig ändern.
@Jey-Cee sagte in extendObject vs. setObjectNotExists:
die Einheit hängt vom Wert ab. z.B Wh werden beim Überschreiten von 1000 in kWh übertragen, die Unit wird dann sepperat mit gesendet.
Dann kann man den Wert auch in die Unit des Datenpunktes umrechnen.
-
@paul53 sagte in extendObject vs. setObjectNotExists:
@Sneak-L8 sagte:
Dann müsste ich zusätzlich im Adapter die Werte erstmal auslesen und dann updaten.
Man kann sich die "unit" auch in Variablen merken. Objekte sollten quasi-statisch bleiben, da sie sonst zu oft in die Datei/Datenbank geschrieben werden.
Danke für den Hinweis. Ja, ich könnte sie beim Start des Adapters aus den States einlesen und dann nur aktualisieren, wenn sie sich ändern. Promises und Await/Async sagt mir nicht so viel, da müsste ich mich erst einlesen.
Aber ich sollte es auf jeden Fall umstellen, wenn durch den Extend die Daten dann jedes Mal neu in die DB geschrieben werden. Da will ich nicht zum Messie werden ...