<?xml version="1.0" encoding="UTF-8"?><rss xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:atom="http://www.w3.org/2005/Atom" version="2.0"><channel><title><![CDATA[Energiemessung via Json Tabelle]]></title><description><![CDATA[<p dir="auto">Hallo zusammen,<br />
ich komme aufgrund von "Unwissenheit" nicht weiter.<br />
Ich wollte Stomverbrauchs-Daten aus Sourceanalytix über VIS als Tabelle anzeigen lassen.<br />
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.</p>
<p dir="auto">Daher dachte ich mir, es über eine JSON Datei in Tabellenform anzeigen zu lassen.</p>
<p dir="auto">Hier im Forum wurde ich auch fündig. Leider ist hier nur ein Beispiel für "eine ID".<br />
Mein Ziel:</p>
<p dir="auto">Monat | Verbrauch | VerbrauchimLetztenJahr<br />
01      |  xx kW        |   xx kW<br />
02      |  xx kW        |   xx kW<br />
03      |  xx kW        |   xx kW<br />
...<br />
12      |  xx kW        |   xx kW</p>
<p dir="auto">Diesen Code habe ich aus dem Forum benutzt:</p>
<pre><code>
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);

});

</code></pre>
<p dir="auto">Für das aktuelle Jahr funtkioniert es auch. Kann mir jemand Hilfestellung geben, was ich ändern bzw. hinzufügen muss?</p>
<p dir="auto">Danke für's lesen :-)</p>
]]></description><link>https://forum.iobroker.net/topic/61613/energiemessung-via-json-tabelle</link><generator>RSS for Node</generator><lastBuildDate>Wed, 08 Apr 2026 00:11:38 GMT</lastBuildDate><atom:link href="https://forum.iobroker.net/topic/61613.rss" rel="self" type="application/rss+xml"/><pubDate>Sun, 01 Jan 2023 20:21:39 GMT</pubDate><ttl>60</ttl><item><title><![CDATA[Reply to Energiemessung via Json Tabelle on Tue, 03 Jan 2023 12:36:58 GMT]]></title><description><![CDATA[<p dir="auto">Danke, das hat mir weitergeholfen. Hab es ein wenig umgeschrieben für meine Voraussetzung.<br />
Ist ein wenig schwierig gewesen, da ich bisher nie mit JavaScript geschrieben habe, funktioniert aber.</p>
<pre><code>let myArrSourcA=[];
let myBlacklist=[];


/* -----------------------------------------------------------------------------------------
*   Hier den Pfad eintragen
*/

// &gt;&gt;&gt;&gt;&gt;&gt;&gt; Pfad der SourceID eintragen
const Pfad = 'sourceanalytix.0.0_userdata__0__Energiezaehler__Computer';

// &gt;&gt;&gt;&gt;&gt;&gt;&gt; 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" &amp;&amp; !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(){

     // &gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;&gt;  Pfad  &lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;&lt;
     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();
});



</code></pre>
]]></description><link>https://forum.iobroker.net/post/921215</link><guid isPermaLink="true">https://forum.iobroker.net/post/921215</guid><dc:creator><![CDATA[planetkeane]]></dc:creator><pubDate>Tue, 03 Jan 2023 12:36:58 GMT</pubDate></item><item><title><![CDATA[Reply to Energiemessung via Json Tabelle on Sun, 01 Jan 2023 21:03:59 GMT]]></title><description><![CDATA[<p dir="auto"><a class="plugin-mentions-user plugin-mentions-a" href="/user/planetkeane" aria-label="Profile: planetkeane">@<bdi>planetkeane</bdi></a> sagte in <a href="/post/920119">Energiemessung via Json Tabelle</a>:</p>
<blockquote>
<p dir="auto">Ich wollte Stomverbrauchs-Daten aus Sourceanalytix über VIS als Tabelle anzeigen lassen.</p>
</blockquote>
<p dir="auto">zwar nicht ganz was du suchst aber schau mal  <a href="https://forum.iobroker.net/topic/59254/json-f%C3%BCr-sourceanalytics">https://forum.iobroker.net/topic/59254/json-für-sourceanalytics</a></p>
]]></description><link>https://forum.iobroker.net/post/920159</link><guid isPermaLink="true">https://forum.iobroker.net/post/920159</guid><dc:creator><![CDATA[crunchip]]></dc:creator><pubDate>Sun, 01 Jan 2023 21:03:59 GMT</pubDate></item></channel></rss>