$IPS_Variable

Hallo,
bitte nicht schlagen, aber ich finde nichts im Forum oder kapiere es nur nicht.
In der V1 gab es mal ($IPS_Variable = „Tischleuchte“); in der V2 gibt es zwar keine Fehlermeldung, aber es funktioniert auch nicht.
Was muss ich da jetzt anders machen? DANKE

Die $IPS_VARIABLE enthält die ID der Variablen.

if ($IPS_Variable == 12345)

Sollte also funktionieren…

Gruß,

Toni

WOW bin ich bescheuert:eek::eek:, Danke werde es heute abend testen.

Hallo Uwe,

nein, bist nicht bescheuert:rolleyes:. Habe die IPS_VARIABLE verwechselt mit IPS_GETVARIABLE die ja komplett anders funktioniert.

Bin auch gerade dabei meine ganzen V1-Skripte anzupassen was auch schon teilweise funktioniert.

Warum krieg ich die IPS_Variable nicht ausgelesen? Geht das nur für Vergleichsoperationen?
Falls nicht:
Wie sieht das als Skript aus? Muss ich vorher die IPS-Sender setzen?

Ich versuch grad meine Schalterskripte dahingehend zu optimieren daß ich nur noch ein anderes Skript aufrufe und die zuletzt geänderte variable abarbeite, anstatt für jeden Schalter ein extra skript zu schreiben.

Achtung, Anfängerfrage:

Kann man keine „Function“ oder „procedure“ definieren, an die man die adresse der zu bearbeitenden variable übergibt?

Ich hab mich blind gesucht…

Update Anfängerfrage: Hab das jetzt gelöst mit einem Skript das ich via IPS_RunScript aufrufe nachdem ich die zugehörige globale Variable mit SetVariable gesetzt hab. Ich konnt noch nicht tief in php einsteigen, aber DAS fühlt sich holprig an.

Gruß,

tinspoon

Update 2 Anfängerfrage: :slight_smile: Disko!!! Hab ne Endlosschleife produziert. Schreib jetz alles wieder auf vorher zurück und geh schlafen. Ist vielleicht auch ein bischen spät :slight_smile:

Na, da erkenne ich doch tieferes Turbopascal wissen, oder? :smiley:

Also in PHP kannst du nicht irgendwelchen Speicher adressieren. PHP arbeitet in einer „Sandbox“ die du nicht verlassen kannst. Kein Zugriff auf irgendwelche Hardware (Parallelport, Festplatte oder eben Speicher) möglich. Der Schaden, den ein Unbedarfter anstellen kann, ist somit stark begrenzt. Um dennoch eine Datei laden zu können oder einen Pin am Parallelport „High“ zu setzen musst du die entsprechenden Funktionen verwenden. Ist so betrachtet nicht viel anders als bei Hochsprachen. Der Unterschied ist lediglich, dass du hier einfach nur keine andere Wahl hast. :wink:

eine PHP Funktion kannst du so erstellen:


function GetFoo($Bar)
{   
    return 'Todays Foobar is: '.getValueString(12345).'-'.getValueString($Bar);
}

echo GetFoo(67890);


mit „include“ kannst du eine Datei mit deiner Funktionssammlung innerhalb eines Scriptes Verfügbar machen.

Dein Problem mit $IPS_Variable rührt aber, denke ich woanders her. Die Variable $IPS_Variable existiert nur wenn der $IPS_SENDER = ‚Variable‘ ist. Das bedeutet wenn ein Script durch eine Variable getriggert wurde. Wenn du Execute drückst, dann ist der Sender natürlich nicht eine Variable gewesen.

Habs grad versucht nachzustellen und bekamm immer eine 0. Das ist so nicht geacht, glaube ich. Hab aber grad leider nicht die Zeit dem nachtzugehen.

Gruß,

Toni

Danke für die Geduld und die Skriptbeispiele.

Was das „tiefere Wissen“ anbelangt: 1991, erstes Semester, Kurs „Praxis des Programmierens“. 1993 aufgrund einer schweren Analysis-Legasthenie auf die medizinische Schiene gewechselt. Seither kardiologischer Fachidiot. Den Sprung von Prozess- auf Objektorientiert nie geschafft. Aktuell Gehen-neu Lernen in php. Fühlt sich gut an. Wie…wie…nach Hause kommen (tränchenzerdrück).

Was die IPS_Variable angeht werd ich noch ein bischen experimentieren.
Möglicherweise gehe ich dabei aber das Risiko ein mit anderen Variablen zu kollidieren die zwar was triggern, aber nix mit Lichtschaltern zu tun haben, also lass ich es vielleicht lieber und verbuche es unter „wissenschaftlicher Neugier“.

Was die function angeht scheint mir das etwas zu ablaufzeit- und speicheraufwändig zu sein in jedem Schalterscript eine Bibliothek einzubinden, da ich aus oben genannten Gründen nicht mit einem einzelnen Skript und IPS_Variable hinkomme.

Nebenbei: Ihr leistet tolle Arbeit da oben. Macht weiter so. IPS ist das beste was mir passieren konnte seit Erfindung der Instantnudelsuppe.

Gruß,

tinspoon

Also das mit dem Trigger braucht dich nicht zu beunruhigen. IPS macht das alles für dich und in der Variable, steht immer nur die Variable, die dein Script getriggert hat. Da kann auch nichts kollidieren, weil sie nur lokal existiert. Sollte tatsächlich zeitgleich ein anderes Script auch auf $IPS_Variable zugreifen, so steht bei uns der Wert drin, der unser Script getriggert hat und dort der Wert den das script getriggert hat. Keine Magie sondern simple OOP :wink:

Und das mit dem include ist kampferprobt. Ist nichts anderes als würdest du nur den Code den du brauchst im Script hinterlegen. Nur, dass du bei Änderungen diese nicht an 1000 Stellen vornehmen musst sondern nur an einer.

Du musst dir vor Augen halten, dass es reine ASCII-Dateien sind, die du da lädst. 10kB sind da schon enorm groß. Wieviel RAM hast du? 64MB (das 6 tausen fache) oder doch schon mehr? :wink:

Befreie dich von dem Zwang Speicher sparen zu wollen. Das was man heute als Script-Progger sparen kann ist im Vergleich zu Betriebsystem und was noch alles nur mitläuft auf der maschien verschwindend gering. Vista läuft sehr gut ab 2GB RAM… (das 200 Tausend-fache von einem „Monsterscript“) :wink:

Toni

…ich fühl mich grad seeehr alt…:o

Gruß,

tinspoon