IPSLight

Ich war weiter auf Fehlersuche und habe festgestellt, dass die Umrechung von hex zu rgb oftmals ein array mit Nullen ergibt.

in der SetState Methode in IPSComponentRGB_PhilipsHue:

...
			   $rotDec = (($color >> 16) & 0xFF);
			   $gruenDec = (($color >> 8) & 0xFF);
			   $blauDec = (($color >> 0) & 0xFF); 

lasse ich die umrechnung über die Lux_Color Klasse machen, kann ich über Skripte sehr gut die Farbe wechseln.
Dann funktioniert es aber nicht mehr mit dem Hex Color Picker im Webfront.

Verwende ich die Umwandlung wie oben, kann ich nicht über Skripte die Farbe ändern :confused:

Zum setzen des RGB Wertes in IPSLight bzw. auch in IP-Symcon muss der Farbwert als Integer Wert übergeben werden:

$rgb = $red256256 + $green*256 + $blue;

zB für die Farbe Rot:


    IPSUtils_Include ('IPSLight.inc.php', 'IPSLibrary::app::modules::IPSLight');
    IPSLight_SetSwitchByName('WZ Hue MitteRechts', true);
    $lightManager = new IPSLight_Manager();
    $rgb = 255*256*256;   
     $lightManager -> SetRGB(59490 , $rgb);

Ok, Danke Brownsen. So gehts.

Wo habe ich das denn nun übersehen?`
Und wie kann ich einen hex code übergeben, wie es im Wiki und im Code-Kommentar steht?

Wäre letztlich auch kein Problem das selbst zu machen, aber vllt gibts da schon was?

Gruß

ich habe mir mal die Mühe gemacht und einen IPSComponentRGB_Milight „zusammengeklaut“.

Zum Benutzen die UDP Socket Instanz einrichten und in der Konfiguration noch zusätzlich die Grippe mit angeben

…‚RGB‘, ‚IPSComponentRGB_Milight,52928,GROUP2‘,‚L1‘…

Viel Spaß damit

<?
    /**@addtogroup ipscomponent
     * @{
     *
      *
     * @file          IPSComponentRGB_Milight.class.php
     * @author        Rüdiger Weronetzki
     *
     * based on IPSComponentRGB_Hue
     */

   /**
    * @class IPSComponentRGB_Milight
    *
    * Definiert ein IPSComponentRGB_Milight Object, das ein IPSComponentRGB Object fuer Milight implementiert.
	*
	* Information 
	* http://www.limitlessled.com/dev/
	*
    * https://code.google.com/p/openhab/source/browse/bundles/binding/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/MilightBinding.java?spec=svnf1af83ad0fef8a05616de4543f39743b89ef9128&r=f1af83ad0fef8a05616de4543f39743b89ef9128
    * @version
    * Version 2.50.1, 04.03.2015<br/>
    */

    IPSUtils_Include ('IPSComponentRGB.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentRGB');
    IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");

    class IPSComponentRGB_Milight extends IPSComponentRGB {

        private $bridgeIP;
        private $groupnr;
		
    
        /**
         * @public
         *
         * Initialisierung eines IPSComponentRGB_Milight Objektes
         *
         * @param string $bridgeIP IP Addresse der HUE Lampe
         * @param string $groupnr Nummer der Lampe
	
		 *
         */
        public function __construct($bridgeIP, $groupnr) {
           
			$this->bridgeIP = intval ($bridgeIP);
            $this->groupnr   = $groupnr;
		
        }

        /**
         * @public
         *
         * Function um Events zu behandeln, diese Funktion wird vom IPSMessageHandler aufgerufen, um ein aufgetretenes Event 
         * an das entsprechende Module zu leiten.
         *
         * @param integer $variable ID der auslösenden Variable
         * @param string $value Wert der Variable
         * @param IPSModuleRGB $module Module Object an das das aufgetretene Event weitergeleitet werden soll
         */
        public function HandleEvent($variable, $value, IPSModuleRGB $module){
        }

        /**
         * @public
         *
         * Funktion liefert String IPSComponent Constructor String.
         * String kann dazu benützt werden, das Object mit der IPSComponent::CreateObjectByParams
         * wieder neu zu erzeugen.
         *
         * @return string Parameter String des IPSComponent Object
         */
        public function GetComponentParams() {
            return get_class($this).','.$this->bridgeIP.','.$this->lampNr;
        }

        /**
        *  @brief Sends command to Milight bridge using JSON
        *  
        *  @param [in] $type Type of parameter ([Lights, Bridge]
        *  @param [in] $request [GET,PUT]
        *  @param [in] $cmd Command string
        *  @return Returns the result of the JSON command
        *  
        */
        private function mil_SendLampCommand($power, $brightness = null, $color = null) {
			 IPS_LogMessage("Power", $power);
			 IPS_LogMessage("Brightness", $brightness);
			 IPS_LogMessage("Color", $color);
			 IPS_LogMessage("Group", $this->groupnr );
			 IPS_LogMessage("Bridge", "#".$this->bridgeIP."#" );
			 $cmd = "";
			 $cmd2 = "";
			 $cmd3 = "";
			 $cmd4 = "";
			 
			if ($power == false) {
				if ($this->groupnr == "GROUP1") $cmd = "\x46\x00\x55";
				if ($this->groupnr == "GROUP2") $cmd = "\x48\x00\x55";
				if ($this->groupnr == "GROUP3") $cmd = "\x4A\x00\x55";
				if ($this->groupnr == "GROUP4") $cmd = "\x4C\x00\x55";
				
				//UDP RGB Socket öffnen
				CSCK_SetOpen(52928, true);
				IPS_ApplyChanges(52928);

				USCK_SendText(52928, $cmd);

				//UDP RGP Socket wieder schließen
				CSCK_SetOpen(52928, false);
				IPS_ApplyChanges(52928);
			}else{
				if ($this->groupnr == "GROUP1"){
					$cmd = "\x45\x00\x55";
					$cmd4 = "\xC5\x00\x55";
				}
				if ($this->groupnr == "GROUP2") {
					$cmd = "\x47\x00\x55";
					$cmd4 = "\xC7\x00\x55";
				}
				if ($this->groupnr == "GROUP3") {
					$cmd = "\x49\x00\x55";
					$cmd4 = "\xC9\x00\x55";
				}
				if ($this->groupnr == "GROUP4") {
					$cmd = "\x4B\x00\x55";
					$cmd4 = "\xCB\x00\x55";
				}
				
				$cmd2 = "\x40".chr ($color)."\x55";
				$cmd3 = "\x4e".chr ($brightness)."\x55";

				//UDP RGB Socket öffnen
				CSCK_SetOpen($this->bridgeIP, true);
				IPS_ApplyChanges($this->bridgeIP);

				USCK_SendText($this->bridgeIP, $cmd);
				usleep(100000);
				if ($color == -1) {
					USCK_SendText($this->bridgeIP, $cmd4);
				}else{
					USCK_SendText($this->bridgeIP, $cmd2);
				}
				usleep(100000);
				USCK_SendText($this->bridgeIP, $cmd);				
				usleep(100000);
				USCK_SendText($this->bridgeIP, $cmd3);
				usleep(100000);

				//UDP RGP Socket wieder schließen
				CSCK_SetOpen($this->bridgeIP, false);
				IPS_ApplyChanges($this->bridgeIP);
			}
			
        }
        
        
        /**
         * @public
         *
         * @brief Zustand Setzen 
         *
         * @param boolean $power RGB Gerät On/Off
         * @param integer $color RGB Farben (Hex Codierung)
         * @param integer $level Dimmer Einstellung der RGB Beleuchtung (Wertebereich 0-100)
         */
        public function SetState($power, $color, $level) {
            if (!$power) {
                $this->mil_SendLampCommand($power, 255, 255);
            } else {

			   $rotDec = (($color >> 16) & 0xFF);
			   $gruenDec = (($color >> 8) & 0xFF);
			   $blauDec = (($color >> 0) & 0xFF); 
			   $color_array = array($rotDec,$gruenDec,$blauDec);
			   
			 
			   
			   //Convert RGB to XY values
			   $colorS = 0;
			   $colorS = $this->calculateColor($color_array);
			   //IPSLight is using percentage in variable Level, MiLight is using [2..27] 
			   $level = round($level * 0.25) + 2;
			   IPS_LogMessage("level", $level);
			   //Send command to Mi lamp
			   $this->mil_SendLampCommand($power, $level, $colorS);
            }
        }
		
		
		private function calculateColor($color) {
			
			$rgb = array (
				'red' => $color[0],
				'green' => $color[1],
				'blue' => $color[2]
			);
			IPS_LogMessage("red", $color[0]);
			$rgbMin = min($rgb);
			$rgbMax = max($rgb);

			if ($rgbMin == $rgbMax) {
				if ($rgbMin == 0 || $rgbMin == 255) return -1;
			}
			
			$hsv = array(
			  'hue'   => 0,
			  'sat'   => 0,
			  'val'   => $rgbMax
			);

			// If v is 0, color is black
			if ($hsv['val'] != 0) {
				// Normalize RGB values to 1
				$rgb['red'] /= $hsv['val'];
				$rgb['green'] /= $hsv['val'];
				$rgb['blue'] /= $hsv['val'];
				$rgbMin = min($rgb);
				$rgbMax = max($rgb);

				// Calculate saturation
				$hsv['sat'] = $rgbMax - $rgbMin;
				IPS_LogMessage("sat", $hsv['sat']);
				if ($hsv['sat'] == 0) {
				  $hsv['hue'] = 0;
				}else{

					// Normalize saturation to 1
					$rgb['red'] = ($rgb['red'] - $rgbMin) / ($rgbMax - $rgbMin);
					$rgb['green'] = ($rgb['green'] - $rgbMin) / ($rgbMax - $rgbMin);
					$rgb['blue'] = ($rgb['blue'] - $rgbMin) / ($rgbMax - $rgbMin);
					$rgbMin = min($rgb);
					$rgbMax = max($rgb);

					// Calculate hue
					if ($rgbMax == $rgb['red']) {
						$hsv['hue'] = 0.0 + 60 * ($rgb['green'] - $rgb['blue']);
					  if ($hsv['hue'] < 0) {
						  IPS_LogMessage("huelogic", 2);
						$hsv['hue'] += 360;
					  }
					} else if ($rgbMax == $rgb['green']) {
						IPS_LogMessage("huelogic", 3);
					  $hsv['hue'] = 120 + (60 * ($rgb['blue'] - $rgb['red']));
					} else {
						IPS_LogMessage("huelogic", 4);
					  $hsv['hue'] = 240 + (60 * ($rgb['red'] - $rgb['green']));
					}
				}
			}
			$hue = $hsv['hue'];
			IPS_LogMessage("hue", $hue);

			$milightColorNo = (256 + 176 - intval ($hue / 360.0 * 255.0)) % 256;
			IPS_LogMessage("milightColorNo", $milightColorNo);
			
			return $milightColorNo;
			
		}
		
		
	} 
?>

Hab die neue RGB Component mal in die Library integriert…

@Brownson : wie ist denn der Stand : Anwesenheitssimulation, Möglichkeit zum Abspielen eines beliebigen Tages in der Vergangenheit

Da hat sich leider noch nichts getan, hatte mal einen Prototype gebaut, der braucht allerdings noch einiges an Feintuning.
Könnte das Teil selber schon brauchen, hab aber leider noch nicht die Zeit gefunden das Feature zu vollenden …

Hallo zusammen,

ich verwende das IPSLight Modul in Verbindung mit Homematic.
Dabei habe ich das Problem, dass der Status für einen Aktor nicht übernommen wird. Bei allen anderen funktioniert das sehr gut.
Konfiguration:


function IPSLight_GetLightConfiguration() {
		return array(
			'WohnzimmerDownlights'       =>	array('WohnzimmerDownlights',    'Untergeschoss,All', 'Switch', 'IPSComponentSwitch_Homematic,14172'),
			'WohnzimmerDecke'       =>	array('WohnzimmerDecke',    'Untergeschoss,All', 'Switch', 'IPSComponentSwitch_Homematic,23694'),
			'WC'       =>	array('WC',    'Erdgeschoss,All', 'Switch', 'IPSComponentSwitch_Homematic,37327'),
         'Flur'       =>	array('Flur',    'Erdgeschoss,All', 'Switch', 'IPSComponentSwitch_Homematic,13765'),
   		);
	}

Schalte ich das Flur Licht am Taster ein oder aus, so ändert sich die STATE Variable der Homematic Instanz, nicht jedoch der Status (An/Aus) im Webfront. Bei meiner Instanz im WC oder Wohnzimmer hingegen funktioniert das sehr gut.
Schalten des Flurlichts über das Webfront funktioniert hingegen und es ändert sich auch der Status.
Hat jemand eine Idee woran das liegen könnte?

Viele Grüße
Chris

Nachdem ich das Modul neu installiert habe geht es jetzt. Strange…

Funktioniert schon mal ganz gut in der IPS Light Library

Allerdings sind bei mir die UDP fest eingetragen

Ein Auszug aus der IPSComponentRGB-MiLight

                //UDP RGB Socket öffnen
                CSCK_SetOpen(52928 /*[Objekt #52928 existiert nicht]*/, true);
                IPS_ApplyChanges(52928 /*[Objekt #52928 existiert nicht]*/);

                USCK_SendText(52928 /*[Objekt #52928 existiert nicht]*/, $cmd);

                //UDP RGP Socket wieder schließen
                CSCK_SetOpen(52928 /*[Objekt #52928 existiert nicht]*/, false);
                IPS_ApplyChanges(52928 /*[Objekt #52928 existiert nicht]*/);

Kann man das noch ändern, dass der mit der Config verwendet wird?

Stimmt, das sollte ich noch anpassen.

Werde ich in den nächsten Tagen mal tun

ich habe jetzt die Components nochmal angepsst.
Es funktioniert jetzt auch alles. Allerdings wird jedes mal ein Fehler ausgegeben beim Schalten

 <?
    /**@addtogroup ipscomponent
     * @{
     *
      *
     * @file          IPSComponentRGB_Milight.class.php
     * @author        Rüdiger Weronetzki
     *
     * based on IPSComponentRGB_Hue
     */

   /**
    * @class IPSComponentRGB_Milight
    *
    * Definiert ein IPSComponentRGB_Milight Object, das ein IPSComponentRGB Object fuer Milight implementiert.
    *
    * Information 
    * http://www.limitlessled.com/dev/
    *
    * https://code.google.com/p/openhab/source/browse/bundles/binding/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/MilightBinding.java?spec=svnf1af83ad0fef8a05616de4543f39743b89ef9128&r=f1af83ad0fef8a05616de4543f39743b89ef9128
    * @version
    * Version 2.50.1, 04.03.2015<br/>
    */

    IPSUtils_Include ('IPSComponentRGB.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentRGB');
    IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");

    class IPSComponentRGB_Milight extends IPSComponentRGB {

        private $bridgeIP;
        private $groupnr;
        
    
        /**
         * @public
         *
         * Initialisierung eines IPSComponentRGB_Milight Objektes
         *
         * @param string $bridgeIP IP Addresse der HUE Lampe
         * @param string $groupnr Nummer der Lampe
    
         *
         */
        public function __construct($bridgeIP, $groupnr) {
           
            $this->bridgeIP = intval ($bridgeIP);
            $this->groupnr   = $groupnr;
        
        }

        /**
         * @public
         *
         * Function um Events zu behandeln, diese Funktion wird vom IPSMessageHandler aufgerufen, um ein aufgetretenes Event 
         * an das entsprechende Module zu leiten.
         *
         * @param integer $variable ID der auslösenden Variable
         * @param string $value Wert der Variable
         * @param IPSModuleRGB $module Module Object an das das aufgetretene Event weitergeleitet werden soll
         */
        public function HandleEvent($variable, $value, IPSModuleRGB $module){
        }

        /**
         * @public
         *
         * Funktion liefert String IPSComponent Constructor String.
         * String kann dazu benützt werden, das Object mit der IPSComponent::CreateObjectByParams
         * wieder neu zu erzeugen.
         *
         * @return string Parameter String des IPSComponent Object
         */
        public function GetComponentParams() {
            return get_class($this).','.$this->bridgeIP.','.$this->lampNr;
        }

        /**
        *  @brief Sends command to Milight bridge using JSON
        *  
        *  @param [in] $type Type of parameter ([Lights, Bridge]
        *  @param [in] $request [GET,PUT]
        *  @param [in] $cmd Command string
        *  @return Returns the result of the JSON command
        *  
        */
        private function mil_SendLampCommand($power, $brightness = null, $color = null) {
             IPS_LogMessage("Power", $power);
             IPS_LogMessage("Brightness", $brightness);
             IPS_LogMessage("Color", $color);
             IPS_LogMessage("Group", $this->groupnr );
             IPS_LogMessage("Bridge", "#".$this->bridgeIP."#" );
             $cmd = "";
             $cmd2 = "";
             $cmd3 = "";
             $cmd4 = "";
             
            if ($power == false) {
                if ($this->groupnr == "GROUP1") $cmd = "\x46\x00\x55";
                if ($this->groupnr == "GROUP2") $cmd = "\x48\x00\x55";
                if ($this->groupnr == "GROUP3") $cmd = "\x4A\x00\x55";
                if ($this->groupnr == "GROUP4") $cmd = "\x4C\x00\x55";
                
                //UDP RGB Socket öffnen
                CSCK_SetOpen($this->bridgeIP, true);
                IPS_ApplyChanges($this->bridgeIP);

                USCK_SendText($this->bridgeIP, $cmd);

                //UDP RGP Socket wieder schließen
                CSCK_SetOpen($this->bridgeIP, false);
                IPS_ApplyChanges($this->bridgeIP);
            }else{
                if ($this->groupnr == "GROUP1"){
                    $cmd = "\x45\x00\x55";
                    $cmd4 = "\xC5\x00\x55";
                }
                if ($this->groupnr == "GROUP2") {
                    $cmd = "\x47\x00\x55";
                    $cmd4 = "\xC7\x00\x55";
                }
                if ($this->groupnr == "GROUP3") {
                    $cmd = "\x49\x00\x55";
                    $cmd4 = "\xC9\x00\x55";
                }
                if ($this->groupnr == "GROUP4") {
                    $cmd = "\x4B\x00\x55";
                    $cmd4 = "\xCB\x00\x55";
                }
                
                $cmd2 = "\x40".chr ($color)."\x55";
                $cmd3 = "\x4e".chr ($brightness)."\x55";

                //UDP RGB Socket öffnen
                CSCK_SetOpen($this->bridgeIP, true);
                IPS_ApplyChanges($this->bridgeIP);

                USCK_SendText($this->bridgeIP, $cmd);
                usleep(100000);
                if ($color == -1) {
                    USCK_SendText($this->bridgeIP, $cmd4);
                }else{
                    USCK_SendText($this->bridgeIP, $cmd2);
                }
                usleep(100000);
                USCK_SendText($this->bridgeIP, $cmd);                
                usleep(100000);
                USCK_SendText($this->bridgeIP, $cmd3);
                usleep(100000);

                //UDP RGP Socket wieder schließen
                CSCK_SetOpen($this->bridgeIP, false);
                IPS_ApplyChanges($this->bridgeIP);
            }
            
        }
        
        
        /**
         * @public
         *
         * @brief Zustand Setzen 
         *
         * @param boolean $power RGB Gerät On/Off
         * @param integer $color RGB Farben (Hex Codierung)
         * @param integer $level Dimmer Einstellung der RGB Beleuchtung (Wertebereich 0-100)
         */
        public function SetState($power, $color, $level) {
            if (!$power) {
                $this->mil_SendLampCommand($power, 255, 255);
            } else {

               $rotDec = (($color >> 16) & 0xFF);
               $gruenDec = (($color >> 8) & 0xFF);
               $blauDec = (($color >> 0) & 0xFF); 
               $color_array = array($rotDec,$gruenDec,$blauDec);
               
             
               
               //Convert RGB to XY values
               $colorS = 0;
               $colorS = $this->calculateColor($color_array);
               //IPSLight is using percentage in variable Level, MiLight is using [2..27] 
               $level = round($level * 0.25) + 2;
               IPS_LogMessage("level", $level);
               //Send command to Mi lamp
               $this->mil_SendLampCommand($power, $level, $colorS);
            }
        }
        
        
        private function calculateColor($color) {
            
            $rgb = array (
                'red' => $color[0],
                'green' => $color[1],
                'blue' => $color[2]
            );
            IPS_LogMessage("red", $color[0]);
            $rgbMin = min($rgb);
            $rgbMax = max($rgb);

            if ($rgbMin == $rgbMax) {
                if ($rgbMin == 0 || $rgbMin == 255) return -1;
            }

            $hsv = array(
              'hue'   => 0,
              'sat'   => 0,
              'val'   => $rgbMax
            );

            // If v is 0, color is black
            if ($hsv['val'] != 0) {
                // Normalize RGB values to 1
                $rgb['red'] /= $hsv['val'];
                $rgb['green'] /= $hsv['val'];
                $rgb['blue'] /= $hsv['val'];
                $rgbMin = min($rgb);
                $rgbMax = max($rgb);

                // Calculate saturation
                $hsv['sat'] = $rgbMax - $rgbMin;
                IPS_LogMessage("sat", $hsv['sat']);
                if ($hsv['sat'] == 0) {
                  $hsv['hue'] = 0;
                }else{

                    // Normalize saturation to 1
                    $rgb['red'] = ($rgb['red'] - $rgbMin) / ($rgbMax - $rgbMin);
                    $rgb['green'] = ($rgb['green'] - $rgbMin) / ($rgbMax - $rgbMin);
                    $rgb['blue'] = ($rgb['blue'] - $rgbMin) / ($rgbMax - $rgbMin);
                    $rgbMin = min($rgb);
                    $rgbMax = max($rgb);

                    // Calculate hue
                    if ($rgbMax == $rgb['red']) {
                        $hsv['hue'] = 0.0 + 60 * ($rgb['green'] - $rgb['blue']);
                      if ($hsv['hue'] < 0) {
                          IPS_LogMessage("huelogic", 2);
                        $hsv['hue'] += 360;
                      }
                    } else if ($rgbMax == $rgb['green']) {
                        IPS_LogMessage("huelogic", 3);
                      $hsv['hue'] = 120 + (60 * ($rgb['blue'] - $rgb['red']));
                    } else {
                        IPS_LogMessage("huelogic", 4);
                      $hsv['hue'] = 240 + (60 * ($rgb['red'] - $rgb['green']));
                    }
                }
            }
            $hue = $hsv['hue'];
            IPS_LogMessage("hue", $hue);

            $milightColorNo = (256 + 176 - intval ($hue / 360.0 * 255.0)) % 256;
            IPS_LogMessage("milightColorNo", $milightColorNo);

            return $milightColorNo;

        }


    } 
?> 

Fehler.jpg

Ein WFC_SendNotification konnte ich leider nicht finden. Ideen wo das herkommt?

Da das über die Forensuche schwer zu finden ist … es ist eine Leerzeichen vor dem

 <?

oder hinter dem

?>

Gruß
Bruno

Es war zwar ein Leerzeichen drin. Aber nicht die Lösung.
Die Meldung kommt auch nur wenn man im Webfront schaltet.
Nimmt man dagegen die ipslight Befehle bleibt der Fehler aus.

Hi, ich hab noch immer ein Problem mit IPSLight.

soweit läuft alles, aber jetzt möchte ich eine neue Lampe hinzufügen.
Ist es dann ausreichend im „IPSLight_Configuration“ Script einfach in der Funktion „IPSLight_GetLightConfiguration“ eine Zeile hinzuzufügen?

'PoolLicht'       =>	array('PoolLicht',    'Aussen,All', 'Switch', 'IPSComponentSwitch_Dummy,12345'),

Wenn ich dann schließend im Webfront wieder auf das Modul IPSLight gehe und den Installations Wizard starte erhalte ich immer eine Fehlermeldung und die zusätzliche Lampe erscheint dann nicht im Webfront. Was mache ich denn falsch?

IPS-Err-PHP 2015-05-16 10:26:05.335 Notice: Undefined index: id
Error in Script C:\IP-Symcon\webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php on Line 17
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
17 in webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php (call IPSLogger_PhpErrorHandler)
IPS-Err-PHP 2015-05-16 10:26:06.660 Notice: Undefined index: action
Error in Script C:\IP-Symcon\webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php on Line 18
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
18 in webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php (call IPSLogger_PhpErrorHandler)
IPS-Err-PHP 2015-05-16 10:26:06.714 Notice: Undefined index: module
Error in Script C:\IP-Symcon\webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php on Line 19
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
19 in webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php (call IPSLogger_PhpErrorHandler)
IPS-Err-PHP 2015-05-16 10:26:06.762 Notice: Undefined index: info
Error in Script C:\IP-Symcon\webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php on Line 20
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
44 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
20 in webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php (call IPSLogger_PhpErrorHandler)
IPS-Err-PHP 2015-05-16 10:26:06.873 Warning: Cannot auto-convert to String from Variant. Error: Could not convert variant of type (Null) into type (String)
Error in Script C:\IP-Symcon\scripts\IPSLibrary\app\modules\IPSModuleManagerGUI\IPSModuleManagerGUI.inc.php on Line 46
134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)
37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)
in IPSLogger_PhpErrorHandler
46 in scripts\IPSLibrary\app\modules\IPSModuleManagerGUI\IPSModuleManagerGUI.inc.php (call SetValue)
89 in webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php (call IPSModuleManagerGUI_SetPage)

Ich fürchte ich habe die ganze Konfiguration noch nicht verstanden. :frowning:

Vielen Dank und viele Grüße
Christian

Mit was wird denn die Lampe geschaltet? Homematic, …

Richtig, Homematic.
Ich weiß, dass ich den Dummy verwende. Daran liegt es aber nicht auch wenn ich die Homematic SwitchComponent mit korrekter InstanzID verwende passiert das gleiche. Irgendwelche Ideen?

Hallo,

ich kann zwar nicht helfen, aber ich habe seit heute, nach den Update auf die aktuellste Version, die gleichen Fehlermeldungen egal welches Modul ich hinzufügen oder neu konfigurieren möchte.

https://www.symcon.de/forum/threads/27744-Fehler-bei-Modulinstallation?p=255575#post255575

So hier schon mal vorab das Update

<?
    /**@addtogroup ipscomponent
     * @{
     *
      *
     * @file          IPSComponentRGB_Milight.class.php
     * @author        Rüdiger Weronetzki
     *
     * based on IPSComponentRGB_Hue
     */

   /**
    * @class IPSComponentRGB_Milight
    *
    * Definiert ein IPSComponentRGB_Milight Object, das ein IPSComponentRGB Object fuer Milight implementiert.
    *
    * Information 
    * http://www.limitlessled.com/dev/
    *
    * https://code.google.com/p/openhab/source/browse/bundles/binding/org.openhab.binding.milight/src/main/java/org/openhab/binding/milight/internal/MilightBinding.java?spec=svnf1af83ad0fef8a05616de4543f39743b89ef9128&r=f1af83ad0fef8a05616de4543f39743b89ef9128
    * @version
    * Version 2.50.1, 04.03.2015<br/>
    */

    IPSUtils_Include ('IPSComponentRGB.class.php', 'IPSLibrary::app::core::IPSComponent::IPSComponentRGB');
    IPSUtils_Include ("IPSLogger.inc.php", "IPSLibrary::app::core::IPSLogger");

    class IPSComponentRGB_Milight extends IPSComponentRGB {

        private $bridge;
        private $groupnr;
        
    
        /**
         * @public
         *
         * Initialisierung eines IPSComponentRGB_Milight Objektes
         *
         * @param string $bridge Object ID der UDP Instanz
         * @param string $groupnr Nummer der Lampe
    
         *
         */
        public function __construct($bridge, $groupnr) {
           
            $this->bridge = intval ($bridge);
            $this->groupnr   = $groupnr;
        
        }

        /**
         * @public
         *
         * Function um Events zu behandeln, diese Funktion wird vom IPSMessageHandler aufgerufen, um ein aufgetretenes Event 
         * an das entsprechende Module zu leiten.
         *
         * @param integer $variable ID der auslösenden Variable
         * @param string $value Wert der Variable
         * @param IPSModuleRGB $module Module Object an das das aufgetretene Event weitergeleitet werden soll
         */
        public function HandleEvent($variable, $value, IPSModuleRGB $module){
        }

        /**
         * @public
         *
         * Funktion liefert String IPSComponent Constructor String.
         * String kann dazu benützt werden, das Object mit der IPSComponent::CreateObjectByParams
         * wieder neu zu erzeugen.
         *
         * @return string Parameter String des IPSComponent Object
         */
        public function GetComponentParams() {
		   return get_class($this).','.$this->bridge.','.$this->groupnr;
        }

        /**
        *  @brief Sends command to Milight bridge using JSON
        *  
        *  @param [in] $type Type of parameter ([Lights, Bridge]
        *  @param [in] $request [GET,PUT]
        *  @param [in] $cmd Command string
        *  @return Returns the result of the JSON command
        *  
        */
        private function mil_SendLampCommand($power, $brightness = null, $color = null) {
			
			 IPS_LogMessage("Power", $power);
             IPS_LogMessage("Brightness", $brightness);
             IPS_LogMessage("Color", $color);
             IPS_LogMessage("Group", $this->groupnr );
             IPS_LogMessage("Bridge", $this->bridge );
             $cmd = "";
             $cmd2 = "";
             $cmd3 = "";
             $cmd4 = "";
            
            if ($power == false) {
                if ($this->groupnr == "GROUP1") $cmd = "\x46\x00\x55";
                if ($this->groupnr == "GROUP2") $cmd = "\x48\x00\x55";
                if ($this->groupnr == "GROUP3") $cmd = "\x4A\x00\x55";
                if ($this->groupnr == "GROUP4") $cmd = "\x4C\x00\x55";
                
                //UDP RGB Socket öffnen
				IPS_SetProperty($this->bridge, "Open", true);
                //CSCK_SetOpen($this->bridge, true);
                IPS_ApplyChanges($this->bridge);

                USCK_SendText($this->bridge, $cmd);

                //UDP RGP Socket wieder schließen
                //CSCK_SetOpen($this->bridge, false);
				IPS_SetProperty($this->bridge, "Open", false);
                IPS_ApplyChanges($this->bridge);
            }else{
                if ($this->groupnr == "GROUP1"){
                    $cmd = "\x45\x00\x55";
                    $cmd4 = "\xC5\x00\x55";
                }
                if ($this->groupnr == "GROUP2") {
                    $cmd = "\x47\x00\x55";
                    $cmd4 = "\xC7\x00\x55";
                }
                if ($this->groupnr == "GROUP3") {
                    $cmd = "\x49\x00\x55";
                    $cmd4 = "\xC9\x00\x55";
                }
                if ($this->groupnr == "GROUP4") {
                    $cmd = "\x4B\x00\x55";
                    $cmd4 = "\xCB\x00\x55";
                }
                
                $cmd2 = "\x40".chr ($color)."\x55";
                $cmd3 = "\x4e".chr ($brightness)."\x55";

                //UDP RGB Socket öffnen
				IPS_SetProperty($this->bridge, "Open", true);
                //CSCK_SetOpen($this->bridge, true);
                IPS_ApplyChanges($this->bridge);

                USCK_SendText($this->bridge, $cmd); 
                usleep(100000);
                if ($color == -1) {
                    USCK_SendText($this->bridge, $cmd4);
                }else{
                    USCK_SendText($this->bridge, $cmd2);
                }
                usleep(100000);
                USCK_SendText($this->bridge, $cmd);                
                usleep(100000);
                USCK_SendText($this->bridge, $cmd3);
                usleep(100000);

                //UDP RGP Socket wieder schließen
                IPS_SetProperty($this->bridge, "Open", false);
				//CSCK_SetOpen($this->bridge, false);
                IPS_ApplyChanges($this->bridge);
            }
        }
        
        
        /**
         * @public
         *
         * @brief Zustand Setzen 
         *
         * @param boolean $power RGB Gerät On/Off
         * @param integer $color RGB Farben (Hex Codierung)
         * @param integer $level Dimmer Einstellung der RGB Beleuchtung (Wertebereich 0-100)
         */
        public function SetState($power, $color, $level) {
            if (!$power) {
                $this->mil_SendLampCommand($power, 255, 255);
            } else {

               $rotDec = (($color >> 16) & 0xFF);
               $gruenDec = (($color >> 8) & 0xFF);
               $blauDec = (($color >> 0) & 0xFF); 
               $color_array = array($rotDec,$gruenDec,$blauDec);
               
             
               
               //Convert RGB to XY values
               $colorS = 0;
               $colorS = $this->calculateColor($color_array);
               //IPSLight is using percentage in variable Level, MiLight is using [2..27] 
               $level = round($level * 0.25) + 2;
               IPS_LogMessage("level", $level);
               //Send command to Mi lamp
               $this->mil_SendLampCommand($power, $level, $colorS);
            }
        }
        
        
        private function calculateColor($color) {
            
            $rgb = array (
                'red' => $color[0],
                'green' => $color[1],
                'blue' => $color[2]
            );
            //IPS_LogMessage("red", $color[0]);
            $rgbMin = min($rgb);
            $rgbMax = max($rgb);

            if ($rgbMin == $rgbMax) {
                if ($rgbMin == 0 || $rgbMin == 255) return -1;
            }
            
            $hsv = array(
              'hue'   => 0,
              'sat'   => 0,
              'val'   => $rgbMax
            );

            // If v is 0, color is black
            if ($hsv['val'] != 0) {
                // Normalize RGB values to 1
                $rgb['red'] /= $hsv['val'];
                $rgb['green'] /= $hsv['val'];
                $rgb['blue'] /= $hsv['val'];
                $rgbMin = min($rgb);
                $rgbMax = max($rgb);

                // Calculate saturation
                $hsv['sat'] = $rgbMax - $rgbMin;
                //IPS_LogMessage("sat", $hsv['sat']);
                if ($hsv['sat'] == 0) {
                  $hsv['hue'] = 0;
                }else{

                    // Normalize saturation to 1
                    $rgb['red'] = ($rgb['red'] - $rgbMin) / ($rgbMax - $rgbMin);
                    $rgb['green'] = ($rgb['green'] - $rgbMin) / ($rgbMax - $rgbMin);
                    $rgb['blue'] = ($rgb['blue'] - $rgbMin) / ($rgbMax - $rgbMin);
                    $rgbMin = min($rgb);
                    $rgbMax = max($rgb);

                    // Calculate hue
                    if ($rgbMax == $rgb['red']) {
                        $hsv['hue'] = 0.0 + 60 * ($rgb['green'] - $rgb['blue']);
                      if ($hsv['hue'] < 0) {
                          //IPS_LogMessage("huelogic", 2);
                        $hsv['hue'] += 360;
                      }
                    } else if ($rgbMax == $rgb['green']) {
                        //IPS_LogMessage("huelogic", 3);
                      $hsv['hue'] = 120 + (60 * ($rgb['blue'] - $rgb['red']));
                    } else {
                        //IPS_LogMessage("huelogic", 4);
                      $hsv['hue'] = 240 + (60 * ($rgb['red'] - $rgb['green']));
                    }
                }
            }
            $hue = $hsv['hue'];
            //IPS_LogMessage("hue", $hue);

            $milightColorNo = (256 + 176 - intval ($hue / 360.0 * 255.0)) % 256;
            IPS_LogMessage("milightColorNo", $milightColorNo);
            
            return $milightColorNo;
            
        }
        
        
    } 
?>

Ist ebenfalls integriert…

Hallo,

bekomme bei der Modulinstallation folgenden Fehler, wenn ich mein Philips Hue in Betrieb nehmen möchte.

Fehler:

<div>Warning: Invalid argument supplied for foreach()<br>    Error in Script D:\IPS\IP-Symcon\scripts\IPSLibrary\install\InstallationScripts\IPSLight_Installation.ips.php on Line 235<br>   134 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger.inc.php (call IPSLogger_Out)<br>    37 in scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php (call IPSLogger_Err)<br>   235 in scripts\IPSLibrary\install\InstallationScripts\IPSLight_Installation.ips.php (call IPSLogger_PhpErrorHandler)<br>   673 in scripts\IPSLibrary\install\IPSModuleManager\IPSModuleManager.class.php (call include)<br>    69 in webfront\user\IPSModuleManagerGUI\IPSModuleManagerGUI_Receiver.php (call InstallModule)</div>

Konfig:

<?
    /*
     * This file is part of the IPSLibrary.
     *
     * The IPSLibrary is free software: you can redistribute it and/or modify
     * it under the terms of the GNU General Public License as published
     * by the Free Software Foundation, either version 3 of the License, or
     * (at your option) any later version.
     *
     * The IPSLibrary is distributed in the hope that it will be useful,
     * but WITHOUT ANY WARRANTY; without even the implied warranty of
     * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
     * GNU General Public License for more details.
     *
     * You should have received a copy of the GNU General Public License
     * along with the IPSLibrary. If not, see http://www.gnu.org/licenses/gpl.txt.
     */

    /**@defgroup ipslight_configuration IPSLight Konfiguration
     * @ingroup ipslight
     * @{
     *
     * @file          IPSLight_Configuration.inc.php
     * @author        Andreas Brauneis
     * @version
     *  Version 2.50.1, 26.07.2012<br/>
     *
     * Konfigurations File für IPSLight
     *
     */

    /**
     *
     * Definition der Beleuchtungs Elemente
     *
     * Die Konfiguration erfolgt in Form eines Arrays, für jedes Beleuchtungselement wird ein Eintrag im Array erzeugt.
     *
     * Für jedes Beleuchtungselement werden dann die Eigenschaften in einem gesonderten Array hinterlegt:
     *
     * IPSLIGHT_NAME  - spezifiziert den Namen der Beleuchtung in der GUI, Änderungen an dieser Eigenschaft werden erst nach einem
     *                  erneuten Ausführen der Installationsprozedur sichtbar.
     *
     * IPSLIGHT_GROUP - beinhaltet eine Liste aller Gruppen, der das Beleuchtungselement zugeordnet ist. Diese Eigenschaft kann
     *                  jederzeit geändert werden (vorausgesetzt die Gruppe ist bereits definiert, siehe weiter unten).
     *
     * IPSLIGHT_TYPE  - spezifiziert den Type der Beleuchtung, zur Zeit werden 3 Beleuchtungstypen unterstützt:
     *    - IPSLIGHT_TYPE_SWITCH:  Normale Beleuchtung mit Ein/Aus Funktionalität
     *    - IPSLIGHT_TYPE_RGB:     RGB Beleuchtung
     *    - IPSLIGHT_TYPE_DIMMER:  Dimmbare Beleuchtung
     *                  Änderungen an diesem Parameter erfordern ein Ausführen der Installations Prozedure.
     *
     * IPSLIGHT_COMPONENT - dieser Eintrag spezifiziert die Hardware, die Angabe des Component Strings muss mit dem spezifizierten
     *                      Beleuchtungstypen (siehe oben) zusammenpassen (Type Dimmer benötigt zB eine Klasse IPSComponentDimmer).
     *
     * IPSLIGHT_POWERCIRCLE - Hier kann spezifiziert werden an welchem Stromkreis die Lampe angeschlossen ist. Dieser Parameter ist
     *                        optional.
     *
     * IPSLIGHT_POWERWATT - Spezifiert die maximale Leistung der Beleuchtung. Zusammen mit dem Parameter IPSLIGHT_POWERCIRCLE ist es 
     *                      nun möglich die aktuelle Leistung eines Stromkreises abzufragen. Details siehe auch im WIKI.
     *
     * Eine ausführliche Beispielliste findet sich auch im Example Ordner
     *
     *
     * Beispiel:
     * @code
        function IPSLight_GetLightConfiguration() {
          return array(
            'Kueche'  =>  array(
               IPSLIGHT_NAME            => 'Küche',
               IPSLIGHT_GROUPS          => 'Erdgeschoss,All',
               IPSLIGHT_TYPE            => IPSLIGHT_TYPE_SWITCH',
               IPSLIGHT_COMPONENT       => 'IPSComponentSwitch_Homematic,12345',
               IPSLIGHT_POWERCIRCLE     => 1,
               IPSLIGHT_POWERWATT       => 60),
            'Ambiente'  =>  array(
               IPSLIGHT_NAME            => 'Ambiente',
               IPSLIGHT_GROUPS          => 'Erdgeschoss,All',
               IPSLIGHT_TYPE            => IPSLIGHT_TYPE_RGB,
               IPSLIGHT_COMPONENT       => 'IPSComponentRGB_IPS868,12345'),
             );
        }
     * @endcocde
     *
     * @return string Liefert Array mit Beleuchtungs Elementen
     */
    function IPSLight_GetLightConfiguration() {
        return array(
            'Kinderzimmer_RGB_HUE' =>    array('Kinderzimmer_RGB_HUE','Kinderzimmer,All','RGB','IPSComponentRGB_PhilipsHUE,192.168.10.104,534dfdf4343230db383391639232323b3757,4,LCT001'),
        );
    }


    /**
     *
     * Definition der Beleuchtungs Gruppen
     *
     * Die Konfiguration erfolgt in Form eines Arrays, für jede Beleuchtungsgruppe wird ein Eintrag im Array erzeugt.
     *
     * Für jede Beleuchtungsgruppe werden dann die Eigenschaften in einem gesonderten Array hinterlegt:
     *
     * IPSLIGHT_NAME  - spezifiziert den Namen der Gruppe in der GUI, Änderungen an dieser Eigenschaft werden erst nach einem
     *                  erneuten Ausführen der Installationsprozedur sichtbar.
     *
     * IPSLIGHT_ACTIVATABLE - gibt an, ob die Gruppe über die GUI eingeschaltet werden kann
     *
     * Eine Liste mit diversen Beispiel Konfigurationen findet sich auch im Example Ordner
     *
     *
     * Beispiel:
     * @code
        function IPSLight_GetGroupConfiguration() {
          return array(
            'All'  =>  array(
               IPSLIGHT_NAME            => 'All',
               IPSLIGHT_ACTIVATABLE     => false),
            'Erdgeschoss'  =>  array(
               IPSLIGHT_NAME            => 'Erdgeschoss',
               IPSLIGHT_ACTIVATABLE     => false),
             );
        }
     * @endcocde
     *
     * @return string Liefert Array mit Beleuchtungs Gruppen
     */
    function IPSLight_GetGroupConfiguration() {
        return array('All'             =>    array('All',            IPSLIGHT_ACTIVATABLE => false,),
                     'Erdgeschoss'     =>    array('Erdgeschoss',    IPSLIGHT_ACTIVATABLE => false,),
       );
    }

    /**
     *
     * Definition der Beleuchtungs Programme
     *
     * Die Konfiguration erfolgt in Form eines Arrays, für jedes Beleuchtungsprogramm wird ein Eintrag im Array erzeugt.
     *
     * Für jedes Beleuchtungsprogramm werden dann die einzelnen Programme ebenfalls als Array hinterlegt, diese wiederum haben ihre
     * Eigenschaften nochmals in einem Array gespeichert:
     *
     * IPSLIGHT_PROGRAMON  - Liste mit Beleuchungselementen, die bei diesem Programm eingeschaltet sein sollen.
     *
     * IPSLIGHT_PROGRAMOFF  - Liste mit Beleuchungselementen, die bei diesem Programm ausgeschaltet sein sollen.
     *
     * IPSLIGHT_PROGRAMLEVEL  - Liste mit Beleuchungselementen, die auf einen bestimmten Dimm Level gestellt werden sollen
     *
     * Eine Liste mit diversen Beispiel Konfigurationen findet sich auch im Example Ordner
     *
     *
     * Beispiel:
     * @code
        function IPSLight_GetProgramConfiguration() {
          return array(
                'Aus'      =>    array(
                    IPSLIGHT_PROGRAMOFF        =>     'WellnessWand,WellnessDecke,WellnessSauna,WellnessDusche,WellnessAmbiente',
                ),
                'TV'      =>    array(
                    IPSLIGHT_PROGRAMLEVEL    =>     'WellnessWand,30',
                    IPSLIGHT_PROGRAMOFF        =>     'WellnessDecke,WellnessSauna,WellnessDusche,WellnessAmbiente',

                ),
                'Relax'      =>    array(
                    IPSLIGHT_PROGRAMON        =>     'WellnessSauna,WellnessDusche,WellnessAmbiente',
                    IPSLIGHT_PROGRAMLEVEL    =>     'WellnessDecke,30,WellnessWand,30',

                ),
             );
        }
     * @endcocde
     *
     * @return string Liefert Array mit Beleuchtungs Gruppen
     */
    function IPSLight_GetProgramConfiguration() {
        return array(
        );
    }

    /**
     *
     * Definition der WebFront GUI
     *
     * Die Konfiguration der WebFront Oberfläche ist NICHT dokumentiert, ist aber analog zur normalen WebFront Konfigurator GUI
     * aufgebaut.
     *
     * Beispiele finden sich im Example Ordner
     *
     * @return string Liefert Array zum Aufbau des WebFronts
     */
    function IPSLight_GetWebFrontConfiguration() {
        return array(
        
        IPSLIGHT_WFCGROUP,'RGB','Light_1_CAv3','Kinderzimmer_RGB_HUE,Kinderzimmer_RGB_HUE#Color,Kinderzimmer_RGB_HUE#Level','Power,Farbe,Helligkeit'
        
        );
    }

    /**
     *
     * Definition der Mobile GUI
     *
     * Die Konfiguration der Mobile GUI ist NICHT dokumentiert
     *
     * Beispiele finden sich im Example Ordner
     *
     * @return string Liefert Array zum Aufbau der Mobile GUI
     */
    function IPSLight_GetMobileConfiguration() {
        return array(
        );
    }

    /** @}*/
?>


Sobald ich den Eintrag bei „IPSLight_GetWebFrontConfiguration“ in der Lights-Config entferne, läuft die Modulinstallation durch.

IPSLIGHT_WFCGROUP,'RGB','Light_1_CAv3','Kinderzimmer_RGB_HUE,Kinderzimmer_RGB_HUE#Color,Kinderzimmer_RGB_HUE#Level','Power,Farbe,Helligkeit'

Habe ich da noch einer Fehler in meiner Konfig? Wäre super, wenn mir mal jemand seine funktionierende Hue Konfig posten könnte.

Viele Grüße