Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. JavaScript
    5. [gelöst] 1 + 2 = 12?

    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] 1 + 2 = 12?

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

      Ich möchte zum heutigen Tag ein paar tage hinzuzählen. Nachdem das nicht geklappt hat hab ich es Schritt für Schritt programmiert:

      on(DPBewaesserungAnzalTage, async (data) => { 
         let day = new Date();
          let days:number = getState(DPBewaesserungAnzalTage).val;
          let date:number = day.getDate();
          let newDate:number = date + days;
          console.log(days);
          console.log(date);
          console.log(newDate);
          day.setDate(newDate);
          console.log(day.toLocaleString());
      });
      

      Gebe ich im Datenpunkt "DPBewaesserungAnzalTage" 5 ein, bekomme ich in newDate 225, gebe ich 6 ein bekomme ich 226, wie wenn er strings zusammen legt:
      Man beachte, dass die variablen alle (ausser day) vom typ number sind.
      8c359b30-f52e-46d0-bec9-4f3e63f565d7-grafik.png

      gebe ich den code in https://playcode.io/typescript ein (natürlich mit einer konstanten anstelle des Datenpunktes) läuft alles richtig:
      ec7a2005-9d13-4a0c-914b-a1057fcd5dfd-grafik.png

      Was mach ich falsch???

      Homoran haus-automatisierung Jey Cee paul53 4 Replies Last reply Reply Quote 0
      • Homoran
        Homoran Global Moderator Administrators @iob69 last edited by

        @iob69 sagte in 1 + 2 = 12?:

        Gebe ich im Datenpunkt "DPBewaesserungAnzalTage" 5 ein, bekomme ich in newDate 225, gebe ich 5 ein bekomme ich 226,

        einmal 5 und einmal 5???

        @iob69 sagte in 1 + 2 = 12?:

        wie wenn er strings zusammen legt:
        Man beachte, dass die variablen alle (ausser day) vom typ number sind.

        und der eingelesene Wert ist vom Typ???

        I 1 Reply Last reply Reply Quote 1
        • haus-automatisierung
          haus-automatisierung Developer Most Active @iob69 last edited by haus-automatisierung

          @iob69 sagte in 1 + 2 = 12?:

          Man beachte, dass die variablen alle (ausser day) vom typ number sind.

          Was gibt dir denn

          console. log (typeof days);
          console. log (typeof date);
          

          Und welchen Datentyp hat der State mit der Objekt ID DPBewaesserungAnzalTage

          1 Reply Last reply Reply Quote 2
          • Jey Cee
            Jey Cee Developer @iob69 last edited by

            @iob69 nur weil du sagst das der Type number sein soll ist es keineswegs eine Nummer. Wenn du mit typeof prüfst ist sicher eins davon ein String.

            Im Zweifel musst du den Typ deiner Eingabe mit Int() Konvertieren.

            Als erstes würde ich jedoch Mal den Datenpunkt checken ob der auch als number angelegt wurde

            I 1 Reply Last reply Reply Quote 2
            • paul53
              paul53 @iob69 last edited by

              @iob69 sagte: Datenpunkt "DPBewaesserungAnzalTage" 5 ein

              Versuche es mal mit

                  let days = parseInt(getState(DPBewaesserungAnzalTage).val);
              
              1 Reply Last reply Reply Quote 1
              • I
                iob69 @Homoran last edited by

                @homoran sagte in 1 + 2 = 12?:

                einmal 5 und einmal 5???

                oben korrigiert.

                1 Reply Last reply Reply Quote 0
                • I
                  iob69 @Jey Cee last edited by iob69

                  @jey-cee sagte in 1 + 2 = 12?:

                  nur weil du sagst das der Type number sein soll ist es keineswegs eine Nummer. Wenn du mit typeof prüfst ist sicher eins davon ein String.

                  Ja tatsächlich liefert mit der Datenpunkt DPBewaesserungAnzalTage einen String. Aber der ist vom Typ number!

                  {
                    "common": {
                      "type": "number",
                      "desc": "Days between irrigations",
                      "name": "0_userdata.0.Steuerzentrale.Garten.Bewaesserung.AnzalTage",
                      "role": "state"
                    },
                    "native": {},
                    "type": "state",
                    "from": "system.adapter.javascript.0",
                    "user": "system.user.admin",
                    "ts": 1750595424888,
                    "_id": "0_userdata.0.Steuerzentrale.Garten.Bewaesserung.AnzalTage",
                    "acl": {
                      "object": 1636,
                      "state": 1636,
                      "owner": "system.user.admin",
                      "ownerGroup": "system.group.administrator"
                    }
                  }
                  

                  Wieso liefert der mit einen String zurück, dann ist doch die Typenangabe völlig überflüssig!

                  Ok, dann halt in number korrigieren, ist aber schon komisch.

                  Edit: Das Control JQui Input liefert mir offenbar den String. Das hab ich nicht beachtet, dass der ja wohl auch für Buchstaben-Eingabe funktioniert.
                  Allerdings kann man dort angeben "als string" was nicht der Fall war. Und man kann sogar stellen hinter dem Komma angeben. Er liefert trotzdem einen String...

                  Homoran haus-automatisierung 2 Replies Last reply Reply Quote 0
                  • Homoran
                    Homoran Global Moderator Administrators @iob69 last edited by

                    @iob69 sagte in [gelöst] 1 + 2 = 12?:

                    Datenpunkt DPBewaesserungAnzalTage einen String. Aber der ist vom Typ number!

                    Der DP kann vom Typ sein was er will, wenn du da einen String reinschreibst.
                    Dann gibt es zwar eine Meldung im log, die hastcdu wohl ignoriert.

                    1 Reply Last reply Reply Quote 1
                    • haus-automatisierung
                      haus-automatisierung Developer Most Active @iob69 last edited by

                      @iob69 sagte in [gelöst] 1 + 2 = 12?:

                      Edit: Das Control JQui Input liefert mir offenbar den String. Das hab ich nicht beachtet, dass der ja wohl auch für Buchstaben-Eingabe funktioniert.
                      Allerdings kann man dort angeben "als string" was nicht der Fall war. Und man kann sogar stellen hinter dem Komma angeben. Er liefert trotzdem einen String...

                      Dann ist das wohl ein Bug (oder so dokumentiert). Ansonsten könntest Du auch einen Alias nutzen um immer einen numerischen Wert zu parsen. Das Ziel von dem Input dann auf String umstellen, damit es keine Warnung im Log gibt

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

                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      928
                      Online

                      31.8k
                      Users

                      80.0k
                      Topics

                      1.3m
                      Posts

                      5
                      9
                      194
                      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