Integration von Nanoleaf Aurora in FHEM

Begonnen von ma.ste, 25 Februar 2017, 15:09:18

Vorheriges Thema - Nächstes Thema

Thargor

Danke für die superschnelle Antwort.

Bei mir geht das im aktuellen Zustand nicht (# $Id: 31_Aurora.pm 18121 2019-01-02 21:16:33Z justme1968 $)

Das erste Modul hat die IP 192.168.0.60. Wenn ich nun ein Zweites mit der IP 192.168.0.61 anlege, kommt die Fehlermeldung. Ich kann die Abfrage in Zeile 122 auskommentieren, dann klappt das Anlegen des Device. Mehr hab ich noch nicht ausprobiert, weil ich erstmal nachfragen wollte ob sich da irgendwas stören kann.

justme1968

gerade mit genau dieser version probiert:define au1 Aurora 192.168.0.60
define au2 Aurora 192.168.0.61
list TYPE=Aurora
au1
au2
aurora


wenn das bei dir nicht geht ist irgendetwas komisch. bitte zeig mal genau was du machst.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thargor

Vorweg: Es geht jetzt und ja irgendwas ist komisch.
Ich habe die if-Abfrage wieder einkommentiert und ein reload des Moduls gemacht und dann ging das Anlegen. Ich weiß aber nicht wieso ... Eventuell weil ich das zuvor angelegte Device gelöscht habe?
Es hat aber definitiv vorher mit genau dem gleichen Befehl nicht geklappt -  ich war schon am zweifeln ob ich geträumt habe, aber im Logfile steht:
2019.05.02 12:52:37 1: define NanoLeaf_Kind Aurora 192.168.0.61 10: Aurora device  already defined as NanoLeaf_Aurora.
wobei NanoLeaf_Aurora die IP-Adresse 192.168.0.60 hat.

Strange ....
Wie auch immer, vielen Dank für die Unterstützung!

Thomas X

Hallo zusammen,

habe mein Canvas gepairt. Leider funtkioniert nur das Setzen des Effektes. Alle anderen SET Kommandos werden ignoriert. Scheinbar baut das Modul auch keine Verbindung zur API auf bei allem anderen außer dem Effekt setzen. Zumindest kann ich im Netz nichts sehen.

Hat jemand eine Ahnung, was beim Canvas anders ist, als beim Aurora?

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thomas X

#65
Auf die Befehle hin erscheint nichts direkt im Log. Aber im Rahmen des Intervals kommet immer wieder folgende Meldung:

2019.05.19 06:18:38 4: parse status message for Canvas
2019.05.19 06:18:38 5: $VAR1 = {
          'brightness' => {
                            'max' => 100,
                            'min' => 0,
                            'value' => 88
                          },
          'colorMode' => 'effect',
          'ct' => {
                    'max' => 6500,
                    'min' => 1200,
                    'value' => 3000
                  },
          'hue' => {
                     'max' => 360,
                     'min' => 0,
                     'value' => 0
                   },
          'on' => {
                    'value' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' )
                  },
          'sat' => {
                     'max' => 100,
                     'min' => 0,
                     'value' => 0
                   }
        };



Nachdem ich einen Effekt setze (das einzige was funktioniert) erscheint dann folgende Meldung:


2019.05.19 06:20:42 4: parse status message for Canvas
2019.05.19 06:20:42 5: $VAR1 = {
          'discovery' => {},
          'effects' => {
                         'effectsList' => [
                                            'Color Burst',
                                            'Falling Whites',
                                            'Fireworks',
                                            'Flames',
                                            'Forest',
                                            'Inner Peace',
                                            'Meteor Shower',
                                            'Nemo',
                                            'Northern Lights',
                                            'Paint Splatter',
                                            'Pulse Pop Beats',
                                            'Radial Sound Bar',
                                            'Rhythmic Northern Lights',
                                            'Romantic',
                                            'Sound Bar',
                                            'Streaking Notes'
                                          ],
                         'select' => 'Color Burst'
                       },
          'firmwareVersion' => '1.2.1',
          'manufacturer' => 'Nanoleaf',
          'model' => 'NL29',
          'name' => 'Canvas 3313',
          'panelLayout' => {
                             'globalOrientation' => {
                                                      'max' => 360,
                                                      'min' => 0,
                                                      'value' => 270
                                                    },
                             'layout' => {
                                           'numPanels' => 21,
                                           'positionData' => [
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 30783,
                                                                 'shapeType' => 3,
                                                                 'x' => 500,
                                                                 'y' => 0
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 58379,
                                                                 'shapeType' => 2,
                                                                 'x' => 500,
                                                                 'y' => 100
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 7942,
                                                                 'shapeType' => 2,
                                                                 'x' => 500,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 39165,
                                                                 'shapeType' => 2,
                                                                 'x' => 400,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 26620,
                                                                 'shapeType' => 2,
                                                                 'x' => 400,
                                                                 'y' => 100
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 40949,
                                                                 'shapeType' => 2,
                                                                 'x' => 300,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 36760,
                                                                 'shapeType' => 2,
                                                                 'x' => 200,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 8877,
                                                                 'shapeType' => 2,
                                                                 'x' => 100,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 46774,
                                                                 'shapeType' => 2,
                                                                 'x' => 100,
                                                                 'y' => 100
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 49489,
                                                                 'shapeType' => 2,
                                                                 'x' => 200,
                                                                 'y' => 300
                                                               },
                                                               {
                                                                 'o' => 90,
                                                                 'panelId' => 22724,
                                                                 'shapeType' => 2,
                                                                 'x' => 400,
                                                                 'y' => 300
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 62232,
                                                                 'shapeType' => 2,
                                                                 'x' => 600,
                                                                 'y' => 100
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 10372,
                                                                 'shapeType' => 2,
                                                                 'x' => 600,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 30346,
                                                                 'shapeType' => 2,
                                                                 'x' => 600,
                                                                 'y' => 300
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 35243,
                                                                 'shapeType' => 2,
                                                                 'x' => 700,
                                                                 'y' => 300
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 32833,
                                                                 'shapeType' => 2,
                                                                 'x' => 700,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 11061,
                                                                 'shapeType' => 2,
                                                                 'x' => 800,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 22833,
                                                                 'shapeType' => 2,
                                                                 'x' => 900,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 24223,
                                                                 'shapeType' => 2,
                                                                 'x' => 900,
                                                                 'y' => 300
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 31311,
                                                                 'shapeType' => 2,
                                                                 'x' => 1000,
                                                                 'y' => 200
                                                               },
                                                               {
                                                                 'o' => 0,
                                                                 'panelId' => 43306,
                                                                 'shapeType' => 2,
                                                                 'x' => 800,
                                                                 'y' => 100
                                                               }
                                                             ],
                                           'sideLength' => 100
                                         }
                           },
          'schedules' => {},
          'serialNo' => 'S19012C5202',
          'state' => {
                       'brightness' => {
                                         'max' => 100,
                                         'min' => 0,
                                         'value' => 88
                                       },
                       'colorMode' => 'effect',
                       'ct' => {
                                 'max' => 6500,
                                 'min' => 1200,
                                 'value' => 3000
                               },
                       'hue' => {
                                  'max' => 360,
                                  'min' => 0,
                                  'value' => 0
                                },
                       'on' => {
                                 'value' => bless( do{\(my $o = 0)}, 'JSON::XS::Boolean' )
                               },
                       'sat' => {
                                  'max' => 100,
                                  'min' => 0,
                                  'value' => 0
                                }
                     }
        };



Nachtrag: Ich habe jetzt mal direkt mit CURL das Kommando gesendet. So funktioniert das:

curl -v -X PUT \
    --url  http://192.168.1.51:16021/api/v1/4oAd4N0RCUTYH5pHSCIynJd/state/\
    --header 'content-type: application/json' \
    --data '{"on" : {"value":false}}';


Also müsste eigentlich noch irgendwas im Modul geändert werden, oder?

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thomas X

Gerne. Hier das Listing:

Internals:
   CFGFN     
   CHANGED   
   DEF        192.168.1.51 60
   FUUID      5ce0186a-f33f-86ad-af76-920ddc19c21a5a24
   INTERVAL   60
   IP         192.168.1.51
   NAME       Canvas
   NOTIFYDEV  global
   NR         89840
   NTFY_ORDER 50-Canvas
   STATE      on
   TYPE       Aurora
   desired    0
   firmwareVersion 1.2.1
   manufacturer Nanoleaf
   model      NL29
   name       Canvas 3313
   serialNo   S19044C5502
   Helper:
     DBLOG:
       state:
         DBLogging:
           TIME       1558190186.23899
           VALUE      pairing
   READINGS:
     2019-05-19 14:50:37   colormode       effect
     2019-05-19 15:04:37   ct              4000
     2019-05-19 14:33:37   effect          Forest
     2019-05-19 14:50:37   hue             0
     2019-05-19 14:30:37   onoff           1
     2019-05-19 17:49:32   pct             44
     2019-05-19 17:49:32   rgb             707070
     2019-05-19 14:50:37   sat             0
     2019-05-19 14:30:37   state           on
   helper:
     colormode  effect
     ct         4000
     effect     Forest
     hue        0
     last_config_timestamp 1558286433
     pct        44
     rgb        707070
     sat        0
     update_timeout -1
     xy         
     effects:
       Color Burst
       Falling Whites
       Fireworks
       Flames
       Forest
       Inner Peace
       Meteor Shower
       Nemo
       Northern Lights
       Paint Splatter
       Pulse Pop Beats
       Radial Sound Bar
       Rhythmic Northern Lights
       Romantic
       Sound Bar
       Streaking Notes
       moonlight
Attributes:
   DbLogExclude .*
   color-icons 2
   devStateIcon {(Aurora_devStateIcon($name),"toggle")}
   group      Licht
   icon       taster_ch6_1
   room       5_Wohnzimmer
   token      4oAd4N0RCUTYH5pHSCIynJd
   webCmd     rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:ct 490:ct 380:ct 270:ct 160:effect:on:off

Thomas X

Habe jetzt nochmal mit Verbose 5 geloggt. Beim Sezten eines Effektes bekomme ich eine HTTP Respone 204. Das funktioniert auf. On oder Off funktioniert nicht, und liefert das Ergebnis hier:

2019.05.23 20:03:15 5: Cmd: >set Canvas off<
2019.05.23 20:03:15 5: HttpUtils url=http://192.168.1.51:16021/api/v1/4oAd4N0RCUTYH5pHSCIynJd/state
2019.05.23 20:03:15 4: IP: 192.168.1.51 -> 192.168.1.51
2019.05.23 20:03:15 4: WEB: /fhem?cmd.Canvas=set%20Canvas%20off&XHR=1&fw_id=165132 / RL:20 / text/plain; charset=UTF-8 / Content-Encoding: gzip
/ Cache-Control: no-cache, no-store, must-revalidate

2019.05.23 20:03:15 5: HttpUtils request header:
PUT /api/v1/4oAd4N0RCUTYH5pHSCIyZ4OydGBM2nJd/state HTTP/1.0
Host: 192.168.1.51:16021
User-Agent: fhem
Accept-Encoding: gzip,deflate
Content-Length: 12
Content-Type: application/x-www-form-urlencoded

2019.05.23 20:03:15 4: http://192.168.1.51:16021/api/v1/4oAd4N0RCUTYH5pHSCIynJd/state: HTTP response code 400
2019.05.23 20:03:15 5: HttpUtils http://192.168.1.51:16021/api/v1/4oAd4N0RCUTYH5pHSCIynJd/state: Got data, length: 0
2019.05.23 20:03:15 5: HttpUtils response header:
HTTP/1.1 400 Bad Request
Access-Control-Allow-Methods: POST, GET, PUT, DELETE
Access-Control-Allow-Origin: *
Allow: POST, GET, OPTIONS, PUT, DELETE
Content-Length: 0

Thomas X

Habe jetzt einiges probiert und glaube den Fehler gefunden zu haben. Dein Modul liefert z.B. für das Einschalten den Json

{"on":true}

Aber die API erwartet die Syntax

{"on" : {"value":true}}

justme1968

danke für dein probieren. ich war schon ziemlich ratlos.

du hast recht. ich habe aber keine ahnung ob sich hier etwas geändert hat oder ob es zufall war das es bisher ging. meine aurora geht mit dem aktuellen modul immer noch.

wenn ich mir die aktuelle doku anschaue hat sich auch für fast alle anderen parameter das json format von direktem wert auf hash mit value (und zusätzlichen) parametern geändert.


ich habe mal eine version angehängt die komplett umgestellt ist. bitte teste mal ob das so funktioniert (auch die anderen kommandos: hue, sat, bri, ct, dimUp, dimDown, hueUp, hueDown, satUp, satDown, cUp, ctDown, rgb, hsv).

wenn das bei dir geht müssen wir noch schauen ob die auroras immer noch gehen. vielleicht kann das schon mal jemand probieren :)

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Thomas X

Super! Funktioniert perfekt beim Canvas. Aurora habe ich leider nicht.

Vielen Dank für die Arbeit!


willib

#72
Danke für dein Modul.
Habe mir ein Aurora set nur wegen deines Moduls gekauft.
Könntest du eventuell noch ein
set nextEffect
einbauen? Ich würde gerne durch die Liste der verfügbaren Effekte zappen können.
Das wäre Klasse!
Ich mache das derzeit mit lightscene. Aber das kennt natürlich die aktuell verfügbaren Effekte nicht.
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD

justme1968

schau mal ob es mit der angehängten version geht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

willib

Sorry jetzt erst gesehen. Danke für die schnelle Antwort. Dazu habe ich folgende Fragen:
Kann ich dein Original Modul im FHEM Ordner mit der angehängten Version einfach überschreiben? Und habe ich nach einem Update wieder das Original?
FHEM in Debian 10 LXC unter Proxmox auf NUC, Homematic, Hue, Intertechno, Jeelink, RFXTRX, Harmony Hub, VU+ Uno 4K, Sonos, AMAD