Ankündigung

Einklappen
Keine Ankündigung bisher.

Bug in Edomi HUE-Bridge v1.5 (19000195_lbs.php)

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #16
    Zitat von Tekener Beitrag anzeigen
    Es wäre allerdings ein breaking Change und könnte sein das ein LBS Nutzer seine Logik umstellen müsste.
    Naja, es ist ja eher ein Fehler, da die Ausgabe der 0 am Ausgang nie richtig funktioniert hat. Daher würde ich es nicht als Breaking-Change bezeichnen.

    Kommentar


      #17
      Alternativ als ebenso einfache Lösung könnte man den Aus Event von A2 ebenso auf A3 bis A5 ausgeben.

      Kommentar


        #18
        Zitat von jonofe Beitrag anzeigen

        Oder in kurz: Nachlaufzeit und Ausschalten haben bei einem BWM nichts mit der Helligkeit zu tun.
        Ich sehe das genauso, trotzdem könnte man das AUS Signal von A2 auch auf A3-A5 ausgeben. Dann reicht es bspw. A5 zu benutzen, um die Lampe bei dunkel einzuschalten, und bei Ablauf des Off-Timers wieder auszuschalten.

        Kommentar


          #19
          Hi jonofe

          Ich habe noch ein anderes mit Hue Sensoren bekanntes Problem gelöst. Der Hue Lichtsensor aktualisiert nur alle 5 Minuten, oder bei Bewegung. Das führt zu folgendem Phänomen:
          1. Lampen brennen und mit brennenden Lampen gemessene Lichtstärke ist bswp. 20000
          2. Keine Bewegung => Lampen werden ausgestellt.
          3. Lichtsensor wird nicht aktualisiert, an Edomi mitgeteilte Lichtstärke ist immer noch 20000
          4. Neue Bewegung => Lampen werden via "Motion dark (A5)" nicht eingeschaltet, weil scheinbare Lichtstärke (A6) höher wie Schwellenwert "lux dark" (E19) ist.
          Mittels dem Hue API habe ich das ein wenig getestet und nach einer Bewegung wird die Lichtstärke kurz darauf aktualisiert. In der Regel innerhalb von Zehntelssekunden. Aber dann hat der LBS '19000585_Hue_Motion_Sensor' bereits die falsche Lichtstärke berücksichtigt.

          Um das Problem zu lösen habe folgende Änderungen im LBS 19000195_HUE_bridge_1.6 vorgenommen:

          In der Methode updateSensorStatus bevor die Sensoren durchiteriert werden, sortiere ich das array, damit die ZLLPRESENCE Sensoren zuletzt verarbeitet werden. Das stellt sicher, das zumindest der aktuelle vorhande Lichtwert bei der Weitergabe des Motion Signals verwendet wird.

          PHP-Code:
          static $sensor_old_presence_lightlevel = array();

           
          // Read sensors from bridge
              
          $hueSensors $con->getSensors();
              
              
          // make sure presence sensors are procesed last
              
          usort($hueSensors, function($a$b)
              {
                  
          $aType strtoupper($a->getType());
                  
          $bType strtoupper($b->getType());
                  if (
          $aType == $bType) {
                      return 
          0;
                  }
                  else if (
          $aType == 'ZLLPRESENCE') {
                      return 
          1;
                  }
                  else if (
          $bType == 'ZLLPRESENCE') {
                      return -
          1;
                  }
                  else {          
                      return 
          0;
                  }
              });
              
              foreach (
          $hueSensors as $hueSensor) {
          ​ 

          Bei der Verarbeitung des ZLLPRESENCE Sensors $presence state, merke ich mir die aktulle Lichtstärke. Bei der nächsten Verarbeitung wenn sich die Lichtstärke geändert hat, wird und $presence immer noch true, wird das Signal nochmals übermittelt, damit die neue Lichtstärke berücksichtigt werden kann.
          PHP-Code:
           case 'ZLLPRESENCE':
                              
          $mac strtok($hueSensor->getUniqueid(), '-');
                              
          $presence $state->presence;
                              if (isset(
          $lightlevel[$mac])
                                  && (
          $sensorFirstRun[$sid] || !array_key_exists($sid$sensor_old_presence) || $presence !== $sensor_old_presence[$sid] || ($presence && $sensor_old_presence_lightlevel[$sid] != $lightlevel[$mac]) )) {                
                                  
          $sensor_old_presence[$sid] = $presence;
                                  
          $sensor_old_presence_lightlevel[$sid] = $lightlevel[$mac];
                                  if (
          $config->on)
                                      
          $sensorUpdate[$sid]['presence'] = $presence;
                              }
                              
          getSensorDefaults($id$hueSensor$sensorUpdate$sensorFirstRun);
                              break;
          ​ 
          Funktioniert bis jetzt tipptopp.

          Grüsse
          Philip

          Kommentar


            #20
            Man könnte wohl noch optimieren, dass der Motion-On event nur nochmals weitergeben wird, wenn der Lichtpegel abgenommen hat...

            PHP-Code:
            ($presence && $sensor_old_presence_lightlevel[$sid] > $lightlevel[$mac]) 

            Kommentar


              #21
              Hi jonofe

              Mir ist beim gleichzeitigen Setzen von HSV Werten an mehrern Hue Lampen aufgefallen, dass die Lampen scheinbar hintereinander geupdatet werden. Ich habe mir den Hue Bridge LBS angeschaut und darauf hin folgende Änderung gemacht.

              Original
              PHP-Code:
              while (getSysInfo(1) >= 1) {
                      try {
                          
              // change lights based on command received from lights via MSG QUEUE
                          
              if(msg_receive($msg_queue$bridgeID$msgtype4096$msgtrueMSG_IPC_NOWAIT$msg_error)) {​ 
              Modification
              PHP-Code:
              while (getSysInfo(1) >= 1) {
                      try {
                          
              // change lights based on command received from lights via MSG QUEUE
                          
              while(msg_receive($msg_queue$bridgeID$msgtype4096$msgtrueMSG_IPC_NOWAIT$msg_error)) {​ 
              Siehtst du damit ein Problem? Damit werden zuerst alle msgs verarbeitet, bevor der LBS den definierten Intervall schläft.

              Gruss
              Philip

              Kommentar


                #22
                Mit der letzen Änderung funktioniert das gleichzeitige Updaten von mehreren Lampen besserm, aber noch nicht gut genug. Folgende zusätzliche Änderung verbessert das Verhalten weiter:

                Original:
                PHP-Code:
                  case 'hsv':
                                    if (!
                $device->isOn())
                                        
                $device->setOn(true);
                                    
                $hsv rgb_hsv_to_array($value);        
                                     if (
                $hsv[0] <= 255 && $hsv[0] >= 0)
                                         
                $device->setHue((int)($hsv[0] / 255 65535));
                                     if (
                $hsv[1] <= 255 && $hsv[1] >= 0)
                                         
                $device->setSaturation($hsv[1]);
                                     if (
                $hsv[2] <= 255 && $hsv[2] >= 0)
                                         
                $device->setBrightness($hsv[2]);
                                    break;
                ​ 
                Änderung:
                PHP-Code:
                  case 'hsv':
                                    if (!
                $device->isOn())
                                        
                $device->setOn(true);
                                    
                $hsv rgb_hsv_to_array($value);        
                                    if (
                $hsv[0] <= 255 && $hsv[0] >= && $hsv[1] <= 255 && $hsv[1] >= && $hsv[2] <= 255 && $hsv[2] >= 0) {                
                                        
                $commandSetLightState = new \Phue\Command\SetLightState($device);
                                        
                $commandSetLightState->hue((int)($hsv[0] / 255 65535))
                                                             ->
                saturation($hsv[1])
                                                             ->
                brightness($hsv[2]);
                                        
                $commandSetLightState->transitionTime(0.5);
                                        
                $con->sendCommand($commandSetLightState);
                                    }
                                    else {
                                        if (
                $hsv[0] <= 255 && $hsv[0] >= 0)
                                            
                $device->setHue((int)($hsv[0] / 255 65535));
                                        if (
                $hsv[1] <= 255 && $hsv[1] >= 0)
                                            
                $device->setSaturation($hsv[1]);
                                        if (
                $hsv[2] <= 255 && $hsv[2] >= 0)
                                            
                $device->setBrightness($hsv[2]);
                                    }
                                    break;
                ​ 
                Wenn man alle Lampen eines Zimmer via der Hue App einstellt, ändern die Lampen praktisch zeitgleich die Helligkeit/Farbe. Mit den obigen Änderungen wird das Verhalten via Edomi besser, ist aber noch nicht perfekt. Vielleicht finde ich noch mehr Optimierungsmöglichkeiten.

                Grüsse
                Philip

                PS: Frohe Weihnachten
                Zuletzt geändert von Tekener; 25.12.2022, 22:24.

                Kommentar


                  #23
                  Bei mir funktioniert das gleichzeitige Ändern von mehreren leuchten mit dem HUE Group LBS.

                  Kommentar


                    #24
                    Zitat von jonofe Beitrag anzeigen
                    Bei mir funktioniert das gleichzeitige Ändern von mehreren leuchten mit dem HUE Group LBS.
                    Hallo Jonofe

                    Danke für die Rückmeldung. Den LBS habe ich noch gar nicht ausprobiert. Nehme an der basiert auf https://github.com/sqmk/Phue Groups. Das habe ich mir heute angeschaut und wie es aussieht, kann man damit aber "nur" allen Lampen die gleiche Helligkeit/Farbe setzen.

                    Kommentar


                      #25
                      Ist das denn bei der HUE app beim einstellen aller leuchten eines Zimmers anders? Ich denke ein Zimmer ist da auch eine Gruppe, oder?

                      Kommentar


                        #26
                        In der Hue App kann man für eine Gruppe eine Szene defnieren, in der jede Lampe eine beliebige Helligkeit und Farbe hat. Wenn man dann die Szene wechselt, wird bei allen Lampen schön synchron die Helligkeit und Farbe entsprechend angepasst.

                        Mittels Edomi und deinen LBS habe ich implementiert, dass beim speichern und wiederherstellen von KNX Szenen, die Hue Lampen mit Ihren Farben und Helligkeitsparametern auch integriert sind. Das funktionioniert ganz gut, ausser dass es eben nicht 100% synchron ist.

                        Kommentar


                          #27
                          Ich habe die Zeile
                          PHP-Code:
                          $commandSetLightState->transitionTime(0.5); 
                          in der Lösung oben hinzugefügt. Die Licht Transition der Lampen ist nun ziemlich synchron. Aber niemals so smooth wie es die Hue App hinkriegt. Die Bridge wird wohl ein anderes API wie sqmk/Phue verwenden.
                          Zuletzt geändert von Tekener; 25.12.2022, 22:37.

                          Kommentar


                            #28
                            Die Hue App wird wohl das Szenen API Verwerden. https://developers.meethue.com/devel...-api/4-scenes/
                            Szenen können via dem Group API, https://developers.meethue.com/devel...i/groupds-api/ parameter "scene" aufgerufen werden.

                            Das Aufrufen von Szenen wird von sqmk/Phue unterstützt, das Management von Szenen leider nicht.

                            Kommentar


                              #29
                              Hallo Zusammen, da ich mir diese Woche eine HUE Leuchte und ein Gateway gekauft habe möchte dies am Wochenende mal alles testen. Jetzt habe ich folgendes Problem festgestellt das der Baustein Verbindung mit dem Gateway aufbaut und die ID ausliest aber kein Devicelist an A4 ausgeben wird. In meiner App kann ich nicht soweit ich sehe keine ID auslesen. Vielen Dank für eure Unterstützung Screenshot 2023-11-18 165649.jpg

                              Kommentar

                              Lädt...
                              X