Trackbar-Event_OnChange an Variable wird nicht ausgeführt

Hallo,

Ich als blutiger IPS-Anfänger, habe etwas mit dem Designer experimentiert.
Ein paar Icons für TFK …funktioniert, FHT-IST-Temp-Anzeige …zeigt an, Trackbar mit Eventhandler „Onchange“ auf die Variable FHT-SOLL-Temp mit Wertebreich von 0-30°C.

Die nun eingestellte SOLL-Temperatur wird zwar an die Variable übergeben (Kontrolle über Variablenliste), aber am FHT erfolgt keine Reaktion bzw. wird nicht übermittelt …auch nicht nach Minuten.
Mit Variable „Evaluate/Modify“ funktioniert es.

Was mache ich falsch bzw. geht das überhaupt mit „trackbar“?

P.S. Ich habe leider überhaupt noch keine Ahnung von PHP* und werde deshalb zukünftig noch mehrere Fragen an euch haben :wink:

  • versuche mich aber weitestgehend selber einzuarbeiten

Wilkommen im Forum

Hinter der schieberegler soll eine variable ran gehangt werden -> hast richtig gemacht
Jetzt brauchst du noch ein script die getriggert wird wenn deine variable ändert.
Also etwas wie dies hier :


$wert=GetValueFloat("[dein variable nahmen]");
FHT_SetTemp([instanz-id],$wert);
echo("gesendet wurde : $wert °C");

Mit Execute im script editor kannst du das script ausfuhren. Im output Fenster gibt es oder Fehler warnungen oder den tekst „gesendet wurde : 20.0°C“

Good Luck
Fredje

Hallo Fredje,

Wilkommen im Forum

Vielen Dank! :slight_smile:

…aber Hilfe!:
Bitte nochmal im Detail für absolute Beginners :smiley:
Ich habe jetzt im Script stehen:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : test.ips.php
Trigger  : 
Interval : 
*/
?>
$wert = GetValueFloat("WOZI_FHT_TargetTemp");
FHT_SetTemperatur(23104,$wert);
echo "gesendet wurde : $wert °C";

Etwas verändert unter Hilfe von
http://www.ipsymcon.de/wiki/index.php/GetValueFloat

…mal abgespeichert und auf Execute gedrückt …nix passiert, außer dass im Kernel-Debugger steht:
EventScripter= [Queued,Size=0] Sender : Execute
ScriptThread= Executing ScriptContent…
ScriptThread= Executed Script

WOZI_FHT_TargetTemp ist die Variable für die Solltemperatur im Wohnzimmer.
23104 ist die ID für den FHT.

Nun, ich habe (noch) keine Ahnung, was da geht bzw. eher nicht geht :frowning:

Vielen Dank für deine Mühe und Aufmerksamkeit!

!!!

?>

muß am Ende stehen

!!!

Okay und Vielen Dank! …das hat mich auf die Idee gebracht, dass ganze Scriptchen nochmals nach Tippfehlern zudurchforsten.

Nun habe ich

$wert = GetValueFloat("WOZI_FHT_TargetTemp");
FHT_SetTemperature(23104, $wert);
echo "gesendet wurde : $wert °C";
?>

Außer dem ?> hatte ich noch ein paar „kleinere Fehler“ …23104, $wert (Leerzeichen vergessen) …SetTemperature(e vergessen) :rolleyes:
Und nun läuft die Übermittlung mit dem Script und Execute.

Wenn ich nun das Script an die Variable binde (Variable Events_On Change), dann wird das Script jede Sekunde ausgeführt.
Was läuft noch falsch bzw. wie kann ich es an die Trackbar anbinden, dass es einmalig ausgeführt wird?

Können solche Anweisungen wie „FHT_SetTemperature“ durch (wie von Fredje) „FHT_SetTemp“ abgekürzt werden?

Sorry für meine Dummie-Fragen …das wird schon noch!
Bitte um Geduld!
Mir fehlt einfach das dicke PDF-Manual für IPS!!

Jetzt bricht der hammer (ehhmm das ist kein Deutsch)

On_change ist gefährlich -> endlos schleife verdacht
Ich probiere es dir bei zu bringen

  • in Designer dein schiebe regler verknupft mit dein variable
  • update jede secunde
  • Weil der wert jeder secunde geupdate wird -> On_Change event in IPS

Deshalb lauft dein script jede secunde.

Wie habe ich gelöst:
Ich habe ein knopf ‚Set‘ neben mein schiebe regler - und da hängt das script ran.
Also jede secunde wird der Wert deines schiebe reglers geupdate
aber du musst auf dieser knopf ‚Set‘ drucken bevor die neue soll-temp am FHT ubertragen wird uber dein script.

Siehe mehr dazu (und die scripte) hier : http://www.ipsymcon.de/forum/showpost.php?p=6885&postcount=4

Hallo Fredje,

das kann ich bei mir nicht nachvollziehen.

Wenn ich beim Trackbar als Event OnChange stehen habe, wird die Variable auch nur beim ändern des Trackbar geupdatet.
Oder liegt es evtl. an der aktuelle Beta, das dies bei mir funktioniert?

Dr. Hasst du an die trackbar eine Variable gehängt die sich jede secunde update ?

Hallo,

ich glaub du verwechselst da was!

On_Change wird nur ausgeführt wenn sich der Wert ändert…
-> Wenn der Regler auf der selben Position stehen bleibt tut sich also nix!

Ich glaub du meinst On_Update…!

Hallo,

vielleicht habe ich da nur wieder einen Knoten reingebracht :smiley:

Also ich gehe zur Liste „Variables“, wähle dort die entsprechende Variable(Edit Variable) aus, dann Variable Events-Availeble -add und -save das Script.
Wenn ich nun den Schieberegler bewege, sehe ich im Kernel-Debug, dass das Script jede Sekunde neu ausgeführt wird.

Eventuell ist das nur die falsche Stelle, an der ich das Script an die Variable binde?
Gibts noch eine andere Möglichkeit?

P.S. Wo kann ich eigentlich nachsehen, welche IPS-Version ich verwende?
Aktuell müsste doch 2.38 sein. Im Kernel sehe ich Kernel-Version 1.82 Build 32:eek:

Genau das wollte ich zur deutung bringen:

wen mann den schiebe regler bewegt dan kommen alle werte wie ON_Change events in IPS rein. Deshalb lauft dein script jede secunde.

v2.38 vs kernel IPS version = gekannter bug die irgendmal verholfen werden soll !

Hallo Fredje,

D.h. ich muss das Script, wie von dir vorgeschlagen, an einen „SET“-Button binden, sonst gehts nicht?

Na, das ist nicht gerade das, was ich mir vorgestellt habe, werde es aber testen.

Wie kann ich es dann auswerten (Designer), wenn der Wert ordentlich übertragen wurde?
Denn die Variable …TargetTemp übernimmt ja den Wert sofort, auch wenn er noch nicht am FHT angekommen ist.

… nee, aber 10 Sekunden, aber denoch verändert sich die Variable nur einmal, wenn ich den Trackbar verschiebe, danach nicht mehr. Auch nicht, wenn sich der Trackbar alle 10 Sekunden von der Variablen updatet. Wäre ja auch blödsinn, wenn das passieren würde. Dann müsste sich ja jede Variable beim Pollen ändern, oder habe ich hier etwas falsch verstanden??? :confused:

Doc

Doc,

Ich denke da machst du einem kleinen fehler (oder ich mache einem grossen dir noch mehr zu verzweifeln)
variable -> objekt im designer -> variable ->
Erst lest der designer dem wert und schiebt den regler auf diesem wert.
Der wert ändert sich und dadurch triggert der schieber eine schreib kommando.
Variable ändert sich und dann geht es wieder von vorne raus.

Wenn du ein wert änderst, triggert der schieber den update von die variable, variable ändert und designer lest sie wieder (1s. später) und wieder von vorne. Zieht mir schleife verdächtig aus…

Oder Paresy macht eine andere aussprache.
Das setzten und auswehrten von die soll-temp meinen raum uber ein schiebe regler habe ich nur dahin bekommen wenn ich zusatslich einem ‚set‘ knopf dabei geholt habe. Ob ich jetzt die ON_CHANGE event genutzt habe soll ich noch prufen. Aber damals hatte ich eindeutlich eine schleife die mein FHT völlig uberlastet hat.

Meine 2 cents :wink:

Hallo Fredje,

also ich habe es gerade noch einmal ausprobiert.
Ich kann diese Verhalten nicht nachvollziehen:

ändern der Variablen direkt bewegt den Trackbar, bewegen des Trackbars verändert die Variable, danach passiert nichts mehr, obwohl update des Trackbars im Designer auf 10 Sekunden steht. Die update time der Variablen ändert sich absolut nicht mehr, ein getriggertes Script auf diese Variable wird auch nur einmal ausgeführt, genau so wie es sein sollte.

Doc

G Abend,

Wie machst du das?

Wenn ich den Designer starte, die Variable zwischenzeitlich einen anderen Wert bekommen hat (z.B. manuell am FHT), oder auch wenn die Variable direkt verändert wird, bleibt der Schieberegler trotzdem an der Stelle, die im Designer eingestellt wurde.

einfach bei dem Properties den Haken bei Position setzen, die Variable auswählen, dessen Wert angezeigt werden soll (ist wohl die gleiche wie die die geändert werden soll) und noch die Pollzeit auswählen, 10 Sekunden reicht hier wohl, das wars.
Hast du auch die aktuelle Beta des Designers installiert, weiss nicht genau, ob die alte Version das schon hatte.

Doc

Oh, ja …das hatte ich sogar schonmal probiert, aber leider mit der falschen Variablen :rolleyes:
Nun mit der richtigen Variablen funktionierts auch.

Danke!

P.S.
Nochmals darauf zurück zukommen …war noch nicht beantwortet:D :
Kann die Variablen beim Scripting abgekürzt werden, wie z.B. von Set_Temperature zu Set_Temp oder auch Set_Temper , soweit keine ähnlich lautende Variable vorhanden ist?

EDIT\

Also mit dem SET-Button, wie von Fredje vorgeschlagen, kapier ich nicht.
Der müsste doch auch wieder an eine Variable gebunden sein und diese wiederum an das Script.
D.h. noch eine neue Variable, extra für diesen Button?
Lässt sich diese Endlosschleife nicht anders beseitigen?

Hier nochmals mein Script:

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : test.ips.php
Trigger  : 
Interval : 
*/
$wert = GetValueFloat("WOZI_FHT_TargetTemp");
FHT_SetTemperature(23104, $wert);
echo "gesendet wurde : $wert °C";
?>

Wäre schön, wenn ich endlich das Erfolgerlebnis hätte :frowning:

… das muss dir Fredje selber beantworten. Mit der Endlosschleife habe ich nicht kapiert, bei mir schleift hier gar nichts :smiley:

Ich benutze zwar auch den Schieberegler, aber das mit den Endlosschleifen konnte ich nicht nachvollziehen.
Wenn du natürlich ein Script von dieser Variablen triggern lässt und in diesem Script diese Variable wieder änderst, führst du das Script natürlich immer wieder aus, aber das hat ja nicht mit dem Trackbar zu tun.

Gruß,

Doc

Hmmm?

Sobald ich den Regler bewege und das Script startet, läuft spielt der debug verrückt.

Noch etwas neues…

Wenn ich im Designer ein Panel anlege und es verändern bzw. verknüpfen möchte, bekomme ich diese Meldung:

Access violation at adress 004475FC in module ´ips_designer.exe´. Read of address 00000000

Langsam kommt Frust auf :mad: