globale Variablen

Hallo,

ich möchte ein Script alle x Minuten aufrufen. Dazu sind aber die Infos vom letzten Aufruf nötig, da ich diese für Berechnungen benötige.
Muss ich dafür im IPS jeweils (viele) Variablen anlegen oder gibt es eine Möglichkeit, diese als global zu deklarieren?
Bei PHP muss ich diese ja außerhalb der Prozedur deklarieren. Wie geht das hier?

Direkt mit PHP-Variablen gar nicht.
Da jedes Script für sich alleine läuft, und nach dem Durchlauf alles verworfen wird.

Umwege kannst du über eine IPS-Variable oder den Buffer der Register-Variable nutzen.
Eine reicht, wenn du deine Daten z.b. nach JSON konvertierst oder mit serialize wandelst.
Michael

Oder schreibe die Werte in ein separates Script und mit include in deinem Ausführscript verknüpfen, bzw. einlesen.

Danke für eure Tipps.

Ich habe zwar mit PHP schon vor einiger Zeit mehrere Seiten erstellt, aber dies ist mir neu.

Vielleicht sollte ich das hier nutzen, nur weiß ich nicht, wo das die Symbox hinspeichert. Vielleicht finde ich ja noch Beispiele dafür.

Zyklisches schreiben von Daten in ein Script oder eine andere Datei solltest du bei der Symbox unterlassen.
Keine Ahnung wie der Flashspeicher das verträgt.
Michael

Ich muss die Daten aber irgendwo zwischenspeichern.

Wenn ich das von dir erwähnte

nutze, habe ich da auch nicht das Problem, dass es auf einen Flash gespeichert wird?

Letzteres wird nur im RAM gehalten.
Der Wert der IPS-Variable wird ‚nur‘ in den Settings regelmässig mit abgespeichert; welches IPS eh schon automatisch macht.

Oder ganz anders.
Du schreibst die Daten in ein MediaObject (Base64-codiert). Das bleibt werden der Laufzeit auch nur im RAM und wird nur beim Shutdown von IPS auf den Flash geschrieben.

Michael

Schau Dir doch mal diese Lösung an : https://www.symcon.de/forum/threads/20529-Script-(Klasse)-um-dauerhaft-Variablen-bzw-Arrays-zu-speichern

Ich nutze diese Objekt Klasse schon seit mehr als einem Jahr ohne Probleme

Unter IPS4, auf der Symbox ? Gibt es da überhaupt eine SQLlite Erweiterung für PHP auf der Symbox ? Ich glaube nicht.
Außerdem ist dies auch bei Schreibzugriffen in die DB mit speichern auf dem Flash verbunden.
So out of the Box wird das vermutlich nicht funktionieren.
Michael

Guter Hinweis, ich habe gerade einen Test gemacht und in der Tat es fehlt die PHP PDO extension auf meinem RASPI. Damit wird es mit einem upgrade auf 4.0 erstmal nichts werden :frowning:

@paresy wird es für die stable 4.0 eine PDO PHP extension geben ?

Wenn man diesem Link glauben kann ist die PDO extension Teil von PHP und bedarf nur einer aktivierung in der PHP ini : http://php.net/manual/en/pdo.installation.php

Nein. Nur für Windows sind alle Extensions verfügbar. Alle anderen Betriebssysteme haben keinerlei spezielle DB Unterstützung.

Einzige Ausnahme ist zur Zeit die MySQL Extension für RPI/Linux/OSX. Wir planen aber nicht weitere hinzuzufügen.

paresy

Da fällt mir ein Stein vom Herzen, damit kann ich den 4.0 upgrade wieder ins Auge fassen. Windows genügt mir, für den RASPI benötige ich die Extension nicht wirklich