Weiter zum Inhalt
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Hell
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dunkel
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Visualisierung
  4. Energiemessung via Json Tabelle

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    672

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    18
    1
    5.7k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.5k

Energiemessung via Json Tabelle

Geplant Angeheftet Gesperrt Verschoben Visualisierung
3 Beiträge 2 Kommentatoren 356 Aufrufe 2 Beobachtet
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • planetkeaneP Offline
    planetkeaneP Offline
    planetkeane
    schrieb am zuletzt editiert von
    #1

    Hallo zusammen,
    ich komme aufgrund von "Unwissenheit" nicht weiter.
    Ich wollte Stomverbrauchs-Daten aus Sourceanalytix über VIS als Tabelle anzeigen lassen.
    Dies habe ich bisher über HTML gemacht, was gut funktioniert hat. Jedoch ist das Problem, dass die Verlinkungen begränzt sind und ich den Verbrauch des Jahres und des Vorjahres nicht mehr anzeigen kann.

    Daher dachte ich mir, es über eine JSON Datei in Tabellenform anzeigen zu lassen.

    Hier im Forum wurde ich auch fündig. Leider ist hier nur ein Beispiel für "eine ID".
    Mein Ziel:

    Monat | Verbrauch | VerbrauchimLetztenJahr
    01 | xx kW | xx kW
    02 | xx kW | xx kW
    03 | xx kW | xx kW
    ...
    12 | xx kW | xx kW

    Diesen Code habe ich aus dem Forum benutzt:

    
    var d = new Date();
    
    //var n = d.getFullYear();
    
    const idTable = '0_userdata.0.Verbrauch.AlleVerbauchertotal.Computer'; // Vorschlag ID JSON-Tabelle
    
    const monate = ['01','02','03','04','05','06','07','08','07','10','11','12'];
    
     
    
    var select = $('sourceanalytix.0.0_userdata__0__Energiezaehler__Computer.2023.delivered.months.*'); // Geräte-ID ersetzen
    ersetzen
    
    var ids = []; 
    
    var table = [];
    
    select.each(function(id, i) {
    
        ids[i] = id;
    
        table[i] = {};
    
        let idx = parseInt(id.substring(id.lastIndexOf('.') + 1)) - 1;
    
        let monat = monate[idx];
    
        table[i].Name = monat; // z.B. "Februar 2020"
    
        table[i].Wert = getState(id).val;
    
    });
    
    
    if(existsState(idTable)) setState(idTable, JSON.stringify(table), true);
    
    else createState(idTable, JSON.stringify(table), {type: 'string'});
    
     
    
    on(ids, function(dp) {
    
        let idx = ids.indexOf(dp.id);
    
        table[idx].Wert = dp.state.val;
    
        setState(idTable, JSON.stringify(table), true);
    
    });
    
    

    Für das aktuelle Jahr funtkioniert es auch. Kann mir jemand Hilfestellung geben, was ich ändern bzw. hinzufügen muss?

    Danke für's lesen :-)

    crunchipC 1 Antwort Letzte Antwort
    0
    • planetkeaneP planetkeane

      Hallo zusammen,
      ich komme aufgrund von "Unwissenheit" nicht weiter.
      Ich wollte Stomverbrauchs-Daten aus Sourceanalytix über VIS als Tabelle anzeigen lassen.
      Dies habe ich bisher über HTML gemacht, was gut funktioniert hat. Jedoch ist das Problem, dass die Verlinkungen begränzt sind und ich den Verbrauch des Jahres und des Vorjahres nicht mehr anzeigen kann.

      Daher dachte ich mir, es über eine JSON Datei in Tabellenform anzeigen zu lassen.

      Hier im Forum wurde ich auch fündig. Leider ist hier nur ein Beispiel für "eine ID".
      Mein Ziel:

      Monat | Verbrauch | VerbrauchimLetztenJahr
      01 | xx kW | xx kW
      02 | xx kW | xx kW
      03 | xx kW | xx kW
      ...
      12 | xx kW | xx kW

      Diesen Code habe ich aus dem Forum benutzt:

      
      var d = new Date();
      
      //var n = d.getFullYear();
      
      const idTable = '0_userdata.0.Verbrauch.AlleVerbauchertotal.Computer'; // Vorschlag ID JSON-Tabelle
      
      const monate = ['01','02','03','04','05','06','07','08','07','10','11','12'];
      
       
      
      var select = $('sourceanalytix.0.0_userdata__0__Energiezaehler__Computer.2023.delivered.months.*'); // Geräte-ID ersetzen
      ersetzen
      
      var ids = []; 
      
      var table = [];
      
      select.each(function(id, i) {
      
          ids[i] = id;
      
          table[i] = {};
      
          let idx = parseInt(id.substring(id.lastIndexOf('.') + 1)) - 1;
      
          let monat = monate[idx];
      
          table[i].Name = monat; // z.B. "Februar 2020"
      
          table[i].Wert = getState(id).val;
      
      });
      
      
      if(existsState(idTable)) setState(idTable, JSON.stringify(table), true);
      
      else createState(idTable, JSON.stringify(table), {type: 'string'});
      
       
      
      on(ids, function(dp) {
      
          let idx = ids.indexOf(dp.id);
      
          table[idx].Wert = dp.state.val;
      
          setState(idTable, JSON.stringify(table), true);
      
      });
      
      

      Für das aktuelle Jahr funtkioniert es auch. Kann mir jemand Hilfestellung geben, was ich ändern bzw. hinzufügen muss?

      Danke für's lesen :-)

      crunchipC Abwesend
      crunchipC Abwesend
      crunchip
      Forum Testing Most Active
      schrieb am zuletzt editiert von crunchip
      #2

      @planetkeane sagte in Energiemessung via Json Tabelle:

      Ich wollte Stomverbrauchs-Daten aus Sourceanalytix über VIS als Tabelle anzeigen lassen.

      zwar nicht ganz was du suchst aber schau mal https://forum.iobroker.net/topic/59254/json-für-sourceanalytics

      umgestiegen von Proxmox auf Unraid

      1 Antwort Letzte Antwort
      1
      • planetkeaneP Offline
        planetkeaneP Offline
        planetkeane
        schrieb am zuletzt editiert von
        #3

        Danke, das hat mir weitergeholfen. Hab es ein wenig umgeschrieben für meine Voraussetzung.
        Ist ein wenig schwierig gewesen, da ich bisher nie mit JavaScript geschrieben habe, funktioniert aber.

        let myArrSourcA=[];
        let myBlacklist=[];
        
        
        /* -----------------------------------------------------------------------------------------
        *   Hier den Pfad eintragen
        */
        
        // >>>>>>> Pfad der SourceID eintragen
        const Pfad = 'sourceanalytix.0.0_userdata__0__Energiezaehler__Computer';
        
        // >>>>>>> Pfad der zu speichernden JSON Datei eintragen
        const save = '0_userdata.0.StromJson.Computer';
        
        /*
        *   Ende
        ----------------------------------------------------------------------------------------- */ 
        
        
        
        // Jahresvariable
        var aktuellesDatum = new Date(),
            jahr = aktuellesDatum.getFullYear(),
            vorJahr = jahr-1;
        
        // Pfad Monat
        const TextJahr = Pfad + '.' + jahr + '.delivered.months.*';
        
        // Pfad Gesamt 
        const TextGesamtJetzt = Pfad + '.' + jahr + '.deliveredCumulative';
        const TextGesamtVorJahr = Pfad + '.' + vorJahr + '.deliveredCumulative';
        const TextKostenJetzt = Pfad + '.' + jahr + '.earningsCumulative';
        const TextKostenVorJahr = Pfad + '.' + vorJahr + '.earningsCumulative';
        
        
        
        
        // Beispiel Blacklist: ['sourceanalytix.0.sonoff__0__SonoffPow3__ENERGY_Total','sourceanalytix.0.sonoff__3__Nous1__ENERGY_Total']
        async function calcJson(){
             myArrSourcA=[];  
        
        
        
             var a = 0;
            
        
             $(TextJahr).each( function( id4, i){ 
                 let idy = id4.split('.'); 
                 if (getObject(id4).common.unit=="kWh" && !myBlacklist.toString().includes(idy[2])){
                     let helper=idy[2].split('__');
                     let helper2=helper[helper.length-2]; 
                     let theName=getObject(idy[0]+'.'+idy[1]+'.'+idy[2]).common.name   //idy[2].split('__');
                     if(theName == undefined) theName="no Name" ;
                    }
        
                 if(a==0){
                     myArrSourcA.push({
                     Computer: 'Gesamt',
                     Jetzt: getState(id4.replace(id4 ,TextGesamtJetzt)).val.toFixed(2),
                     Letztes: getState(id4.replace(id4, TextGesamtVorJahr)).val.toFixed(2),
                     Kosten: getState(id4.replace(id4,TextKostenJetzt)).val.toFixed(2) + ' | ' + getState(id4.replace(id4, TextKostenVorJahr)).val.toFixed(2),
                    })
                     a++;
                }
            
             myArrSourcA.push({
                 Computer: a++,
                 DiesesJahr: getState(id4).val.toFixed(2),
                 // @ts-ignore
                 LetztesJahr: getState(id4.replace(jahr,vorJahr)).val.toFixed(2),
                 Kosten: getState(id4.replace(".delivered.",".earnings.")).val.toFixed(2) + ' | ' + getState(id4.replace(jahr + ".delivered.", vorJahr + ".earnings.")).val.toFixed(2),
                 })
             });  
        
        
             //log(JSON.stringify(myArrSourcA)) 
             return myArrSourcA;
            }
        
             async function writeDatapoint(){
        
             // >>>>>>>>>>>>  Pfad  <<<<<<<<<<<<<
             if (!(await existsStateAsync(save))) {
                 await createStateAsync(save, "",{type: "string", name: "JSON SourcAnalytics", role: "value", read: true, write: true, } ); } 
                 // log(JSON.stringify(await calcJson())) 
        
                 setState(save,JSON.stringify(await calcJson()));
               }
        
             writeDatapoint();
             schedule(' */10 * * * *',  function () { writeDatapoint();
        });
        
        
        
        
        1 Antwort Letzte Antwort
        0

        Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.

        Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.

        Mit deinem Input könnte dieser Beitrag noch besser werden 💗

        Registrieren Anmelden
        Antworten
        • In einem neuen Thema antworten
        Anmelden zum Antworten
        • Älteste zuerst
        • Neuste zuerst
        • Meiste Stimmen


        Support us

        ioBroker
        Community Adapters
        Donate

        550

        Online

        32.7k

        Benutzer

        82.6k

        Themen

        1.3m

        Beiträge
        Community
        Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
        ioBroker Community 2014-2025
        logo
        • Anmelden

        • Du hast noch kein Konto? Registrieren

        • Anmelden oder registrieren, um zu suchen
        • Erster Beitrag
          Letzter Beitrag
        0
        • Home
        • Aktuell
        • Tags
        • Ungelesen 0
        • Kategorien
        • Unreplied
        • Beliebt
        • GitHub
        • Docu
        • Hilfe