Nanoleaf Modul

Moin,

Aha, das ist klar. Du bist im Modul Control. Das Module wir aber aus dem STORE geholt.

Nein. Lösch mal aus dem Modul Control das Nanoleaf.

Dann gehst Du in den Objektbaum, klickst oben rechts auf die Einkaufstasche und suchst nach Nanoleaf.

Wenn es bei Dir im Bereicht „Installierte ist“, klickst du auf das Modul und sagst „erneut installieren“, ansonsten nur auf „installieren“. Dann wirst du gefragt ob du eine neue Instanz erstellen möchtest.

Das machst Du. Fertig :wink:

Das ist der einfachere Weg, wird aber wahrscheinlich bei dir zum gleichen Problem führen. Wie ich es sehe werden beim Anlegen der Discovery Instanz für die gefundenen Geräte versucht, die IP-Adresse und die Port Nummer zu ermitteln.

Dabei kommt es zu dem von dir beschrieben Fehler

Wir müssen herausfinden, was für Information beim Suchen der Geräte gefunden werden.

Kannst du versuchen, an die Debug-Informationen zu kommen?

EDIT
Oder noch einfacher, lass mal das folgende Skript in deiner Umgebung laufen:

<?php

print_r(mSearch());

function mSearch($st = 'ssdp:all')
{
    $ssdp_ids          = IPS_GetInstanceListByModuleID('{FFFFA648-B296-E785-96ED-065F7CEE6F29}');
    $ssdp_id           = $ssdp_ids[0];
    $devices           = YC_SearchDevices($ssdp_id, $st);
    $nanoleaf_response = [];
    $i                 = 0;
    foreach ($devices as $device) {
        if (isset($device['ST'])) {
            if ($device['ST'] == 'nanoleaf_aurora:light' || $device['ST'] == 'nanoleaf:nl29') {
                $fields = $device['Fields'];
                foreach ($fields as $field) {
                    if (stripos($field, 'Location:') === 0) {
                        $nanoleaf_response[$i]['location'] = str_ireplace('location: ', '', $field);
                    }
                    if (stripos($field, 'nl-deviceid') === 0) {
                        $nanoleaf_response[$i]['nl-deviceid'] = str_ireplace('nl-deviceid: ', '', $field);
                    }
                    if (stripos($field, 'nl-devicename:') === 0) {
                        $nanoleaf_response[$i]['nl-devicename'] = str_ireplace('nl-devicename: ', '', $field);
                    }
                }
                $nanoleaf_response[$i]['uuid'] = str_ireplace('uuid:', '', $device['USN']);
                $i++;
            }
        }
    }
    return $nanoleaf_response;
}

Will ich gern versuchen.
Der Weg, den kris vorgeschlagen hat, hat nicht funktioniert.
Hier könnte ich auch den Ablauf schicken.

Wovon die Debug Infos?

Wo und wie kann ich Dein PHP Skript starten? (bin ja blutiger Anfänger :slight_smile: )

:slight_smile:
Prima. Danke für Hilfe!

Hier das Ergebnis:

Array
(
[0] => Array
(
[nl-deviceid] => A7:0A:70:FB:F7:B2
[nl-devicename] => Light Panels 54:c3:da
[uuid] => dea23c65-d354-405d-8ee1-05b0430e0774
)

[1] => Array
    (
        [nl-deviceid] => 4F:0C:05:CD:28:28
        [nl-devicename] => Light Panels 54:c3:ad
        [uuid] => 18bc1a09-63f1-4777-9d97-3a040d1b09a6
    )

)

Das sind wohl meine beiden Nanoleafs . . .

Da haben wir dann auch das Problem. Das Modul erwartet in der Antwort zu jedem Gerät auch ein Element ‚location‘. Das scheint zu fehlen.

Machen wir per PN weiter …

Ich habe gemeinsam mit @chrschli das Problem lokalisiert und konnte es lösen.

Unter GitHub - bumaas/IPSymconNanoleaf: IP-Symcon Modul Nanoleaf habe ich einen Fork von Fonzos Modul abgelegt und dort die Korrektur und auch ein paar Erweiterungen eingebaut.

Version 0.9 buid 5

korrigiert:

  • Discovery Instanz repariert (die ‚Location‘ eines Gerätes wird korrekt gelesen)

neu:

  • es werden auch Shapes („nanoleaf:nl42“) erkannt
  • Link zur Dokumentation eingefügt
  • TestCenter eingefügt

Achtung: in dem Stand werden keine Skripte mehr generiert. Ich gehe davon aus, dass die Funktionalität nicht mehr gebraucht wird. Wenn doch, bitte melden.

Bei Interesse kann das Version über das Modul Control installiert werden. Vorher ist die Version aus dem Modul Store zu deinstallieren. Dabei können die Instanzen beibehalten werden.

Das weitere Vorgehen werde ich mit @Fonzo klären.

Ich freue mich über Feedback.

Burkhard

Guten Morgen
Vielen Dank. Funktioniert bei mir mit den Shapes.
Bis auf den Effekt. Wenn ich den Wähle, bekomme ich folgende Meldung


Bei Änderung der Sättigung

Konnte nicht schalten

Fatal error: Uncaught TypeError: dechex(): Argument #1 ($num) must be of type int, float given in C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php:426
Stack trace:
#0 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(426): dechex(79.0)
#1 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(518): Nanoleaf->HSV2HEX(187, 69, 100)
#2 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(568): Nanoleaf->SetHexColor()
#3 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(724): Nanoleaf->SetSaturation(69)
#4 C:\Windows\System32\-(3): Nanoleaf->RequestAction('saturation', 69)
#5 {main}
  thrown in C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php on line 426
 (Code: -32603)

Bei Helligkeit. Wobei dasim Gegensatz zur Sättigung an die Shapes übertragen wird. Sie reagieren.

Konnte nicht schalten

Fatal error: Uncaught TypeError: dechex(): Argument #1 ($num) must be of type int, float given in C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php:426
Stack trace:
#0 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(426): dechex(29.0)
#1 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(518): Nanoleaf->HSV2HEX(187, 69, 37)
#2 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(528): Nanoleaf->SetHexColor()
#3 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(718): Nanoleaf->SetBrightness(37)
#4 C:\Windows\System32\-(3): Nanoleaf->RequestAction('Brightness', 37)
#5 {main}
  thrown in C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php on line 426
 (Code: -32603)

Bei Farbton (auch das wird akzeptiert, sie reagieren)

Konnte nicht schalten

Fatal error: Uncaught TypeError: dechex(): Argument #1 ($num) must be of type int, float given in C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php:426
Stack trace:
#0 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(426): dechex(27.0)
#1 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(518): Nanoleaf->HSV2HEX(189, 86, 76)
#2 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(548): Nanoleaf->SetHexColor()
#3 C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php(721): Nanoleaf->SetHue(189)
#4 C:\Windows\System32\-(3): Nanoleaf->RequestAction('hue', 189)
#5 {main}
  thrown in C:\ProgramData\Symcon\modules\IPSymconNanoleaf\Nanoleaf\module.php on line 426
 (Code: -32603)

Farbtemperatur und auch der Picker erzeugen keine Fehler.

Ich habe gesehen, es gab ein Upate. Das habe ich installiert. Ich musste aber aus dem Modul Control den Eintrag löschen, damit ich Build 8 bekomme. Die Fehler haben sich aber nicht geändert.
Was mir auch aufgefallen ist, ich kann die Farbe zwar im Picker wählen, aber nicht die Helligkeit. Wenn ich es da dunkler oder helle stelle, wird das ignoriert. Ich muss dazu den Helligkeitsregler verwenen.

Der Fehler sollte eigentlich schon im build 8 weg sein.

Der Fehler zum dechex() sollte jetzt mit build 9 behoben sein.

Guten Morgen
Ich habe build 9 installiert und es wird. Die Helligkeit wird jetzt aus dem Picker genommen und kommt auch an.
Interessant ist aber folgendes Verhalten:
ich wähle Gelb aus, Gelb kommt an, angezeigt in IPS wird Grün


Die Farbe hat einen Wert außerhalb des Wertebereiches

image
Fehlermeldungen kommen keine mehr.
Vielen Dank!

Hast du mal Debugausgaben von der Situation?

Natürlich. Sorry, hätte ich gleich daran denken können:
dump.txt (35,1 KB)

Ich habe hier nur die Farbe auf Gelb geändert und OK geklickt. Mehr nicht.

Magst du es einmal mit Build 10 ausprobieren? Leider habe ich selber keinen Nanoleaf zum Test.

Leider keine Änderung. Ich wähle Gelb, es wird gelb geleuchtet, aber grün angezeigt. Farbwert außerhalb der Grenze.
dump.txt (27,5 KB)

Liegt das ggf. an einem Fehler im neuen Tile Webfront? Kannst du das mal mit dem Alten ausprobieren?

Das glaube ich nicht. Der Wert der Variable ist ganz einfach falsch. Es passiert auch, wenn ich die Farbe direkt in der Instanz wähle.

Der Color Picker kommt doch von Symcon?

Ja, aber ich schätze das Modul ändert den Wert der Variable. Ist ja nur das Profil.

Ich könnte mir vorstellen, dass hier der Hund begraben ist

    public function SetColor(int $hexcolor): void
    {
        $this->SendDebug(__FUNCTION__, sprintf('hexcolor: %s', $hexcolor), 0);
        $this->SetValue(self::VAR_IDENT_COLOR, $hexcolor);

        $hex = str_pad(dechex($hexcolor), 6, '0', STR_PAD_LEFT);
        $hsv = $this->HEX2HSV($hex);

        $this->SetHue($hsv['h']);
        $this->SetSaturation($hsv['s']);
        $this->SetBrightness($hsv['v']);
    }

Aber eines finde ich spannend.
Ich habe eine ZigBee LED Leiste. Die hat auch Farbe. Wenn ich den Farbwert vom Nanoleaf (in der Konsole) nehme und dort einfüge, wird in der Konsole die Farbe angezeigt. Beim Nanoleaf nicht. Beide haben das selbe Profil.

Ich habe jetzt noch was probiert. Eine neue Variable mit Colorpicker.
Wenn ich Rot=250 einstelle, kommt da das rein: 16384000
Im Nanoleaf das: 1637744640
Der Wert ist zu hoch.

Schwieriges Thema :slight_smile:

Aber ich denke, ich habe es jetzt. Probiert mal bitte build 11.

Yes, Punktlandung. JETZT passt der Wert und Rot wird angezeigt. Vielen Dank!