Auf vielfachen Wunsch hier noch einmal eine kleine Anleitung zur Nutzung der Skript-Bibliothek!
(Kurz)Anleitung zur Nutzung von (einzelnen) Skripten aus meiner Bibliothek
Wie immer gibt es mehrere Wege nach Rom um die Scripte zu nutzen. Diese Anleitung beschreibt wie ich es selber nutze und zeigt aber auch hier und da Möglichkeiten es anders zu machen.
Vorbereitung
Und schon geht es los - man kann sich die Skripte auf 3 verschiede Wege aus dem github-Repository holen:
- man erstellt ein Clone bei sich lokal des Repositories:
git clone https://github.com/wilkware/ips-scripts/
Vorteil man kann bei neuen Versionen schnell diese per git checkout
holen
- man lädt sich alles per ZIP-Download von github runter (siehe Screen)
- keines der ersten beiden Varianten - man macht später Copy&Paste direkt von den Dateien in github
1. System-Funktionen & Local-Variablen
Warum es die Bibo gibt habe ich ja lang und breit in meinem Blog und auch hier im Forum geschrieben - primär um Code nicht immer doppelt zu pflegen!
Darum ist das Script System.Functions.ips.php die zentrale Datei.
Da jeder jetzt aber seine eigenen API-Keys, Settings usw. haben möchte - gibt es die Datei System.Locals.ips.php.
Hier die Schritte zum Erstellen dieser Dateien:
- In der IPS-Console ein neues Skript erstellen (z.B. Name = ‚Functions‘)
- dann Skript öffnen und oben über Scriptverwaltung ‚Umbennen‘ auswählen
- Skript in System.Functions.ips.php umbenennen
- Inhalt aus meiner Datei (siehe oben - Variante 1-3) in das Skript kopieren
- Speichern und verlassen
- In der IPS-Console wieder ein neues Skript erstellen (z.B. Name = ‚Locale‘)
- dann Skript öffnen und oben über Scriptverwaltung ‚Umbennen‘ auswählen
- Skript in System.Locals.ips.php umbenennen
- Inhalt aus meiner Datei (siehe oben - Variante 1-3) in das Skript kopieren
- Speichern und verlassen
Sollte dann so aussehen …
2. Autoload erstellen bzw. bearbeiten
Damit der Inhalt der gerade angelegten Skripte immer und überall verfügbar ist, müssen diese in der Autoload-Datei (__autoload.php) hinterlegt werden.
- per Putty (linux) oder Explorer (Windows) in das IPS-Verzeichnis /scripts wechseln
- wenn dort die Datei __autload.php schon existiert - perfekt - ansonsten diese anlegen
- den Inhalt aus meiner __autoload.php in diese hineinkopieren oder ergänzen
Wichtig sind auf jedenfall diese 2 Zeilen …
require_once IPS_GetKernelDir() . '/scripts/System.Locals.ips.php';
require_once IPS_GetKernelDir() . '/scripts/System.Functions.ips.php';
Jetzt wird vielleicht auch klar warum man die SKripte vom Namen her umbenennen sollte bzw. muss!
3. Nutzung der enthaltenen Skripte
Mit den vorherigen Schritten hat man die Grundlage gelegt alle weitern Skripte in der Bibo zu nutzen. Vom Schema (Arbeitsschritten) ist das immer identisch.
- Anlegen eines neuen Skriptes in der IPS-Console
- Inhalt aus meiner Datei reinkopieren
- Konfigurative Anpassungen im Header der Datei vornehmen
- Abspeichen
- Wenn nötig - das Skript Locals öffnen und Keys und Infos hinterlegen, z.B. API-Key für Wetterdaten-Zugriff - und abspeichern
- das zuvor neu angelegte Skript einmal aus der Console heraus ausführen (Execute)
- dadurch erzeugt Variablen unterhalb des Skripts in die Visu ziehen
- Fertig
Manchmal muss man dann noch warten bis die erzeugten Timer das 1.Mal feuern um dann echte Daten zu sehen!
HINWEIS
Da die grundlegenden Funktionen aus der Datei Systems.Functions.ips.php auch viele andere "Programmierer! hier so benennen bzw. in ihren Scripten verwenden kann es zu Fehlern führen, da eine Funktion mit gleichen Namen nicht doppelt deklariert werden darf.
Darauf gibt es 2 Antworten bzw. Lösungsmöglichkeiten:
-
Man nutzt trotzdem meine Funktionen - schwerer und aufwendiger Weg, aber dafür hat man ein „sauberes“ System - soll heißen - man verwendet immer die gleiche Variante! Heißt aber auch man muss vielleicht anderen Code umschreiben bzw. anpassen. Also man sollte dann wissen was man tut und sich selber zu helfen wissen
-
man löscht wieder die eine Zeile aus der __autoload.php und nutzt die Skripte nur bei meinen Erweiterungen (require_once IPS_GetKernelDir() . ‚/scripts/System.Functions.ips.php‘;). Das ist relativ einfach, weil ich das schon in meinen Skripten vorgesehen habe.
Im Header jeder Datei befinden sich folgende Kommentarzeilen:
# Requires include of the global function script via autoload (__autoload.php)
# or direct in the script (uncomment next line)!
# require_once(IPS_GetKernelDir()."scripts".DIRECTORY_SEPARATOR.'System.Functions.ips.php');
# You can download it from here https://github.com/wilkware/ips-scripts
Dort muss man dann nur die 3 Zeile einkommentieren!
# Requires include of the global function script via autoload (__autoload.php)
# or direct in the script (uncomment next line)!
require_once(IPS_GetKernelDir()."scripts".DIRECTORY_SEPARATOR.'System.Functions.ips.php');
# You can download it from here https://github.com/wilkware/ips-scripts
#
Ich hoffe das hilft jetzt ALLEN!
Gruß Heiko