Navigation

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

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    K
    • Profile
    • Following 0
    • Followers 0
    • Topics 0
    • Posts 12
    • Best 3
    • Groups 1

    kdtcat

    @kdtcat

    Starter

    3
    Reputation
    6
    Profile views
    12
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    kdtcat Follow
    Starter

    Best posts made by kdtcat

    • RE: Angebot für Reparatur des "C26-Problems"

      @labersack Nochmal Wow. Das ging ja ebenfalls flott. Vielen Dank und ein schönes Weihnachtsfest.

      posted in Marktplatz
      K
      kdtcat
    • RE: Angebot für Reparatur des "C26-Problems"

      @labersack Heute kam der Erste Deiner reparierten HM-LC-Sw1PBU-FM zum Einsatz. Funktioniert einwandfrei. Ersetzt wurde ein Schalter, der jetzt wohl auch das C26 Problem hat. Wenn sich noch einer verabschiedet, komme ich wieder auf Dich zu. Ich hoffe Du hast noch lange Spaß an Deinem vorzüglichen Service.

      posted in Marktplatz
      K
      kdtcat
    • RE: Angebot für Reparatur des "C26-Problems"

      @labersack Paket ist soeben angekommen. Nochmals vielen Dank für Deinen Klasse Service!

      posted in Marktplatz
      K
      kdtcat

    Latest posts made by kdtcat

    • RE: Daten mit Blockly aus InfluxDB abrufen

      @kdtcat ```

      var parm1, parm2, result, BatteryLevel, PowerConsumptionTotal, PowerProductionTotal, EnergyProductionTotalDay, EnergyConsumptionTotalDay, EnergyExternalTotalOutDay, EnergyBatteryChargeDay, EnergyStorageTotalOutDay, StromverbrauchAnteilSolarTag, STromverbrauchAlleTag;
      
      // Beschreibe diese Funktion …
      async function iq(parm1, parm2) {
           // Beschreibe diese Funktion 
           var ergebnis, fparm, fparm2; 
              fparm = 'from(bucket: "solar") |> range(start: -1m) |> filter(fn: (r) => r["_field"] == ' + parm1 + ') |> aggregateWindow(every: 2m, fn: mean)';
              fparm2 = '0_userdata.0.Enpal.' + parm2;
              sendTo('influxdb.0', 'query', fparm, async (result) => {
              test0 = (await jsonataExpression(result,'*[0]._value '));
              setStateDelayed(fparm2, test0, true, parseInt(((0) || '').toString(), 10), false);
            });
          return ergebnis;
          
      
      }
      
      
      schedule("*/2 * * * *", async () => {
        result = await iq('"Energy.Battery.Charge.Level"', 'BatteryLevel');
        await wait(3000);
        BatteryLevel = Math.round(getState('0_userdata.0.Enpal.BatteryLevel').val * 100) / 100;
        setStateDelayed('0_userdata.0.Enpal.BatteryLevel', { val: BatteryLevel, ack: false }, parseInt(((0) || '').toString(), 10), false);
        result = await iq('"Power.Consumption.Total"', 'PowerConsumptionTotal');
        await wait(3000);
        PowerConsumptionTotal = getState('0_userdata.0.Enpal.PowerConsumptionTotal').val;
        result = await iq('"Power.Production.Total"', 'PowerProductionTotal');
        await wait(3000);
        PowerProductionTotal = getState('0_userdata.0.Enpal.PowerProductionTotal').val;
        result = await iq('"Energy.Production.Total.Day"', 'EnergyProductionTotalDay');
        await wait(3000);
        EnergyProductionTotalDay = getState('0_userdata.0.Enpal.EnergyProductionTotalDay').val;
        result = await iq('"Energy.Consumption.Total.Day"', 'EnergyConsumptionTotalDay');
        await wait(3000);
        EnergyConsumptionTotalDay = getState('0_userdata.0.Enpal.EnergyConsumptionTotalDay').val;
        result = await iq('"Energy.External.Total.Out.Day"', 'EnergyExternalTotalOutDay');
        await wait(3000);
        EnergyExternalTotalOutDay = getState('0_userdata.0.Enpal.EnergyExternalTotalOutDay').val;
        result = await iq('"Energy.Battery.Charge.Day"', 'EnergyBatteryChargeDay');
        await wait(3000);
        EnergyBatteryChargeDay = getState('0_userdata.0.Enpal.EnergyBatteryChargeDay').val;
        result = await iq('"Energy.Storage.Total.Out.Day"', 'EnergyStorageTotalOutDay');
        await wait(3000);
        EnergyStorageTotalOutDay = getState('0_userdata.0.Enpal.EnergyStorageTotalOutDay').val;
        StromverbrauchAnteilSolarTag = EnergyProductionTotalDay - EnergyExternalTotalOutDay;
        StromverbrauchAnteilSolarTag = StromverbrauchAnteilSolarTag - EnergyBatteryChargeDay;
        setStateDelayed('0_userdata.0.Enpal.StromverbrauchAnteilSolarTag', { val: StromverbrauchAnteilSolarTag, ack: false }, parseInt(((0) || '').toString(), 10), false);
        STromverbrauchAlleTag = StromverbrauchAnteilSolarTag + EnergyStorageTotalOutDay + EnergyConsumptionTotalDay;
        setStateDelayed('0_userdata.0.Enpal.StromverbrauchAlleTag', { val: STromverbrauchAlleTag, ack: false }, parseInt(((0) || '').toString(), 10), false);
        console.info((['1: ',BatteryLevel,', 2: ',PowerConsumptionTotal,', 3: ',PowerProductionTotal,', 4: ',EnergyProductionTotalDay,', 5: ',EnergyConsumptionTotalDay,', 6: ',EnergyExternalTotalOutDay,', 7: ',EnergyBatteryChargeDay,', 8: ',EnergyStorageTotalOutDay,', 9: ',StromverbrauchAnteilSolarTag,', 10: ',STromverbrauchAlleTag].join('')));
      });
      
      posted in Skripten / Logik
      K
      kdtcat
    • RE: Daten mit Blockly aus InfluxDB abrufen

      @kdtcat 7d31e849-77bc-46aa-9735-7c2d68b5975d-image.png

      posted in Skripten / Logik
      K
      kdtcat
    • RE: Daten mit Blockly aus InfluxDB abrufen

      @tobiddGute Idee mit der Function. Damit habe ich mein Script auch wieder "Blockly fähig" gemacht.

      posted in Skripten / Logik
      K
      kdtcat
    • RE: Daten mit Blockly aus InfluxDB abrufen

      @tobidd sagte in Daten mit Blockly aus InfluxDB abrufen:

      @kdtcat
      Hallo, kannst du mir eventuell ein Beispiel zeigen, wie du das gelöst hast.
      Ich hatte jetzt lange keine Lust mehr dem Thema nachzugehen. Jetzt bin ich wieder etwas motivierter.

      Grüße Tobi

      Hier als Beispiel die beiden ersten Werte meines Scripts:

      schedule("*/2 * * * *", async () => {
        result = !''.length;
        sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Energy.Battery.Charge.Level") |> aggregateWindow(every: 2m, fn: mean)', async (result) => {
          test1 = (await jsonataExpression(result,'*[0]._value '));
          setStateDelayed('0_userdata.0.Enpal.BatteryLevel', Math.round(test1 * 100) / 100, true, parseInt(((0) || '').toString(), 10), false);
        });
        await wait(3000);
        result = !''.length;
        sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Power.Consumption.Total") |> aggregateWindow(every: 2m, fn: mean)', async (result) => {
          test2 = (await jsonataExpression(result,'*[0]._value '));
          setStateDelayed('0_userdata.0.Enpal.PowerConsumptionTotal', test2, true, parseInt(((0) || '').toString(), 10), false);
        });
        await wait(3000);
      });
      
      posted in Skripten / Logik
      K
      kdtcat
    • RE: Daten mit Blockly aus InfluxDB abrufen

      @tobidd Ich habe jetzt auch festgestellt, dass das Blockly "sendTo" nicht mehr funktioniert. Scheinbar ist durch ein Update die Query Funktion geändert worden. Blockly generiert jetzt immer ein Query Array, welches bei InfluxDb nicht erlaubt ist. Im Javascript Code erkennt man das am { Zeichen.

      Meine bis jetzt einzige Lösung ist das Script als Native Script weiterzuführen.

      posted in Skripten / Logik
      K
      kdtcat
    • RE: InfluxDB auslesen (Enpal)

      @conector777 Falls Du noch nicht weiter bist, hätte ich noch ein paar Tipps. Ich war jetzt erfolgreich beim Zugriff auf die Influxdb in der Enpal Box.
      Als erstes habe ich den Influxdb Adapter installiert und für den Zugriff auf Enpal konfiguriert. Alle notwendigen Parameter findet man auf der Webseite Seiner Enpal Box.
      Als nächstes habe ich ein Javascript mit Blockly gebastelt, um gezielt einzelne Werte zu holen und diese als Iobroker Objekt abzulegen(userdata.0). Dieses Script läuft z.B. alle 3 Minuten und schreibt immer den aktuellen Wert ins Objekt.

      var result, test1, test2;
      
      
      schedule("*/3 * * * *", async () => {
        result = 'Anfang';
        sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Energy.Battery.Charge.Level")', async (result) => {
          test1 = (await jsonataExpression(result,'*[0]._value '));
        });
        setStateDelayed('0_userdata.0.Enpal.BatteryLevel', Math.round(test1 * 100) / 100, true, parseInt(((0) || '').toString(), 10), false);
        result = !''.length;
        sendTo('influxdb.0', 'query', 'from(bucket: "solar")  |> range(start: -1m) |> filter(fn: (r) => r["_field"] == "Power.Consumption.Total")', async (result) => {
          test2 = (await jsonataExpression(result,'*[0]._value '));
        });
        console.info("influxdb.0: " + "");
        setStateDelayed('0_userdata.0.Enpal.PowerConsumptionTotal', test2, true, parseInt(((0) || '').toString(), 10), false);
      });
      
      

      Um jetzt noch eine anständige Historie zu erhalten, habe ich ein zweites Script gemacht, welches einen Trigger auf Wertänderung des Objekts setzt und bei Änderung das Ganze in eine beliebige Historien Anwendung übernimmt. In meinem Fall eine CCU.

      on({ id: [].concat(['0_userdata.0.Enpal.BatteryLevel']), change: 'ne' }, async (obj) => {
        let value = obj.state.val;
        let oldValue = obj.oldState.val;
        setStateDelayed('hm-rega.0.13211', getState('0_userdata.0.Enpal.BatteryLevel').val, false, parseInt(((0) || '').toString(), 10), false);
      });
      

      Happy Coding.

      posted in Einsteigerfragen
      K
      kdtcat
    • RE: Angebot für Reparatur des "C26-Problems"

      @labersack Heute kam der Erste Deiner reparierten HM-LC-Sw1PBU-FM zum Einsatz. Funktioniert einwandfrei. Ersetzt wurde ein Schalter, der jetzt wohl auch das C26 Problem hat. Wenn sich noch einer verabschiedet, komme ich wieder auf Dich zu. Ich hoffe Du hast noch lange Spaß an Deinem vorzüglichen Service.

      posted in Marktplatz
      K
      kdtcat
    • RE: Angebot für Reparatur des "C26-Problems"

      @labersack Paket ist soeben angekommen. Nochmals vielen Dank für Deinen Klasse Service!

      posted in Marktplatz
      K
      kdtcat
    • RE: Angebot für Reparatur des "C26-Problems"

      @labersack Nochmal Wow. Das ging ja ebenfalls flott. Vielen Dank und ein schönes Weihnachtsfest.

      posted in Marktplatz
      K
      kdtcat
    • RE: Angebot für Reparatur des "C26-Problems"

      @labersack Wow, da soll noch mal einer etwas negatives über DHL sagen.

      posted in Marktplatz
      K
      kdtcat
    Community
    Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
    The ioBroker Community 2014-2023
    logo