Variablen und Konstanten zentral ablegen

Hallo Leute,

es gibt ja bei der IPS-Programmierung immer eine (steigende) Anzahl von Konstanten (z.B. die IP einer Webcam) und Variablen (z.B. ist gerade Wochenende oder Werktag).
Die letzten Wochen habe ich im Wesentlichen damit zugebracht, meine IPS-Skripte zu überarbeiten. Von den ersten Schritten der PHP-Programmierung im IPS bis heute hat sich ja eine Menge getan, insbesondere auch durch das was man hier im Forum liest und lernt.

Nun frage ich mich, wie ich die Variablen und Konstanten am Besten zentral verwalte, so das man z.B. bei einer IP-Änderung der Webcam nicht alle Skripte durchsuchen muss um diese zu ändern.

Der erste Weg der mir dazu eingefallen ist, ist in einem besonderen Verzeichnis alle Variablen und Konstanten die man immer wieder häufiger so braucht als „richtige“ IPS-Variablen anzulegen, dort ggf. durch getriggerte Skripte berechnen zu lassen und dort dann bei Bedarf abzurufen, ein anderer Weg der mir auch umsetzbar erscheint ist es, in einem Skript alle diese Werte zur Verfügung zu stellen und dieses Skript durch „Include“ dann einzubinden.

Ist das eine philosophische Frage? Oder gibt es entscheidende Vor- oder Nachteile der einen oder anderen Version?

Joachim

Denke das ist eine philosophische Frage. IP-Adressen lege ich bspw. in die Beschreibung der jeweiligen Instanzen, ebenso Plugwise IDs. Serial Ports habe ich versucht in Funktionen zu Kapseln, welche dann per Include verwendet werden. Werte die sich ständig verändern gehören natürlich in Variablen. Hauptsache man behält den Überblick.

Hallo,

interessante Frage. Grundsätzlich habe ich mir angewöhnt, solche Werte über zentrale Funktionen abzufragen, die ich zuvor mittels include in die Programme integriere. Also die IP-Adresse wäre dann eben nicht mehr ein fester Wert, sondern einfach std_ipadress() oder sowas. Dadurch ist die Stelle für die Definition schonmal auf einen Punkt reduziert.
Kurzfristige Variablen, die ich auch visualisieren will, speichere ich nach wie vor in einer IPS-Var, frage sie allerdings auch über eine Funktion ab ( Wochenende, Feiertag etc… ).
Ist eine Inhalt sehr langfristig und muss nicht visualisiert werden, spricht ja auch nichts dagegen, diesen in einer Textdatei zu speichern und von dort wieder auszulesen. Das mache ich z.B. mit Texten für meine Text-to-speech Ansagen so. Dafür würde ich keine IPS-Vars verschwenden. Das ginge natürlich auch mit der IP-Adresse…

Gruß
Walter

Hallo Walter und axelp,

vielen Dank für Eure Einschätzung.

So wie ich es bis jetzt hier im Forum „ergründen“ konnte, habe ich für Konstanten zwei „vernüftige“ Lösungen gefunden:

  1. Konstanten die im Webfront visualisiert werden sollen (ggf. auch mit der Option sie doch ab und zu mal verändern zu wollen/müssen) als IPS-Variable anlegen, diese sind dann in jeden Skript direkt abrufbar (oder auch veränderbar).
  2. Konstanten die nicht im Webfront visualisiert werden sollen, können
    a) auch als IPS-Variable angelegt werden, der Vorteil ist sie sind in jeden Skript direkt abrufbar
    b) in einen Skript definiert werden und muss dann aber per „Include“ dort eingebaut werden wo sie benötigt werden
    c) auch die wie unter 1. behandelten Variablen könnten hier mit eigenem Namen versehen werden. Vorteil: man muss
    dann nicht über die ObjektID die Einbindung vornehmen.

Es ist nach meiner Recherche nicht möglich ein PHP-Skript auszuführen, dass nach der Durchführung als globale Variable im IPS bzw. in den PHP-Skripten zur Verfügung steht (bitte um Korrektur falls ich mich geirrt habe!).

Joachim

Hi,

also die Frage stelle ich mir auch gerade.

Ich habe sehr viele Skripte, die über Timer gestartet werden und z.B. regelmässig je Raum die benötigten Lichtszenen (LCN) berechnen, etc.
Dort werden immer diesselben Werte berechnet oder ausgenutzt. Das würde ich gerne generischer gestallten, und deshalb auch Konstanten in zentrale Skripte, die dann inkludiert werden, einbauen.

Meine Frage wäre da eher, wie es mit der Performance aussieht. Wie gross sollten solche Includes höchstens sein und wäre Probleme beim „parallelen“ inkludieren zu erwarten?

Gruss
Coyote

Hallo Coyote,

ich habe mir diverse Funktionsblöcke (=Dateien) geschaffen, die thematisch sortiert sind (also zum Beispiel für FritzBox-Funktionen, Siemens Logo Funktionen, IP-Cam Funktionen usw.). Dann habe ich mir eine Skript geschaffen, in dem alle Konstanten (z.B. IP-Adressen, Passwörte usw.) zentral abgelegt sind.
Performanceeinbußen bemerke ich nicht, aufpassen muss man dann, wenn includete Dateien ebenfalls includete Dateien enthalten - da kann es dann zu Problemen kommen…

Joachim