Hey,
ich bin echt am verzweifeln…
Folgendes soll mit diesem Script erreicht werden:
-
Bei änderung im WebFrontEnd den neuen Wert in die passende Variable schreiben (funktioniert wunderbar)
-
Bei änderung der Variable (egal ob aus WFE oder Objektbaum) an das XS1 senden (geht auch wunderbar)
-
Ist ein Schalter definiert welcher ja TRUE oder FALSE liefert den Wert in Zahlen umwandeln (100,0) (Das steht so zwar noch nicht im Script, ist aber kein Problem)
So und um 3. zu bewerkstelligen muss ich ja auf $_IPS[‚VALUE‘] bei der Variablen änderung zugreifen (2.) und das geht einfach nicht.
Um zu testen was da so in $_IPS[‚VALUE‘] drinnen steht, lasse ich mir ein Logfile ausgeben. Bei 1. geht das wieder ohne Probleme aber bei 2. keine Chance.
So und jetzt wirds ganz seltsam, das senden von $_IPS[‚VALUE‘] in der letzten file_get_contents Anweisung geht wunderbar.
Hab ich da irgendwo einen Denkfehler drinnen? :mad:
Bitte um Hilfe
<?
include './config_xs1/config_xs1_temp.php';
$handle_log = fopen("./config_xs1/Sender_Log.txt", "a");
//Script zum WERTEZUWEISEN aus dem Webfrontend
//Wert wird in die Variable geschrieben
if($_IPS["SENDER"] == "WebFront"){
SetValue($_IPS["VARIABLE"], $_IPS["VALUE"]);
fwrite($handle_log,$_IPS['VALUE']);
};
//Array umdrehen damit anhand der auslösenden ID die XS1 ID bestimmt werden kann
$ActVarConfigSender = array_flip($ActVarConfig);
//Wenn die Variable geändert wird (Webfront oder in der Objektansicht)
//wird der neue Wert geschickt.
if($_IPS['SENDER'] == "Variable"){
fwrite($handle_log,$_IPS['VALUE']);
//Dimmer Daten werden einfach gesendet
file_get_contents('http://xs1/control?cmd=set_state_actuator&number='.$ActVarConfigSender[$_IPS['VARIABLE']].'&value='.$_IPS['VALUE']);
};
?>
aufd die Schnelle:
lass dir den Inhalt von $_IPS per print_r($_IPS) ausgeben, viel effektiver ![:wink: :wink:](https://community.symcon.de/images/emoji/win10/wink.png?v=9)
das hier ist auf jeden Fall ein Problem (weil klein geschrieben)
if($_IPS['SENDER'] == "Variable")
Hey,
danke für den Tip, hilft leider nichts.
Mal ne blöde Frage wo sehe ich denn print_r kann das Script ja nicht manuell ausführen weil ich ja sonst keine Daten in $_IPS habe, oder?!
Deswegen ja auch die Log Datei ![:wink: :wink:](https://community.symcon.de/images/emoji/win10/wink.png?v=9)
Danke! ![:confused: :confused:](https://community.symcon.de/images/emoji/win10/confused.png?v=9)
die print_r-Ausgabe siehst du im Meldungsfenster der Konsole und im IPS-Logfile
So jetzt bin ich sauer auf mich selber und peinlich isses mir auch noch :o
Ich such seit Stunden den Fehler und jetzt merke ich, ich hab bei dem falschen Script die Änderungs-Ereignisse definiert. ![:frowning: :frowning:](https://community.symcon.de/images/emoji/win10/frowning.png?v=9)
Aber trotzdem vielen Dank Raketenschnecke, und die if-Anweisung funktioniert mit groß-klein Schreibung:
if($_IPS['SENDER'] == "Variable")
Und für alle die es interesiert hier das funktionierte Script incl. der Umwandlung einer Boolschen Variable in die Werte 100=true und 0=false.
<?
include './config_xs1/config_xs1_temp.php';
$handle_log = fopen("./config_xs1/Sender_Log.txt", "a");
//Script zum WERTEZUWEISEN aus dem Webfrontend
//Wert wird in die Variable geschrieben
if($_IPS['SENDER'] == 'WebFront'){
SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
};
//Array umdrehen damit anhand der auslösenden ID die XS1 ID bestimmt werden kann
$ActVarConfigSender = array_flip($ActVarConfig);
//Wenn die Variable geändert wird (Webfront oder in der Objektansicht)
//wird der neue Wert geschickt.
if($_IPS['SENDER'] == 'Variable'){
if(is_bool($_IPS['VALUE'])){
$boolinnumber = $_IPS['VALUE'];
if($boolinnumber){
$boolinnumber = 100;
}else{
$boolinnumber = 0;
};
file_get_contents('http://xs1/control?cmd=set_state_actuator&number='.$ActVarConfigSender[$_IPS['VARIABLE']].'&value='.$boolinnumber);
};
//Dimmer Daten werden einfach gesendet
file_get_contents('http://xs1/control?cmd=set_state_actuator&number='.$ActVarConfigSender[$_IPS['VARIABLE']].'&value='.$_IPS['VALUE']);
};
?>