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

                        665
                        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