Pitti's Skript-Bibliothek

Hallo Heiko,
ich habe ein Problem mit dem Wetter Script.

Beim Abfragen der API, die ich in den Locals abgelegt habe.

define('__WWX', [
    'MY_APIKEY' => 'abcdefghijusw.',

und dann so über das skript abrufe:

# Globale Variable __WWX als Array via define() in __autoload definiert!!!
$API = __WWX['MY_APIKEY'];   // # API-Token (Key)

bekomme ich die Meldung :

Warning: Undefined array key „MY_APIKEY“ in /mnt/data/symcon/scripts/35979.ips.php on line 11

Gruß,
Stefan

Haste die Locals auch in der Autoload drin?

Hab die Skripte von dir übernommen.

require_once IPS_GetKernelDir() . '/scripts/System.Locals.ips.php';
require_once IPS_GetKernelDir() . '/scripts/System.Functions.ips.php';


alles sauber im DAteisystem abgelegt.

image

nur das hab ich abgeändert im skript:

Ich glaube du musst das ___WWX auch weg machen. Bin gerade nicht zu Hause sonst hätte ich nachgeschaut.

Hab nun die API Abfrage direkt ins skript gegeben. jetzt funktionierts.

Danke für die Hilfe!

Habe jetzt gerade nachgeschaut. Der API Key wird so eingetragen:

VG

Hallo @pitti,

danke für Deine tollen Module und Skripte! Musste wieder mal gesagt werden :wink:

Aktuell würde ich mich gern mehr mit Quickcharts beschäftigen, da ja HighCharts scheinbar wegen des hier beschriebene ungelösten Sicherheitsproblems für mich keine Zukunft hat und in der V8 noch nicht alle Charttypen verfügbar sind.

Aktuell fehlen mir die Tooltips bei den Charts, bei Quickcharts scheint das aber in den Demos zu funktionieren. Hättest Du vielleicht einen Tipp für mich?

Danke und schönen restlichen ersten Advent!

1 „Gefällt mir“

Ich nutze QS nur zur Generierung von SVGs. Soweit ich das verstanden habe, geht es wenn Du due JS Variante nutzt und diese dann als iFrame einbindest! Aber wie gesagt, habe da auch keine Erfahrungen!

Gruß HEiko

Das Weihnachtsupdate :christmas_tree:

Wie die Tage hier irgendwo versprochen habe ich mal die Lib auf den neusten Stand gebracht. Ich bin nochmal durch alle Skripte durch und habe versucht die Logik von den Setup-Daten zu trennen, d.h. die personalisierten Daten wie IDs & Tokens in die System.Locals.ips.php auszulagern!!!

Changelog v2.4.20241222

  • NEU: Börsenticker Script
  • NEU: Update Local Script um neue TileVisu Farben und Icon-Mapping
  • NEU: Update SolarEdge Script wegen Auswahl des (Auswertungs-)Zeitraums
  • FIX: Versionsnummern in allen Scripts korrekt nachgezogen

Ein Wort in eigener Sache

Ich möchte kurz erklären, warum ich die Bibliothek ursprünglich eingeführt habe und welche Ziele ich damit verfolgte:

  • Zusammenführung von Basis-Funktionen: Die Idee war, die vielen hilfreichen Basis-Funktionen, die hier im Forum kursieren, zu bündeln (in System.Function.ips.php) und nicht jedes Mal in jedem Skript neu erfinden zu müssen.
  • Zentrale Wartung und Wiederverwendbarkeit: Durch die Nutzung einer zentralen Bibliothek sollte die Wartung erleichtert werden. Fehler müssten nur an einer Stelle behoben werden, und der Fokus könnte auf die eigentliche Logik der Skripte gelegt werden.
  • Nutzung durch andere: Die Basis-Funktionalitäten sollten auch für andere Nutzer verfügbar sein, sodass sie von den Vorteilen profitieren können (in Kombination mit __autoload.php).
  • Trennung von Logik und personalisierten Daten: Mit Hilfe von Locals (System.Local.ips.php) sollte es einfach werden, die Skripte an die individuellen Bedürfnisse anzupassen – Nutzer müssten nur ihre Keys und IDs eintragen, und alles wäre einsatzbereit.

Für mich persönlich hat sich dieses Vorgehen absolut bewährt. Meine gesamte Instanz basiert auf dieser Struktur, und selbst wenn ich neue Ideen oder Skripte aus dem Forum aufgreife, integriere ich diese immer in meine Bibliothek, anstatt sie 1:1 zu übernehmen. Ein gutes Beispiel ist der Börsenticker von @Smudo, der super auf tagesschau.de optimiert wurde. Ich konnte diesen sehr einfach in meine Bibliothek einfügen und an mein System anpassen.

Allerdings muss ich auch selbstkritisch sagen, dass ich dabei wohl zu sehr von meinen eigenen Arbeitsweisen ausgegangen bin. Oft wird der Ansatz der Bibliothek nicht wirklich verstanden und einfach nur Copy&Paste genutzt. Mit der Einführung der Tile-Visu wird das Thema sogar noch komplexer, da es bei den meisten Skripten um HTML-Boxen und deren Darstellung geht.

Wie geht es weiter?
Ich werde weiterhin Skripte, die ich für interessant halte, in meiner Bibliothek auf GitHub veröffentlichen und die Bibliothek auch weiter pflegen. Allerdings werde ich meine Veröffentlichungen hier im Forum reduzieren und mich verstärkt auf die Entwicklung und den Support von Modulen konzentrieren.

Vielen Dank für euer Verständnis und euer Interesse an meinen Projekten! :blush:

LG
Pitti der Liebe

8 „Gefällt mir“

Hallo, ich wollte endlich die neueste Version vom Dashboard installieren und stoße dauernd auf Fehler. Ich habe die Dateien wie oben beschrieben (__autoload.php; System.Locals.ips.php und System.Functions.ips.php) in den Script-ordner abgespeichert. Danach habe ich die Datei Dashboard versucht zu installieren und bekomme aber folgende Fehlermeldungen: // Nicht abgefangener Fehler: Aufruf der nicht definierten Funktion CreateProfileInteger()
// in C:\ProgramData\Symcon\scripts\37505.ips.php:766

// Schwerwiegender Fehler: Nicht abgefangener Fehler: Nicht definierte Konstante „__WWX“
// in C:\ProgramData\Symcon\scripts\37505.ips.php:124
Kann mir jemand helfen??

Moin,

Und die Dateien heißen auch wirklich alle so wie oben aufgelistet?

Zeig doch mal etwas mehr von den Inhalten der autoload und dem Script wo der Fehler aufläuft, speziell da wo der Check auf die Lib steht.

Gruß Heiko

PS: auch vom Verzeichnis und Objektbaum

Moin,
um Tippfehler zu vermeiden, habe ich die Dateien und Dateinamen jeweils kopiert und eingefügt. Nachdem ich dann das Dashboardprogramm kopiert habe und auf ausführen geklickt habe sind dann diese Fehler entstanden.
Screenshot 2025-06-06 090753
Auszug aus dem Scrpitordner.


Vielen Dank für die schnelle Reaktion!!
Alfred

<?

declare(strict_types=1);

################################################################################
# Script:   __autoload.php
# Version:  1.1.20230315
# Author:   Heiko Wilknitz (@Pitti)
#
# Um Funktionen, Konstanten usw. global über alle Skripte hinweg zur Verfügung
# zu stellen müssen diese in der Datei "__autoload.php" definiert werden.
# Diese muss sich im "IP-Symcon/scripts"-Ordner befinden.
#
# Innerhalb der "__autoload.php" können dann weitere Dateien eingelesen werden.
#
# ------------------------------ Changelog -------------------------------------
#
# 09.06.2021 - Initalversion (v1.0)
# 15.03.2023 - Include Locals aufgenommen (v1.1)
#
################################################################################

require_once IPS_GetKernelDir() . '/scripts/System.Locals.ips.php';
require_once IPS_GetKernelDir() . '/scripts/System.Functions.ips.php';

include_once IPS_GetKernelDir()."scripts/IPSLibrary/app/core/IPSUtils/IPSUtils.inc.php";
IPSUtils_Include("IPSLogger_PhpErrorHandler.inc.php", "IPSLibrary::app::core::IPSLogger");

Code kannst du so einfügen:
image

Screenshots helfen nicht wirklich :wink:

<?

declare(strict_types=1);

################################################################################
# Script:   __autoload.php
# Version:  1.1.20230315
# Author:   Heiko Wilknitz (@Pitti)
#
# Um Funktionen, Konstanten usw. global über alle Skripte hinweg zur Verfügung
# zu stellen müssen diese in der Datei "__autoload.php" definiert werden.
# Diese muss sich im "IP-Symcon/scripts"-Ordner befinden.
#
# Innerhalb der "__autoload.php" können dann weitere Dateien eingelesen werden.
#
# ------------------------------ Changelog -------------------------------------
#
# 09.06.2021 - Initalversion (v1.0)
# 15.03.2023 - Include Locals aufgenommen (v1.1)
#
################################################################################

require_once IPS_GetKernelDir() . '/scripts/System.Locals.ips.php';
require_once IPS_GetKernelDir() . '/scripts/System.Functions.ips.php';

include_once IPS_GetKernelDir()."scripts/IPSLibrary/app/core/IPSUtils/IPSUtils.inc.php";
IPSUtils_Include("IPSLogger_PhpErrorHandler.inc.php", "IPSLibrary::app::core::IPSLogger");

tippe oder füge den Code hier ein

lang die der autoload oder die 3 anderen auch??

Wo kommt das her?

Sonst sieht alles gut aus.

Mach doch mal ein kleines Testscript und mach …

echo __IPS_MIN_ID;

Gruß Heiko

Vom Forum
image

Das hier ist imho falsch:

require_once IPS_GetKernelDir() . '/scripts/System.Locals.ips.php';
require_once IPS_GetKernelDir() . '/scripts/System.Functions.ips.php'

so müsste das sein

require_once IPS_GetKernelDir() . 'scripts/System.Locals.ips.php';
require_once IPS_GetKernelDir() . 'scripts/System.Functions.ips.php'

IPS_GetKernelDir liefert den Pfad mit Slash
Michael

Habs jetzt nochmal auf dem Server neu kopiert und den Slash aus der autoload.php entfernt und es funktioniert!!
Die Slash-zeichen stehen aber noch in deinem Beitrag 12/35 sowie in der Git- __autoload.php!

Vielen Dank

Erstmal fein das es funktioniert!

Lustig, erst dachte ich das auch, aber bei mir ist es auch mit / und funktioniert - ich werde es aber demnächst mal wegnehmen!

Danke & Ciao
Heiko