HELP bastel seit gesten abend und finde den fehler nicht

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : LightScene_Navigate.ips.php
Trigger  : 
Interval : 
*/
$ScenarioNummer=GetValueInteger("Scenatio_Nummer");

$ScenarioNummer++;
if ($ScenarioNummer > 5)
  $ScenarioNummer=1;

SetValueInteger("Scenatio_Nummer", $ScenarioNummer);
?>

Okay, das war teil Eins der Lektion…

machen wir gleich weiter…


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

$ScenarioNummer=GetValueInteger("Scenatio_Nummer");

switch ($ScenarioNummer)   {
   case 1:
      FS20_SetIntensity(60778, 16, 1);
      FS20_SetIntensity(13624, 16, 1);
      FS20_SetIntensity(14327, 16, 1);
      FS20_SetIntensity(13191, 16, 1);
      break;
   case 2:
      FS20_SetIntensity(60778, 10, 1);
      FS20_SetIntensity(13624, 10, 1);
      FS20_SetIntensity(14327, 10, 1);
      FS20_SetIntensity(13191, 10, 1);
      break;
   case 3:
      FS20_SetIntensity(60778, 5, 1);
      FS20_SetIntensity(13624, 5, 1);
      FS20_SetIntensity(14327, 5, 1);
      FS20_SetIntensity(13191, 5, 1);
      break;
   case 4:
      FS20_SetIntensity(60778, 4, 1);
      FS20_SetIntensity(13624, 4, 1);
      FS20_SetIntensity(14327, 4, 1);
      FS20_SetIntensity(13191, 4, 1);
      break;
   case 5:
      FS20_SetIntensity(60778, 0, 1);
      FS20_SetIntensity(13624, 0, 1);
      FS20_SetIntensity(14327, 0, 1);
      FS20_SetIntensity(13191, 0, 1);
   default:  ;
   }


?>

Erklährung zum nachbauen:

Das erste Script steuert ein Menü. In diesem Menü sind 5 (oder mehr) Einträge, die auf Tastendruck einer FS20 Funk-Fernbedienung „durchgesteppt“ werden. Hat man sich dann für einen Menüpunkt entschieden drückt man die OK-Taste auf der Fernbedienung und das Licht-Scenario wird in dem 2. Script gestartet. In diesem Fall werden in einem Raum 4 Dimmer gleichzeitig mit nur zwei Tasten angesteuert so dass alle dimmer immer gleich hell sind.

Diese Technik ist nicht nur für Lichtscenarien anwendbar sondern für alles mögliche. So könnte man mit einer FS20 S20 (20Tasten) nahezu beliebig viele Scripte ansteuern.

Mit einem hübschen 1-Wire LCD-Display könnte man so recht einfach auch eine richtige Navigation bauen.

Gruß,

Toni

So gefällt mir das! :slight_smile: :slight_smile: :slight_smile:

Schön unterteilt in die funktionalen Bereiche 1) Zähler und 2) Aktionen.

Bei Teil 1 (dem Zähler) würde ich noch eine Zeile ergänzen um einen Fehlerfall des Anfangs-Zählerwertes abzufangen:


$ScenarioNummer=GetValueInteger("Scenatio_Nummer"); 
$ScenarioNummer++; 
if( ($ScenarioNummer < 1) or ($ScenarioNummer > 5) ) 
   $ScenarioNummer=1; 
SetValueInteger("Scenatio_Nummer", $ScenarioNummer); 

Statt „or“ kann auch „||“ verwendet werden (es gibt zwischen beiden Notationen Unterschiede, dass führt hier aber zuweit).

Warum das ganze? Falls irgendein Schelm (oder Skript) die Variable Scenatio_Nummer auf -10000 setzt muss man nicht 10000mal den Taster drücken um endlich irgendwas zu sehen. Die Prüfung der unteren Grenze tut nicht weh und macht das Skript sicherer bzgl. Fehler.

Gruss,
Olli

Danke Oli für den Tip habe das Script nun noch mit ein bissel TTS aufgemotzt damit ich auch weis was ich da eigentlich drücke und um zu merken wenn mal mein FS 20 Taster nich koreckt sendet

So nun das habe ich daraus gemacht
wie ihr seht habe ich kein schönen Display also lass ich mir sagen wo ich bin

Teil Eins wird über OnCange angesteuert

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : LightScene_Navigate.ips.php
Trigger  : 
Interval : 
*/
$ScenarioNummer=GetValueInteger("Scenatio_Nummer");
$ScenarioNummer++;

if( ($ScenarioNummer < 1) or ($ScenarioNummer > 5) )
  $ScenarioNummer=1;

SetValueInteger("Scenatio_Nummer", $ScenarioNummer);

switch ($ScenarioNummer)   
{
   case 1:
      TTS_Speak(21008, "Grund Beleuchtung");
      break;
   case 2:
      TTS_Speak(21008, "Fernseh Beleuchtung ");
      break;
   case 3:
      TTS_Speak(21008, "Lese Beleuchtung");
      break;
   case 4:
      TTS_Speak(21008, "Hintergund Beleuchtung");
      break;
   case 5:
      TTS_Speak(21008, "Licht Ausschalten");
      break;
   default:  ;
}
?>

Das 2 Natürlich auch mit OnCange

<?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : LightScene_Confirm.ips.php
Trigger  : 
Interval : 
*/
$ScenarioNummer=GetValueInteger("Scenatio_Nummer");
/*
#60778	(Bilde TV)
#13624	(Bilder Sofa)
#14327	(Leselampe)
#13191	(Messinglampen)
1 = "Grund Beleuchtung"
2 = "Fernseh Beleuchtung "
3 = "Lese Beleuchtung"
4 = "Hintergund Beleuchtung"
5 = "Licht Ausschalten"
*/
switch ($ScenarioNummer)   
{
   case 1:
      FS20_SetIntensity(60778, 0, 1);
      FS20_SetIntensity(13624, 0, 1);
      FS20_SetIntensity(14327, 0, 1);
      FS20_SetIntensity(13191, 16, 1);
      TTS_Speak(21008, "EIN");
      break;
   case 2:
      FS20_SetIntensity(60778, 10, 1);
      FS20_SetIntensity(13624, 6, 1);
      FS20_SetIntensity(14327, 0, 1);
      FS20_SetIntensity(13191, 5, 1);
      TTS_Speak(21008, "EIN");
      break;
   case 3:
      FS20_SetIntensity(60778, 9, 1);
      FS20_SetIntensity(13624, 9, 1);
      FS20_SetIntensity(14327, 14, 1);
      FS20_SetIntensity(13191, 9, 1);
      TTS_Speak(21008, "EIN");
      break;
   case 4:
      FS20_SetIntensity(60778, 9, 1);
      FS20_SetIntensity(13624, 9, 1);
      FS20_SetIntensity(14327, 0, 1);
      FS20_SetIntensity(13191, 10, 1);
      TTS_Speak(21008, "EIN");
      break;
   case 5:
      FS20_SetIntensity(60778, 0, 1);
      FS20_SetIntensity(13624, 0, 1);
      FS20_SetIntensity(14327, 0, 1);
      FS20_SetIntensity(13191, 0, 1);
      TTS_Speak(21008, "deaktiviert");
      break;
   default:  ;
}
?>

So ich hoffe das es euch genau so hilft wie mit Toni geholfen hat noch mal Herzlich dank an ihn

Ob mann diesem beispiel im ‚kleines programmier handbuch‘ aufnehmen sollten ?

Eine gute Doku ware toll wie man das von z.b. Moeller kennt aber so was zu flegen is einfach zu aufwändich

in der dann auch Beispiele und scripte drinn sind

Das finde ichist eigentlich keine so gute Idee. Der Sprung ist denke ich noch ein wenig groß. Aber wir sollten uns den Beitrag merken.

Gruß,

Toni

habe leider nun nach ein paa tagen test festgestellt das es nicht immer schaltet .es wird zwar ausgeführt aber die schaltbefehle werden nicht an die lampen gesendet.

Bitte nochmal u,m hilfe

Es ist bekannt, dass FS20 manchmal einen Befehl verliert. Aber vielleicht haben wir auch einfach Funksalat fabriziert.

Füge doch mal zischen die einzelnen Befehle ein delay ein (sleep).

Gruß,

Toni

ok habe nun einen sleep (1) nach jedem sendebefehl gamacht und es klapt macht die sach nur etwas langsam

Das bedeutet eine Sekunde warten.

Versuchs mit IPS_Sleep. 500 entspricht einer halben Sekunde 250 einer Viertel und 100 einer zehntel…

Musst ein bissel mit rumspielen…

Gruß,

Toni