Webfront Fehlerkonsole

Hallo

Ich hoffe das ich hier im richtigen Forum bin.

Ich habe unter der Version 2.1 mein Chromflex Script endlich zum laufen bekommen (Durch Eure tatkräftige Unterstützung! Danke).

Es werden alle Funktionen einwandfrei durchgeführt.

Nur nachdem ich im Webfront irgendein Button angeklickt habe und die Funktion ausgeführt wurde erscheint die Fehlerkonsole ohne einen Fehler (es wird nur die Uhrzeit angezeigt).

Ich habe IP-Symcon schon neu installiert aber das brachte auch keinen Erfolg.

Ich hoffe das mir jemand weiterhelfen kann.

Gruß Gunnar

Hallo Gunnar,

sieh mal in deinen Objektbaum wenn Du im Webfront im Chromo schaltest ob sich da noch irgendein Variablenwert mit ändert der nichts damit zutun hat.

Hallo Rainer,

Im Objektbaum verändert sich nichts, nur beim Chromo ändern sich die Variablen wie sie sollen.

Gruß Gunnar

Objektbaum.PNG

Hallo Gunnar,

der Objektbaum sieht gut aus. Dein Script muss noch unter Chromoflex(Dummy)

chromopf.png

Hallo Rainer

Danke für die schnelle Antwort.

Habe das Script unter den Dummy gelegt, aber leider immer noch das gleiche Ergebnis.
Es kommt immer wieder die Fehlerkonsole.

Gruß Gunnar

Dein Objektbaum sollte jetzt so aussehen wie oben im Bild, mit deinen Variablen natürlich :slight_smile:

Ansonsten kannst Du Horst oder paresy mal deine settings.xml schicken, eventuell ist da was faul.

Ja sieht bei mir genauso aus.
Werde die settings.xml denn mal verschicken

Gruß Gunnar

Objektbaum.PNG

Mach das.
Hast Du auch mal die Seite neu geladen nach dem Du verschoben hast.

Ja, Seite neugeladen, IP-Symcon neu gestartet und sogar Rechner neugestartet aber die Fehlerkonsole lässt sich nicht kleinkriegen,
die ist immer wieder da :mad:
Gruß Gunnar

Wie sieht das Skript aus? Vermutlich ist dort etwas drin, dass das Skript Fehlerhaft ausführt oder (leeren/unsichtbaren) Inhalt zurückliefert.

paresy

Hier das Script

   <?
/*
*******************************
 IP-SYMCON Event Scripting
*******************************
File     : Chromoflex.ips.php
Trigger  : $IPS_VALUE
Interval :
*/
if (!isset($IPS_VALUE)) $IPS_VALUE=NULL;

if($IPS_SENDER == "WebFront")
{
    SetValue($IPS_VARIABLE, $IPS_VALUE);
}

define ("Comport", 57225 /*[Serial Port]*/);


$Startbyte =  "\xCA";          // StartByte (Muss nicht verändert werden)
$Adresse   =  "\x00\x00\x00";  // Adresse 0,0,0 = Broadcast

switch ($IPS_VALUE)
{

    case '260':
    /*Programmnummer aufrufen 0-7 und 9. Es erfolgt erst ein Reset,
danach wird das Programm mit einer kleinen Verzögerung aufgerufen, diese muss sein, sonst startet das Programm nicht.
Programm = 200+3*Programmnummer. Hier als Beispiel Nr.3, 200 + 3 * 3 = 209 entspricht 0xD1
SLOW COLOR*/

     Reseten();       // Funktion aufrufen
         IPS_Sleep(750); // 750ms warten, ansonsten starten die Programme nicht(Timing)
         $cmd = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr(0xCE); //Programm. 0xCE startet Programm 2
         $txt = $Adresse.$cmd;
         $crc = CRC16r($Startbyte.$txt);
         $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
         $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
         COMPort_SendText(Comport, $Startbyte.$txt.$crc);
         return;
     break;
   case '261':
    /*Programmnummer aufrufen 0-7 und 9. Es erfolgt erst ein Reset,
danach wird das Programm mit einer kleinen Verzögerung aufgerufen, diese muss sein, sonst startet das Programm nicht.
Programm = 200+3*Programmnummer. Hier als Beispiel Nr.3, 200 + 3 * 3 = 209 entspricht 0xD1
BLOB*/

     Reseten();       // Funktion aufrufen
         IPS_Sleep(750); // 750ms warten, ansonsten starten die Programme nicht(Timing)
         $cmd = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr(0xD1); //Programm. 0xD1 startet Programm 3
         $txt = $Adresse.$cmd;
         $crc = CRC16r($Startbyte.$txt);
         $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
         $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
         COMPort_SendText(Comport, $Startbyte.$txt.$crc);
         return;
     break;
   case '262':
    /*Programmnummer aufrufen 0-7 und 9. Es erfolgt erst ein Reset,
danach wird das Programm mit einer kleinen Verzögerung aufgerufen, diese muss sein, sonst startet das Programm nicht.
Programm = 200+3*Programmnummer. Hier als Beispiel Nr.3, 200 + 3 * 3 = 209 entspricht 0xD1
USER PRG*/

     Reseten();       // Funktion aufrufen
         IPS_Sleep(750); // 750ms warten, ansonsten starten die Programme nicht(Timing)
         $cmd = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr(0xD4); //Programm. 0xD4 startet Programm 4
         $txt = $Adresse.$cmd;
         $crc = CRC16r($Startbyte.$txt);
         $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
         $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
         COMPort_SendText(Comport, $Startbyte.$txt.$crc);
         return;
     break;

    case '263':
    /*Programmnummer aufrufen 0-7 und 9. Es erfolgt erst ein Reset,
danach wird das Programm mit einer kleinen Verzögerung aufgerufen, diese muss sein, sonst startet das Programm nicht.
Programm = 200+3*Programmnummer. Hier als Beispiel Nr.3, 200 + 3 * 3 = 209 entspricht 0xD1
LSD*/

     Reseten();       // Funktion aufrufen
         IPS_Sleep(750); // 750ms warten, ansonsten starten die Programme nicht(Timing)
         $cmd = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr(0xD7); //Programm. 0xD7 startet Programm 5
         $txt = $Adresse.$cmd;
         $crc = CRC16r($Startbyte.$txt);
         $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
         $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
         COMPort_SendText(Comport, $Startbyte.$txt.$crc);
         return;
     break;
    case '265': // Weiß
         SetValue(30567 /*[Chromoflex\Chromoflex\rot]*/ , 255);
         SetValue(26490 /*[Chromoflex\Chromoflex\gruen]*/, 255);
         SetValue(18687 /*[Chromoflex\Chromoflex\blau]*/, 255);

     break;
    case '266': // Gelb
         SetValue(30567 /*[Chromoflex\Chromoflex\rot]*/ , 255);
         SetValue(26490 /*[Chromoflex\Chromoflex\gruen]*/, 255);
        SetValue(18687 /*[Chromoflex\Chromoflex\blau]*/, 0);
     break;
    case '267': // Violett
         SetValue(30567 /*[Chromoflex\Chromoflex\rot]*/ , 255);
         SetValue(26490 /*[Chromoflex\Chromoflex\gruen]*/, 0);
         SetValue(18687 /*[Chromoflex\Chromoflex\blau]*/, 255);
     break;
    case '268':  // Chromoflex ausschalten(Standby) alle Werte auf 0
         SetValue(30567 /*[Chromoflex\Chromoflex\rot]*/ , 0);
         SetValue(26490 /*[Chromoflex\Chromoflex\gruen]*/, 0);
         SetValue(18687 /*[Chromoflex\Chromoflex\blau]*/, 0);
     break;
    case '269':   // Nach Reset startet das Default Programm NORMAL COLOR
         Reseten();   // Funktion aufrufen
     break;

    case '270':
    /*Programmnummer aufrufen 0-7 und 9. Es erfolgt erst ein Reset,
danach wird das Programm mit einer kleinen Verzögerung aufgerufen, diese muss sein, sonst startet das Programm nicht.
Programm = 200+3*Programmnummer. Hier als Beispiel Nr.3, 200 + 3 * 3 = 209 entspricht 0xD1
FIRE*/

     Reseten();       // Funktion aufrufen
         IPS_Sleep(750); // 750ms warten, ansonsten starten die Programme nicht(Timing)
         $cmd = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr(0xDA); //Programm. 0xDA startet Programm 6
         $txt = $Adresse.$cmd;
         $crc = CRC16r($Startbyte.$txt);
         $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
         $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
         COMPort_SendText(Comport, $Startbyte.$txt.$crc);
         return;
     break;

    case '271':
    /*Programmnummer aufrufen 0-7 und 9. Es erfolgt erst ein Reset,
danach wird das Programm mit einer kleinen Verzögerung aufgerufen, diese muss sein, sonst startet das Programm nicht.
Programm = 200+3*Programmnummer. Hier als Beispiel Nr.3, 200 + 3 * 3 = 209 entspricht 0xD1
FLASH*/

     Reseten();       // Funktion aufrufen
         IPS_Sleep(750); // 750ms warten, ansonsten starten die Programme nicht(Timing)
         $cmd = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr(0xDD); //Programm. 0xDD startet Programm 7
         $txt = $Adresse.$cmd;
         $crc = CRC16r($Startbyte.$txt);
         $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
         $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
         COMPort_SendText(Comport, $Startbyte.$txt.$crc);
         return;
     break;

    case '272':
    /*Programmnummer aufrufen 0-7 und 9. Es erfolgt erst ein Reset,
danach wird das Programm mit einer kleinen Verzögerung aufgerufen, diese muss sein, sonst startet das Programm nicht.
Programm = 200+3*Programmnummer. Hier als Beispiel Nr.3, 200 + 3 * 3 = 209 entspricht 0xD1
BURST*/

     Reseten();       // Funktion aufrufen
         IPS_Sleep(750); // 750ms warten, ansonsten starten die Programme nicht(Timing)
         $cmd = chr(0).chr(3).chr(0x7D).chr(0x15).chr(0).chr(0xE0); //Programm. 0xE0 startet Programm 8
         $txt = $Adresse.$cmd;
         $crc = CRC16r($Startbyte.$txt);
         $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
         $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
         COMPort_SendText(Comport, $Startbyte.$txt.$crc);
         return;
     break;
    default:
       SetValue(13083 /*[Chromoflex\Chromoflex\Programm]*/, 264);
      break;
}
// Werte einlesen
$Rot = GetValue(30567 /*[Chromoflex\Chromoflex\rot]*/);
$Gruen = GetValue(26490 /*[Chromoflex\Chromoflex\gruen]*/);
$Blau = GetValue(18687 /*[Chromoflex\Chromoflex\blau]*/);


// Status setzen
$cmd = chr(0).chr(2).chr(0x7E).chr(0x12).chr(0x01);
$txt = $Adresse.$cmd;
$crc = CRC16r($Startbyte.$txt);
$txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
$txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
COMPort_SendText(Comport, $Startbyte.$txt.$crc);

//Farben setzen ==> Set
$cmd = chr(0).chr(4).chr(0x7E).chr(4).chr($Rot).chr($Gruen).chr($Blau);
$txt = $Adresse.$cmd;
$crc = CRC16r($Startbyte.$txt);
$txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
$txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
COMPort_SendText(Comport, $Startbyte.$txt.$crc);

//Level setzen
$cmd = chr(0).chr(4).chr(0x7E).chr(0).chr($Rot).chr($Gruen).chr($Blau);
$txt = $Adresse.$cmd;
$crc = CRC16r($Startbyte.$txt);
$txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
$txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
COMPort_SendText(Comport, $Startbyte.$txt.$crc);


// Funktion zur Checksummenberechnung by HJH
function CRC16r($s)       // CRC16 reverse
{
 $CRCreg = 0xffff << 1;   // Startwert
 $PLYreg = 0xA001 << 1;   // Polynom
 $len = strlen($s);

 for ($cp=0; $cp<$len; $cp++)
 {
  $CRCreg ^= ord($s[$cp]) << 1;
  for ($bp=0; $bp<8; $bp++)
  {
   $CRCreg >>= 1;
   if ($CRCreg & 0x01) $CRCreg ^= $PLYreg;
  }
 }
 $crc = $CRCreg >> 1;
 $crcLo = $crc & 0xff;
 $crcHi = $crc >> 8;
 return chr($crcHi).chr($crcLo);
}


// Funktion Reseten
function Reseten()
{
 SetValue(30567 /*[Chromoflex\Chromoflex\rot]*/ , 0);
 SetValue(26490 /*[Chromoflex\Chromoflex\gruen]*/, 0);
 SetValue(18687 /*[Chromoflex\Chromoflex\blau]*/, 0);
 $cmd = chr(0).chr(0).chr(0xFE);
 $txt = "\x00\x00\x00".$cmd;
 $crc = CRC16r("\xCA".$txt);
 $txt = str_replace(chr(0xCB), chr(0xCB).chr(0x01), $txt);
 $txt = str_replace(chr(0xCA), chr(0xCB).chr(0x00), $txt);
 COMPort_SendText(Comport,"\xCA".$txt.$crc);
}

?>

Gruß Gunnar

Das wird nix. Du weist $IPS_VALUE 0 zu. Was willst Du damit überhaupt.

Wie ich das noch nicht drin hatte

if (!isset($IPS_VALUE)) $IPS_VALUE=NULL;

bekam ich immer folgende Fehlermeldungen wenn ich im Script auf ausführen gedrückt hatte (Im Webfront kam nur die Fehlerkonsole mit der Uhrzeit ):

„Undefined variable IPS_Value in line“

die sich immer auf die case Zeilen bezogen, erst wie ich die Zeile eingebaut hatte waren die weg. Und ich hoffte das dadurch auch die Fehlerkonsole im Webfront weg wär.

Gruß Gunnar

<?

^ Sind die Leerzeichen vor dem <? auch bei dir drin oder nur ein Copy&Paste Fehler?

Dann schreib lieber:


if($IPS_SENDER == "WebFront") 
{ 
    SetValue($IPS_VARIABLE, $IPS_VALUE); 
} else {
 echo "Kann nicht einfach ausgeführt werden!";
return;
}

paresy

Hallo paresy

<?

^ Sind die Leerzeichen vor dem <? auch bei dir drin oder nur ein Copy&Paste Fehler?

Die Leerzeichen waren wirklich davor gewesen :mad:

Danke Danke Danke

Jetzt funktioniert es einwandfrei :smiley:

Gruß Gunnar

Hy Gunnar,
es ist tatsächlich ein Fehler durch Copy&Paste, Hatt ich auch mal zu Anfang gehabt.