Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • 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

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

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. [Gelöst] Ölvorrat Enddatum berechnen

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.3k

[Gelöst] Ölvorrat Enddatum berechnen

Geplant Angeheftet Gesperrt Verschoben Skripten / Logik
26 Beiträge 3 Kommentatoren 743 Aufrufe 2 Watching
  • Ä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.
  • B bloop

    Hallo,
    Ich habe mir die Datenpunkte entsprechend meinen Vorgaben angepasst.
    Leider bekomme jedoch bei der Liste einen Fehler welchen ich nicht zuordnen kann.

    javascript.0
    2022-10-08 00:00:00.346	error	at processImmediate (node:internal/timers:466:21)
    
    javascript.0
    2022-10-08 00:00:00.346	error	at Immediate.<anonymous> (/opt/iobroker/node_modules/@iobroker/js-controller-adapter/src/lib/adapter/adapter.js:5909:56)
    
    javascript.0
    2022-10-08 00:00:00.345	error	at Object.stateChange (/opt/iobroker/node_modules/iobroker.javascript/main.js:596:29)
    
    javascript.0
    2022-10-08 00:00:00.345	error	at Object.callback (/opt/iobroker/node_modules/iobroker.javascript/lib/sandbox.js:1214:38)
    
    javascript.0
    2022-10-08 00:00:00.344	error	at Object.<anonymous> (script.js.common.Heizung.Öl-Verbrauch:31:9)
    
    javascript.0
    2022-10-08 00:00:00.340	error	script.js.common.Heizung.Öl-Verbrauch: TypeError: Liste.push is not a function
    

    TypeError: Liste.push is not a function sagt mir überhaupt nichts...

    4e6e747a-0fe2-4f68-ac53-b4aebb280331-image.png

    Den vorherigen Tagesverbrauch erhalte ich um 0.00 von Sourceanalytics.

      "type": "state",
      "common": {
        "name": "01_previousDay",
        "type": "number",
        "role": "value",
        "read": true,
        "write": false,
        "unit": "l",
        "def": 0
    

    Sollte doch eigentlich so funktionieren, oder wo hat sich hier etwas eingeschlichen?

    draexlerD Online
    draexlerD Online
    draexler
    schrieb am zuletzt editiert von
    #17

    @bloop zeig mal die Einstellungen vom Datenpunkt der Liste

    B 1 Antwort Letzte Antwort
    0
    • draexlerD draexler

      @bloop zeig mal die Einstellungen vom Datenpunkt der Liste

      B Offline
      B Offline
      bloop
      schrieb am zuletzt editiert von
      #18

      @draexler

      {
       "common": {
         "name": "Durchschnittsvortagsverbräuche",
         "desc": "Manuell erzeugt",
         "role": "state",
         "type": "string",
         "read": true,
         "write": true,
         "def": 0
       },
      

      Sollte eigentlich auch passen

      B 1 Antwort Letzte Antwort
      0
      • B bloop

        @draexler

        {
         "common": {
           "name": "Durchschnittsvortagsverbräuche",
           "desc": "Manuell erzeugt",
           "role": "state",
           "type": "string",
           "read": true,
           "write": true,
           "def": 0
         },
        

        Sollte eigentlich auch passen

        B Offline
        B Offline
        bloop
        schrieb am zuletzt editiert von
        #19

        @bloop
        Mit "rolle" und "type" wie bei dir funktionierts. Allerdings erhalte ich immer noch die Warnung das der Datenpunkt eine Nummer möchte und String erhält.

        draexlerD paul53P 2 Antworten Letzte Antwort
        0
        • B bloop

          @bloop
          Mit "rolle" und "type" wie bei dir funktionierts. Allerdings erhalte ich immer noch die Warnung das der Datenpunkt eine Nummer möchte und String erhält.

          draexlerD Online
          draexlerD Online
          draexler
          schrieb am zuletzt editiert von draexler
          #20

          @bloop Ändere es mal so:

          
          {
            "common": {
              "name": "Durchschnittsvortagesverbräuche",
              "desc": "Manuell erzeugt",
              "role": "list",
              "type": "array",
              "read": true,
              "write": true
            },
          
          

          Und dann in diesen Datenpunkt eine „0“ eintragen und dann das Skript starten.

          1 Antwort Letzte Antwort
          0
          • B bloop

            @bloop
            Mit "rolle" und "type" wie bei dir funktionierts. Allerdings erhalte ich immer noch die Warnung das der Datenpunkt eine Nummer möchte und String erhält.

            paul53P Offline
            paul53P Offline
            paul53
            schrieb am zuletzt editiert von
            #21

            @bloop sagte: Warnung das der Datenpunkt eine Nummer möchte und String erhält.

            Du meinst umgekehrt? Du schreibst eine Zahl in "Datum_Ölstand_leer". Richtig:

            Bild_2022-10-08_135332723.png

            Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
            Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

            B 1 Antwort Letzte Antwort
            0
            • paul53P paul53

              @bloop sagte: Warnung das der Datenpunkt eine Nummer möchte und String erhält.

              Du meinst umgekehrt? Du schreibst eine Zahl in "Datum_Ölstand_leer". Richtig:

              Bild_2022-10-08_135332723.png

              B Offline
              B Offline
              bloop
              schrieb am zuletzt editiert von
              #22

              @paul53 nein war schon richtig

              Aktuell funktioniert das gesamte Skript wieder nicht. Ich teste gerade an was es liegen könnte.
              Es scheint so als würde die Listenfunktion nicht ordnungsgemäß funktioniert...

              14:50:07.932	error	javascript.0 (59155) script.js.common.Heizung.Öl-Verbrauch1: TypeError: Liste.shift is not a function
              14:50:07.932	error	javascript.0 (59155) at Object.<anonymous> (script.js.common.Heizung.Öl-Verbrauch1:32:9)
              
              on({id: "0_userdata.0.test"/*test*/, change: "any"}, async function (obj) {
                var value = obj.state.val;
                var oldValue = obj.oldState.val;
               Liste[Liste.length - 1] = getState("0_userdata.0.test").val;
                Liste.shift();
                setState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche"/*Durchschnittsvortagsverbräuche*/, Liste, true);
                Resttage = parseFloat(getState("0_userdata.0.Heizung.Füllstand_Öltank").val) / mathMean(Liste);
                Enddatum = parseFloat((new Date().getTime())) + parseFloat(86400000) * Resttage;
                setState("0_userdata.0.Heizung.Öl_Heizung.Datum_Ölstand_leer"/*Datum_Ölstand_leer*/, formatDate(getDateObject(Enddatum), "DD.MM.YYYY"), true);
              });
              

              cd269160-c4f7-4cde-8869-e2f489dd11aa-image.png

              paul53P 1 Antwort Letzte Antwort
              0
              • B bloop

                @paul53 nein war schon richtig

                Aktuell funktioniert das gesamte Skript wieder nicht. Ich teste gerade an was es liegen könnte.
                Es scheint so als würde die Listenfunktion nicht ordnungsgemäß funktioniert...

                14:50:07.932	error	javascript.0 (59155) script.js.common.Heizung.Öl-Verbrauch1: TypeError: Liste.shift is not a function
                14:50:07.932	error	javascript.0 (59155) at Object.<anonymous> (script.js.common.Heizung.Öl-Verbrauch1:32:9)
                
                on({id: "0_userdata.0.test"/*test*/, change: "any"}, async function (obj) {
                  var value = obj.state.val;
                  var oldValue = obj.oldState.val;
                 Liste[Liste.length - 1] = getState("0_userdata.0.test").val;
                  Liste.shift();
                  setState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche"/*Durchschnittsvortagsverbräuche*/, Liste, true);
                  Resttage = parseFloat(getState("0_userdata.0.Heizung.Füllstand_Öltank").val) / mathMean(Liste);
                  Enddatum = parseFloat((new Date().getTime())) + parseFloat(86400000) * Resttage;
                  setState("0_userdata.0.Heizung.Öl_Heizung.Datum_Ölstand_leer"/*Datum_Ölstand_leer*/, formatDate(getDateObject(Enddatum), "DD.MM.YYYY"), true);
                });
                

                cd269160-c4f7-4cde-8869-e2f489dd11aa-image.png

                paul53P Offline
                paul53P Offline
                paul53
                schrieb am zuletzt editiert von
                #23

                @bloop
                "setze für Letzte ein" ist falsch. Dann wird die Liste immer kürzer. Man muss an die Liste anfügen "füge als Letzte ein".

                Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                B 1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @bloop
                  "setze für Letzte ein" ist falsch. Dann wird die Liste immer kürzer. Man muss an die Liste anfügen "füge als Letzte ein".

                  B Offline
                  B Offline
                  bloop
                  schrieb am zuletzt editiert von
                  #24

                  @paul53
                  Klappt leider auch nicht

                  javascript.0 (59155) script.js.common.Heizung.Öl-Verbrauch: TypeError: Liste.push is not a function
                  
                  // Berechnung Resttage
                  if (getState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche").val) {
                    Liste = getState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche").val;
                  } else {
                    Liste = listsRepeat(getState("0_userdata.0.test").val, 14);
                  }
                  on({id: "0_userdata.0.test"/*test*/, change: "any"}, async function (obj) {
                    var value = obj.state.val;
                    var oldValue = obj.oldState.val;
                    Liste.push(getState("0_userdata.0.test").val);
                    Liste.shift();
                    setState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche"/*Durchschnittsvortagsverbräuche*/, Liste, true);
                    Resttage = parseFloat(getState("0_userdata.0.Heizung.Füllstand_Öltank").val) / mathMean(Liste);
                    Enddatum = parseFloat((new Date().getTime())) + parseFloat(86400000) * Resttage;
                    setState("0_userdata.0.Heizung.Öl_Heizung.Datum_Ölstand_leer"/*Datum_Ölstand_leer*/, formatDate(getDateObject(Enddatum), "DD.MM.YYYY"), true);
                  });
                  
                  
                  paul53P 1 Antwort Letzte Antwort
                  0
                  • B bloop

                    @paul53
                    Klappt leider auch nicht

                    javascript.0 (59155) script.js.common.Heizung.Öl-Verbrauch: TypeError: Liste.push is not a function
                    
                    // Berechnung Resttage
                    if (getState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche").val) {
                      Liste = getState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche").val;
                    } else {
                      Liste = listsRepeat(getState("0_userdata.0.test").val, 14);
                    }
                    on({id: "0_userdata.0.test"/*test*/, change: "any"}, async function (obj) {
                      var value = obj.state.val;
                      var oldValue = obj.oldState.val;
                      Liste.push(getState("0_userdata.0.test").val);
                      Liste.shift();
                      setState("0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche"/*Durchschnittsvortagsverbräuche*/, Liste, true);
                      Resttage = parseFloat(getState("0_userdata.0.Heizung.Füllstand_Öltank").val) / mathMean(Liste);
                      Enddatum = parseFloat((new Date().getTime())) + parseFloat(86400000) * Resttage;
                      setState("0_userdata.0.Heizung.Öl_Heizung.Datum_Ölstand_leer"/*Datum_Ölstand_leer*/, formatDate(getDateObject(Enddatum), "DD.MM.YYYY"), true);
                    });
                    
                    
                    paul53P Offline
                    paul53P Offline
                    paul53
                    schrieb am zuletzt editiert von
                    #25

                    @bloop sagte in [Gelöst] Ölvorrat Enddatum berechnen:

                    Klappt leider auch nicht

                    Wenn sich die Liste im Datenpunkt schon verkürzt hat, muss neu initialisiert werden: Stoppe das Skript, trage 0 in den Datenpunkt "0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche" ein und starte das Skript.

                    Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                    Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                    B 1 Antwort Letzte Antwort
                    0
                    • paul53P paul53

                      @bloop sagte in [Gelöst] Ölvorrat Enddatum berechnen:

                      Klappt leider auch nicht

                      Wenn sich die Liste im Datenpunkt schon verkürzt hat, muss neu initialisiert werden: Stoppe das Skript, trage 0 in den Datenpunkt "0_userdata.0.Heizung.Öl_Heizung.Durchschnittsvortagsverbräuche" ein und starte das Skript.

                      B Offline
                      B Offline
                      bloop
                      schrieb am zuletzt editiert von
                      #26

                      @paul53
                      Hat geklappt indem ich einen neuen Datenpunkt für die Durchschnittsverbräuche angelegt habe!

                      Herzlichen Dank!

                      1 Antwort Letzte Antwort
                      0
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      401

                      Online

                      32.6k

                      Benutzer

                      82.2k

                      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