HELP bastel seit gesten abend und finde den fehler nicht

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Bel.ips.php
Trigger  : 
Interval : 
*/

$Schiebe = GetValueInteger("schiebe")  ;
$S = GetValueInteger("s")  ;


$taster11 = GetValueBoolean("TASTER_11_STATUS")

if $taster11==1{
FS20_SwitchMode (26662, True);
switch ($S)
case 0:$Schiebe == 1;
break;
case 1:$Schiebe == 2;
break;
case 2:$Schiebe == 3;
break;
case 3:$Schiebe == 4;
break;
case 4:$Schiebe == 5;
break;
case 5:$Schiebe == 6;
break;
case 6:$Schiebe == 7;
break;
default:  ;
}

?>

Der Fehler lautet

<br />
<b>Parse error</b>:  parse error, unexpected T_VARIABLE, expecting '(' in <b>C:\Programme\IP-Symcon\scripts\.currentscript</b> on line <b>17</b><br />

Hallo,

Du machst einige grundsaetzliche syntaktische Fehler:

  1. eine Zeile wird mit Semikolon abgeschlossen
  2. die Bedingung einer IF Abfrage gehoert in eine Klammer
  3. eine Case Schleife muss durch geschweifte Klammern gemacht werden

Weiterhin empfehle ich Dir, immer schoen einzuruecken, damit Du siehst, was zusammen gehoert. Sonst suchst Du Dir einen Wolf.

So ist es richtig, bitte vergleiche genau mit Deinem Code.

<?

$Schiebe = GetValueInteger("schiebe")  ;
$S = GetValueInteger("s")  ;


$taster11 = GetValueBoolean("TASTER_11_STATUS");

if ($taster11==1) {
   FS20_SwitchMode (26662, True);
   switch ($S)   {
   case 0:
      $Schiebe == 1;
      break;
   case 1:
      $Schiebe == 2;
      break;
   case 2:
      $Schiebe == 3;
      break;
   case 3:
      $Schiebe == 4;
      break;
   case 4:
      $Schiebe == 5;
      break;
   case 5:
      $Schiebe == 6;
      break;
   case 6:
      $Schiebe == 7;
      break;
   default:  ;
   }
}

?>

Gruss Torro

Danke Torro mein Held nun bekomme ich nur noch die meldung

b>Warning</b>:  fs20_switchmode: Instance ( 26662 ) not found! in <b>C:\Programme\IP-Symcon\scripts\.currentscript</b> on line <b>20</b><br />

habe schon nachgesehen die id 26662 stimmt

Hallo,

stimmt denn auch die Befehlszeile? Schau mal mit Control_Space nach, wie es genau gemacht wird.

Gruss Torro

Ein Space zuviel, irgendein Sonderzeichen, und es geht nicht.

Kuck nochmal nach, ob das wirklich genau stimmt mit der InstanzId.

mfG Franz

Strg+I hilft auch dabei …

Das „True“ und die Instance haben die Farbe blau. Da kann was net stimmen. Die Instance muss rot sein und der Zustand orange.

Versuchs mal damit:

FS20_SwitchMode(26662, TRUE);

Gruß

Jimmy

So, ich denke das mit dem FS20_SiwtchMode() sollte durch’s Jimmy’s Anmerkung geklärt sein…

Zum Script:

1)
dort steht in den Case Zeilen z.B.: $Schiebe == 1;

Ich denke du willst dort eine Wertzuweisung machen?

Dann schreibe: $Schiebe = 1;

Der Operator „==“ ist ein Vergleichsoperator - für Zuweisungen wird „=“ verwendet. Siehe: http://de.php.net/manual/de/language.operators.php

2)
zwar kein wirklicher Fehler, sollte von dir zunächst aber mal geändert werden solange noch ein paar PHP Unsicherheiten vorhanden sind:

du hast die Zeile: if ( $taster11==1)

$taster11 hat einen Boolean-Wert - das erkenne ich aus deiner vorherigen Zeile mit dem GetBalueBoolean()

Dann mach in deiner Abfragebedingung besser auch einen Vergleich auf true und nicht auf 1

Also: if( $taster11 == true )

und nach dem „if“ muss kein Space hin zur öffnenden Klammer…

3)
die Logik deines Skriptes verstehe ich nicht…

Willst du eine Art Zähler aufbauen der bei jedem Tastendruck höher zählt und irgendwann wieder von vorne anfängt?

  • wofür hast du dann sowohl die Variable $Schiebe als auch die Variable $S? -> eine Zählervariable reicht

  • in deinen Case-Anweisungen sieht es fast so aus als wolltest du den Zähler hochzählen -> doch wo speicherst du den neuen Zählerstand? -> ich sehe kein SetValueInteger()

  • wenn der Zähler nach dem höchten Wert wieder vorne anfangen soll, dann muss der Zähler auch wieder 0 gesetzt werden…

Gruss,
Olli

Danke Oli
Ich werde sorfort die Änderungen durchführen
sin soll eine Beleutungszenariomenü werden ich habe den wert schieben nur reingesetzt um ertmal zu sehen ob er überhaupt wechselt später soll in den case dann die einzelnen lampen rein und ihre werte also z.b.

Zenatio 1 = Tv sehen
Lampe am tv an
Lampe Sofa aus
Lampe Bilder 10 %
Zenario 2 = Lesen
Leselampe an
Lampe TV aus
Lampe Sofa aus
Lampe Bilder 40&

u.s.w.

Ich habe auch die änderung in
FS20_SwitchMode(26662, TRUE);
gemacht es ändert aber nichts an meiner Fehlermedung ich vermute das ich ein generelles problem mit dem IP-symcon habe seit neusten hängt es sich auf wenn ich instanzen löschen will fermutlich ist das auch der grund warum ich diesen fehler bekomme

so habe das script nun mal geändert auf meinem Server draufgespielt und dort läuft es auch nicht ich bekomme auch die fehlermeldung das die Instance nicht da is habe die Incrtance auch schon mit STRG+I getauscht ohne erfolg

[…] expecting ‚(‘ […] on line <b>17</b> […]

Das bedeutet wohl, dass er eine Klammer in zeile 17 erwartet. Und wenn du dir Tooros Code mal anschaust hat er das auch schon für dich berichtigt.

schau dir auch Ollis Beitrag mal genauer an, sind nämlich noch mehr Fehler drin.

Gruß,

Toni

danke Tonic habe aber schon alles geändert habe eben auch mal ausprobiert was er macht wenn ich stat einem schalter eine steckdose angebe dann kommt keine fehlermeldung mehr also is da wohl noch ein logic fehler drinn den ich nicht sehe

… läßt sich das FS20TX Gerät über des „TestCenter“ schalten?

MST

ja es schaltet ganz normal

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Bel.ips.php
Trigger  : 
Interval : 
*/



$Schiebe = GetValueInteger("schiebe")  ;
$S = GetValueInteger("s")  ;

$taster11 = GetValueBoolean("TASTER_11_STATUS");

if($taster11==True) {
   FS20_SwitchMode(27993, TRUE);  // 27993 ist nun die nummer einer FS 20 Steckdose mir ihr kommt keine Fehlermeldung
   switch ($S)   {
   case 0:
      $Schiebe = 1;
      break;
   case 1:
      $Schiebe = 2;
      break;
   case 2:
      $Schiebe = 3;
      break;
   case 3:
      $Schiebe = 4;
      break;
   case 4:
      $Schiebe = 5;
      break;
   case 5:
      $Schiebe = 6;
      break;
   case 6:
      $Schiebe = 7;
      break;
   default:  ;
   }
}

?>

übrigens die Instance FS20_SwitchMode(27993, TRUE); hat in meinem IP-Symcon die Normalen Farben also rot die nummer und orange der Wert

zum Logikfehler…

änderst du „schiebe“ denn auch mal mit SetValueInteger?

und schau dir doch mal an was

$Schiebe++;

macht… Das könnte dein Durcheinander etwas lindern :wink:

und wofür brauchst du eigentlich $s?

$s ist der wert für Switch wenn ich das richtig ferstanden habe brauch er denn

also schiebe ++ bringt mir auch nichtz es ändert sich einfach garnichtz werder der S noch der schiebe wert

ich seh schon, dass das der wert für switch ist, steht da ja, wollt ich aber garnicht wissen…

Was steht in $s und warum benutzt du $s? Wofür ist das?

erklähr doch mal, schritt für schritt, was du erreichen willst mit dem Script. Wenn du das script aufrufst soll was passieren?

Btw:

Vielleicht Chat zum erklähren sinnvoll?

ok bin dann mal im chat

27993 ist nun die nummer einer FS 20 Steckdose mir ihr kommt keine Fehlermeldung

ich bekomme auch die fehlermeldung das die Instance nicht da is

was sollen uns diese Worte sagen :confused: