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 @draexler last edited by

      @draexler
      Herzlichen Dank!
      Mach mich gleich an die Arbeit 😉

      1 Reply Last reply Reply Quote 0
      • 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

                            581
                            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