Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. JavaScript
  5. Bug oder Feature? getState() /= x 'cached' den State

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.2k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    1.9k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    15
    1
    2.2k

Bug oder Feature? getState() /= x 'cached' den State

Geplant Angeheftet Gesperrt Verschoben JavaScript
10 Beiträge 4 Kommentatoren 614 Aufrufe 3 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • F Offline
    F Offline
    fastfoot
    schrieb am zuletzt editiert von
    #1

    Hallo
    das fiel eben durch eine Anfrage im Forum auf. getState() verhält sich dabei ähnlich wie eine Variable, wobei der Wert selbst nach Neustart des Skripts erhalten bleibt, ohne dass sich der Wert des State aber tatsächlich ändert. Ein neues Setzen des DP oder ein Neustart der Instanz(ohne Änderung des DP) beendet den Spuk
    Ein getState() mit callback liefert immer den richtigen Wert des DP!

    var DP = '0_userdata.0.Test';
     
    //setState(DP,100000);
    for(let i=0;i<2;i++) {
        log(i + ': ' + (getState(DP).val /= 10).toString());
        
        log(i + ': ' + getState(DP).val.toString());
        
        getState(DP,(err,obj) => {
            log(i + ': ' + obj.val.toString());
        })
    }
    

    20:43:54.540	info	javascript.1 (6899) Start javascript script.js.Aktiv.TestJS
    20:43:54.545	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 10000
    20:43:54.546	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 10000
    20:43:54.546	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 1000
    20:43:54.546	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 1000
    20:43:54.547	info	javascript.1 (6899) script.js.Aktiv.TestJS: registered 0 subscriptions and 0 schedules
    20:43:54.552	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100000
    20:43:54.552	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 100000
    20:44:36.574	info	javascript.1 (6899) Stop script script.js.Aktiv.TestJS
    20:44:36.577	info	javascript.0 (21300) Stop script script.js.Aktiv.TestJS
    20:44:36.576	info	javascript.2 (22982) Stop script script.js.Aktiv.TestJS
    20:44:36.720	info	javascript.1 (6899) Start javascript script.js.Aktiv.TestJS
    20:44:36.725	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100
    20:44:36.726	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100
    20:44:36.726	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 10
    20:44:36.727	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 10
    20:44:36.727	info	javascript.1 (6899) script.js.Aktiv.TestJS: registered 0 subscriptions and 0 schedules
    20:44:36.735	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100000
    20:44:36.735	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 100000
    20:44:46.110	info	javascript.2 (22982) Stop script script.js.Aktiv.TestJS
    20:44:46.110	info	javascript.1 (6899) Stop script script.js.Aktiv.TestJS
    20:44:46.115	info	javascript.0 (21300) Stop script script.js.Aktiv.TestJS
    20:44:46.215	info	javascript.1 (6899) Start javascript script.js.Aktiv.TestJS
    20:44:46.221	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 1
    20:44:46.222	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 1
    20:44:46.222	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 0.1
    20:44:46.223	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 0.1
    20:44:46.223	info	javascript.1 (6899) script.js.Aktiv.TestJS: registered 0 subscriptions and 0 schedules
    20:44:46.225	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100000
    20:44:46.226	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 100000
    

    ich hoffe das kann mir wer erklären
    Grüße,
    Winny

    iobroker läuft unter Docker auf QNAP TS-451+
    SkriptRecovery: https://forum.iobroker.net/post/930558

    paul53P 1 Antwort Letzte Antwort
    0
    • F fastfoot

      Hallo
      das fiel eben durch eine Anfrage im Forum auf. getState() verhält sich dabei ähnlich wie eine Variable, wobei der Wert selbst nach Neustart des Skripts erhalten bleibt, ohne dass sich der Wert des State aber tatsächlich ändert. Ein neues Setzen des DP oder ein Neustart der Instanz(ohne Änderung des DP) beendet den Spuk
      Ein getState() mit callback liefert immer den richtigen Wert des DP!

      var DP = '0_userdata.0.Test';
       
      //setState(DP,100000);
      for(let i=0;i<2;i++) {
          log(i + ': ' + (getState(DP).val /= 10).toString());
          
          log(i + ': ' + getState(DP).val.toString());
          
          getState(DP,(err,obj) => {
              log(i + ': ' + obj.val.toString());
          })
      }
      

      20:43:54.540	info	javascript.1 (6899) Start javascript script.js.Aktiv.TestJS
      20:43:54.545	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 10000
      20:43:54.546	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 10000
      20:43:54.546	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 1000
      20:43:54.546	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 1000
      20:43:54.547	info	javascript.1 (6899) script.js.Aktiv.TestJS: registered 0 subscriptions and 0 schedules
      20:43:54.552	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100000
      20:43:54.552	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 100000
      20:44:36.574	info	javascript.1 (6899) Stop script script.js.Aktiv.TestJS
      20:44:36.577	info	javascript.0 (21300) Stop script script.js.Aktiv.TestJS
      20:44:36.576	info	javascript.2 (22982) Stop script script.js.Aktiv.TestJS
      20:44:36.720	info	javascript.1 (6899) Start javascript script.js.Aktiv.TestJS
      20:44:36.725	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100
      20:44:36.726	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100
      20:44:36.726	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 10
      20:44:36.727	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 10
      20:44:36.727	info	javascript.1 (6899) script.js.Aktiv.TestJS: registered 0 subscriptions and 0 schedules
      20:44:36.735	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100000
      20:44:36.735	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 100000
      20:44:46.110	info	javascript.2 (22982) Stop script script.js.Aktiv.TestJS
      20:44:46.110	info	javascript.1 (6899) Stop script script.js.Aktiv.TestJS
      20:44:46.115	info	javascript.0 (21300) Stop script script.js.Aktiv.TestJS
      20:44:46.215	info	javascript.1 (6899) Start javascript script.js.Aktiv.TestJS
      20:44:46.221	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 1
      20:44:46.222	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 1
      20:44:46.222	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 0.1
      20:44:46.223	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 0.1
      20:44:46.223	info	javascript.1 (6899) script.js.Aktiv.TestJS: registered 0 subscriptions and 0 schedules
      20:44:46.225	info	javascript.1 (6899) script.js.Aktiv.TestJS: 0: 100000
      20:44:46.226	info	javascript.1 (6899) script.js.Aktiv.TestJS: 1: 100000
      

      ich hoffe das kann mir wer erklären
      Grüße,
      Winny

      paul53P Offline
      paul53P Offline
      paul53
      schrieb am zuletzt editiert von paul53
      #2

      @fastfoot sagte:

      log(i + ': ' + (getState(DP).val /= 10).toString());                                                                                                                                                                            
      

      Du schreibst auf das Objekt zurück, was bei getState() nicht vorgesehen ist.
      Das ist deshalb möglich, da der Javascript-Adapter alle Objekte und Zustände puffert und die Reaktion auf getState(id) letztlich lautet (states ist der Puffer):

      return states[id];
      

      Da es sich um ein Objekt handelt, wird nicht der Inhalt zurück gegeben, sondern eine Referenz (Zeiger) auf das Objekt. Deshalb kann man mit

      getState(id).val /= 10
      

      den Inhalt des Objektes im Puffer verändern, was sich bei der erneuten Abfrage bemerkbar macht.
      Bei der asynchronen Version wird nicht auf den Puffer zurück gegriffen.

      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

      F 1 Antwort Letzte Antwort
      0
      • paul53P paul53

        @fastfoot sagte:

        log(i + ': ' + (getState(DP).val /= 10).toString());                                                                                                                                                                            
        

        Du schreibst auf das Objekt zurück, was bei getState() nicht vorgesehen ist.
        Das ist deshalb möglich, da der Javascript-Adapter alle Objekte und Zustände puffert und die Reaktion auf getState(id) letztlich lautet (states ist der Puffer):

        return states[id];
        

        Da es sich um ein Objekt handelt, wird nicht der Inhalt zurück gegeben, sondern eine Referenz (Zeiger) auf das Objekt. Deshalb kann man mit

        getState(id).val /= 10
        

        den Inhalt des Objektes im Puffer verändern, was sich bei der erneuten Abfrage bemerkbar macht.
        Bei der asynchronen Version wird nicht auf den Puffer zurück gegriffen.

        F Offline
        F Offline
        fastfoot
        schrieb am zuletzt editiert von
        #3

        @paul53 Danke für die ausführliche Antwort, auch wenn ich erstmal nur 90% verstanden habe :-) Was mir aber nicht klar geworden ist, weshalb bleibt das bestehen, auch wenn das Skript gestoppt und dann wieder gestartet wird? Da sollten doch alle Zustände, Referenzen und Variablen etc. zurückgesetzt werden? Wie im LOG zu sehen ist, passiert das jedoch nicht. Starte ich nun ein zweites Skript, welches auch den Status des DP ausliest, dann wird mir auch dort der falsche Wert ausgegeben, spätestens hier plädiere ich für Bug, habe das soeben erst probiert, deshalb vorher nicht erwähnt

        Ferner, sollte so ein Statement nicht einen Fehler provozieren, da das eben nicht vorgesehen ist? Ein Statement wie

        getState(dp).val=5;
        

        sollte eigentlich nicht möglich sein, auch wenn das unter der Haube erklärbar ist.

        Zu meiner 'Verteidigung', das Statement stammt nicht von mir, ich habe nur darauf reagiert :-)

        iobroker läuft unter Docker auf QNAP TS-451+
        SkriptRecovery: https://forum.iobroker.net/post/930558

        paul53P 1 Antwort Letzte Antwort
        0
        • F fastfoot

          @paul53 Danke für die ausführliche Antwort, auch wenn ich erstmal nur 90% verstanden habe :-) Was mir aber nicht klar geworden ist, weshalb bleibt das bestehen, auch wenn das Skript gestoppt und dann wieder gestartet wird? Da sollten doch alle Zustände, Referenzen und Variablen etc. zurückgesetzt werden? Wie im LOG zu sehen ist, passiert das jedoch nicht. Starte ich nun ein zweites Skript, welches auch den Status des DP ausliest, dann wird mir auch dort der falsche Wert ausgegeben, spätestens hier plädiere ich für Bug, habe das soeben erst probiert, deshalb vorher nicht erwähnt

          Ferner, sollte so ein Statement nicht einen Fehler provozieren, da das eben nicht vorgesehen ist? Ein Statement wie

          getState(dp).val=5;
          

          sollte eigentlich nicht möglich sein, auch wenn das unter der Haube erklärbar ist.

          Zu meiner 'Verteidigung', das Statement stammt nicht von mir, ich habe nur darauf reagiert :-)

          paul53P Offline
          paul53P Offline
          paul53
          schrieb am zuletzt editiert von paul53
          #4

          @fastfoot sagte:

          sollte so ein Statement nicht einen Fehler provozieren, da das eben nicht vorgesehen ist?

          Das wäre sinnvoll, aber ich habe keine Ahnung ob / wie man das abfangen kann.

          @fastfoot sagte in Bug oder Feature? getState() /= x 'cached' den State:

          weshalb bleibt das bestehen, auch wenn das Skript gestoppt und dann wieder gestartet wird?

          Der Puffer befindet sich nicht im Script, sondern in der Javascript-Instanz, bei Neustart des Scripts wird auf den gleichen Puffer zurück gegriffen. Bei Neustart der Instanz wird der Puffer mit den Werten aus dem js-controller initialisiert.
          Mit setState() wird nicht nur der Puffer aktualisiert, sondern der Zustand auch an den js-controller weitergegeben.

          Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
          Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

          F 1 Antwort Letzte Antwort
          0
          • paul53P paul53

            @fastfoot sagte:

            sollte so ein Statement nicht einen Fehler provozieren, da das eben nicht vorgesehen ist?

            Das wäre sinnvoll, aber ich habe keine Ahnung ob / wie man das abfangen kann.

            @fastfoot sagte in Bug oder Feature? getState() /= x 'cached' den State:

            weshalb bleibt das bestehen, auch wenn das Skript gestoppt und dann wieder gestartet wird?

            Der Puffer befindet sich nicht im Script, sondern in der Javascript-Instanz, bei Neustart des Scripts wird auf den gleichen Puffer zurück gegriffen. Bei Neustart der Instanz wird der Puffer mit den Werten aus dem js-controller initialisiert.
            Mit setState() wird nicht nur der Puffer aktualisiert, sondern der Zustand auch an den js-controller weitergegeben.

            F Offline
            F Offline
            fastfoot
            schrieb am zuletzt editiert von
            #5

            @paul53 Deine Ausführungen kann ich nachvollziehen, ein "Ändern" durch solch ein Statement aus einer anderen Instanz hat keine Auswirkungen, aber es bleibt der Fakt dass andere Skripte hierdurch falsche Werte liefern. Sollte ich ein issue auf Github aufmachen oder ist das eher uninteressant weil nur Wenige das so proggen würden? Vielleicht mag sich auch @apollon77 das erst einmal ansehen?

            javascript.1	2020-07-03 00:12:05.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
            javascript.1	2020-07-03 00:12:04.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
            javascript.1	2020-07-03 00:12:03.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
            javascript.1	2020-07-03 00:12:02.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
            javascript.1	2020-07-03 00:12:01.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
            javascript.1	2020-07-03 00:12:00.013	info	(6899) script.js.Aktiv.JS1: Skript1: verfälsche DP durch getState() = xxx;
            javascript.1	2020-07-03 00:12:00.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
            javascript.1	2020-07-03 00:11:59.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
            javascript.1	2020-07-03 00:11:58.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
            javascript.1	2020-07-03 00:11:57.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
            javascript.1	2020-07-03 00:11:56.478	info	(6899) script.js.Aktiv.JS2: registered 0 subscriptions and 1 schedule
            

            iobroker läuft unter Docker auf QNAP TS-451+
            SkriptRecovery: https://forum.iobroker.net/post/930558

            paul53P 1 Antwort Letzte Antwort
            0
            • F fastfoot

              @paul53 Deine Ausführungen kann ich nachvollziehen, ein "Ändern" durch solch ein Statement aus einer anderen Instanz hat keine Auswirkungen, aber es bleibt der Fakt dass andere Skripte hierdurch falsche Werte liefern. Sollte ich ein issue auf Github aufmachen oder ist das eher uninteressant weil nur Wenige das so proggen würden? Vielleicht mag sich auch @apollon77 das erst einmal ansehen?

              javascript.1	2020-07-03 00:12:05.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
              javascript.1	2020-07-03 00:12:04.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
              javascript.1	2020-07-03 00:12:03.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
              javascript.1	2020-07-03 00:12:02.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
              javascript.1	2020-07-03 00:12:01.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> DP wurde verfälscht durch falsches Statement in Skript1
              javascript.1	2020-07-03 00:12:00.013	info	(6899) script.js.Aktiv.JS1: Skript1: verfälsche DP durch getState() = xxx;
              javascript.1	2020-07-03 00:12:00.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
              javascript.1	2020-07-03 00:11:59.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
              javascript.1	2020-07-03 00:11:58.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
              javascript.1	2020-07-03 00:11:57.001	info	(6899) script.js.Aktiv.JS2: Skript2: DP ==> 100000
              javascript.1	2020-07-03 00:11:56.478	info	(6899) script.js.Aktiv.JS2: registered 0 subscriptions and 1 schedule
              
              paul53P Offline
              paul53P Offline
              paul53
              schrieb am zuletzt editiert von
              #6

              @fastfoot sagte:

              nur Wenige das so proggen würden?

              Es ist der erste Fall, den ich so sehe, also kann man davon ausgehen, dass so etwas höchstens versehentlich programmiert wird. Wie geschrieben, sehe ich keine Möglichkeit, dies abzufangen.

              Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
              Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

              F OliverIOO 2 Antworten Letzte Antwort
              1
              • paul53P paul53

                @fastfoot sagte:

                nur Wenige das so proggen würden?

                Es ist der erste Fall, den ich so sehe, also kann man davon ausgehen, dass so etwas höchstens versehentlich programmiert wird. Wie geschrieben, sehe ich keine Möglichkeit, dies abzufangen.

                F Offline
                F Offline
                fastfoot
                schrieb am zuletzt editiert von
                #7

                @paul53 Ich kenne mich in JS zu wenig aus, deshalb vertaue ich voll auf deine Expertise und lasse das mit dem issue sein. Nochmals vielen Dank für deine Erläuterungen, habe Einiges dazu gelernt

                iobroker läuft unter Docker auf QNAP TS-451+
                SkriptRecovery: https://forum.iobroker.net/post/930558

                1 Antwort Letzte Antwort
                0
                • paul53P paul53

                  @fastfoot sagte:

                  nur Wenige das so proggen würden?

                  Es ist der erste Fall, den ich so sehe, also kann man davon ausgehen, dass so etwas höchstens versehentlich programmiert wird. Wie geschrieben, sehe ich keine Möglichkeit, dies abzufangen.

                  OliverIOO Offline
                  OliverIOO Offline
                  OliverIO
                  schrieb am zuletzt editiert von
                  #8

                  @paul53
                  Abfangen könnte man das dadurch, das man diese Variablen privatisiert und Zugriff nur über Funktionen erlaubt. Das wäre allerdings ein tiefer Eingriff in den iobroker und hat Auswirkungen auf alle Skripte und Adapter.
                  Andere Alternative wäre noch eine Prüfung im Objekt-Prototyp, aber das würde dann bei jedem Variablenzugriff passieren was sich sicherlich auf die Performance auswirkt. Für iobroker dann eigene objekte schaffen wäre wiederum ein tiefer Eingriff in iobroker.

                  Meine Adapter und Widgets
                  TVProgram, SqueezeboxRPC, OpenLiga, RSSFeed, MyTime,, pi-hole2, vis-json-template, skiinfo, vis-mapwidgets, vis-2-widgets-rssfeed
                  Links im Profil

                  1 Antwort Letzte Antwort
                  0
                  • SVallantS Offline
                    SVallantS Offline
                    SVallant
                    schrieb am zuletzt editiert von SVallant
                    #9

                    Ja, das ist JavaScript.
                    Ich wette

                    typeof (getState(dp))
                    

                    Liefert "function".
                    Diese Funktion wir nun durch einen Wert überschrieben.
                    Das Ganze verhindert Typescript. Einige Adapter haben das ja schon ...

                    paul53P 1 Antwort Letzte Antwort
                    0
                    • SVallantS SVallant

                      Ja, das ist JavaScript.
                      Ich wette

                      typeof (getState(dp))
                      

                      Liefert "function".
                      Diese Funktion wir nun durch einen Wert überschrieben.
                      Das Ganze verhindert Typescript. Einige Adapter haben das ja schon ...

                      paul53P Offline
                      paul53P Offline
                      paul53
                      schrieb am zuletzt editiert von
                      #10

                      @SVallant sagte:

                      Ich wette
                      typeof (getState(dp))
                      Liefert "function".

                      Die Wette verlierst Du, denn es ist ein Objekt. Da hilft auch keine Typ-Bindung.

                      Bitte verzichtet auf Chat-Nachrichten, denn die Handhabung ist grauenhaft !
                      Produktiv: RPi 2 mit S.USV, HM-MOD-RPI und SLC-USB-Stick mit root fs

                      1 Antwort Letzte Antwort
                      1
                      Antworten
                      • In einem neuen Thema antworten
                      Anmelden zum Antworten
                      • Älteste zuerst
                      • Neuste zuerst
                      • Meiste Stimmen


                      Support us

                      ioBroker
                      Community Adapters
                      Donate

                      286

                      Online

                      32.4k

                      Benutzer

                      81.4k

                      Themen

                      1.3m

                      Beiträge
                      Community
                      Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                      ioBroker Community 2014-2025
                      logo
                      • Anmelden

                      • Du hast noch kein Konto? Registrieren

                      • Anmelden oder registrieren, um zu suchen
                      • Erster Beitrag
                        Letzter Beitrag
                      0
                      • Home
                      • Aktuell
                      • Tags
                      • Ungelesen 0
                      • Kategorien
                      • Unreplied
                      • Beliebt
                      • GitHub
                      • Docu
                      • Hilfe