Wie am besten eine config.php in ein Skript einbinden?

Hi,

ich habe mir zusammen mit Chat-GPT ein schönes Skript für meine die automatische Beschattung in Abhängigkeit von Sonnenstand, Helligkeit, und anderen Parametern erstellt. Das ganze ist genau auf unsere Bedürfnisse angepasst und läuft nun schon eine Weile zu meiner Zufriedenheit :slight_smile:

Da das Skript mit der Zeit aber auch ganz schön gewachsen ist, möchte ich nun gerne den nächsten Schritt gehen und Dinge wie die Konfiguration der einzelnen Fassaden in eine config.php auslagern und die verwendeten Funktionen sollen in eine functions.php kommen.

Mir ist aber nun nicht ganz klar, wie ich das am besten und am saubersten mache, da es hier ja verschiedene Möglichkeiten zu geben scheint und ich mich damit nicht wirklich auskenne.

Chatty schlägt mir dafür folgende Befehl vor:

require_once(__DIR__ . "/beschattung_config.php");

Dafür müsste ich dann meine config.php nur in dem scripsts-Ordner von Symcon ablegen? Oder würdet ihr empfehlen das wo anders abzulegen? Dann habe ich mich als nächstes gefragt, warum nicht einfach ein include(“config.php”); ChatGPT habe ich es zwar auch gefragt, aber die Erklärung nicht ganz verstanden, bzw. ich bezweifle dass sie richtig ist.

Noch ein Info, die evtl. wichtig sein könnte in dem Zusammenhang. Aktuell werden in dem Skript alle Fassade sequentiell abgearbeitet und dabei bewertet, ob beschattet werden muss, oder nicht. Perspektivisch würde ich gerne nur eine Fassaden in einem Skriptdurchlauf beurteilen, was dann bedeutet, dass das Skript mit unterschiedlichen Parametern auch mehrmals(zeitgleich) aufgerufen werden kann. Das ist aber erst der übernächste Schritt, ich wollte es trotzdem schon mal erwähnt haben, falls das für das include Thema relevant sein sollte. Vielleicht kommt auch daher das require_once?

P.S. Symcon läuft bei mir auf einem Windows Rechner.

Lege einfach ein Script in Symcon an und dann:

require_once(__DIR__ . "/12345.ips.php");

Wobei 12345 die objektID vom Script ist.
Oder so wie es die Doku zeigt:

//Skript mit ID 12345 einbinden
include(IPS_GetScriptFile(12345));

Ob include oder require_once kommt auf den Anwenderfall an und ist in der PHP Doku eigentlich gut erklärt.

Dann probiere ich das erst mal so. Das hätte auch den Vorteil, dass ich die Config-Datei auch mal in der Konsole öffnen und bearbeiten kann.

Das Einbinden über den Namen, wie oben angedacht, wäre wiederum gut, wenn man die Skripte auf verschiedenen Servern einsetzen möchte. Aber da will ich in Zukunft auch mal versuchen, ob ich es evtl. hinbekomme, dafür ein eigenes Modul zu erstellen.

Du kannst sowohl über die Konsole, als auch über entsprechende PHP Befehle den Dateinamen von einem Script ändern.

Kann man das Script (welches von verschiedenen Scripten aufgerufen werden kann) nicht auch im Ordner /scripts/libs/12345.ips.php ablegen,
dann braucht man im HauptScript doch kein include(IPS_GetScriptFile(12345)).
Hatte ich mal gelesen, aber noch nicht ausprobiert.
Gruß Hainer

Skripte werden immer im Dateisystem abgelegt.