Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. ioBroker Allgemein
    4. Homematic Wetterstation via RPC / Rega

    NEWS

    • Neues Video über Aliase, virtuelle Geräte und Kategorien

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    Homematic Wetterstation via RPC / Rega

    This topic has been deleted. Only users with topic management privileges can see it.
    • A
      Andersmacher @Dr. Bakterius last edited by

      @dr-bakterius Danke für den Hinweis/Vorschlag!
      Mit Skripting bekommt man das ja immer irgendwie hin und dank Blockly sogar ich 😊 .
      Bis zur "Aufklärung" durch @Homoran gestern war mein Ansatz allerdings, es ersteinmal mit den bereits "offiziell" vorhandenen Datenpunkten des Sensors / der CCU zu versuchen.

      Zwei Fragen zu Deinem Skript hätte ich noch:

      1. Bei längerem Regen erhälst Du doch vermutlich alle und viele 3 Minuten einen neuen Wert/Trigger und Deine Formel addiert ja "inkrementell" und gerundet Differenzen. Bekommst Du da nicht nach ein paar Stunden spürbare Abweichungen zwischen der von Dir gebildeten "inkrementellen" Summe und dem, was die CCU ermittelt / bereitstellt (was ich jetzt mal im Rahmen der Meßgenauigkeit als "wahren Wert" bezeichnen würde)? Falls ja, könnte man meiner Ansicht nach vermeiden, wenn man sich einfach den RAIN_COUNTER zum Tageswechsel merkt und dann die Differenz immer zu diesem "genauen" Wert bildet.
      2. Als ich mit Skripten in ioBroker anfing mußte ich lernen, daß das Schreiben von Werten in Datenpunkte wohl asynchron passiert und man nicht erwarten darf, daß man beim Auslesen eines Datenpunktes den Wert liest, den man im Skript eine Zeile vorher da hinein geschrieben hat. Wenn ich mir Deine zwei Befehle im Zeitplan ansehe, machst Du soetwas (also schreiben und gleich darauf lesen) ja auch nicht. Muß ich auf Grund der von Dir benutzten 100ms Verzögerung nun aber auch noch lernen, daß der zweite Befehl den ersten "überholen" kann, Du in der ersten Zeile also u. U. ungewollt die 0 auslesen könntest (wenn Du keine Verzögerung eingebaut hättest), die Du erst in der Zeile danach da hineinschreibst - oder wozu dient diese Verzögerung?
      Dr. Bakterius 1 Reply Last reply Reply Quote 0
      • A
        Andersmacher @Homoran last edited by

        @homoran Wenn man das tatsächlich einstellen könnte, wäre das natürlich der Hit. Habe bisher allerdings noch keine Stelle dafür in der CCU-GUI gefunden und falls es nur durch editieren einer Konfig-Datei möglich ist: Das zu finden, traue ich mir derzeit nicht zu.

        Das müßte ja dann eigentlich auch eine Stelle sein, die irgendetwas mit der Wetterstation zu tun hat, denn so, wie Du gestern geschrieben hast, wird dieser Zeitpunkt ja nur meteorologisch genutzt.

        Homoran 1 Reply Last reply Reply Quote 0
        • Homoran
          Homoran Global Moderator Administrators @Andersmacher last edited by

          @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

          Das müßte ja dann eigentlich auch eine Stelle sein, die irgendetwas mit der Wetterstation zu tun hat,

          zeig doch mal was es unter Geräte -> Einstellungen bei der Wetterstation steht

          A 1 Reply Last reply Reply Quote 0
          • A
            Andersmacher @Homoran last edited by

            @homoran Firmware V1.0.18
            Teil1.PNG
            Teil2.PNG

            Homoran 1 Reply Last reply Reply Quote 0
            • Homoran
              Homoran Global Moderator Administrators @Andersmacher last edited by

              @andersmacher hmmm, da steht nix.

              es muss zusätzlich noch ein Systemskript geben, das die täglichen Werte ermittelt.
              möglich dass da die Uhrzeit zu ändern wäre.

              A 1 Reply Last reply Reply Quote 0
              • A
                Andersmacher @Homoran last edited by

                @homoran Danke! Das war der entscheidende Hinweis:
                Test.PNG
                Habe mich bisher noch nie mit systeminternen Skripten beschäftigt. Die waren bei mir bis eben immer ausgeblendet. Vermute mal, daß ich da genau wie bei eigenen Skripten einfach den Triggerzeitpunkt verändern kann/darf!?
                Test1.PNG
                Hast Du Erfahrung damit:
                Angenommen ich "versaue" so ein internes Skript mal. Kann man das dann z. B. durch Neuanlernen des Sensors wieder herstellen (lassen)?

                Homoran 1 Reply Last reply Reply Quote 0
                • Homoran
                  Homoran Global Moderator Administrators @Andersmacher last edited by

                  @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

                  Vermute mal, daß ich da genau wie bei eigenen Skripten einfach den Triggerzeitpunkt verändern kann/darf!?

                  ja!

                  @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

                  Kann man das dann z. B. durch Neuanlernen des Sensors wieder herstellen (lassen)?

                  bei komplettem Entfernen und Neu anlernen müsste es klappen.

                  Ob es auch schon mit "Drüberanlernen" klappt weiß ich nicht.

                  1 Reply Last reply Reply Quote 0
                  • Dr. Bakterius
                    Dr. Bakterius Most Active @Andersmacher last edited by

                    @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

                    Bei längerem Regen erhälst Du doch vermutlich alle und viele 3 Minuten einen neuen Wert/Trigger und Deine Formel addiert ja "inkrementell" und gerundet Differenzen. Bekommst Du da nicht nach ein paar Stunden spürbare Abweichungen zwischen der von Dir gebildeten "inkrementellen" Summe

                    Nein, eine Abweichung gibt es nicht. Der Regenmesser misst nur in 0,3 l/m² Abständen. Also nur eine Kommastelle. Der ioBroker hat aber manchmal Probleme mit Kommazahlen zu rechnen und dann kommen Werte wie 1,20000000000001 zustande. Deswegen die Rundung. Hier würde also der Wert auf 1,2 gerundet.

                    wozu dient diese Verzögerung?

                    Ich schreibe erst den Wert von 'heute' nach 'gestern' und dann setze ich 'heute' auf null. Um zu verhindern, dass 'heute' schon auf null gesetzt wird bevor der Wert kopiert wurde, habe ich die Verzögerung eingebaut.

                    Vor zwei Jahren oder so, habe ich den Tageszyklus in der Wetterstation von 7.00 Uhr auf 0.00 Uhr umgestellt. Aber frage mich nicht weshalb ich dann stattdessen das Skript genommen habe. Hatte aber sicher einen Grund. 😉

                    A apollon77 2 Replies Last reply Reply Quote 0
                    • A
                      Andersmacher @Dr. Bakterius last edited by

                      @dr-bakterius Danke für die Erklärungen!

                      Ich schreibe erst den Wert von 'heute' nach 'gestern' und dann setze ich 'heute' auf null.

                      Das hatte ich so verstanden/erkannt.

                      Um zu verhindern, dass 'heute' schon auf null gesetzt wird bevor der Wert kopiert wurde, habe ich die Verzögerung eingebaut.

                      Das habe ich mir gedacht.
                      Aber kann das denn wirklich passieren und falls ja, warum nach 100ms nicht mehr? Es gibt doch keine "garantierte" Schreibzeit - oder?
                      Ich verstehe ja, daß der Schreibvorgang asynchron ist (man also nicht sicher sagen kann, wann er wirklich passiert). Aber nach meinem bisherigen Verständnis ging ich davon aus, daß das wirklich nur das Schreiben betrifft. Irgendwie muß ja durch die Zeile / den Befehl
                      52a98c27-2cc8-4804-8abc-2530eeb7409e-grafik.png auch ein Lesevorgang für f093a39e-cb20-4e2c-b6d5-2d0454b0fd09-grafik.png ausgelöst werden (denn wie, außer durch Lesen, soll er den Wert sonst in Erfahrung bringen) und da bin ich bisher immer davon ausgegangen, daß der abgeschlossen ist/wird, bevor die nächste Code-Zeile ausgeführt wird. In meiner Vorstellung wird dieser gelesene Wert dann (sofort, jedenfalls bevor zur nächsten Code-Zeile gegangen wird) einer "Prozedur/Funktion" übergeben, die den Wert dann "irgendwann" also asynchron wirklich schreibt.
                      Ist das von mir ein Irrglaube?😞

                      Dr. Bakterius 1 Reply Last reply Reply Quote 0
                      • Dr. Bakterius
                        Dr. Bakterius Most Active @Andersmacher last edited by

                        @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

                        Ist das von mir ein Irrglaube?

                        Das kann ich nicht sagen (aber vielleicht @apollon77). Ich bin hier eben auf Nummer sicher gegangen...

                        1 Reply Last reply Reply Quote 0
                        • apollon77
                          apollon77 @Dr. Bakterius last edited by

                          @dr-bakterius sagte in Homematic Wetterstation via RPC / Rega:

                          Der ioBroker hat aber manchmal Probleme mit Kommazahlen zu rechnen und dann kommen Werte wie 1,20000000000001 zustande

                          Das hat nichts mit ioBroker zu tun, das nennt sich "Informatik :-)) Das ist bei Gleitkommazahlen in jeder programmiersprache bei bestimmten Rechenoperationen so

                          Zu der anderen farge ...falls ich die verstanden habe: Also wenn du eine variable hast und deren weert schreibst dann wird dieser wert geschrieben auch wenn Du ihn danach auf null setzt ... weil dr wert zum Zeitounktdes aufrufs quasi dupliziert wird

                          A 1 Reply Last reply Reply Quote 0
                          • A
                            Andersmacher @apollon77 last edited by Andersmacher

                            @apollon77 Bin nicht sicher, ob ich mit meinem (eigentlich nicht vorhandem JS-Wissen) hier nachfragen sollte/darf. Da ich mich da aber nach und nach "reinfummeln will", traue ich mich einfach mal:

                            Ich hatte es bisher so verstanden, daß Variablen (in Blockly violett) in JavaSkript, so wie in anderen Programmiersprachen auch, immer sofort geschrieben werden. Von früher (Pascal) meine ich auch in Erinnerung zu haben, daß man das gar nicht schreiben, sondern zuweisen nennt/nannte. Also könnte man sie dann in der nächsten Codezeile auch gleich wieder auslesen und würde definitiv den eben geschriebenen (zugewiesenen) Wert erhalten. Verzögerungen wären dafür demnach unsinnig/nicht erforderlich!?

                            Aber der Wert für ein ioBroker-Objekt (in Blockly blau) (selbst wenn es nicht zu einem Hardware-Adapter gehört, sondern z. B. unter 0_userdata angelegt ist) und um ein solches handelt es sich bei der obigen Objekt ID "heute" ja, ist keine Variable in diesem Sinne und wird durch das asynchrone Schreiben nicht sofort, sondern mit (unbekannter bzw. nicht definierter) Verzögerung geschrieben (auch wenn diese offenbar meist kurz ist, z. B. unter 100ms)!?

                            Paßt das so oder muß ich da mein (bisher eingebildetes) Wissen updaten?

                            Homoran A apollon77 3 Replies Last reply Reply Quote 0
                            • Homoran
                              Homoran Global Moderator Administrators @Andersmacher last edited by

                              @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

                              mit (unbekannter bzw. nicht definierter Verzögerung

                              das was es halt dauert bis der Wert fertig im System geschrieben ist. Mit allen beteiligten Prozessen und I/O Latenzen.

                              1 Reply Last reply Reply Quote 0
                              • A
                                Andersmacher @Andersmacher last edited by

                                @homoran:

                                unbekannter bzw. nicht definierter

                                war nicht "wertend" gemeint, nur daß es eben in der Praxis nicht vorhersehbar ist, wie lange es dauert, weil es, genau wie Du ja schreibst, von vielen Randbedingungen abhängt.
                                Aber das gilt eben nicht für Variablen. Die werden nach meinem bisherigen Verständnis "sofort" geschrieben, also bevor die nächste Codezeile ausgeführt wird!?

                                Homoran 1 Reply Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @Andersmacher last edited by

                                  @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

                                  Aber das gilt eben nicht für Variablen. Die werden nach meinem bisherigen Verständnis "sofort" geschrieben, also bevor die nächste Codezeile ausgeführt wird!?

                                  ja, aber ich hätte "geschrieben" in Anführungszeichen gesetzt 🙂

                                  1 Reply Last reply Reply Quote 0
                                  • apollon77
                                    apollon77 @Andersmacher last edited by

                                    @andersmacher Naja wenn du immer den "Wert des Objekts" aus der Datenbank liesst dann ist das nicht mehr statisch. Daher weise es doch einer Variable zu. EInmal lesen, wert haben ... Fertig.

                                    A 1 Reply Last reply Reply Quote 0
                                    • A
                                      Andersmacher @apollon77 last edited by

                                      @apollon77 Wenn ich den Wert eines Objektes in einem Skript oft/öfter brauche, und sichergestellt ist, daß er sich nicht im Laufe der Skriptabarbeitung ändert oder eine etwaige Änderung mein Skript nicht beeinträchtigt, mache ich das tatsächlich bereits so, daß ich ihn einer Variablen zuweise.

                                      Aber ich muß gestehen, daß ich jetzt gerade den Zusammenhang zwischen der Fragestellung und dem von Dir hier neu "eingeführten" Begriff "statisch" nicht mehr Blicke. Die Bezeichnung "statisch" kenne ich bisher nur für Variable, die auch nach Beendigung einer Routine (ups, ein "Begriff von früher"), im vorliegenden Fall besser Skript genannt, weiterhin existieren und nutzbar sind. Das ist ja aber ein ganz anderes Thema.

                                      Homoran 1 Reply Last reply Reply Quote 0
                                      • Homoran
                                        Homoran Global Moderator Administrators @Andersmacher last edited by

                                        @andersmacher sagte in Homematic Wetterstation via RPC / Rega:

                                        Die Bezeichnung "statisch"

                                        ist auch nicht unbedingt eine "Bezeichnung", sondern bedeutet, dass sich der Wert beim erneuten Auslesen geändert haben kann.

                                        Je nach Anwendungsfall kann das eino oder das andere besser sein.

                                        Wobei ich dachte es geht dir um schreiben deiner "Variable" in einen Datenpunkt, und nicht um das Auslesen x-beliebiger Werte

                                        A 1 Reply Last reply Reply Quote 0
                                        • A
                                          Andersmacher @Homoran last edited by

                                          @homoran Ich glaube, wir (Du, @apollon77 und ich) reden gerade ein weinig an einander vorbei und inzwischen sind wir (ok, da bin ich wohl Schuld dran durch meine Frage zum Skript von @Dr-Bakterius) ja auch nicht mehr beim Ausgangsthema "Homematic Wetterstation via RPC / Rega", sondern bei JS-Interna.

                                          Wenn @Dr-Bakterius, wie er schreibt, nur "auf Nummer sicher gegangen" ist und die Verzögerung nicht wirklich notwendig ist, habe ich gar kein Problem, weil dann alles zu meinem derzeitigen JS-Verständnis bezüglich Schreib- / Zuweisungsvorgängen paßt:
                                          Variablen sofort (ich nenn das ´mal synchron) und Werte in Datenpunkte asynchron (also eben unvorhersehbar später).

                                          Wenn das so stimmt, wäre meine obige Frage zum Skript damit beantwortet und ich würde dem Titel dann auch "Gelöst:" voran stellen.

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

                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate
                                          FAQ Cloud / IOT
                                          HowTo: Node.js-Update
                                          HowTo: Backup/Restore
                                          Downloads
                                          BLOG

                                          751
                                          Online

                                          32.0k
                                          Users

                                          80.5k
                                          Topics

                                          1.3m
                                          Posts

                                          4
                                          29
                                          1640
                                          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