Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Chris83 0

    NEWS

    • 15. 05. Wartungsarbeiten am ioBroker Forum

    • Monatsrückblick - April 2025

    • Minor js-controller 7.0.7 Update in latest repo

    C
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 7
    • Best 1
    • Groups 1

    Chris83 0

    @Chris83 0

    Starter

    1
    Reputation
    5
    Profile views
    7
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    Chris83 0 Follow
    Starter

    Best posts made by Chris83 0

    • RE: History2DB converter

      @apollon77 Okay, ist erledigt Github issue #198.

      Habe probehalber mal ein .json entsprechend umbenannt (also ":" anstelle "~") und das hat dann auch geklappt. Muss nur mal schauen, wie ich das als .batch job machen kann, weil sind doch einige files zu bearbeiten

      EDIT: "rename 's/~/:/g' *"

      posted in Tester
      C
      Chris83 0

    Latest posts made by Chris83 0

    • RE: History2DB converter

      @apollon77 Okay, ist erledigt Github issue #198.

      Habe probehalber mal ein .json entsprechend umbenannt (also ":" anstelle "~") und das hat dann auch geklappt. Muss nur mal schauen, wie ich das als .batch job machen kann, weil sind doch einige files zu bearbeiten

      EDIT: "rename 's/~/:/g' *"

      posted in Tester
      C
      Chris83 0
    • RE: History2DB converter

      Hallo zusammen,
      ich bin auch gerade mit dem Umzug in MySQL beschäftig. Leider bekomme ich die Daten von den Bosch Geräten nicht migriert und beispielsweise diese Meldung angezeigt:

      Day 20220925 - history.bshb.0.hdm~ZigBee~385b44fffeabccbb.PowerMeter.energyConsumption.json
          Ignore ID history.bshb.0.hdm~ZigBee~385b44fffeabccbb.PowerMeter.energyConsumption.json: bshb.0.hdm~ZigBee~385b44fffeabccbb.PowerMeter.energyConsumption
      
      

      Ich vermute, dass es an dem Zeichen "~" liegt, welches er anstelle der beiden Doppelpunkte gesetzt hat.
      Im History Data-Ordner wurde das Logfile unter diesem Namen gespeichert:

      history.bshb.0.hdm~ZigBee~385b44fffeabccbb.PowerMeter.energyConsumption.json
      

      Der dazugehörige Datenpunkt:

      bshb.0.hdm:ZigBee:385b44fffeabccbb.PowerMeter.powerConsumption
      

      Hätte jemand eine Idee, wie ich die Daten doch noch übertragen kann?

      posted in Tester
      C
      Chris83 0
    • RE: Json-Tabelle mit Stromverbrauchswerten erstellen

      @bananajoe sagte in Json-Tabelle mit Stromverbrauchswerten erstellen:

      if (getState('shelly.0.SHPLG-S#D971E5#1.Relay0.Switch').val == false) {Status="❌"} else{Status="✅"}

      Nochmals vielen Dank! Es funktioniert.
      Habe mich für die Variante mit der Abfrage "val == false" entschieden, weil ja noch Geräte dazukommen, die hier den Status ON/OFF haben.

               if (getState('shelly.0.SHPLG-S#D971E5#1.Relay0.Switch').val == false) {Status="❌"} else{Status="✅"}
                  s_JSON = s_JSON + '"Status":"' + Status + '",'
      
      posted in ioBroker Allgemein
      C
      Chris83 0
    • RE: Json-Tabelle mit Stromverbrauchswerten erstellen

      @bananajoe
      1000 Dank!!! Das hat auf Anhieb funktioniert.

      Versuche gerade noch den Wert von "Status" Zeile 6 (bei den Shellys false/true, bei anderen ON/OFF usw.) auf ein entsprechendes Icon (Zeile7) oder wenigstens eine einheitliche Schreibweise abzuändern. Hättest du dazu noch eine Idee?
      Hoffe dann bin ich auch durch, mit meiner Fragerei.

              if ( s_currentName == 'Schreibtisch') {
                  s_JSON = s_JSON + '"name":"' + s_currentName + '",'
                  s_JSON = s_JSON + '"Power":' + Math.round(getState( "shelly.0.SHPLG-S#D971E5#1.Relay0.Power" ).val) + ','
                  s_JSON = s_JSON + '"Verbrauch":' + Math.round(getState( "javascript.0.ShellyVerbrauch.SHPLG-S#D971E5#1.Relay0.dieser_monat" ).val) +','
                  s_JSON = s_JSON + '"Kosten":' + getState( "javascript.0.variables.Schreibtisch_in_EUR" ).val+ ','
                  s_JSON = s_JSON + '"Status":' + getState( "shelly.0.SHPLG-S#D971E5#1.Relay0.Switch" ).val + ','
              if (getState('shelly.0.SHPLG-S#D971E5#1.Relay0.Switch').val==false) {Status="❌"} else{Status="✅"}
      
      posted in ioBroker Allgemein
      C
      Chris83 0
    • RE: Json-Tabelle mit Stromverbrauchswerten erstellen

      @bananajoe

      Okay, habe dein Script etwas geändert und entsprechend auf meine DP angepasst. SourceAnalytics möchte ich erstmal komplett aus dem Spiel lassen. Mal abgesehen von den Warnings funktioniert das auch wunderbar.
      Nur sobald ich die Zeile 119 auskommentiere, funktioniert der 15-Sekunden Trigger nicht mehr. Hast du da eine Idee?
      Bei dem Block zwischen Zeile 72-81 habe ich versucht, nicht auf 2 Stellen, sondern auf eine Ganzzahl zu runden. Leider ohne irgendeine Auswirkung.
      Hier sollte Bspw. der Wert von Zeile 104 vom DP {javascript.0.ShellyVerbrauch.SHPLG-S#D971E5#1.Relay0.dieser_monat} der gerade "14422.42" entspricht gerundet werden. - Falls du auch hierzu einen Tipp hättest?

      EDIT: Das mit dem Timer und den Warnings hab ich geschafft 🙂

      Im Ergebnis schaut das inzwischen wie folgt aus und lässt sich über die Spalten sortieren:
      Screenshot 2022-09-25 104126.png

      // Changelog:
      // ----------
      // 08.07.2002   Erste Version
       
       
      // Beschreibung:
      // -------------
      // Dem Skript wir wird ein Array übergeben mit Datenpunkten von Geräten die den Stromverbrauch messen
      // Daraus wird eine JSON Tabelle aufbereitet mit Werten direkt von den Geräten + den Daten vom Source-Analytics Adapter
      // Die JSON-Tabelle kann dann per Widget in VIS dargestellt werden, ist scroll- und sortierbar, die Reihenfolge der Spalten lässt sich ändern oder ausblenden
       
      // Setup:
      // ------
       
       
      // Zieldatenpunkt
      const s_TargetDatapoint = "0_userdata.0.Verbrauch.VIS.StromverbrauchJSON";
       
      // [ Anzeigename, Datenpunkt, "Phase L1, L2 oder L3", "sourceanalytix Datenpunkt" ],
      // [ Anzeigename, Datenpunkt],
       
      let a_SourceDatapoints = [
          [ "Schreibtisch",       "javascript.0.ShellyVerbrauch.SHPLG-S#D971E5#1"],
          [ "TV-Schlafzimmer",    "javascript.0.ShellyVerbrauch.SHPLG-S#D6C0A8#1"],
      ];
      // ####################################################################################################################################################
      // http://www.network-science.de/ascii/ Font: big
      // __      __        _       _     _            
      // \ \    / /       (_)     | |   | |           
      //  \ \  / /_ _ _ __ _  __ _| |__ | | ___ _ __  
      //   \ \/ / _` | '__| |/ _` | '_ \| |/ _ \ '_ \ 
      //    \  / (_| | |  | | (_| | |_) | |  __/ | | |
      //     \/ \__,_|_|  |_|\__,_|_.__/|_|\___|_| |_|
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      // Logging aktivieren für das Debuggen in die JavaScript-Console und in das ioBroker Log (true oder false):
      const b_logging = false;
      // und der erste Log-Eintrag
      DebugWarning("Startup: Setze Variablen ...");
      {1}
      // Stromkosten pro kWh für Tageskosten
      const i_costs = 0.3;
      {1}
      var s_JSON = "[";
      {1}
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //  ______           _    _   _                        
      // |  ____|         | |  | | (_)                       
      // | |__ _   _ _ __ | | _| |_ _  ___  _ __   ___ _ __  
      // |  __| | | | '_ \| |/ / __| |/ _ \| '_ \ / _ \ '_ \ 
      // | |  | |_| | | | |   <| |_| | (_) | | | |  __/ | | |
      // |_|   \__,_|_| |_|_|\_\\__|_|\___/|_| |_|\___|_| |_|
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      // DebugWarning gibt in der Console eine Warnmeldung aus wenn b_logging auf true steht
      /* accepts parameters
       * s_debugmessage = Print this text to console via warn
       */
      function DebugWarning(s_debugmessage) {
          if (b_logging == true) {
              console.warn(s_debugmessage);
          }
      }
      {1}
      // ####################################################################################################################################################
      // Ersetzt alle Vorkommen eines Zeichens, nicht nur das erste
      function ReplaceAll(string, search, replace) {
        return string.split(search).join(replace);
      }
       
      // ####################################################################################################################################################
      // Rundet die übergebende Zahl auf 2 Nachkommastellen
      // Quelle: https://www.delftstack.com/de/howto/javascript/javascript-round-to-2-decimal-places/
      function RoundToFull(i_number) {
      //    //return + ( Math.round(i_number + "e+2")  + "e-2" );
          return + ( Math.round(i_number));
      }
      {1}
      {1}
      // ####################################################################################################################################################
      function CreateJSON() {
          s_JSON = "["
          for (var i = 0; i < a_SourceDatapoints.length; i++) {
              let s_currentName = a_SourceDatapoints[i][0];
              let s_currentDevice = a_SourceDatapoints[i][1];
              let s_currentPhase = a_SourceDatapoints[i][2];
              let s_currentSourceAnalytix = "";
              if ( a_SourceDatapoints[i][3] === '' ) {
                  s_currentSourceAnalytix = "sourceanalytix.0." + ReplaceAll(a_SourceDatapoints[i][1], ".", "__") + "__Energy-Total";
              } else {
                  s_currentSourceAnalytix = a_SourceDatapoints[i][3];
              };
              DebugWarning("s_currentName .........: " + s_currentName);
              DebugWarning("s_currentDevice .......: " + s_currentDevice);
              DebugWarning("s_currentPhase: .......: " + s_currentPhase);
              DebugWarning("s_currentSourceAnalytix: " + s_currentSourceAnalytix);
              s_JSON = s_JSON + "{";
      
              
              if ( s_currentName == 'Schreibtisch') {
                  s_JSON = s_JSON + '"name":"<p style=\\"color:red;\\">' + s_currentName + '</p>",'
                  s_JSON = s_JSON + '"Power":' + getState( "shelly.0.SHPLG-S#D971E5#1.Relay0.Power" ).val + ','
                  s_JSON = s_JSON + '"Verbrauch":' + getState( "javascript.0.ShellyVerbrauch.SHPLG-S#D971E5#1.Relay0.dieser_monat" ).val + ','
                  s_JSON = s_JSON + '"Kosten":' + getState( "javascript.0.variables.Schreibtisch_in_EUR" ).val+ ','
                  s_JSON = s_JSON + '"Status":' + getState( "shelly.0.SHPLG-S#D971E5#1.Relay0.Switch" ).val + ','
                  
      
              }else if ( s_currentName == 'TV-Schlafzimmer') {
                  s_JSON = s_JSON + '"name":"<p style=\\"color:red;\\">' + s_currentName + '</p>",'
                  s_JSON = s_JSON + '"Power":' + getState( "shelly.0.SHPLG-S#D6C0A8#1.Relay0.Power" ).val + ','
                  s_JSON = s_JSON + '"Verbrauch":' + getState( "javascript.0.ShellyVerbrauch.SHPLG-S#D6C0A8#1.Relay0.dieser_monat" ).val + ','
                  s_JSON = s_JSON + '"Kosten":' + getState( "javascript.0.variables.TV-Schlafzimmer_in_EUR" ).val+ ','
                  s_JSON = s_JSON + '"Status":' + getState( "shelly.0.SHPLG-S#D6C0A8#1.Relay0.Switch" ).val + ','       
      
      
      
              }
              s_JSON = s_JSON + '"currentMonth-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.03_currentMonth" ).val + ','
              s_JSON = s_JSON.replace(/,\s*$/, ""); // letztes Komma entfernen falls vorhanden
              s_JSON = s_JSON + "},";
          }
          // letztes Komma entfernen https://stackoverflow.com/questions/17720264/remove-last-comma-from-a-string
          s_JSON = s_JSON.replace(/,\s*$/, "");
          s_JSON = s_JSON + "]";
          DebugWarning(s_JSON);
          setState(s_TargetDatapoint , s_JSON, true);
      }
       
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //   _____ _             _               
      //  / ____| |           | |              
      // | (___ | |_ __ _ _ __| |_ _   _ _ __  
      //  \___ \| __/ _` | '__| __| | | | '_ \ 
      //  ____) | || (_| | |  | |_| |_| | |_) |
      // |_____/ \__\__,_|_|   \__|\__,_| .__/ 
      //                                | |    
      //                                |_|    
      // ####################################################################################################################################################
      // ####################################################################################################################################################
       
      DebugWarning("Anzahl Datenpunkte: " + a_SourceDatapoints.length);
      // Beim Start einmal alle Daten erstellen
       
      CreateJSON();
       
       
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //   _____       _                   _       _   _                 
      //  / ____|     | |                 (_)     | | (_)                
      // | (___  _   _| |__  ___  ___ _ __ _ _ __ | |_ _  ___  _ __  ___ 
      //  \___ \| | | | '_ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \/ __|
      //  ____) | |_| | |_) \__ \ (__| |  | | |_) | |_| | (_) | | | \__ \
      // |_____/ \__,_|_.__/|___/\___|_|  |_| .__/ \__|_|\___/|_| |_|___/
      //                                    | |                          
      //                                    |_|                          
      // ####################################################################################################################################################
      // ####################################################################################################################################################
       
       
       
       
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //   _____      _              _       _      
      //  / ____|    | |            | |     | |     
      // | (___   ___| |__   ___  __| |_   _| | ___ 
      //  \___ \ / __| '_ \ / _ \/ _` | | | | |/ _ \
      //  ____) | (__| | | |  __/ (_| | |_| | |  __/
      // |_____/ \___|_| |_|\___|\__,_|\__,_|_|\___|
      // ####################################################################################################################################################
      {1}
      // alle 15 Sekunden
      schedule("*/15 * * * * *", async function () {
          CreateJSON();
      });
      {1}
      {1}
      
      
      posted in ioBroker Allgemein
      C
      Chris83 0
    • RE: Json-Tabelle mit Stromverbrauchswerten erstellen

      @bananajoe Erstmal vielen Dank!
      Nutze auch sourceanalytix und dachte, die Anpassung sollte erstmal einfach sein. Irgendwie spammt er mir den Log mit Warnings voll und im JSON Widget zeigt er lediglich "Stromzähler" ohne Werte an.
      Habe den Datenpunkt entsprechend als JSON angelegt, die ganzen SourceDatapoints "deaktiviert" und den DP für den Zählerstand entsprechend angepasst. Mit dem L1-3 kann ich allerdings nicht anfangen. Keine Ahnung was das bedeuten soll.
      Dann habe ich bei Zeile 146 noch die "Phase" auskommentiert und die übrigen Werte unter "Stadtwerke" entsprechend angepasst. -> Da ja nur für Stadtwerke ein DP angegeben ist, sollte der Rest ja egal sein?!

      Könntest du mir hier evtl. Starthilfe geben?

      EDIT: Ich glaube ich habs...Die Daten wurden in den DP als JSON geschrieben und nun muss ich am Widget basteln...Zumindest gibt es schonmal Daten 🙂
      Problem war der DP in Zeile 24. So klappt es bei mir:

          [ "Stromzähler", "Stadtwerke", "L1", "sourceanalytix.0.smartmeter__0__1-0:1_8_0__255__value" ],
      
      // Changelog:
      // ----------
      // 08.07.2002   Erste Version
       
       
      // Beschreibung:
      // -------------
      // Dem Skript wir wird ein Array übergeben mit Datenpunkten von Geräten die den Stromverbrauch messen
      // Daraus wird eine JSON Tabelle aufbereitet mit Werten direkt von den Geräten + den Daten vom Source-Analytics Adapter
      // Die JSON-Tabelle kann dann per Widget in VIS dargestellt werden, ist scroll- und sortierbar, die Reihenfolge der Spalten lässt sich ändern oder ausblenden
       
      // Setup:
      // ------
       
       
      // Zieldatenpunkt
      const s_TargetDatapoint = "0_userdata.0.Verbrauch.VIS.StromverbrauchJSON";
       
      // [ Anzeigename, Datenpunkt, "Phase L1, L2 oder L3", "sourceanalytix Datenpunkt" ],
       
      let a_SourceDatapoints = [
       //   [ "Stromzähler 3EM", "3EM", "L1", "sourceanalytix.0.0_userdata__0__shellies__3EM-Stromzaehler__Total-kWh" ],
       //   [ "Stromzähler", "Stadtwerke", "L1", "sourceanalytix.0.mqtt__0__esp32__esp32strom__zaehlerstand" ],
          [ "Stromzähler", "Stadtwerke", "sourceanalytix.0.smartmeter__0__1-0:1_8_0__255__value.cumulativeReading" ],
       //   [ "Handtuchtrocker", "0_userdata.0.tasmota.Blitzwolf099-Handtuchtrocker", "L1", "" ],
       //   [ "Weihnachten Schlafzimmer", "0_userdata.0.tasmota.Blitzwolf180-Weihnachten-Schlafzimmer", "L1", ""],
       //   [ "Lötstation Arbeitszimmer", "0_userdata.0.tasmota.Blitzwolf182-Loetstation", "L1", ""],
       //   [ "Brotbackautomat", "0_userdata.0.tasmota.Gosund186-Brotbackautomat", "L1", "" ],
       //   [ "Backofen", "0_userdata.0.shellies.EM181", "L1", "" ],
       //   [ "Datenschrank", "0_userdata.0.tasmota.Gosund187-Datenschrank", "L1", "" ],
       //   [ "Drucker", "0_userdata.0.tasmota.Gosund188-Drucker", "L1", "" ],
       //   [ "USB-5fach", "0_userdata.0.tasmota.Gosund190-Datenschrank-USB-5fach", "L1", "" ],
       //   [ "Kühlbox", "0_userdata.0.tasmota.Gosund191-Kuehlbox", "L1", "" ],
       //   [ "Fritz!Boxen", "0_userdata.0.tasmota.Plug101", "L1", "" ],
       //   [ "Lautsprecher PC", "0_userdata.0.tasmota.Nous078", "L1", "" ],
       //   [ "Tablett Keller", "0_userdata.0.tasmota.Nous093-WinPAD", "L1", "" ],
       //   [ "PoE Switch", "0_userdata.0.tasmota.Nous095-PoE-Switch", "L1", "" ],
       //   [ "Heizung", "0_userdata.0.tasmota.Nous096-Heizung", "L1", "" ],
       //   [ "BareMetal Server", "0_userdata.0.tasmota.Nous097-DCNEW", "L1", "" ],
       //   [ "Maschine", "0_userdata.0.tasmota.Nous196", "L1", "" ],
       //   [ "Garten + Terrasse", "0_userdata.0.tasmota.PM071-Garten-2F16", "L1", "" ],
       //   [ "Reinigungs steckdosen EG", "0_userdata.0.tasmota.PM072-Steck-2F7", "L1", "" ],
       //   [ "Heizungsraum", "0_userdata.0.tasmota.PM073-HeizSteck-1F5", "L1", "" ],
       //   [ "Treppenhaus 1", "0_userdata.0.tasmota.PM074-Treppe1-1F7", "L1", "" ],
       //   [ "Treppenhaus 2", "0_userdata.0.tasmota.PM075-Treppe2-1F8", "L1", "" ],
       //   [ "Kellerausgang + Verteiler", "0_userdata.0.tasmota.PM076-Ausgang-1F17", "L1", "" ],
       //   [ "Yasmin", "0_userdata.0.tasmota.PM110-Yasmin-1F13", "L1", "" ],
       //   [ "Lasse", "0_userdata.0.tasmota.PM112-Lasse-2F11", "L1", "" ],
       //   [ "Kühlschrank", "0_userdata.0.tasmota.PM116-Kuehlsch-2F5", "L1", "" ],
       //   [ "Schlafzimmer", "0_userdata.0.tasmota.PM117-Schlaf-1F14", "L1", "" ],
       //   [ "Spielzimmer", "0_userdata.0.tasmota.PM120-Spiel-2F13", "L1", "" ],
       //   [ "Weihnachten 1", "0_userdata.0.tasmota.PM122-Weihn-1F16", "L1", "" ],
       //   [ "Wohnzimmer", "0_userdata.0.tasmota.PM125-WoZi-2F9", "L1", "" ],
       //   [ "Weihnachten 2", "0_userdata.0.tasmota.PM126-Weihn-2F15", "L1", "" ],
       //   [ "Garage", "0_userdata.0.tasmota.PM130-Garage-1F2", "L1", "" ],
       //   [ "Spühlmaschine", "0_userdata.0.tasmota.PM131-Spuelma-2F2", "L1", "" ],
       //   [ "Küche", "0_userdata.0.tasmota.PM135-Kueche-1F10", "L1", "" ],
       //   [ "Außen vorne", "0_userdata.0.tasmota.PM145-Aussen-1F15", "L1", "" ],
       //   [ "Büro", "0_userdata.0.tasmota.PM208-Buero-2F17", "L1", "" ],
       //   [ "Trockner", "0_userdata.0.tasmota.Trockner169", "L1", "" ],
       //   [ "Waschmaschine", "0_userdata.0.tasmota.Waschmaschine168", "L1", "" ]    
      ];
      // ####################################################################################################################################################
      // http://www.network-science.de/ascii/ Font: big
      // __      __        _       _     _            
      // \ \    / /       (_)     | |   | |           
      //  \ \  / /_ _ _ __ _  __ _| |__ | | ___ _ __  
      //   \ \/ / _` | '__| |/ _` | '_ \| |/ _ \ '_ \ 
      //    \  / (_| | |  | | (_| | |_) | |  __/ | | |
      //     \/ \__,_|_|  |_|\__,_|_.__/|_|\___|_| |_|
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      // Logging aktivieren für das Debuggen in die JavaScript-Console und in das ioBroker Log (true oder false):
      const b_logging = false;
      // und der erste Log-Eintrag
      DebugWarning("Startup: Setze Variablen ...");
      {1}
      // Stromkosten pro kWh für Tageskosten
      const i_costs = 0.3;
      {1}
      var s_JSON = "[";
      {1}
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //  ______           _    _   _                        
      // |  ____|         | |  | | (_)                       
      // | |__ _   _ _ __ | | _| |_ _  ___  _ __   ___ _ __  
      // |  __| | | | '_ \| |/ / __| |/ _ \| '_ \ / _ \ '_ \ 
      // | |  | |_| | | | |   <| |_| | (_) | | | |  __/ | | |
      // |_|   \__,_|_| |_|_|\_\\__|_|\___/|_| |_|\___|_| |_|
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      // DebugWarning gibt in der Console eine Warnmeldung aus wenn b_logging auf true steht
      /* accepts parameters
       * s_debugmessage = Print this text to console via warn
       */
      function DebugWarning(s_debugmessage) {
          if (b_logging == true) {
              console.warn(s_debugmessage);
          }
      }
      {1}
      // ####################################################################################################################################################
      // Ersetzt alle Vorkommen eines Zeichens, nicht nur das erste
      function ReplaceAll(string, search, replace) {
        return string.split(search).join(replace);
      }
       
      // ####################################################################################################################################################
      // Rundet die übergebende Zahl auf 2 Nachkommastellen
      // Quelle: https://www.delftstack.com/de/howto/javascript/javascript-round-to-2-decimal-places/
      function RoundToTwo(i_number) {
          return + ( Math.round(i_number + "e+2")  + "e-2" );
      }
      {1}
      {1}
      // ####################################################################################################################################################
      function CreateJSON() {
          s_JSON = "["
          for (var i = 0; i < a_SourceDatapoints.length; i++) {
              let s_currentName = a_SourceDatapoints[i][0];
              let s_currentDevice = a_SourceDatapoints[i][1];
              let s_currentPhase = a_SourceDatapoints[i][2];
              let s_currentSourceAnalytix = "";
              if ( a_SourceDatapoints[i][3] === '' ) {
                  s_currentSourceAnalytix = "sourceanalytix.0." + ReplaceAll(a_SourceDatapoints[i][1], ".", "__") + "__Energy-Total";
              } else {
                  s_currentSourceAnalytix = a_SourceDatapoints[i][3];
              };
              DebugWarning("s_currentName .........: " + s_currentName);
              DebugWarning("s_currentDevice .......: " + s_currentDevice);
              DebugWarning("s_currentPhase: .......: " + s_currentPhase);
              DebugWarning("s_currentSourceAnalytix: " + s_currentSourceAnalytix);
              s_JSON = s_JSON + "{";
              if ( s_currentDevice == '3EM') {
                  s_JSON = s_JSON + '"name":"<p style=\\"color:red;\\">' + s_currentName + '</p>",'
                  // s_JSON = s_JSON + '"name":"' + s_currentName + '",'
                  s_JSON = s_JSON + '"phase":"' + s_currentPhase + '",'
                  s_JSON = s_JSON + '"power-W":' + getState( "0_userdata.0.shellies.3EM-Stromzaehler.Total-Power" ).val + ','
                  s_JSON = s_JSON + '"today-kWh":' + getState( "0_userdata.0.Verbrauch.Haus.Energy-Today" ).val + ','
                  s_JSON = s_JSON + '"today-costs-euro":' + getState( "0_userdata.0.Verbrauch.Haus.Kosten-Today" ).val + ','
                  s_JSON = s_JSON + '"yesterday-kWh":' + getState( "0_userdata.0.Verbrauch.Haus.Energy-Yesterday" ).val + ','
              } else if ( s_currentDevice == 'Stadtwerke' ) {
                  s_JSON = s_JSON + '"name":"<p style=\\"color:red;\\">' + s_currentName + '</p>",'
                  // s_JSON = s_JSON + '"name":"' + s_currentName + '",'
                 // s_JSON = s_JSON + '"phase":"' + s_currentPhase + '",'
                  s_JSON = s_JSON + '"power-W":' + getState( "smartmeter.0.1-0:16_7_0__255.value" ).val + ','
                  s_JSON = s_JSON + '"today-kWh":' + getState( "sourceanalytix.0.smartmeter__0__1-0:1_8_0__255__value.currentYear.consumed.01_currentDay" ).val + ','
                  s_JSON = s_JSON + '"today-costs-euro":' + getState( "sourceanalytix.0.smartmeter__0__1-0:1_8_0__255__value.currentYear.costs.01_currentDay" ).val + ','
                  s_JSON = s_JSON + '"yesterday-kWh":' + getState( "sourceanalytix.0.smartmeter__0__1-0:1_8_0__255__value.currentYear.consumed.01_previousDay" ).val + ','
              } else {
                  if ( s_currentName == 'Datenschrank') {
                      s_JSON = s_JSON + '"name":"<p style=\\"color:#4444FF;\\">' + s_currentName + '</p>",'
                      //s_JSON = s_JSON + '"name":"' + s_currentName + '",'
                  } else if ( s_currentName == 'PoE Switch') {
                      s_JSON = s_JSON + '"name":"<p style=\\"color:lightblue;\\">' + s_currentName + '</p>",'
                  } else if ( s_currentName == 'Fritz!Boxen') {
                      s_JSON = s_JSON + '"name":"<p style=\\"color:lightblue;\\">' + s_currentName + '</p>",'
                  } else if ( s_currentName == 'BareMetal Server') {
                      s_JSON = s_JSON + '"name":"<p style=\\"color:lightblue;\\">' + s_currentName + '</p>",'
                  } else if ( s_currentName == 'USB-5fach') {
                      s_JSON = s_JSON + '"name":"<p style=\\"color:lightblue;\\">' + s_currentName + '</p>",'
                  } else if ( s_currentName == 'USB-5fach') {
                      s_JSON = s_JSON + '"name":"<p style=\\"color:lightblue;\\">' + s_currentName + '</p>",'
                  } else {
                      s_JSON = s_JSON + '"name":"' + s_currentName + '",'
                  }
                  s_JSON = s_JSON + '"phase":"' + s_currentPhase + '",'
                  s_JSON = s_JSON + '"power-W":' + getState( s_currentDevice + ".Energy-Power" ).val + ','
       
                  s_JSON = s_JSON + '"today-kWh":' + getState( s_currentDevice + ".Energy-Today" ).val + ','
                  s_JSON = s_JSON + '"today-costs-euro":' + ( getState( s_currentDevice + ".Energy-Today" ).val * i_costs ) + ','
       
                  s_JSON = s_JSON + '"yesterday-kWh":' + getState( s_currentDevice + ".Energy-Yesterday" ).val + ','
              }
              s_JSON = s_JSON + '"yesterday-costs":' + getState( s_currentSourceAnalytix + ".currentYear.costs.01_previousDay" ).val + ','
       
              s_JSON = s_JSON + '"currentWeek-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.02_currentWeek" ).val + ','
              s_JSON = s_JSON + '"currentWeek-cost":' + getState( s_currentSourceAnalytix + ".currentYear.costs.02_currentWeek" ).val + ','
       
              s_JSON = s_JSON + '"currentMonth-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.03_currentMonth" ).val + ','
              s_JSON = s_JSON + '"currentMonth-cost":' + getState( s_currentSourceAnalytix + ".currentYear.costs.03_currentMonth" ).val + ','
       
              s_JSON = s_JSON + '"previousMonth-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.03_previousMonth" ).val + ','
              s_JSON = s_JSON + '"previousMonth-cost":' + getState( s_currentSourceAnalytix + ".currentYear.costs.03_previousMonth" ).val + ','
       
              s_JSON = s_JSON + '"currentQuarter-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.04_currentQuarter" ).val + ','
              s_JSON = s_JSON + '"currentQuarter-cost":' + getState( s_currentSourceAnalytix + ".currentYear.costs.04_currentQuarter" ).val + ','
       
              s_JSON = s_JSON + '"previousQuarter-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.04_previousQuarter" ).val + ','
              s_JSON = s_JSON + '"previousQuarter-cost":' + getState( s_currentSourceAnalytix + ".currentYear.costs.04_previousQuarter" ).val + ','
       
              s_JSON = s_JSON + '"currentYear-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.05_currentYear" ).val + ','
              s_JSON = s_JSON + '"currentYear-cost":' + getState( s_currentSourceAnalytix + ".currentYear.costs.05_currentYear" ).val + ','
       
              s_JSON = s_JSON + '"previousYear-kWh":' + getState( s_currentSourceAnalytix + ".currentYear.consumed.05_previousYear" ).val + ','
              s_JSON = s_JSON + '"previousYear-cost":' + getState( s_currentSourceAnalytix + ".currentYear.costs.05_previousYear" ).val + ','
       
              s_JSON = s_JSON.replace(/,\s*$/, ""); // letztes Komma entfernen falls vorhanden
              s_JSON = s_JSON + "},";
          }
          // letztes Komma entfernen https://stackoverflow.com/questions/17720264/remove-last-comma-from-a-string
          s_JSON = s_JSON.replace(/,\s*$/, "");
          s_JSON = s_JSON + "]";
          DebugWarning(s_JSON);
          setState(s_TargetDatapoint , s_JSON, true);
      }
       
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //   _____ _             _               
      //  / ____| |           | |              
      // | (___ | |_ __ _ _ __| |_ _   _ _ __  
      //  \___ \| __/ _` | '__| __| | | | '_ \ 
      //  ____) | || (_| | |  | |_| |_| | |_) |
      // |_____/ \__\__,_|_|   \__|\__,_| .__/ 
      //                                | |    
      //                                |_|    
      // ####################################################################################################################################################
      // ####################################################################################################################################################
       
      DebugWarning("Anzahl Datenpunkte: " + a_SourceDatapoints.length);
      // Beim Start einmal alle Daten erstellen
       
      CreateJSON();
       
       
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //   _____       _                   _       _   _                 
      //  / ____|     | |                 (_)     | | (_)                
      // | (___  _   _| |__  ___  ___ _ __ _ _ __ | |_ _  ___  _ __  ___ 
      //  \___ \| | | | '_ \/ __|/ __| '__| | '_ \| __| |/ _ \| '_ \/ __|
      //  ____) | |_| | |_) \__ \ (__| |  | | |_) | |_| | (_) | | | \__ \
      // |_____/ \__,_|_.__/|___/\___|_|  |_| .__/ \__|_|\___/|_| |_|___/
      //                                    | |                          
      //                                    |_|                          
      // ####################################################################################################################################################
      // ####################################################################################################################################################
       
       
       
       
      // ####################################################################################################################################################
      // ####################################################################################################################################################
      //   _____      _              _       _      
      //  / ____|    | |            | |     | |     
      // | (___   ___| |__   ___  __| |_   _| | ___ 
      //  \___ \ / __| '_ \ / _ \/ _` | | | | |/ _ \
      //  ____) | (__| | | |  __/ (_| | |_| | |  __/
      // |_____/ \___|_| |_|\___|\__,_|\__,_|_|\___|
      // ####################################################################################################################################################
      {1}
      // alle 15 Sekunden
      schedule("*/15 * * * * *", async function () {
          CreateJSON();
      });
      {1}
      {1}
      
      

      Log:

      
      javascript.0
      2022-09-24 19:37:12.329	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.328	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.327	warn	at CreateJSON (script.js.common.JSON_Erzeugen:197:52)
      
      javascript.0
      2022-09-24 19:37:12.321	warn	getState "undefined.currentYear.costs.05_previousYear" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.320	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.319	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.318	warn	at CreateJSON (script.js.common.JSON_Erzeugen:196:51)
      
      javascript.0
      2022-09-24 19:37:12.313	warn	getState "undefined.currentYear.consumed.05_previousYear" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.313	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.312	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.311	warn	at CreateJSON (script.js.common.JSON_Erzeugen:194:51)
      
      javascript.0
      2022-09-24 19:37:12.308	warn	getState "undefined.currentYear.costs.05_currentYear" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.308	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.308	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.307	warn	at CreateJSON (script.js.common.JSON_Erzeugen:193:50)
      
      javascript.0
      2022-09-24 19:37:12.299	warn	getState "undefined.currentYear.consumed.05_currentYear" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.298	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.298	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.297	warn	at CreateJSON (script.js.common.JSON_Erzeugen:191:55)
      
      javascript.0
      2022-09-24 19:37:12.295	warn	getState "undefined.currentYear.costs.04_previousQuarter" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.295	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.294	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.294	warn	at CreateJSON (script.js.common.JSON_Erzeugen:190:54)
      
      javascript.0
      2022-09-24 19:37:12.291	warn	getState "undefined.currentYear.consumed.04_previousQuarter" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.291	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.290	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.290	warn	at CreateJSON (script.js.common.JSON_Erzeugen:188:54)
      
      javascript.0
      2022-09-24 19:37:12.288	warn	getState "undefined.currentYear.costs.04_currentQuarter" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.287	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.287	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.286	warn	at CreateJSON (script.js.common.JSON_Erzeugen:187:53)
      
      javascript.0
      2022-09-24 19:37:12.284	warn	getState "undefined.currentYear.consumed.04_currentQuarter" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.283	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.283	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.282	warn	at CreateJSON (script.js.common.JSON_Erzeugen:185:53)
      
      javascript.0
      2022-09-24 19:37:12.280	warn	getState "undefined.currentYear.costs.03_previousMonth" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.280	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.279	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.278	warn	at CreateJSON (script.js.common.JSON_Erzeugen:184:52)
      
      javascript.0
      2022-09-24 19:37:12.276	warn	getState "undefined.currentYear.consumed.03_previousMonth" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.276	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.275	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.269	warn	at CreateJSON (script.js.common.JSON_Erzeugen:182:52)
      
      javascript.0
      2022-09-24 19:37:12.267	warn	getState "undefined.currentYear.costs.03_currentMonth" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.266	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.266	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.265	warn	at CreateJSON (script.js.common.JSON_Erzeugen:181:51)
      
      javascript.0
      2022-09-24 19:37:12.263	warn	getState "undefined.currentYear.consumed.03_currentMonth" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.263	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.262	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.261	warn	at CreateJSON (script.js.common.JSON_Erzeugen:179:51)
      
      javascript.0
      2022-09-24 19:37:12.259	warn	getState "undefined.currentYear.costs.02_currentWeek" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.259	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.258	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.258	warn	at CreateJSON (script.js.common.JSON_Erzeugen:178:50)
      
      javascript.0
      2022-09-24 19:37:12.255	warn	getState "undefined.currentYear.consumed.02_currentWeek" not found (3)
      
      javascript.0
      2022-09-24 19:37:12.251	warn	at script.js.common.JSON_Erzeugen:261:3
      
      javascript.0
      2022-09-24 19:37:12.251	warn	at script.js.common.JSON_Erzeugen:225:1
      
      javascript.0
      2022-09-24 19:37:12.250	warn	at CreateJSON (script.js.common.JSON_Erzeugen:176:50)
      
      javascript.0
      2022-09-24 19:37:12.248	warn	getState "undefined.currentYear.costs.01_previousDay" not found (3)
      
      posted in ioBroker Allgemein
      C
      Chris83 0
    • RE: Json-Tabelle mit Stromverbrauchswerten erstellen

      @liv-in-sky said in Json-Tabelle mit Stromverbrauchswerten erstellen:

      @manfredh-1

      evtl damit https://forum.iobroker.net/topic/48130/howto-schnell-erstellte-html-tabelle-für-vis

      dort muss halt immer alles von hand eingetragen werden

      Hi, bisher habe ich mir auch damit beholfen. Leider will man immer mehr Daten und jetzt ist es passiert. Scheinbar gibt es ein "Bindings-Limit" von max. 50 pro Widget. Jetzt könnte man das auch unschön auf mehrere Widget verteilen, aber ich hätte es gerne gleich richtig gemacht. Deine (@liv-in-sky ) ganzen Scripts habe ich mir auch schon angeschaut und ausprobiert, allerdings komme ich nicht wirklich damit klar.

      Könnte möglicherweise jemand ein Blockly Beispiel anhand von 1-2 Geräten teilen, deren Werte dann in einen JSON Datenpunkt geschrieben werden?
      Z.B. habe ich einige Shellys von denen ich gerne wüsste, ob
      ein/aus {shelly.0.SHPLG-S#D6C0A8#1.Relay0.Switch}
      power {shelly.0.SHPLG-S#D6C0A8#1.Relay0.Power}
      consumption {shelly.0.SHPLG-S#D6C0A8#1.Relay0.Energy}
      bzw.
      consumption aus {0_userdata.0.Shelly.TV-Schlafzimmer}

      Ich suche suche suche, aber irgendwie finde ich in der Richtung nichts wirklich oder verstehe es schlicht nicht.

      Wäre nett, wenn hier jemand helfen könnte

      posted in ioBroker Allgemein
      C
      Chris83 0
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo