Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Tester
  4. Test Adapter Daikin-Cloud 0.4.0

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    16
    1
    249

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

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

Test Adapter Daikin-Cloud 0.4.0

Scheduled Pinned Locked Moved Tester
275 Posts 39 Posters 64.6k Views 41 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • ArmilarA Armilar

    @lemmi

    Hallo zusammen,

    habe mal ein wenig Zeit gefunden, um das Skript auf alle Device-Typen und Adapterinstanzen anzupassen.

    TypeScript anlegen. Inhalt reinwerfen. Sollte nichts angepasst werden müssen. Skript starten...

    Die Daten für jedes Daikin-Device in der Onnecta-App (Klima, Wärmepumpe, heating, cooling, Total, etc.) werden unter 0_userdata.0.daikin-cloud.... angelegt.

    @apollon77 - evtl. kann man das in den Adapter schreddern...

    /* TypeScript (TS) @Armilar
     *
     * This Script will read the consumption Data from Daikin-Cloud adapter and transform the raw data into individual data points similar to how it's shown in the Daikin Onecta App.
     * It will also sum up the historic consumption from the current and previous year and update the total consumption meter going forward.
     * 
     * The data is created in the following path analogous to the daikin cloud data
     * 0_userdata.0.daikin-cloud.0...
     * 
     * Createtd: 14.11.2024
     */
    
    // Log-Mode
    const logMode: any = 'info'; // 'info' or 'debug'
    // Path in 0_userdata
    const mainPath: string = '0_userdata.0.';
    // Onnecta hours (if d-raw)
    const hourly: Array<string>  = ["00:00 - 02:00", "02:00 - 04:00", "04:00 - 06:00", "06:00 - 08:00", "08:00 - 10:00", "10:00 - 12:00", "12:00 - 14:00", "14:00 - 16:00", "16:00 - 18:00", "18:00 - 20:00", "20:00 - 22:00", "22:00 - 24:00"];
    // Onnecta weekdays (if w-raw)
    const daily: Array<string>   = ["01_Monday", "02_Tuesday", "03_Wednesday", "04_Thursday", "05_Friday", "06_Saturday", "07_Sunday"];
    // Onnecta months  (if m-raw)
    const monthly: Array<string> = ["01_Januray", "02_February", "03_March", "04_April", "05_May", "06_June", "07_July", "08_August", "09_September", "10_October", "11_November", "12_December"];
    
    let devices: string[] = getDeviceNames("daikin-cloud.");
    
    function setOrCreateState(id: string, value: any, forceCreation: boolean = true, common: Partial<iobJS.StateCommon> = {}, callback?: iobJS.SetStateCallback): void {
        if (!existsState(id)) {
            createState(id, value, forceCreation, common, callback);
        } else {
            setState(id, value, true);
        }
    }
    
    // Get Daikin Device Names
    function getDeviceNames(vAdapterInstance: string): string[] {
        let devices = [];
        $(vAdapterInstance + '*raw').each(function (id) {
            if (devices.indexOf(id) == -1) {
                devices.push(id);
            }
        });
        return devices;
    }
    
    async function writeConsumtionData(path: string, rawType: string, rawData: number[]): Promise<void> {
        log(rawType + ' - ' + rawData, logMode);
        let total: number = 0;
        switch (rawType) {
    	case "d-raw":
                for (let j = 0; j < 12; j++) {
                    let dpName = "Yesterday." + hourly[j];
                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j], role: 'value.power', unit: 'kWh'});
                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                    total = total + rawData[j];
                }
                setOrCreateState(mainPath + path + 'Total.Yesterday', total, true, {type: 'number', name: 'Yesterday', role: 'value.power',unit: 'kWh'});
                total = 0;
                for (let j = 12; j < 24; j++) {
                    let dpName = "Today." + hourly[j-12];
                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j-12], role: 'value.power', unit: 'kWh'});
                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                    total = total + rawData[j];
                }
                setOrCreateState(mainPath + path + 'Total.Today', total, true, {type: 'number', name: 'Today', role: 'value.power',unit: 'kWh'});
                break;
    	case "w-raw":
                for (let j = 0; j < 7; j++) {
                    let dpName = "LastWeek." + daily[j];
                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j], role: 'value.power', unit: 'kWh'});
                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                    total = total + rawData[j];
                }
                setOrCreateState(mainPath + path + 'Total.LastWeek', total, true, {type: 'number', name: 'LastWeek', role: 'value.power',unit: 'kWh'});
                total = 0;
                for (let j = 7; j < 14; j++) {
                    let dpName = "ThisWeek." + daily[j-7];
                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j-7], role: 'value.power', unit: 'kWh'});
                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                    total = total + rawData[j];
                }
                setOrCreateState(mainPath + path + 'Total.ThisWeek', total, true, {type: 'number', name: 'ThisWeek', role: 'value.power',unit: 'kWh'});
                break;
    	case "m-raw":
                for (let j = 0; j < 12; j++) {
                    let dpName = "LastYear." + monthly[j];
                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j], role: 'value.power', unit: 'kWh'});
                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                    total = total + rawData[j];
                }
                setOrCreateState(mainPath + path + 'Total.LastYear', total, true, {type: 'number', name: 'LastYear', role: 'value.power',unit: 'kWh'});
                total = 0;
                for (let j = 12; j < 24; j++) {
                    let dpName = "ThisYear." + monthly[j-12];
                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j-12], role: 'value.power', unit: 'kWh'});
                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                    total = total + rawData[j];
                }
                setOrCreateState(mainPath + path + 'Total.ThisYear', total, true, {type: 'number', name: 'ThisYear', role: 'value.power',unit: 'kWh'});
                break;
        }
    }
    
    async function readConsumtionData(): Promise<void> {
        for (let i = 0; i < devices.length; i++) {
            //get d-raw; w-raw; m-raw
            let dev: any = devices[i].split('.');
            let state = getState(devices[i]).val;
            state = state.slice(1,-1);
            state = state.replaceAll('null', '0');
            await writeConsumtionData(devices[i].slice(0,-5), dev[dev.length -1], Array.from(state.split(','), Number));
        }
    }
    readConsumtionData();
    
    on({ id: [].concat(Array.prototype.slice.apply($('daikin-cloud.*.lastUpdateReceived'))), change: 'any' }, async (obj) => {
        await readConsumtionData();
    });
    
    K Offline
    K Offline
    Kredar
    wrote on last edited by Kredar
    #211

    @armilar sagte in Test Adapter Daikin-Cloud 0.4.0:

    /* TypeScript (TS) @Armilar
    *

    • This Script will read the consumption Data from Daikin-Cloud adapter and transform the raw data into individual data points similar to how it's shown in the Daikin Onecta App.
    • It will also sum up the historic consumption from the current and previous year and update the total consumption meter going forward.
    • The data is created in the following path analogous to the daikin cloud data
    • 0_userdata.0.daikin-cloud.0...
    • Createtd: 14.11.2024
      */

    // Log-Mode
    const logMode: any = 'info'; // 'info' or 'debug'
    // Path in 0_userdata
    const mainPath: string = '0_userdata.0.';
    // Onnecta hours (if d-raw)
    const hourly: Array<string> = ["00:00 - 02:00", "02:00 - 04:00", "04:00 - 06:00", "06:00 - 08:00", "08:00 - 10:00", "10:00 - 12:00", "12:00 - 14:00", "14:00 - 16:00", "16:00 - 18:00", "18:00 - 20:00", "20:00 - 22:00", "22:00 - 24:00"];
    // Onnecta weekdays (if w-raw)
    const daily: Array<string> = ["01_Monday", "02_Tuesday", "03_Wednesday", "04_Thursday", "05_Friday", "06_Saturday", "07_Sunday"];
    // Onnecta months (if m-raw)
    const monthly: Array<string> = ["01_Januray", "02_February", "03_March", "04_April", "05_May", "06_June", "07_July", "08_August", "09_September", "10_October", "11_November", "12_December"];

    let devices: string[] = getDeviceNames("daikin-cloud.");

    function setOrCreateState(id: string, value: any, forceCreation: boolean = true, common: Partial<iobJS.StateCommon> = {}, callback?: iobJS.SetStateCallback): void {
    if (!existsState(id)) {
    createState(id, value, forceCreation, common, callback);
    } else {
    setState(id, value, true);
    }
    }

    // Get Daikin Device Names
    function getDeviceNames(vAdapterInstance: string): string[] {
    let devices = [];
    $(vAdapterInstance + '*raw').each(function (id) {
    if (devices.indexOf(id) == -1) {
    devices.push(id);
    }
    });
    return devices;
    }

    async function writeConsumtionData(path: string, rawType: string, rawData: number[]): Promise<void> {
    log(rawType + ' - ' + rawData, logMode);
    let total: number = 0;
    switch (rawType) {
    case "d-raw":
    for (let j = 0; j < 12; j++) {
    let dpName = "Yesterday." + hourly[j];
    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j], role: 'value.power', unit: 'kWh'});
    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
    total = total + rawData[j];
    }
    setOrCreateState(mainPath + path + 'Total.Yesterday', total, true, {type: 'number', name: 'Yesterday', role: 'value.power',unit: 'kWh'});
    total = 0;
    for (let j = 12; j < 24; j++) {
    let dpName = "Today." + hourly[j-12];
    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j-12], role: 'value.power', unit: 'kWh'});
    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
    total = total + rawData[j];
    }
    setOrCreateState(mainPath + path + 'Total.Today', total, true, {type: 'number', name: 'Today', role: 'value.power',unit: 'kWh'});
    break;
    case "w-raw":
    for (let j = 0; j < 7; j++) {
    let dpName = "LastWeek." + daily[j];
    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j], role: 'value.power', unit: 'kWh'});
    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
    total = total + rawData[j];
    }
    setOrCreateState(mainPath + path + 'Total.LastWeek', total, true, {type: 'number', name: 'LastWeek', role: 'value.power',unit: 'kWh'});
    total = 0;
    for (let j = 7; j < 14; j++) {
    let dpName = "ThisWeek." + daily[j-7];
    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j-7], role: 'value.power', unit: 'kWh'});
    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
    total = total + rawData[j];
    }
    setOrCreateState(mainPath + path + 'Total.ThisWeek', total, true, {type: 'number', name: 'ThisWeek', role: 'value.power',unit: 'kWh'});
    break;
    case "m-raw":
    for (let j = 0; j < 12; j++) {
    let dpName = "LastYear." + monthly[j];
    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j], role: 'value.power', unit: 'kWh'});
    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
    total = total + rawData[j];
    }
    setOrCreateState(mainPath + path + 'Total.LastYear', total, true, {type: 'number', name: 'LastYear', role: 'value.power',unit: 'kWh'});
    total = 0;
    for (let j = 12; j < 24; j++) {
    let dpName = "ThisYear." + monthly[j-12];
    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j-12], role: 'value.power', unit: 'kWh'});
    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
    total = total + rawData[j];
    }
    setOrCreateState(mainPath + path + 'Total.ThisYear', total, true, {type: 'number', name: 'ThisYear', role: 'value.power',unit: 'kWh'});
    break;
    }
    }

    async function readConsumtionData(): Promise<void> {
    for (let i = 0; i < devices.length; i++) {
    //get d-raw; w-raw; m-raw
    let dev: any = devices[i].split('.');
    let state = getState(devices[i]).val;
    state = state.slice(1,-1);
    state = state.replaceAll('null', '0');
    await writeConsumtionData(devices[i].slice(0,-5), dev[dev.length -1], Array.from(state.split(','), Number));
    }
    }
    readConsumtionData();

    on({ id: [].concat(Array.prototype.slice.apply($('daikin-cloud.*.lastUpdateReceived'))), change: 'any' }, async (obj) => {
    await readConsumtionData();
    });

    Super da ist ja auch meine Klimaanlage von Daikin drinnen :) Läuft 1a. Danke für das überarbeite Script. Merci

    L 1 Reply Last reply
    0
    • ArmilarA Armilar

      @lemmi

      Hallo zusammen,

      habe mal ein wenig Zeit gefunden, um das Skript auf alle Device-Typen und Adapterinstanzen anzupassen.

      TypeScript anlegen. Inhalt reinwerfen. Sollte nichts angepasst werden müssen. Skript starten...

      Die Daten für jedes Daikin-Device in der Onnecta-App (Klima, Wärmepumpe, heating, cooling, Total, etc.) werden unter 0_userdata.0.daikin-cloud.... angelegt.

      @apollon77 - evtl. kann man das in den Adapter schreddern...

      /* TypeScript (TS) @Armilar
       *
       * This Script will read the consumption Data from Daikin-Cloud adapter and transform the raw data into individual data points similar to how it's shown in the Daikin Onecta App.
       * It will also sum up the historic consumption from the current and previous year and update the total consumption meter going forward.
       * 
       * The data is created in the following path analogous to the daikin cloud data
       * 0_userdata.0.daikin-cloud.0...
       * 
       * Createtd: 14.11.2024
       */
      
      // Log-Mode
      const logMode: any = 'info'; // 'info' or 'debug'
      // Path in 0_userdata
      const mainPath: string = '0_userdata.0.';
      // Onnecta hours (if d-raw)
      const hourly: Array<string>  = ["00:00 - 02:00", "02:00 - 04:00", "04:00 - 06:00", "06:00 - 08:00", "08:00 - 10:00", "10:00 - 12:00", "12:00 - 14:00", "14:00 - 16:00", "16:00 - 18:00", "18:00 - 20:00", "20:00 - 22:00", "22:00 - 24:00"];
      // Onnecta weekdays (if w-raw)
      const daily: Array<string>   = ["01_Monday", "02_Tuesday", "03_Wednesday", "04_Thursday", "05_Friday", "06_Saturday", "07_Sunday"];
      // Onnecta months  (if m-raw)
      const monthly: Array<string> = ["01_Januray", "02_February", "03_March", "04_April", "05_May", "06_June", "07_July", "08_August", "09_September", "10_October", "11_November", "12_December"];
      
      let devices: string[] = getDeviceNames("daikin-cloud.");
      
      function setOrCreateState(id: string, value: any, forceCreation: boolean = true, common: Partial<iobJS.StateCommon> = {}, callback?: iobJS.SetStateCallback): void {
          if (!existsState(id)) {
              createState(id, value, forceCreation, common, callback);
          } else {
              setState(id, value, true);
          }
      }
      
      // Get Daikin Device Names
      function getDeviceNames(vAdapterInstance: string): string[] {
          let devices = [];
          $(vAdapterInstance + '*raw').each(function (id) {
              if (devices.indexOf(id) == -1) {
                  devices.push(id);
              }
          });
          return devices;
      }
      
      async function writeConsumtionData(path: string, rawType: string, rawData: number[]): Promise<void> {
          log(rawType + ' - ' + rawData, logMode);
          let total: number = 0;
          switch (rawType) {
      	case "d-raw":
                  for (let j = 0; j < 12; j++) {
                      let dpName = "Yesterday." + hourly[j];
                      setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j], role: 'value.power', unit: 'kWh'});
                      log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                      total = total + rawData[j];
                  }
                  setOrCreateState(mainPath + path + 'Total.Yesterday', total, true, {type: 'number', name: 'Yesterday', role: 'value.power',unit: 'kWh'});
                  total = 0;
                  for (let j = 12; j < 24; j++) {
                      let dpName = "Today." + hourly[j-12];
                      setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j-12], role: 'value.power', unit: 'kWh'});
                      log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                      total = total + rawData[j];
                  }
                  setOrCreateState(mainPath + path + 'Total.Today', total, true, {type: 'number', name: 'Today', role: 'value.power',unit: 'kWh'});
                  break;
      	case "w-raw":
                  for (let j = 0; j < 7; j++) {
                      let dpName = "LastWeek." + daily[j];
                      setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j], role: 'value.power', unit: 'kWh'});
                      log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                      total = total + rawData[j];
                  }
                  setOrCreateState(mainPath + path + 'Total.LastWeek', total, true, {type: 'number', name: 'LastWeek', role: 'value.power',unit: 'kWh'});
                  total = 0;
                  for (let j = 7; j < 14; j++) {
                      let dpName = "ThisWeek." + daily[j-7];
                      setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j-7], role: 'value.power', unit: 'kWh'});
                      log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                      total = total + rawData[j];
                  }
                  setOrCreateState(mainPath + path + 'Total.ThisWeek', total, true, {type: 'number', name: 'ThisWeek', role: 'value.power',unit: 'kWh'});
                  break;
      	case "m-raw":
                  for (let j = 0; j < 12; j++) {
                      let dpName = "LastYear." + monthly[j];
                      setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j], role: 'value.power', unit: 'kWh'});
                      log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                      total = total + rawData[j];
                  }
                  setOrCreateState(mainPath + path + 'Total.LastYear', total, true, {type: 'number', name: 'LastYear', role: 'value.power',unit: 'kWh'});
                  total = 0;
                  for (let j = 12; j < 24; j++) {
                      let dpName = "ThisYear." + monthly[j-12];
                      setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j-12], role: 'value.power', unit: 'kWh'});
                      log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                      total = total + rawData[j];
                  }
                  setOrCreateState(mainPath + path + 'Total.ThisYear', total, true, {type: 'number', name: 'ThisYear', role: 'value.power',unit: 'kWh'});
                  break;
          }
      }
      
      async function readConsumtionData(): Promise<void> {
          for (let i = 0; i < devices.length; i++) {
              //get d-raw; w-raw; m-raw
              let dev: any = devices[i].split('.');
              let state = getState(devices[i]).val;
              state = state.slice(1,-1);
              state = state.replaceAll('null', '0');
              await writeConsumtionData(devices[i].slice(0,-5), dev[dev.length -1], Array.from(state.split(','), Number));
          }
      }
      readConsumtionData();
      
      on({ id: [].concat(Array.prototype.slice.apply($('daikin-cloud.*.lastUpdateReceived'))), change: 'any' }, async (obj) => {
          await readConsumtionData();
      });
      
      L Offline
      L Offline
      Lemmi
      wrote on last edited by
      #212

      @armilar Welchen Teil des Skriptes muss ich denn kopieren und einfügen? Irgendwie haut das bei mir nicht hin. Das Blockly funzt.
      Vielen Dank1

      1 Reply Last reply
      0
      • K Kredar

        @armilar sagte in Test Adapter Daikin-Cloud 0.4.0:

        /* TypeScript (TS) @Armilar
        *

        • This Script will read the consumption Data from Daikin-Cloud adapter and transform the raw data into individual data points similar to how it's shown in the Daikin Onecta App.
        • It will also sum up the historic consumption from the current and previous year and update the total consumption meter going forward.
        • The data is created in the following path analogous to the daikin cloud data
        • 0_userdata.0.daikin-cloud.0...
        • Createtd: 14.11.2024
          */

        // Log-Mode
        const logMode: any = 'info'; // 'info' or 'debug'
        // Path in 0_userdata
        const mainPath: string = '0_userdata.0.';
        // Onnecta hours (if d-raw)
        const hourly: Array<string> = ["00:00 - 02:00", "02:00 - 04:00", "04:00 - 06:00", "06:00 - 08:00", "08:00 - 10:00", "10:00 - 12:00", "12:00 - 14:00", "14:00 - 16:00", "16:00 - 18:00", "18:00 - 20:00", "20:00 - 22:00", "22:00 - 24:00"];
        // Onnecta weekdays (if w-raw)
        const daily: Array<string> = ["01_Monday", "02_Tuesday", "03_Wednesday", "04_Thursday", "05_Friday", "06_Saturday", "07_Sunday"];
        // Onnecta months (if m-raw)
        const monthly: Array<string> = ["01_Januray", "02_February", "03_March", "04_April", "05_May", "06_June", "07_July", "08_August", "09_September", "10_October", "11_November", "12_December"];

        let devices: string[] = getDeviceNames("daikin-cloud.");

        function setOrCreateState(id: string, value: any, forceCreation: boolean = true, common: Partial<iobJS.StateCommon> = {}, callback?: iobJS.SetStateCallback): void {
        if (!existsState(id)) {
        createState(id, value, forceCreation, common, callback);
        } else {
        setState(id, value, true);
        }
        }

        // Get Daikin Device Names
        function getDeviceNames(vAdapterInstance: string): string[] {
        let devices = [];
        $(vAdapterInstance + '*raw').each(function (id) {
        if (devices.indexOf(id) == -1) {
        devices.push(id);
        }
        });
        return devices;
        }

        async function writeConsumtionData(path: string, rawType: string, rawData: number[]): Promise<void> {
        log(rawType + ' - ' + rawData, logMode);
        let total: number = 0;
        switch (rawType) {
        case "d-raw":
        for (let j = 0; j < 12; j++) {
        let dpName = "Yesterday." + hourly[j];
        setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j], role: 'value.power', unit: 'kWh'});
        log(mainPath + path + dpName + ': ' + rawData[j], logMode);
        total = total + rawData[j];
        }
        setOrCreateState(mainPath + path + 'Total.Yesterday', total, true, {type: 'number', name: 'Yesterday', role: 'value.power',unit: 'kWh'});
        total = 0;
        for (let j = 12; j < 24; j++) {
        let dpName = "Today." + hourly[j-12];
        setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j-12], role: 'value.power', unit: 'kWh'});
        log(mainPath + path + dpName + ': ' + rawData[j], logMode);
        total = total + rawData[j];
        }
        setOrCreateState(mainPath + path + 'Total.Today', total, true, {type: 'number', name: 'Today', role: 'value.power',unit: 'kWh'});
        break;
        case "w-raw":
        for (let j = 0; j < 7; j++) {
        let dpName = "LastWeek." + daily[j];
        setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j], role: 'value.power', unit: 'kWh'});
        log(mainPath + path + dpName + ': ' + rawData[j], logMode);
        total = total + rawData[j];
        }
        setOrCreateState(mainPath + path + 'Total.LastWeek', total, true, {type: 'number', name: 'LastWeek', role: 'value.power',unit: 'kWh'});
        total = 0;
        for (let j = 7; j < 14; j++) {
        let dpName = "ThisWeek." + daily[j-7];
        setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j-7], role: 'value.power', unit: 'kWh'});
        log(mainPath + path + dpName + ': ' + rawData[j], logMode);
        total = total + rawData[j];
        }
        setOrCreateState(mainPath + path + 'Total.ThisWeek', total, true, {type: 'number', name: 'ThisWeek', role: 'value.power',unit: 'kWh'});
        break;
        case "m-raw":
        for (let j = 0; j < 12; j++) {
        let dpName = "LastYear." + monthly[j];
        setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j], role: 'value.power', unit: 'kWh'});
        log(mainPath + path + dpName + ': ' + rawData[j], logMode);
        total = total + rawData[j];
        }
        setOrCreateState(mainPath + path + 'Total.LastYear', total, true, {type: 'number', name: 'LastYear', role: 'value.power',unit: 'kWh'});
        total = 0;
        for (let j = 12; j < 24; j++) {
        let dpName = "ThisYear." + monthly[j-12];
        setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j-12], role: 'value.power', unit: 'kWh'});
        log(mainPath + path + dpName + ': ' + rawData[j], logMode);
        total = total + rawData[j];
        }
        setOrCreateState(mainPath + path + 'Total.ThisYear', total, true, {type: 'number', name: 'ThisYear', role: 'value.power',unit: 'kWh'});
        break;
        }
        }

        async function readConsumtionData(): Promise<void> {
        for (let i = 0; i < devices.length; i++) {
        //get d-raw; w-raw; m-raw
        let dev: any = devices[i].split('.');
        let state = getState(devices[i]).val;
        state = state.slice(1,-1);
        state = state.replaceAll('null', '0');
        await writeConsumtionData(devices[i].slice(0,-5), dev[dev.length -1], Array.from(state.split(','), Number));
        }
        }
        readConsumtionData();

        on({ id: [].concat(Array.prototype.slice.apply($('daikin-cloud.*.lastUpdateReceived'))), change: 'any' }, async (obj) => {
        await readConsumtionData();
        });

        Super da ist ja auch meine Klimaanlage von Daikin drinnen :) Läuft 1a. Danke für das überarbeite Script. Merci

        L Offline
        L Offline
        Lemmi
        wrote on last edited by Lemmi
        #213

        @kredar
        Problem gelöst!!! Ich bin auch ein kleines dummerchen. Habe die ganze Zeit versucht unter Javaskript das Ding ans laufen zu bringen. Kann ja auch nicht klappen denn es steht doch deutlich geschrieben "TypeScript (TS)" anlegen. Das richtige Skript angelegt und alles reingeschmissen. Siehe da, es funzt.
        Vielen Dank an @kredar

        K 1 Reply Last reply
        0
        • L Lemmi

          @kredar
          Problem gelöst!!! Ich bin auch ein kleines dummerchen. Habe die ganze Zeit versucht unter Javaskript das Ding ans laufen zu bringen. Kann ja auch nicht klappen denn es steht doch deutlich geschrieben "TypeScript (TS)" anlegen. Das richtige Skript angelegt und alles reingeschmissen. Siehe da, es funzt.
          Vielen Dank an @kredar

          K Offline
          K Offline
          Kredar
          wrote on last edited by
          #214

          @lemmi

          steht ja auch da, TS Script :)

          Super wenn es nun geht ;)

          1 Reply Last reply
          0
          • apollon77A apollon77
            Aktuelle Test Version 0.4.0
            Veröffentlichungsdatum 04.07.2024
            Github Link https://github.com/Apollon77/ioBroker.daikin-cloud

            Sooo, siehe https://github.com/Apollon77/ioBroker.daikin-cloud/issues/215#issuecomment-2208891591

            Erste Testversion auf GitHub.

            • Install von GitHub https://github.com/Apollon77/ioBroker.daikin-cloud
            • Erster Start sollte eine Fehlemeldung zeigen das man sich einloggen soll
            • Admin UI aufrufen, ABER eine Admin-Instanz mit aktiviertem HTTPS!! Und nicht per localhost/127.0.0.1 aufrufen!
            • Anleitung im Admin Ui befolgen
            • 2024-07-04 14.56.49.jpg

            Danach bitte testen.

            ACHTUNG: Die neue API hat eine Limitierung auf 200 Anfragen pro Tag! Daher ist das Standard Abfrageinterval 15 Minuten und man kann einen Slow Polling interval (zb Nachts) per State aktivieren.

            Bitte Feedback geben

            Dokumentation, Texte und Übersetzung ist noch "WIP"

            H Offline
            H Offline
            Hofmann IOBRF
            wrote on last edited by Hofmann IOBRF
            #215

            @apollon77 Die Verbindung zur Cloud hat nun einige Zeit gut funktioniert.
            Heute Morgen hatte ich einen "Error on update (1): expected 200 OK, got: 500 Internal Server Error" Fehler.
            Danach ging gar nichts mehr.
            Die Daikin Status Seite meldet keinen Fehler.
            Also habe ich die App gelöscht und neu angelegt.
            Ohne Erfolg.
            Nach dem Zugriff bestätigen bekomme ich die Fehlermeldung "Error on OAuth process: OPError: invalid_grant (invalid authorization code)"

            Hat noch wer aktuell Probleme damit?

            Jetzt meldet auch die Daikin Status Seite meldet Fehler!

            Geht jetzt wieder!
            Die Cloud ist halt einfach nicht sehr stabil!

            nik82N 1 Reply Last reply
            0
            • H Hofmann IOBRF

              @apollon77 Die Verbindung zur Cloud hat nun einige Zeit gut funktioniert.
              Heute Morgen hatte ich einen "Error on update (1): expected 200 OK, got: 500 Internal Server Error" Fehler.
              Danach ging gar nichts mehr.
              Die Daikin Status Seite meldet keinen Fehler.
              Also habe ich die App gelöscht und neu angelegt.
              Ohne Erfolg.
              Nach dem Zugriff bestätigen bekomme ich die Fehlermeldung "Error on OAuth process: OPError: invalid_grant (invalid authorization code)"

              Hat noch wer aktuell Probleme damit?

              Jetzt meldet auch die Daikin Status Seite meldet Fehler!

              Geht jetzt wieder!
              Die Cloud ist halt einfach nicht sehr stabil!

              nik82N Offline
              nik82N Offline
              nik82
              Most Active
              wrote on last edited by
              #216

              @hofmann-iobrf
              Kam bei mir auch, ich musste nur wieder authentifizieren:

              1b0fed87-2559-4519-973b-ee32f9518ed9-image.png

              Und jetzt gehts wieder...

              G 1 Reply Last reply
              0
              • nik82N nik82

                @hofmann-iobrf
                Kam bei mir auch, ich musste nur wieder authentifizieren:

                1b0fed87-2559-4519-973b-ee32f9518ed9-image.png

                Und jetzt gehts wieder...

                G Offline
                G Offline
                Gismoh
                wrote on last edited by
                #217

                @nik82
                War bei mir ebenso, auch der App Zugriff war gestört.
                War bei Daikin auch bekannt, und hatten dran gearbeitet.

                Mit der neuen Authentifizierung über den Adapter funktioniert nun es auch wieder im IOBroker.

                ioBroker auf: Lenovo ThinkCentre M910Q Tiny i5-7500T 16 GB mit proxmox in VM (Bookworm)

                1 Reply Last reply
                0
                • H Offline
                  H Offline
                  Hofmann IOBRF
                  wrote on last edited by
                  #218

                  Es gibt in der App ein Update für die Benutzerschnittstelle. Hat das schon jemand gemacht? Kommt der Adapter danach damit klar?
                  Aktuell läuft es sehr gut mit dem Adapter, deswegen frage ich mal.

                  abce9a54-4e1d-41cc-88f1-444fcc90ec53-image.png

                  H 1 Reply Last reply
                  0
                  • H Hofmann IOBRF

                    Es gibt in der App ein Update für die Benutzerschnittstelle. Hat das schon jemand gemacht? Kommt der Adapter danach damit klar?
                    Aktuell läuft es sehr gut mit dem Adapter, deswegen frage ich mal.

                    abce9a54-4e1d-41cc-88f1-444fcc90ec53-image.png

                    H Offline
                    H Offline
                    Hofmann IOBRF
                    wrote on last edited by
                    #219

                    @hofmann-iobrf ist hier noch jemand?

                    ArmilarA 1 Reply Last reply
                    0
                    • H Hofmann IOBRF

                      @hofmann-iobrf ist hier noch jemand?

                      ArmilarA Offline
                      ArmilarA Offline
                      Armilar
                      Most Active Forum Testing
                      wrote on last edited by
                      #220

                      @hofmann-iobrf

                      ja, der Adapter reicht nur die Daten durch... Du kannst das Update machen

                      Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                      https://github.com/joBr99/nspanel-lovelace-ui/wiki

                      Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                      H 1 Reply Last reply
                      1
                      • ArmilarA Armilar

                        @hofmann-iobrf

                        ja, der Adapter reicht nur die Daten durch... Du kannst das Update machen

                        H Offline
                        H Offline
                        Hofmann IOBRF
                        wrote on last edited by
                        #221

                        @armilar Ja, hat geklappt. Funktioniert alles. Nur die Energiedaten kommen jetzt noch unregelmäßiger. Tlw. 2h später.

                        apollon77A 1 Reply Last reply
                        0
                        • H Hofmann IOBRF

                          @armilar Ja, hat geklappt. Funktioniert alles. Nur die Energiedaten kommen jetzt noch unregelmäßiger. Tlw. 2h später.

                          apollon77A Offline
                          apollon77A Offline
                          apollon77
                          wrote on last edited by
                          #222

                          @hofmann-iobrf Das wäre eine Frage an Daikin, da kann der Adapter leider nichts tun.

                          Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                          • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                          • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                          1 Reply Last reply
                          0
                          • M Offline
                            M Offline
                            mhuber
                            wrote on last edited by
                            #223

                            Hi,

                            ich habe ein neues Innengerät bekommen, hab bis jetzt immer den anderen Adapter (lokale Kommunikation) verwendet, das geht beim neuen Innengerät nicht mehr. Habe nun den Cloud Adapter Version 0.4.11 installiert.
                            Connect usw. funktioniert, Devices werden offline angezeigt aber das dürfte normal sein wie ich hier gelesen habe.
                            Ich kann aber kein Gerät ein oder ausschalten, woran kann das liegen? Das wäre ja "onOffMode" oder? Habe auch ein paar Minuten gewartet, es tut sich nichts.
                            Kann mir jemand helfen! Danke!

                            F 1 Reply Last reply
                            0
                            • M mhuber

                              Hi,

                              ich habe ein neues Innengerät bekommen, hab bis jetzt immer den anderen Adapter (lokale Kommunikation) verwendet, das geht beim neuen Innengerät nicht mehr. Habe nun den Cloud Adapter Version 0.4.11 installiert.
                              Connect usw. funktioniert, Devices werden offline angezeigt aber das dürfte normal sein wie ich hier gelesen habe.
                              Ich kann aber kein Gerät ein oder ausschalten, woran kann das liegen? Das wäre ja "onOffMode" oder? Habe auch ein paar Minuten gewartet, es tut sich nichts.
                              Kann mir jemand helfen! Danke!

                              F Offline
                              F Offline
                              FritzTheCat
                              wrote on last edited by
                              #224

                              @mhuber Hallo, ja "onOffMode" ist der richtige Schalter, aber da muss man normalerweise nicht warten. Bei mir ist die Verzögerung ganz gleich wie bei der normalen Fernbedienung direkt oder ca. 1 Sekunde.

                              Das Gerät wird allerdings auch nicht offline angezeigt:

                              2d415c55-5a60-4b10-b3f4-6514ac69a3b2-grafik.png

                              129875bf-d833-432d-b610-a84c0fe64ede-grafik.png

                              Vielleicht findest Du eine Fehlermelung im Log?

                              ad84a45a-0114-4170-bb8e-83a18ad6bf14-grafik.png

                              M 1 Reply Last reply
                              0
                              • F FritzTheCat

                                @mhuber Hallo, ja "onOffMode" ist der richtige Schalter, aber da muss man normalerweise nicht warten. Bei mir ist die Verzögerung ganz gleich wie bei der normalen Fernbedienung direkt oder ca. 1 Sekunde.

                                Das Gerät wird allerdings auch nicht offline angezeigt:

                                2d415c55-5a60-4b10-b3f4-6514ac69a3b2-grafik.png

                                129875bf-d833-432d-b610-a84c0fe64ede-grafik.png

                                Vielleicht findest Du eine Fehlermelung im Log?

                                ad84a45a-0114-4170-bb8e-83a18ad6bf14-grafik.png

                                M Offline
                                M Offline
                                mhuber
                                wrote on last edited by
                                #225

                                @fritzthecat ist bei mir so nicht gegangen, Adapter deinstalliert, nochmal installiert und es geht, komisch....
                                Wie bekommen Du das "online" in grün hin? Bei mir zeigt es offline, aber es scheint alles zu gehen

                                ce26dd61-9531-4e12-bd0a-4cae9fbb5354-image.png

                                apollon77A 1 Reply Last reply
                                0
                                • M mhuber

                                  @fritzthecat ist bei mir so nicht gegangen, Adapter deinstalliert, nochmal installiert und es geht, komisch....
                                  Wie bekommen Du das "online" in grün hin? Bei mir zeigt es offline, aber es scheint alles zu gehen

                                  ce26dd61-9531-4e12-bd0a-4cae9fbb5354-image.png

                                  apollon77A Offline
                                  apollon77A Offline
                                  apollon77
                                  wrote on last edited by
                                  #226

                                  @mhuber Es gibt wohl einige Geräte die den Online Status nicht korrekt zurückmelden ... andere gehen. Schau mal GitHub issues. Haben bisher noch keine Lösung

                                  Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                  • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                  • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                  1 Reply Last reply
                                  0
                                  • ArmilarA Armilar

                                    @lemmi

                                    Hallo zusammen,

                                    habe mal ein wenig Zeit gefunden, um das Skript auf alle Device-Typen und Adapterinstanzen anzupassen.

                                    TypeScript anlegen. Inhalt reinwerfen. Sollte nichts angepasst werden müssen. Skript starten...

                                    Die Daten für jedes Daikin-Device in der Onnecta-App (Klima, Wärmepumpe, heating, cooling, Total, etc.) werden unter 0_userdata.0.daikin-cloud.... angelegt.

                                    @apollon77 - evtl. kann man das in den Adapter schreddern...

                                    /* TypeScript (TS) @Armilar
                                     *
                                     * This Script will read the consumption Data from Daikin-Cloud adapter and transform the raw data into individual data points similar to how it's shown in the Daikin Onecta App.
                                     * It will also sum up the historic consumption from the current and previous year and update the total consumption meter going forward.
                                     * 
                                     * The data is created in the following path analogous to the daikin cloud data
                                     * 0_userdata.0.daikin-cloud.0...
                                     * 
                                     * Createtd: 14.11.2024
                                     */
                                    
                                    // Log-Mode
                                    const logMode: any = 'info'; // 'info' or 'debug'
                                    // Path in 0_userdata
                                    const mainPath: string = '0_userdata.0.';
                                    // Onnecta hours (if d-raw)
                                    const hourly: Array<string>  = ["00:00 - 02:00", "02:00 - 04:00", "04:00 - 06:00", "06:00 - 08:00", "08:00 - 10:00", "10:00 - 12:00", "12:00 - 14:00", "14:00 - 16:00", "16:00 - 18:00", "18:00 - 20:00", "20:00 - 22:00", "22:00 - 24:00"];
                                    // Onnecta weekdays (if w-raw)
                                    const daily: Array<string>   = ["01_Monday", "02_Tuesday", "03_Wednesday", "04_Thursday", "05_Friday", "06_Saturday", "07_Sunday"];
                                    // Onnecta months  (if m-raw)
                                    const monthly: Array<string> = ["01_Januray", "02_February", "03_March", "04_April", "05_May", "06_June", "07_July", "08_August", "09_September", "10_October", "11_November", "12_December"];
                                    
                                    let devices: string[] = getDeviceNames("daikin-cloud.");
                                    
                                    function setOrCreateState(id: string, value: any, forceCreation: boolean = true, common: Partial<iobJS.StateCommon> = {}, callback?: iobJS.SetStateCallback): void {
                                        if (!existsState(id)) {
                                            createState(id, value, forceCreation, common, callback);
                                        } else {
                                            setState(id, value, true);
                                        }
                                    }
                                    
                                    // Get Daikin Device Names
                                    function getDeviceNames(vAdapterInstance: string): string[] {
                                        let devices = [];
                                        $(vAdapterInstance + '*raw').each(function (id) {
                                            if (devices.indexOf(id) == -1) {
                                                devices.push(id);
                                            }
                                        });
                                        return devices;
                                    }
                                    
                                    async function writeConsumtionData(path: string, rawType: string, rawData: number[]): Promise<void> {
                                        log(rawType + ' - ' + rawData, logMode);
                                        let total: number = 0;
                                        switch (rawType) {
                                    	case "d-raw":
                                                for (let j = 0; j < 12; j++) {
                                                    let dpName = "Yesterday." + hourly[j];
                                                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j], role: 'value.power', unit: 'kWh'});
                                                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                                                    total = total + rawData[j];
                                                }
                                                setOrCreateState(mainPath + path + 'Total.Yesterday', total, true, {type: 'number', name: 'Yesterday', role: 'value.power',unit: 'kWh'});
                                                total = 0;
                                                for (let j = 12; j < 24; j++) {
                                                    let dpName = "Today." + hourly[j-12];
                                                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: hourly[j-12], role: 'value.power', unit: 'kWh'});
                                                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                                                    total = total + rawData[j];
                                                }
                                                setOrCreateState(mainPath + path + 'Total.Today', total, true, {type: 'number', name: 'Today', role: 'value.power',unit: 'kWh'});
                                                break;
                                    	case "w-raw":
                                                for (let j = 0; j < 7; j++) {
                                                    let dpName = "LastWeek." + daily[j];
                                                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j], role: 'value.power', unit: 'kWh'});
                                                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                                                    total = total + rawData[j];
                                                }
                                                setOrCreateState(mainPath + path + 'Total.LastWeek', total, true, {type: 'number', name: 'LastWeek', role: 'value.power',unit: 'kWh'});
                                                total = 0;
                                                for (let j = 7; j < 14; j++) {
                                                    let dpName = "ThisWeek." + daily[j-7];
                                                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: daily[j-7], role: 'value.power', unit: 'kWh'});
                                                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                                                    total = total + rawData[j];
                                                }
                                                setOrCreateState(mainPath + path + 'Total.ThisWeek', total, true, {type: 'number', name: 'ThisWeek', role: 'value.power',unit: 'kWh'});
                                                break;
                                    	case "m-raw":
                                                for (let j = 0; j < 12; j++) {
                                                    let dpName = "LastYear." + monthly[j];
                                                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j], role: 'value.power', unit: 'kWh'});
                                                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                                                    total = total + rawData[j];
                                                }
                                                setOrCreateState(mainPath + path + 'Total.LastYear', total, true, {type: 'number', name: 'LastYear', role: 'value.power',unit: 'kWh'});
                                                total = 0;
                                                for (let j = 12; j < 24; j++) {
                                                    let dpName = "ThisYear." + monthly[j-12];
                                                    setOrCreateState(mainPath + path + dpName, rawData[j], true, {type: 'number', name: monthly[j-12], role: 'value.power', unit: 'kWh'});
                                                    log(mainPath + path + dpName + ': ' + rawData[j], logMode);
                                                    total = total + rawData[j];
                                                }
                                                setOrCreateState(mainPath + path + 'Total.ThisYear', total, true, {type: 'number', name: 'ThisYear', role: 'value.power',unit: 'kWh'});
                                                break;
                                        }
                                    }
                                    
                                    async function readConsumtionData(): Promise<void> {
                                        for (let i = 0; i < devices.length; i++) {
                                            //get d-raw; w-raw; m-raw
                                            let dev: any = devices[i].split('.');
                                            let state = getState(devices[i]).val;
                                            state = state.slice(1,-1);
                                            state = state.replaceAll('null', '0');
                                            await writeConsumtionData(devices[i].slice(0,-5), dev[dev.length -1], Array.from(state.split(','), Number));
                                        }
                                    }
                                    readConsumtionData();
                                    
                                    on({ id: [].concat(Array.prototype.slice.apply($('daikin-cloud.*.lastUpdateReceived'))), change: 'any' }, async (obj) => {
                                        await readConsumtionData();
                                    });
                                    
                                    T Offline
                                    T Offline
                                    topsurfer
                                    wrote on last edited by topsurfer
                                    #227

                                    @armilar Auch von mir ein Danke für das Script, lief auf Anhieb!

                                    Frage (hoffe es ist nicht zu OT),
                                    Jetzt sieht man ja die DP auch mit historischen Daten (z.B. letzte 12 Monate je ein Monatsverbrauch), gibt es einen Trick, diese Daten mit entsprechendem Timestamp in eine InfluxDB zu bekommen, oder ist händige Arbeit angesagt (mittels insert ...)

                                    2025-05-27_150942.png

                                    Die jetzt neuen Monatswerte würde ich per Cron am Monatsende dann in die DB schreiben lassen (oder?)

                                    ArmilarA 1 Reply Last reply
                                    1
                                    • apollon77A Offline
                                      apollon77A Offline
                                      apollon77
                                      wrote on last edited by
                                      #228

                                      @Armilar Soll ich den Post mit dem Skript mal in der Adapter Readme verlinken?

                                      Beitrag hat geholfen? Votet rechts unten im Beitrag :-) https://paypal.me/Apollon77 / https://github.com/sponsors/Apollon77

                                      • Debug-Log für Instanz einschalten? Admin -> Instanzen -> Expertenmodus -> Instanz aufklappen - Loglevel ändern
                                      • Logfiles auf Platte /opt/iobroker/log/… nutzen, Admin schneidet Zeilen ab
                                      ArmilarA 1 Reply Last reply
                                      1
                                      • apollon77A apollon77

                                        @Armilar Soll ich den Post mit dem Skript mal in der Adapter Readme verlinken?

                                        ArmilarA Offline
                                        ArmilarA Offline
                                        Armilar
                                        Most Active Forum Testing
                                        wrote on last edited by
                                        #229

                                        @apollon77

                                        ja gerne... :blush:

                                        hier verschwindet es ja irgendwann im "ich habe ja nicht alle Posts gelesen" ;-)

                                        Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                        https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                        1 Reply Last reply
                                        0
                                        • T topsurfer

                                          @armilar Auch von mir ein Danke für das Script, lief auf Anhieb!

                                          Frage (hoffe es ist nicht zu OT),
                                          Jetzt sieht man ja die DP auch mit historischen Daten (z.B. letzte 12 Monate je ein Monatsverbrauch), gibt es einen Trick, diese Daten mit entsprechendem Timestamp in eine InfluxDB zu bekommen, oder ist händige Arbeit angesagt (mittels insert ...)

                                          2025-05-27_150942.png

                                          Die jetzt neuen Monatswerte würde ich per Cron am Monatsende dann in die DB schreiben lassen (oder?)

                                          ArmilarA Offline
                                          ArmilarA Offline
                                          Armilar
                                          Most Active Forum Testing
                                          wrote on last edited by
                                          #230

                                          @topsurfer

                                          ja, du kannst je Gerät die Totalwerte nutzen...

                                          b160233b-086f-48a1-a957-209584e99bde-image.png

                                          Wenn die sich ändern in die influxdb schreiben...

                                          Sollte ja alles vorhanden sein, was für eine Auswertung erforderlich ist.

                                          Installationsanleitung, Tipps, Alias-Definitionen, FAQ für das Sonoff NSPanel mit lovelace UI unter ioBroker
                                          https://github.com/joBr99/nspanel-lovelace-ui/wiki

                                          Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                                          T 1 Reply Last reply
                                          0
                                          Reply
                                          • Reply as topic
                                          Log in to reply
                                          • Oldest to Newest
                                          • Newest to Oldest
                                          • Most Votes


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          327

                                          Online

                                          32.7k

                                          Users

                                          82.5k

                                          Topics

                                          1.3m

                                          Posts
                                          Community
                                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                                          ioBroker Community 2014-2025
                                          logo
                                          • Login

                                          • Don't have an account? Register

                                          • Login or register to search.
                                          • First post
                                            Last post
                                          0
                                          • Home
                                          • Recent
                                          • Tags
                                          • Unread 0
                                          • Categories
                                          • Unreplied
                                          • Popular
                                          • GitHub
                                          • Docu
                                          • Hilfe