NodeRed Kompakt Zigbeelampen in ioBroker mit Alexa steuern

  • AlexaToLight mit NodeRed

    Ich nutze jetzt Node-Red schon eine weile und kam irgendwann zu dem Punkt, das mir "An" und "Aus" für meine Lampen mit Alexa nicht mehr reicht.

    Wenn die Lampen mit der Hue-Bridge verbunden sind, kann ich ja auch verschiedene Farben, Helligkeit und die verschiedenen Weiß-Zustände per Sprachbefehl ändern.

    An dieser Stelle muss ich noch hinzufügen, dass ich für Alexa "node-red-contrib-amazon-echo" nutze, falls ihr dies noch nicht tut, bitte installieren :)

    Mit Subflows habe ich bereits gearbeitet, also will ich das so kompakt wie möglich haben und werde euch zeigen was ihr braucht.

    Wisst ihr noch nicht, wie man Subflows erstellt, so haltet hier kurz an und macht euch kundig. ;)

    Der erste Subflow den ich auch so häufig nutze ist "ConvertValueToBool", damit kann man viele verschiedene Statis in true oder false konvertieren lassen.

    ConvertValueToBool Subflow

    Eigentlich recht einfach:

    1. erstellt ein Subflow und nennt es "ConvertValueToBool"
    2. erstellt eine Input-Node und eine Output-Node
    3. Erstellt eine neue Function und nennt sie z.B. "ConvertValueToBool"
    4. verbindet nun den Input mit der Function und anschließend die Function mit dem Output
    5. per Doppelklick nun folgenden Code reinkopieren
      Code
      if(msg.payload == "true" || msg.payload === true ||
                                     msg.payload == 1 || msg.payload == "1" || 
                                     msg.payload == "on"){
                                      msg.payload = true;
                                  }
                                  else{
                                      msg.payload = false;
                                  }
                                  
                                  return msg;
    6. Fertig klicken
    7. Deploy
    So sieht das ganze fertig aus

    tWzpC03.png

    Jetzt zum eigentlichen Flow, dieser ist komplizierter

    AlexaToLight Subflow
    1. erstellt einen neuen Subflow mit dem Namen "AlexaToLight"
    2. gebt diesem eine Eigentschaft mit dem Namen "ObjectNodeName" und vom Typ String
    3. erstellt eine Input-Node
    4. nun braucht ihr:
      1. 2x Switch
      2. 7x Function
      3. 4x ioBroker out
      4. 1x ConvertValueToBool
    5. jetzt folgen viele Spoiler wie er was einfügen müsst und am Ende verbinden, benennt am besten die Objekte wie die Spoilernamen => am Anfang steht der Typ des jeweiligen Objektes
    Switch On/Off

    3CSXKbQ.png

    Switch ColorMode

    fcKmZNl.png

    Function HexDecToPercent
    Code
    msg.payload = parseInt(msg.bri / 254 * 100);
            return msg;
    Function rgbToHexString
    Code
    var red = ("0"+(Number(msg.rgb[0]).toString(16))).slice(-2).toUpperCase();
    var green = ("0"+(Number(msg.rgb[1]).toString(16))).slice(-2).toUpperCase()
    var blue = ("0"+(Number(msg.rgb[2]).toString(16))).slice(-2).toUpperCase()
    
    msg.payload = "#"+red+green+blue;
    
    return msg;
    Function ColorTemperatureGetter
    Code
    msg.payload = msg.ct;
    return msg;
    Function TopicSetter state
    Code
    msg.topic = env.get("ObjectNodeName")+".state";
    return msg;
    Function TopicSetter brightness
    Code
    msg.topic = env.get("ObjectNodeName")+".brightness";
    return msg;
    Function TopicSetter color
    Code
    msg.topic = env.get("ObjectNodeName")+".color";
    return msg;
    Function TopicSetter colortemp
    Code
    msg.topic = env.get("ObjectNodeName")+".colortemp";
    return msg;
    Komplett mit Verbindungen

    0EhGKYS.png

    Auf Deploy klicken an dieser Stelle nicht vergessen ;)

    Boar jede Menge arbeit oder?

    Auf zur letzten Etappe :)

    • zieht nun den "AlexaToLight" Subflow in euer Mainflow
    • geht in die Eigentschaften und fügt den Basispfad zur Lampe ein
    • fertig :love:
    Und so sieht das z.B. am Ende aus

    YgSRFny.png

    C80BXsR.png

    Danke das ihr bis hier hin durchgehalten habt!

    Wenn euch dieses kleine komplizierte Tutorial geholfen hat, oder ihr noch Fragen habt - schreibt mir :)

    Hier noch ein kleines Geschenk


    Der Import-Script für die Subflows :evil:

    PasteBin

    4 Mal editiert, zuletzt von DevilDesire (22. Juli 2019 um 22:36)

  • DevilDesire

    Danke für das Tutorial, das kleine Geschenk war besonders nett, erspart viel Arbeit und keine Tippfehler. Leider funktioniert es nicht wie es soll. Getestet habe ich an einer Hue Iris am CC2530. An und Aus geht. Dimmen 100% wird 39 gesteuert, 50% auf 19. Bei Farben ändert sich der Datenpunkt Color gar nicht, sondern nur brighness. Wo könnte der Fehler sein?

Jetzt mitmachen!

Sie haben noch kein Benutzerkonto auf unserer Seite? Registrieren Sie sich kostenlos und nehmen Sie an unserer Community teil!