Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. [gelöst] Adapter: wie TimezoneOffset ermitteln, getForeignState liefert keinen State

    NEWS

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

    • ioBroker goes Matter ... Matter Adapter in Stable

    • Monatsrückblick - April 2025

    [gelöst] Adapter: wie TimezoneOffset ermitteln, getForeignState liefert keinen State

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

      Nach meinem letzten etwas peinlichen Hilfeersuchen nun ein neues "Problemchen".

      Ich möchte im Adapter die vom Anbieter gelieferten Zeiten lokalisieren. getTimezoneOffset() steht im Adapter nicht zur Verfügung.

      Was wäre der empfohlene Weg, um UTC datetime-Werte in lokale Zeiten umzurechnen?

      Ein 2. Problem habe ich beim Lesen von fremden States. Laut Beschreibung soll dies mit adapter.getForeignState() ohne Probleme möglich sein.

             if(adapter.config.idRainSensor !== '') {        // use only rain sensor if exist
                  adapter.getForeignState(adapter.config.idRainSensor, function (err, idState) {
                      if (err) {
                          adapter.log.error(err);
      
                          return;
                      }
      
                      // id rain sensor valid
                      adapter.subscribeForeignStates(adapter.config.idRainSensor);
                  });
              }
      
      

      Kann mir jemand einen Adapter empfehlen, der analoges umgesetzt hat?

      Dies ist mir weder mit diesem noch einem anderen Datenpunkt gelungen. Beim Debuggen komme ich nicht in die nachfolgende Zeile "if (err) {", der Code wird ohne Fehlermeldung beim nächsten Codeblock fortgesetzt.

      Muss ich für die Nutzung von getForeignState zusätzlich Requirements erfüllen? Rechte setzen?

      Gibt es einen Adapter der getForeignState nutzt, wo ich mir eine Umsetzung anschauen kann?

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

        @greyhound:

        getTimezoneOffset() steht im Adapter nicht zur Verfügung. `
        https://wiki.selfhtml.org/wiki/JavaScript/Objekte/Date/getTimezoneOffset ist eine Javascript-Funktion, die auf Date-Objekte angewendet wird. Sie muss daher auch im Adapter zur Verfügung stehen.

        1 Reply Last reply Reply Quote 0
        • greyhound
          greyhound last edited by

          okay, ich hatte angenommen, das die Funktion unabhängig von einem Date-Object die Zeitzone liefert.

                  let dD = new Date();
                  let dO = dD.getTimezoneOffset();
          
          

          liefert was ich möchte = -120.

          Bleibt noch mein Problem mit adapter.getForeignState()

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

            @greyhound:

            Bleibt noch mein Problem mit adapter.getForeignState() `

            Du hast aber schon verstanden, dass der zweite Parameter eine Callback-Funktion ist, die zu einem späteren Zeitpunkt (üblicherweise wenige ms) aufgerufen wird?

            D.h. es wird der getForeignState-Befehl abgesetzt, dann geht es sofort untendrunter weiter und später wird der Callback ausgeführt.

            1 Reply Last reply Reply Quote 0
            • greyhound
              greyhound last edited by

              Ich hatte den BreakPoint auf "if (err) {" gesetzt und gewartet, dass die Ausführung da zum Stehen kommt, klappte aber irgendwie nicht. In einem ähnlichen Bsp. habe ich versucht, einen Wert von einem "externen Datenpunkt" zu lesen und in eine "globale" Skriptvariable zu schreiben, was mir aber nicht gelungen ist, der zu lesende Wert wurde nicht geschrieben.

              Inzwischen habe ich das mit der Variablen anders gelöst und nach einem Neustart des ioBroker-Hosts bleibt die Skriptausführung jetzt auch bei meinem BreakPoint stehen. Waren vielleicht vorher zu viele Fehler.

              Danke

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

              Support us

              ioBroker
              Community Adapters
              Donate

              755
              Online

              31.7k
              Users

              79.8k
              Topics

              1.3m
              Posts

              3
              5
              620
              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