Nanoleaf Canvas

Diesen Beitrag schrieb ich 2 Jahre und 2 Monate zuvor; die nachfolgenden Ausführungen müssen heute nicht unbedingt noch genau so funktionieren. Behalte das beim Lesen (und vor allem: beim Nachmachen!) bitte stets im Hinterkopf.

Geschätzte Lesezeit: 5 Minuten

Leider bin ich ziemlich anfällig in Bezug auf Tech-Gadgets; und gerade der Bereich der Heimautomatisierung schafft es, diesbezüglich keine Langeweile aufkommen zu lassen…

Wie es dazu kam

Es ist tödlich, mich alleine in einen Baumarkt zu lassen: denn ich finde eigentlich immer etwas, das ich unbedingt ausprobieren muss, und das wird dann teuer, zeitintensiv oder beides. Da mich üblicherweise die Kinder beim Einkaufen begleiten relativiert das die Sache, denn wenn die beiden sich prügeln, in der Badausstellung verstecken oder des Hungers sterben bleibt keine Zeit, sich ein neues Hobby auszugucken.

Wenige Tage vor Weihnachten war ich jedoch allein unterwegs, brauchte verschiedene Dinge fürs Aquarium – und dann sah ich sie. Die Nanoleaf Canvas hatte ich im Drei-Buchstaben-Baumarkt schon des öfteren in der Hand, aber halt immer die Sache mit dem Prügeln, der Badausstellung und dem Hungertod… Jetzt nutzte ich die seltene Gelegenheit, studierte das Ganze in Ruhe, konsultierte noch ein bisschen das Internet, und zwanzig Minuten später gehörten mir ein Starter- sowie ein Erweiterungs-Pack. Hätte ich mal besser die Kinder mitgenommen!

Die Installation

Die Panels werden mit Klebeplättchen geliefert, die ich noch um einige Power-Strips aufgestockt habe; liegt aber auch daran, dass ich auf Raufaser montiert habe, und laut Hersteller soll man das nicht tun – ich werde sehen, ob es im Sommer an der Wand bleibt. Das Verbinden mit dem iPhone hat dann schon länger gedauert: entweder sei das Gerät nicht erreichbar, hieß es, oder schon verbunden, oder… irgendwann klappte es dann aber.

Was so alles geht

Ich erspare euch jetzt mal eine reine Feature-Liste – die bekommt ihr beim Hersteller umfassender und mit deutlich mehr Superlativen als bei mir. Was mich immer wieder fasziniert ist, dass die App selbst erkennt, in welcher Anordnung die Panels hängen – das ist schon sehr cool. Man kann eigene Lichtszenen erstellen oder auf vorgefertigte zurückgreifen, sowohl von Nanoleaf selbst als auch die der Community – so ähnlich kennt man das ja auch von Philips Hue. Und da die Canvas zudem auch auf Umgebungsgeräusche zu reagieren vermag eröffnet sich hier ein weiteres Spektrum für Spielereien – die Kinder lieben es beispielsweise, simulierte Nieser loszulassen und zu „Radial Sound Bar“ sinnlos rumzukreischen (sagt nicht, ich hätte euch nicht gewarnt!).

Layout in der Nanoleaf-App

Ich nehme es vorweg: ich liebe das Ding. Das Licht ist wirklich schön, wenngleich als Raumbeleuchtung zu dunkel. Vermutlich müsste man dann die gesamte Decke damit zupflastern – ein Zuviel an Panels mit zu bunten Farben wirkt meiner Meinung nach schnell sehr billig und kitschig. Die Werbebilder des Herstellers mit den vollständig bedeckten Wänden finde ich beispielsweise ziemlich furchtbar, aber als Akzent im Raum und mit den richtigen Farben ist es großartig. Brauchen tut es natürlich niemand wirklich – aber ernsthaft, das trifft auf so ziemlich alle Smart-Home-Gerätschaften zu, oder? Von brauchen kann keine Rede sein; aber es macht mein Arbeitszimmer sehr viel gemütlicher, ich fühle mich dadurch wohler, und das ist schon eine tolle Sache. Also… natürlich erst, nachdem man es mit der Heimautomatisierung verbunden hat.

Integrations ins Smart Home

Sowohl openHAB als auch Home Assistant sehen eine Integration vor; openHAB gestaltete sich hierbei umständlich, weil jedes einzelne Panel als Thing hinzugefügt werden und anschließend anhand seiner ID zugeordnet werden muss, aber grundsätzlich funktioniert es natürlich.

Einbindung in Home Assistant

Da mein OH-Setup durch die Testläufe mit 3.0-BETA allerdings eine Großbaustelle ist muss ich euch diesbezüglich auf später vertrösten und mich hier auf Home Assistant fokussieren: da habe ich es als light eingebunden und musste nochmal Knöpfchen drücken, folgt den Anweisungen in der Dokumentation.

light:
  - platform: nanoleaf
    host: 192.168.2.42
    token: meinsaugeheimessupertoken

Und schwupps ist es in HA integriert – inklusive aller Presets, die es so kennt. So kann ich es über Lovelace nicht nur sofort ein- und ausschalten beziehungsweise dimmen, auch die verschiedenen Szenen lassen sich aus einem Drop-Down-Feld direkt auswählen und somit einstellen; das macht Laune.

Szene automatisiert ändern

Möchte ich die Szene jedoch aus einer Automatisierung heraus ändern muss ich den Weg über ein shell_command gehen (wer einen direkteren Weg kennt möge ihn mir bitte verraten): das sieht dann folgendermaßen aus:

shell_command:
  nanoleaf_brightness: "curl -X PUT -H \"Content-Type: application/json\" -d '{\"brightness\" : {\"value\": }}' \"http://192.168.2.42:16021/api/v1/meinsaugeheimessupertoken/state/\""
  nanoleaf_scene: "curl -X PUT -H \"Content-Type: application/json\" -d '{\"select\" : \"\"}' \"http://192.168.2.42:16021/api/v1/meinsaugeheimessupertoken/effects/\""

Nanoleaf in Signalfarbe

Eingehender Anruf

Darauf aufbauend kann ich mir zwei Szenen basteln: telefon_anruf soll zum Einsatz kommen, sobald das Telefon klingelt (ringing, das gilt auch für ausgehende Anrufe); es wird dann die Szene „TV Simulation“ angesteuert und auf eine Helligkeit von 95% gesetzt. Nehme ich den Anruf hingegen an (talking), so wird die geräuschabhängige Szene „Sound Bar“ gestartet und auf 60% Helligkeit gedimmt.

script:
  telefon_anruf:
    sequence:
      - service: shell_command.nanoleaf_scene
        data:
          scene: 'TV Simulation'
      - service: shell_command.nanoleaf_brightness
        data:
          brightness: 95

  telefonat:
    sequence:
      - service: shell_command.nanoleaf_scene
        data:
          scene: 'Sound Bar'
      - service: shell_command.nanoleaf_brightness
        data:
          brightness: 60

Telefonat beendet

Hierbei stellt sich die Frage: was soll passieren, wenn das Telefon wieder auf idle springt? Naheligend wäre, eine beliebige andere Szene einzuschalten – diese Konstellation könnte jedoch beispielsweise auch dann eintreten, wenn niemand den Anruf entgegen genommen hat, niemand zu Hause ist; und dann würde plötzlich dauerhaft ein Licht brennen, das zuvor aus war? Nicht sehr wirtschaftlich… Hier kommen Scenes on the fly ins Spiel, Szenen im Home Assistant-Universum also, die bei Bedarf erstellt werden und nach Neustart des Systems verloren gehen. Ich zeige euch das mal anhand meiner Automatisierung für das klingelnde Festnetz-Telefon.

- alias: "Festnetztelefon klingelt"
  trigger:
  ## Das Telefon ist ein Fritz!Fon an einer AVM-Box; seinen Zustand
  ## greife ich über fritzbox_callmonitor ab
  - platform: state
    entity_id: sensor.telefon
    to: 'ringing'
  action:
  ## Mit dieser Anweisung speichere ich den Zustand meiner Nanoleaf
  ## in die temporäre Szene "vor_dem_anruf" hinein
  - service: scene.create
    data:
      scene_id: vor_dem_anruf
      snapshot_entities:
        - light.nanoleaf
        # - ein Lautsprecher
        # - Abspielstatus Kodi
        # - was auch immer bei einem eingehenden Anruf modifiziert werden sollte
  ## In diesem Schritt sorge ich dafür, dass das HA-Script "telefon_anruf"
  ## aktiviert wird, welche auf der Nanoleaf die Szene "TV Simulation" startet
  - service: script.turn_on
    entity_id: script.telefon_anruf
  ## Die Klingeltöne des Fritz!Fon sind alle nervtötend; deshalb steht es
  ## auf stumm, und die LaMetric klopft an wenn es klingelt
  - service: notify.lametric
    data:
      message: "Anruf!"
      target: "Wintergarten"
      data:
        sound: "knock-knock"
        icon: "a1232"
  ## Eine Notification bekomme ich auch noch; die Nummer wird dann
  ## sogar gegen das Telefonbuch aufgelöst
  - service: notify.notify
    data_template:
      title: "Telefon"
      message: "Eingehender Anruf von {{ state_attr('sensor.telefon', 'from_name') }} ({{ state_attr('sensor.telefon', 'from') }})"

Nehme ich das Gespräch an und spreche, aktiviert das das HA-Script telefonat.

- alias: "Festnetztelefon Gespräch"
  trigger:
  - platform: state
    entity_id: sensor.telefon
    to: 'talking'
  action:
  - service: script.turn_on
    entity_id: script.telefonat

Und zuguterletzt: springt der Zustand des Telefons von was-auch-immer auf idle, so wird für alle Geräte jener Zustand wiederhergestellt, der in der temporären Szene vor_dem_telefonat gespeichert. ist.

- alias: "Festnetztelefon idle"
  trigger:
  - platform: state
    entity_id: sensor.telefon
    to: 'idle'
  action:
  - service: scene.turn_on
    data:
      entity_id: scene.vor_dem_telefonat

Fazit

1 nicer Scheiß, oder? Hasenfuß an der Sache, dass die Nanoleaf-App ziemlich lästig ist: nicht übermäßig intuitiv, stürzt mir häufig ab. Während die Verbindung von Home Assistant und openHAB zum Gerät hin einwandfrei und sehr stabil ist, meutert die App häufig „Kann Gerät nicht finden…“. Die installierte Firmware-Version ist 1.2.1 – von April 2019, seither gab es zahlreiche Neuerungen; doch die App behauptet konsequent, die Firmware sei mit 1.2.1 auf dem neuesten Stand. Der Support verhält sich bislang genau so, wie es in den Negativbewertungen beschrieben ist: auf Twitter reagieren sie überhaupt nicht, auf Support-Requests lediglich mit Textbausteinen. So sollte ich, nachdem ich die Sache mit der Unmöglichkeit eines Firmware-Upgrades geschildert hatte, ein Video des vorliegenden Problems einsenden – da ist mir denn doch der Geduldsfaden gerissen.

Mein Glück ist, dass die Nanoleaf grundsätzlich funktioniert – zwar auf einem alten Stand, aber sie funktioniert. Ein sich nicht bewegender Support in Kombination mit „nichts geht“ wäre halt noch viel ärgerlicher – zumal die Dinger sich dank Klebepunkten ja auch nicht so richtig unfallfrei von der Wand entfernen und in den Drei-Buchstaben-Baumarkt zurücktragen lassen. Aber ich bleibe an der Sache schon aus Prinzip dran und werde euch informieren, wenn ich klüger bin.

Und jetzt ihr: habt ihr eine Nanoleaf im Einsatz? Mehrere? Was macht ihr damit? Und wie?