Unterstützung für kleines Script gesucht

Und welchen Wert hat er aktuell? Offenbar NICHT 1,2 oder 3. Setze ihn mal per Hand (im Objektbaum) auf z.B. 2.

ersetze das mal…


$actualValue = GetValueInteger(51743);
IPS_LogMessage('Test', 'Wert: ' . json_encode($actualValue));
switch($actualValue)){ 
case 1: /*Modus A*/ 
$zeit=6; 
break; 
case 2: /*Modus B*/ 
$zeit=3; 
break; 
case 3: /*Modus C*/ 
$zeit=9; 
break; 
}  

Im Log sollte dann der Wert angegeben werden.

Uli

Richtig, ich hatte versucht den Modus in der WebFront zu ändern, hierbei erhielt ich den gleichen Fehler.
Ich bin aber nicht auf die Idee gekommen, den Wert direkt in der Variable zu ändern.

Ich habe nun manuell den Wert der Variable auf 1 gesetzt, das Script startet und die Variable „Durchgelaufene Schritte“ zählt von 100 abwärts.
Allerdings egal ob ich im laufenden Betrieb den Modus 2 (Modus B) oder 3 (Modus C) oder 0 (aus) betätige, startet der Modus A immer wieder von vorne und zählt wieder von 100 abwärts (der Modus kann in der WebFront nicht gewechselt oder ausgeschaltet werden).

Du wolltest ja unbedingt GetValue($ID) anstatt GetValue($_IPS[‚VALUE‘]) verwenden…
Jetzt musst du bei einem Auslösen aus dem Webfront $_IPS[‚SENDER‘]==„WebFront“ die Variable erstmal auf den durch das Webfront übermittelten Wert setzen. Das geht mit: SetValue($_IPS[‚VARIABLE‘], $_IPS[‚VALUE‘]);

Komplett:

if( $_IPS['SENDER']=="WebFront" ){
   SetValue($_IPS['VARIABLE'], $_IPS['VALUE']);
}

Tipp fürs nächste Mal:
Systemintegrator aus der Liste suchen und beauftragen oder Premium Support beim Hersteller buchen. Schneller geht’s nicht.

Das wollte ich nicht unbedingt, kannte bisher aber auch nicht die Vor-und Nachteile

Nun habe ich es so ohne Erfolg umgesetzt…:confused:

<?php
$countsX=20;

if($_IPS['VALUE']!="TimerEvent"){
    switch(GetValue($_IPS['VALUE']){
case 1: /*Modus A*/
$zeit=6;
break;
case 2: /*Modus B*/
$zeit=3;
break;
case 3: /*Modus C*/
$zeit=9;
break;
} 
    SetValue(10438/*Variable Durchgelaufene Schritte*/,$countsX);
    IPS_SetScriptTimer($_IPS['SELF'],$zeit);
}else{
    SetValue(10438/*Variable Durchgelaufene Schritte*/,GetValue(10438/*Variable Durchgelaufene Schritte*/)-1);
    if(GetValue(10438/*Variable Durchgelaufene Schritte*/)==0){
        IPS_SetScriptTimer($_IPS['SELF'],0);
    }
        RequestAction(19275/*Variable Helligkeit*/, 100-100/$steps);
}

Wie wäre es, wenn du den eben geposteten Code mal noch obendrüber einfügst.

Meinst du den ursprünglichen?

<?php
$countsX=100;

switch(GetValue(51743/*Variable Modus*/)){
case 1: /*Modus A*/
$zeit=6;
break;
case 2: /*Modus B*/
$zeit=3;
break;
case 3: /*Modus C*/
$zeit=9;
break;
} 

if($_IPS['SENDER']!="TimerEvent"){
    SetValue(10438/*Variable Durchgelaufene Schritte*/,$countsX);
    IPS_SetScriptTimer($_IPS['SELF'],$zeit);
}else{
    SetValue(10438/*Variable Durchgelaufene Schritte*/,GetValue(10438/*Variable Durchgelaufene Schritte*/)-1);
    if(GetValue(10438/*Variable Durchgelaufene Schritte*/)==0){
        IPS_SetScriptTimer($_IPS['SELF'],0);
    }
        RequestAction(19275/*Variable Helligkeit*/, 100-100/$steps);
}