Ja, aber welche InstanzID gibt man bei RegVar_SetBuffer() an?
Die ID vom Script?
Soweit ich das verstehe, ist das für RegisterVariablen Instanzen gedacht.
Ich habe aber nur ein loses Script, welches über ein Timer-Event regelmäßig gestartet wird.
Die ID der Instanz. Wie bei allen Instanz-Funktionen.
Die RegVar Instanz musst du schon anlegen, um den Buffer dieser Instanz zu verwenden.
Ein Script hat kein Buffer.
Die Module haben einen, weil sie eine Instanz sind
Michael
Dass man ein Buffer nur verwenden kann, wenn eine Instanz vorhanden ist, weis ich.
Das habe ich ja auch bei der Modulentwicklung immer wieder verwendet.
Aber genau das ist ja mein Problem, warum ich die Buffer so nicht verwenden kann:
Ich habe keine Instanz!
In meinem fall hab ich aber nur ein loses Script.
Was ich machen könnte wäre eine Dummyinstanz und darunter das Script.
Allerdings ist das auch nicht schön.
Aktuell habe ich unter dem Script einfach Variablen angelegt.
Find ich halt nicht schön, da dort nur Scriptinterne Daten abgelegt werden (zeitstempel, regelwerte etc).
Eine Dummy Instanz hat keinen Buffer.
Was hindert dich daran, einfach per Script eine RegisterVariable anzulegen, wenn sie nicht vorhanden ist, und einfach deren Buffer zu benutzen?
Sonst bleibt nur eine String Variable in Symcon.
Dort kann man z.b. mit serialize die Daten auch ablegen, ohne das es dem System schaden sollte.
Geht mit dem Info Feld auch, aber da kenne ich die max Größe nicht.
Michael
Da mit dem Speichern von Daten im Infofeld eines Objektes hab ich auch schon gemacht.
geht ganz gut. Nachteil auch hier
Info-Feld zweck entfremdet
Wird immer in der IPS-Config-Datei mitgespeichert.
Ich glaube ich werde da mal ein Featurewunsch erzeugen.
Coll wäre es, wenn es eine Möglichkeit gibt wie
IPS_SetBuffer($ObjectID, $Ident, $Value);
=> IPS_SetBuffer(67343, ‚MeineLetzenDaten‘, ‚7346736375438‘);
Also Buffern von beliebigen Daten zu einer ObjectID.
Und das von überall aus…
Wo ist jetzt dein Problem, unterhalb des Scripts eine Registervariable anzulegen? Kann man im Objektbaum schön einsortieren. Kostet dich keine Variablen (Lizenzzählung) und bleibt dem System treu, ohne für dich das Rad neuerfinden zu müssen.
Was auch noch gehen sollte: Mit GetChild die Registervariable finden und falls nicht vorhanden anlegen. So bleibt es sogar relativ generisch.
Ja, das ist ja auch alles richtig. Das kann man schon so machen und wird auch das Problem lösen,
aber ist nun mal nicht „schön“.
Ich bin nicht allwissend.
Daher die ursprüngliche Frage: Gibt es da eine bessere Lösung zum Speichern von Daten in Scripten.
Wenn die Antwort nein ist, dann ist die Frage auch schon beantwortet.
Ja, die deiner Meinung nach nicht schöne Lösung ist die bessere
Glaube auch kaum das @paresy den Scripten einen eigenen Buffer spendieren kann. Das sind ja Objekte ohne ‚Funktion‘, also nur Text (Script) welche durch PHP ausgeführt werden. Während eine Instanz ja ein ‚lebendes‘ Objekt mit eigenen Speicher und Code ist.
Michael