Nanoleaf Modul

Ich habe jetzt mal mehr Debug Messages eingefügt, damit man sehen kann ob überhaupt etwas gefunden wird. Bei mir selber wird was gefunden. Läuft IP-Symcon bei Dir vielleicht in einem Docker?

Hi Fonzo,

Mit der Beta funktioniert es nun! :slight_smile:

Habe ein reines Windows System, kein docker.

Ganz lieben Dank für deine Mühe!
Ralf

Lieber Fonzo

Hmmm ich habe zwei Nanoleafs im Einsatz. Habe auch mal das Modul installiert soweit alles io aber auch bei mir werden in der Discovery keine Instanzen gefunden… Beta neuste IPS-Version. Nanoleafs sind auf Firmware 1.2.1 keine neuere Version verfügbar… hab aber die Canvas… :slight_smile: Denke da gibt es keine neuere… aber woran kann es liegen das die Instanzen nicht gefunden werden… was kann ich machen.

LG

1 „Gefällt mir“

Wenn Du die Discovery Instanz öffnest und dann dort das Debug Fenster öffnest und dann per Skript


NanoleafDiscovery_Discover(12345); // Objekt ID der Nanoleaf Discovery Instanz

ausführst, was kommt dann im Debug Fenster als Meldung?

Dankeschoen und Log ging als PM raus :slight_smile:

Gesendet von iPhone mit Tapatalk

Vielleicht bin ich ja zu blöd, aber ich bekomme das Token nicht.

Jeder Versuch wird (früher oder später) mit „Konnte Token nicht abholen“… :confused:

Ein steuern via iPhone App funktioniert problemlos. Und die Nanoleaf wurden auch via Discovery gefunden und angelegt…

Das Token kann via Postman, Post „http://192.xxx.xxx.xxx:16021/api/v1/new“ abgeholt werden (auf meinem Mac). Muss auf dem Windows Rechner (mit IPS) ggf. an der Firewall was verändert werden? Glaube ich aber nicht, da wir schon mal das Nanoleaf (mit dem alten Modul) eingebunden hatten (aber auch da meine ich, war das Token holen „zickig“)

Ok. Hat wohl doch irgendwie funktioniert. Ohne Rückmeldung, ohne Reaktionen in der Console… irgendwann waren die Attribute da… warum auch immer.

Jetzt habe ich ein Problem mit dem Befehl „UpdateEffectProfile“. Der macht aus meiner Sicht nichts (kein Profil ändert sich, weder Nanoleaf.Effect noch ein zugewiesenes).

Was sollte der Befehl (aus meiner Sicht) machen:
Er sollte nicht das Standard Profil „Nanoleaf.Effect“ (was hart codiert ist) aktualisieren, sondern das der Instanz zugewiesene Effekt-Profil. In diesem sollten alle vorhandenen Assoziationen gelöscht, und dann die Vorhandenen/Ermittelten gesetzt werden. Ich habe mehrere Nanoleafs in unterschiedlichen Räumen und die Effekte weichen ab…

Ansonsten: Super, das es doch funktioniert :wink:

Das muss ich mir mal näher anschauen.

Hi Fonzo,

das wäre echt nett. Du hast im Modul an sehr vielen Stellen hart codiert. Deshalb funktioniert auch das Setzen der Effekte nicht.

z.B.:


    public function SelectEffect(string $effect) // "Color Burst","Flames","Forest","Inner Peace","Nemo","Northern Lights","Romantic","Snowfall"
    {
        $payload = ['command' => 'SelectEffect', 'commandvalue' => $effect];
        $result = $this->SendCommand($payload);
        $effect_int = '1';
        $effects = $this->GetCurrentEffectProfile();
        foreach ($effects as $key => $effectposition) {
            if ($effectposition['Name'] == $effect) {
                $effect_int = $effectposition['Value'];
            }
        }
        SetValue($this->GetIDForIdent('effect'), $effect_int);
        return $result;
    }


    protected function GetCurrentEffectProfile()
    {
        $effects = IPS_GetVariableProfile('Nanoleaf.Effect')['Associations'];
        return $effects;
    }

Da sieht man sehr schön, wie die Effekte mittels GetCurrentEffectProfile() gelesen werden, GetCurrentEffectProfile() denkt aber gar nicht daran, das aktuelle Profil zu verwenden, sondern nimmt hart codiert „Nanoleaf.Effect“. :rolleyes:

GetCurrentEffectProfile() wird auch beim UpdateEffectProfile() verwendet, welcher aber auch selbst hart auf „Nanoleaf.Effect“ codiert. Das sollten die beiden relevanten Stellen sein, wo man das aktuell zugewiesene Profil ermitteln muss.

Wäre schön, wenn du das anpassen könntest :wink:

Hallo

habe die zwei Nanoleafs Canvas im Einsatz… und verbunden mit deinem Modul. Super arbeit übrigens soweit coole sache. Wenn ich aber nun zwei SetBirghtness befehle absetze also zuerst an die erste instanz und dann an die zweite dann kommt beim zweiten absende befehl im Script der Fehler unten…

Nanoleaf_SetBrightness(42009, 100);

Einzeln gehts problemlos… hab den paramter als int und string probiert auch mit 99…

24.10.2019 13:54:52 | ScriptEngine | Result for Script 36346
<br />
<b>Fatal error</b>: Uncaught TypeError: str_pad() expects parameter 3 to be string, int given in C:\ProgramData\Symcon\modules.store\fonzo.ipsymconnanoleaf\Nanoleaf\module.php:412
Stack trace:
#0 C:\ProgramData\Symcon\modules.store\fonzo.ipsymconnanoleaf\Nanoleaf\module.php(412): str_pad(‚ff‘, 2, 0, 0)
#1 C:\ProgramData\Symcon\modules.store\fonzo.ipsymconnanoleaf\Nanoleaf\module.php(502): Nanoleaf->HSV2HEX(0, 0, 100)
#2 C:\ProgramData\Symcon\modules.store\fonzo.ipsymconnanoleaf\Nanoleaf\module.php(512): Nanoleaf->SetHexColor()
#3 C:\ProgramData\Symcon\scripts__generated.inc.php(3471): Nanoleaf->SetBrightness(100)
#4 C:\ProgramData\Symcon\scripts\36346.ips.php(7): Nanoleaf_SetBrightness(42009, 100)
#5 {main}
thrown in <b>C:\ProgramData\Symcon\modules.store\fonzo.ipsymconnanoleaf\Nanoleaf\module.php</b> on line <b>412</b><br />
<br />
<b>Warning</b>: Use of undefined constant c_lf - assumed ‚c_lf‘ (this will throw an Error in a future version of PHP) in <b>C:\ProgramData\Symcon\scripts\IPSLibrary\app\core\IPSLogger\IPSLogger_PhpErrorHandler.inc.php</b> on line <b>29</b><br />
<br />

Ich kam leider nicht früher mir das mal anzuschauen und musste auch erst mal mein Aurora updaten. Es lag nicht am hart codiert, denn das wurde eigentlich früher richtig ausgelesen, das Problem lag darin das früher es einen IO gab, der dann aber mal weggefallen ist. Es wurde aber versucht die aktuellen Profile über den IO zu holen, was in dem Fall nicht funktionieren kann, weil es diesen ja nicht mehr gibt.

An sich sollte die Methode


Nanoleaf_UpdateEffectProfile(12345); // 12345 Instanz ID Nanoleaf

jetzt wieder funktionieren und das Profil auch entsprechend upgedatet werden. Funktioniert zumindest bei mir, Du kannst ja mal Rückmeldung geben ob es bei Dir auch geht.

Kannst Du mal Rückmeldung geben ob der Fehler nach einem Update weg ist, im Zweifelsfall mal kurz auf den Beta Zweig wechseln bis die neue Stable freigegeben ist.

Ich habe eine Frage bezüglich des Moduls.
Ich wollte mir demnächst die hexagon Lichter kaufen und habe gesehen, dass diese auch eine Art Touch Funktion besitzen. Kann diese Eingabe auch von symcon abgegriffen werden? Wäre ja schon cool dadurch ein interaktives Touch Panel zu haben.

Schönen guten Tag,

ich habe gerade versucht meine Nanoleaf Shapes mit Symcon über das Nanoleaf Modul zu verbinden, leider komme ich da irgendwie nicht weiter. Er findet Die Shapes nicht und ich finde auch keinen Knopf „Token abholen“ in der Discovery Instanz ?

Kann mir da jemand helfen ?

Ich habe deinen Beitrag mal in den richtigen Thread verschoben.

Grüße,
Kai

Habe einen Raspberry Pi 4 mit Raspbian drauf. Habe keine GUI installiert. Fehlt mir vielleicht irgendetwas, damit er das erkennen kann ?
Die Windows Software von Nanoleaf erkennt per discover direkt meine Lampen.

Hat sich erledigt, habe die Beta Version genommen, dort kann man direkt eine IP eingeben.

Moin @MarekG,

wo hast du das in der Beta gefunden - habe das selbe Problem, Symcon auf dem RPi4, Nanoleaf Shapes und die Discovery findet nichts. mdns-scan vom Rasperry sieht die Shapes.

Ich finde nur den Punkt nicht, wo ich die IP direkt eintragen könnte.

@saschahuck

sorry, meinte nicht Beta sondern die „Old Version“

dazu nimmst du diesen Link als Modul
Vorher das Modul aus dem Store deinstallieren.

Nachdem das als Modul hinzugefügt wurde, geht man auf das Zahnrad daneben und wählt „Old Version“ an

Danach die Nanoleaf Splitter Instanz hinzufügen, IP rein auf Token abholen klicken und die Taste am Nanoleaf drücken. Danach wird die Lampe erstellt.

1 „Gefällt mir“

Habe ich gerade ausprobiert und hat wunderbar geklappt - danke für die Infos!

Grüße und einen schönen Abend!