Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. State ... has to be type "string" but received type "object"

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    State ... has to be type "string" but received type "object"

    This topic has been deleted. Only users with topic management privileges can see it.
    • S
      Sneak-L8 last edited by

      Hallo zusammen,

      ich weiß, es gab da eine Änderng/verschärfung der Prüfungen. Aber wie mache ich es richtig?

      Ich habe einen Statem it Zeitstempel als type = string, role = datetime. Diesem weise ich bisher einen aktuellen Zeitstempel mit new date() zu.

      Wie erflgt die Zuweisung richtig? Mit .toISOString()? Oder sollte ich den State anders definieren?

      Viele Grüße
      Sneak-L8

      dslraser paul53 2 Replies Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @Sneak-L8 last edited by

        @sneak-l8 sagte in State ... has to be type "string" but received type "object":

        Oder sollte ich den State anders definieren?

        Vielleicht hilft Dir das weiter.
        https://www.iobroker.net/#de/documentation/dev/stateroles.md

        S 1 Reply Last reply Reply Quote 0
        • S
          Sneak-L8 @dslraser last edited by

          @dslraser Danke für den Hinweis.
          Musste erst auch Chrome wechseln, mit Firefox blieb die Seite leider bis auf den Balken oben leer...

          Role = date ist wohl das richtige. datetime finde ich nicht, ist doch aber auch sehr üblich gewesen. Wird auch nicht als Fehler gemeldet.
          Leider steht auf der Seite nicht, wie ein Datum korrekt als String übergeben wird (also welches Format). Aber da der state als Datum mit new Date(state) ausgelesen wird und dort das ISO-Format erwartet wird, ist wohl toISOString() ie Antwort ...

          dslraser 1 Reply Last reply Reply Quote 0
          • dslraser
            dslraser Forum Testing Most Active @Sneak-L8 last edited by

            @sneak-l8 sagte in State ... has to be type "string" but received type "object":

            datetime finde ich nicht,

            Es gibt z.B. auch value.datetime
            Ob das hilft oder wie man es übergibt weiß ich nicht.

            Auf der Seite suchen.

            Screenshot_20210921-115805_Chrome.jpg

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

              @dslraser sagte: Es gibt z.B. auch value.time

              Das sind die ms seit 1.1.1970 0:00 Uhr UTC, also eine Zahl.

              1 Reply Last reply Reply Quote 0
              • paul53
                paul53 @Sneak-L8 last edited by paul53

                gelöscht.

                S 1 Reply Last reply Reply Quote 0
                • S
                  Sneak-L8 @paul53 last edited by

                  @dslraser Danke für den Hinweis. Hatte datetime selbst nicht gesehen, mit Textsuche klappt's dann auch 🙂 Und damit ist datetime ja auch nicht falsch, nur meine Zuweisung mit dem Date-Objekt.

                  @paul53 formatDate() führt hier m.E. nicht zum Ziel, da datetime ja gerade nicht nach jedes Gusto formatiert werden soll sondern nach einem festen Format. Leider steht da nur Systemformat und nicht eine konkrete Funktion. Aber da new Date(xxx) mit xxx = ISOString funktioniert, halte ich asISOString() für sehr wahrscheinlich.

                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @Sneak-L8 last edited by paul53

                    @sneak-l8 sagte: new Date(xxx) mit xxx = ISOString funktioniert

                    Ja, wenn Du mit dem Anzeigeformat leben kannst.

                    Bild_2021-09-21_132252.png

                    Sonst verwende besser .toLocaleString()

                    Bild_2021-09-21_132606.png

                    S 1 Reply Last reply Reply Quote 0
                    • S
                      Sneak-L8 @paul53 last edited by

                      @paul53 Hm, dann hat ioBroker bisher (es funktioniert ja "noch" mit Objekt) den toString() gemnommen. Denn so standen sie bisher drin.
                      Dann wäre aber schön, das würde so in der Doku stehen. Ist der vis-Adapter da flexibel und nimmt sowohl das Format aus toSting() als auch toISOString()?

                      1 Reply Last reply Reply Quote 0
                      • AlCalzone
                        AlCalzone Developer last edited by

                        Um noch zur Verwirrung beizutragen: In der englischen (Originalvariante) stehen date und datetime als deprecated (durchgestrichen).
                        https://www.iobroker.net/#en/documentation/dev/stateroles.md

                        Diese sollten nicht mehr verwendet werden und stattdessen nur value.time. Dort new Date().getTime() reinschreiben, dann gibts auch keine Format-Verwirrungen.

                        S 1 Reply Last reply Reply Quote 0
                        • S
                          Sneak-L8 @AlCalzone last edited by

                          @alcalzone Danke, das ist eine klare Aussage.
                          Wie mache ich das aber mit bestehenden Adaptern? Den bestehenden State ändern? Das ist wohl auch deshalb schwierig, weil dann von string auf number gewechselt wird und die in der Datenbank (SQL.0) in unterschiedlichen Tabellen stehen ...

                          AlCalzone paul53 2 Replies Last reply Reply Quote 0
                          • AlCalzone
                            AlCalzone Developer @Sneak-L8 last edited by

                            @sneak-l8 Das macht's wohl schwieriger. Meine Meinung: Lass es so wie es ist und plane für neue Entwicklungen damit, nur noch value.time zu nutzen.

                            1 Reply Last reply Reply Quote 1
                            • paul53
                              paul53 @Sneak-L8 last edited by

                              @sneak-l8
                              Verwende Rolle "date", da laut Doku

                              date common.type = string - parsable by new Date(ddd) string

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

                              Support us

                              ioBroker
                              Community Adapters
                              Donate

                              832
                              Online

                              31.7k
                              Users

                              79.8k
                              Topics

                              1.3m
                              Posts

                              4
                              13
                              1071
                              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