Node-Red dashboard en Domoticz




Installatie node-red:

  • Installatie van node-red staat hier beschreven: https://nodered.org/docs/getting-started/raspberrypi

  • in het kort:
    bash <(curl -sL https://raw.githubusercontent.com/node-red/linux-installers/master/deb/update-nodejs-and-nodered)
    
    Volg de setup-instructies om bijvoorbeeld een gebruiker en wachtwoord aan te maken, etc...

  • autostart node-red:
    sudo systemctl enable nodered.service
    
  • start de eerste keer manueel:
    node-red-start 
    
  • benader node-red via http://ipadres:1880



Dashboard ui:

  • Download de node-red-dashboard binnen node-red via: Manage palette



  • Zoek naar node-red-dashboard en installeer deze






Gasverbruik van vandaag tonen in dashboard:

  • Toont gasverbruik van vandaag in het dashboard
    Volg de stappen verderop om dit resultaat te krijgen.

  • Deze flow ververst het dashboard elke 5 minuten



  • Resultaat is http://ipadresnodered:1880/ui/






Stap voor stap binnen de flow:


  • node: Inject





  • node: http request





  • node: json





  • node: function




    functie is:
    var msg1 ={};
    myValue = parseFloat(msg.payload.result[0].CounterToday);
    
    msg1.payload = myValue;
    
    return msg1;
    

  • node: gauge





  • deploy







Global Set Devices


  • Alle devices van Domoticz ophalen en opslaan in globale variabel




  • node: inject; Inject elke seconde




  • node: httprequest; Haal alle apparaten op uit domoticz en sla op




  • node: json




  • node: function; bewaar de output







Global Get Device - CounterToday


  • node Function: Get Device - CounterToday



    functie is:
    // status van alle domoticz devices
    let alldevices = global.get("alldevices") || 0;
    
    // domoticz device met idx: 2
    var mydevice = alldevices.result.find(item => item.idx === "2");
    
    // CounterToday: 2.314 kWh
    // "kWh" verwijderen en daarna omzetten naar nummer
    var myusage = parseFloat(mydevice.CounterToday.replace('kWh', '')).toFixed(3);
    
    msg.payload = myusage;
    msg.topic   = "Stroom_inkoop";
    
    return msg;
    
    




Global Get Device - Usage


  • node Function: Get Device - Usage



    functie is:
    // status van alle domoticz devices
    let alldevices = global.get("alldevices") || 0;
    
    // domoticz device met idx: 126
    var mydevice = alldevices.result.find(item => item.idx === "126");
    
    // usage: 572 Watt
    // "Watt" verwijderen en daarna omzetten naar nummer
    var myusage = parseFloat(mydevice.Usage.replace('Watt', ''));
    
    msg.payload = myusage;
    msg.topic = "solar";
    
    return msg;
    
    
    




Global Get Device - Data


  • node Function: Get Device - Data



    functie is:
    // status van alle domoticz devices
    let alldevices = global.get("alldevices") || 0;
    
    // domoticz device met idx: 144
    var mydevice = alldevices.result.find(item => item.idx === "144");
    
    // Data: "8%"
    // "%" verwijderen en daarna omzetten naar nummer
    var myusage = parseFloat(mydevice.Data.replace('%', ''));
    
    msg.payload = myusage;
    msg.topic   = "batterij_soc";
    
    return msg;