Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. [Gelöst] Ölvorrat Enddatum berechnen

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    [Gelöst] Ölvorrat Enddatum berechnen

    This topic has been deleted. Only users with topic management privileges can see it.
    • B
      bloop last edited by

      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?

      draexler 1 Reply Last reply Reply Quote 0
      • draexler
        draexler @bloop last edited by

        @bloop zeig mal die Einstellungen vom Datenpunkt der Liste

        B 1 Reply Last reply Reply Quote 0
        • B
          bloop @draexler last edited by

          @draexler

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

          Sollte eigentlich auch passen

          B 1 Reply Last reply Reply Quote 0
          • B
            bloop @bloop last edited by

            @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.

            draexler paul53 2 Replies Last reply Reply Quote 0
            • draexler
              draexler @bloop last edited by draexler

              @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 Reply Last reply Reply Quote 0
              • paul53
                paul53 @bloop last edited by

                @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 1 Reply Last reply Reply Quote 0
                • B
                  bloop @paul53 last edited by

                  @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

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @bloop last edited by

                    @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 1 Reply Last reply Reply Quote 0
                    • B
                      bloop @paul53 last edited by

                      @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);
                      });
                      
                      
                      paul53 1 Reply Last reply Reply Quote 0
                      • paul53
                        paul53 @bloop last edited by

                        @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 1 Reply Last reply Reply Quote 0
                        • B
                          bloop @paul53 last edited by

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

                          Herzlichen Dank!

                          1 Reply Last reply Reply Quote 0
                          • First post
                            Last post

                          Support us

                          ioBroker
                          Community Adapters
                          Donate

                          754
                          Online

                          31.9k
                          Users

                          80.1k
                          Topics

                          1.3m
                          Posts

                          3
                          26
                          645
                          Loading More Posts
                          • Oldest to Newest
                          • Newest to Oldest
                          • Most Votes
                          Reply
                          • Reply as topic
                          Log in to reply
                          Community
                          Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                          The ioBroker Community 2014-2023
                          logo