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

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Skripten / Logik
  4. Blockly
  5. Grundsätzliches: Mathematische Berechnungen in Blockly

NEWS

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    16
    1
    1.0k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    695

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.0k

Grundsätzliches: Mathematische Berechnungen in Blockly

Geplant Angeheftet Gesperrt Verschoben Blockly
blockly
27 Beiträge 6 Kommentatoren 3.7k Aufrufe 4 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.
  • smileS smile

    @bahnuhr sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

    @smile
    Man kann doch das blockly umschalten auf JS.
    Dort müsstest du doch genau sehen wie gerechnet wird.

    hast dies mal probiert ?

    Ja habe ich, kannst du ja in meinem Eingangspost sehen. Leider wurde ja trotzdem nicht der korrekte Wert ausgespucht.

    Danke @Homoran und @paul53
    Was eine Asynchronfalle genau ist, ist mir nicht klar?
    Jedoch bin ich nun zum richtigen Ergebnis gekommen, indem ich das Blockly so umgestellt habe:
    59f2f560-4a41-44f3-8173-488555da6fe6-grafik.png
    Kleine Änderung - große Wirkung.

    Merke: Nur weil in der Javascript Ansicht die Klammersetzung theoretisch richtig ist, kommt nicht automatisch das richtige Ergebnis bei raus.

    Was mir im Log aufgefallen ist:
    Durch den "Zeitraum" von einmal -80 Sekunden vor und +80 Sekunden nach dem Timestamp dem ich der Uhrzeiterkennung gegeben habe, wird diese tatsächlich 3 x erkannt.
    Wenn ich es zu eng eingrenze, habe ich aber auch schon die Erfahrung gemacht, dass die Sekunden mal so ungeünstig liegen, dass die Erkennung komplett an dem Zeitraum vorgbeigeht.
    Gibt es eine einfachere / präziesere Funktion, um eine Abfrage zu machen: Zu Timestamp X mache Y ? (Was ja im Prinzip nichts anderes ist, als wie zu Uhrzeit X mache Y)

    CodierknechtC Online
    CodierknechtC Online
    Codierknecht
    Developer Most Active
    schrieb am zuletzt editiert von
    #9

    @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

    Merke: Nur weil in der Javascript Ansicht die Klammersetzung theoretisch richtig ist, kommt nicht automatisch das richtige Ergebnis bei raus.

    Trugschluss!
    Wenn die Klammern richtig gesetzt sind und der Code damit korrekt, kommt immer und auf jeden Fall reproduzierbar das richtige Ergebnis heraus.
    Ansonsten könnte man die Sprache instant in die Tonne treten.
    Der Kasus knacktus sind die Werte, mit denen gerechnet wird.
    Probier es aus: gebe die Werte und das Ergebnis als Debug-Meldung aus.
    Di wirst sehen: Mit den vorliegenden Werten wird immer korrekt gerechnet!

    @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

    Was eine Asynchronfalle genau ist, ist mir nicht klar?

    Trigger und Aktionen werden im ioBroker asynchron ausgeführt.
    Nehmen wir mal an, ein Trigger auf Objekt X feuert.
    Du setzt daraufhin einen Wert in Objekt Y und willst den weiterverarbeiten, indem Du den mit "Wert von Y" liest.
    Das Setzen des Wertes ist aber evtl. noch gar nicht abgeschlossen, weil im Hintergrund asynchron.
    In diesem Fall liest Du noch den alten und damit falschen Wert.
    Besser wären in einem solchen Fall z.B. Hilfsvariablen.

    Ähnliche Probleme hat man mit Nebenläufigkeit unter Windows.
    Die Kunst besteht darin, die einzelnen Threads zu synchronisieren - wenn man es denn benötigt.
    Oder seinen Code so aufzubauen, dass man mit der asynchronen Abarbeitung keine Probleme bekommt.

    https://de.wikipedia.org/wiki/Nebenläufigkeit

    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
    HmIP|ZigBee|Tasmota|Unifi
    Zabbix Certified Specialist
    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

    1 Antwort Letzte Antwort
    0
    • smileS smile

      @bahnuhr sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

      @smile
      Man kann doch das blockly umschalten auf JS.
      Dort müsstest du doch genau sehen wie gerechnet wird.

      hast dies mal probiert ?

      Ja habe ich, kannst du ja in meinem Eingangspost sehen. Leider wurde ja trotzdem nicht der korrekte Wert ausgespucht.

      Danke @Homoran und @paul53
      Was eine Asynchronfalle genau ist, ist mir nicht klar?
      Jedoch bin ich nun zum richtigen Ergebnis gekommen, indem ich das Blockly so umgestellt habe:
      59f2f560-4a41-44f3-8173-488555da6fe6-grafik.png
      Kleine Änderung - große Wirkung.

      Merke: Nur weil in der Javascript Ansicht die Klammersetzung theoretisch richtig ist, kommt nicht automatisch das richtige Ergebnis bei raus.

      Was mir im Log aufgefallen ist:
      Durch den "Zeitraum" von einmal -80 Sekunden vor und +80 Sekunden nach dem Timestamp dem ich der Uhrzeiterkennung gegeben habe, wird diese tatsächlich 3 x erkannt.
      Wenn ich es zu eng eingrenze, habe ich aber auch schon die Erfahrung gemacht, dass die Sekunden mal so ungeünstig liegen, dass die Erkennung komplett an dem Zeitraum vorgbeigeht.
      Gibt es eine einfachere / präziesere Funktion, um eine Abfrage zu machen: Zu Timestamp X mache Y ? (Was ja im Prinzip nichts anderes ist, als wie zu Uhrzeit X mache Y)

      CodierknechtC Online
      CodierknechtC Online
      Codierknecht
      Developer Most Active
      schrieb am zuletzt editiert von
      #10

      @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

      Gibt es eine einfachere / präziesere Funktion, um eine Abfrage zu machen

      Ich habe noch nicht durchblickt, was Dein Blockly denn genau machen soll.
      Dein Rollo soll genau x Sekunden vor einer bestimmten Zeit hochfahren?
      Warum sind da die Sekunden so wichtig?
      Also mir persönlich wäre es ziemlich egal, ob das Rollo nun 14 oder 16 Minuten vor einer bestimmten Zeit hochfährt.

      Wenn die Weckzeit in einem DP hinterlegt ist, könnte man da bei Änderungen auch mit 'nem Trigger reagieren und einen passgenauen Zeitplan-Trigger erstellen.
      Das spart dann auch minütliche Ausführungen.

      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
      HmIP|ZigBee|Tasmota|Unifi
      Zabbix Certified Specialist
      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

      smileS 1 Antwort Letzte Antwort
      0
      • smileS smile

        @bahnuhr sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

        @smile
        Man kann doch das blockly umschalten auf JS.
        Dort müsstest du doch genau sehen wie gerechnet wird.

        hast dies mal probiert ?

        Ja habe ich, kannst du ja in meinem Eingangspost sehen. Leider wurde ja trotzdem nicht der korrekte Wert ausgespucht.

        Danke @Homoran und @paul53
        Was eine Asynchronfalle genau ist, ist mir nicht klar?
        Jedoch bin ich nun zum richtigen Ergebnis gekommen, indem ich das Blockly so umgestellt habe:
        59f2f560-4a41-44f3-8173-488555da6fe6-grafik.png
        Kleine Änderung - große Wirkung.

        Merke: Nur weil in der Javascript Ansicht die Klammersetzung theoretisch richtig ist, kommt nicht automatisch das richtige Ergebnis bei raus.

        Was mir im Log aufgefallen ist:
        Durch den "Zeitraum" von einmal -80 Sekunden vor und +80 Sekunden nach dem Timestamp dem ich der Uhrzeiterkennung gegeben habe, wird diese tatsächlich 3 x erkannt.
        Wenn ich es zu eng eingrenze, habe ich aber auch schon die Erfahrung gemacht, dass die Sekunden mal so ungeünstig liegen, dass die Erkennung komplett an dem Zeitraum vorgbeigeht.
        Gibt es eine einfachere / präziesere Funktion, um eine Abfrage zu machen: Zu Timestamp X mache Y ? (Was ja im Prinzip nichts anderes ist, als wie zu Uhrzeit X mache Y)

        HomoranH Nicht stören
        HomoranH Nicht stören
        Homoran
        Global Moderator Administrators
        schrieb am zuletzt editiert von
        #11

        @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

        Was eine Asynchronfalle genau ist, ist mir nicht klar?

        js arbeitet asynchron und wartet nicht bis der gerade in einen DP geschriebene Wert auch da schon angekommen ist.
        Fragt man diesen Wert direkt wieder ab, liegt noch der alte Wert vor

        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        bahnuhrB 1 Antwort Letzte Antwort
        0
        • HomoranH Homoran

          @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

          Was eine Asynchronfalle genau ist, ist mir nicht klar?

          js arbeitet asynchron und wartet nicht bis der gerade in einen DP geschriebene Wert auch da schon angekommen ist.
          Fragt man diesen Wert direkt wieder ab, liegt noch der alte Wert vor

          bahnuhrB Offline
          bahnuhrB Offline
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #12

          @homoran sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

          @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

          Was eine Asynchronfalle genau ist, ist mir nicht klar?

          js arbeitet asynchron und wartet nicht bis der gerade in einen DP geschriebene Wert auch da schon angekommen ist.
          Fragt man diesen Wert direkt wieder ab, liegt noch der alte Wert vor

          Das klappt bei mir aber einwandfrei (mache ich öfters)

          setState("DP_neu", getState("DP_2012").val);
          setState("DP3", getState("DP4").val + getState("DP_neu").val);
                      
          

          Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
          Danke.
          gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
          ScreenToGif :https://www.screentogif.com/downloads.html

          CodierknechtC 1 Antwort Letzte Antwort
          0
          • bahnuhrB bahnuhr

            @homoran sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

            @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

            Was eine Asynchronfalle genau ist, ist mir nicht klar?

            js arbeitet asynchron und wartet nicht bis der gerade in einen DP geschriebene Wert auch da schon angekommen ist.
            Fragt man diesen Wert direkt wieder ab, liegt noch der alte Wert vor

            Das klappt bei mir aber einwandfrei (mache ich öfters)

            setState("DP_neu", getState("DP_2012").val);
            setState("DP3", getState("DP4").val + getState("DP_neu").val);
                        
            
            CodierknechtC Online
            CodierknechtC Online
            Codierknecht
            Developer Most Active
            schrieb am zuletzt editiert von
            #13

            @bahnuhr
            Kann klappen - muss aber nicht.
            Pferd und Apotheke und so :grin:

            "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

            Proxmox 9.1.1 LXC|8 GB|Core i7-6700
            HmIP|ZigBee|Tasmota|Unifi
            Zabbix Certified Specialist
            Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

            bahnuhrB 1 Antwort Letzte Antwort
            0
            • CodierknechtC Codierknecht

              @bahnuhr
              Kann klappen - muss aber nicht.
              Pferd und Apotheke und so :grin:

              bahnuhrB Offline
              bahnuhrB Offline
              bahnuhr
              Forum Testing Most Active
              schrieb am zuletzt editiert von
              #14

              @codierknecht
              wie gesagt; hab ich in meinen Scripten öfters.
              Gab noch nie Probleme.

              js hat immer den neuen Werte genommen.


              Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
              Danke.
              gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
              ScreenToGif :https://www.screentogif.com/downloads.html

              CodierknechtC 1 Antwort Letzte Antwort
              0
              • bahnuhrB bahnuhr

                @codierknecht
                wie gesagt; hab ich in meinen Scripten öfters.
                Gab noch nie Probleme.

                js hat immer den neuen Werte genommen.

                CodierknechtC Online
                CodierknechtC Online
                Codierknecht
                Developer Most Active
                schrieb am zuletzt editiert von
                #15

                @bahnuhr
                Da interne Variablen auch schneller verarbeitet werden als den Wert erneut zu lesen, würde ich sowas minimal anders machen:

                let val2012 = getState("DP_2012").val
                setState("DP_neu", val2012);
                setState("DP3", getState("DP4").val + val2012);
                

                "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                HmIP|ZigBee|Tasmota|Unifi
                Zabbix Certified Specialist
                Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                bahnuhrB R 2 Antworten Letzte Antwort
                2
                • CodierknechtC Codierknecht

                  @bahnuhr
                  Da interne Variablen auch schneller verarbeitet werden als den Wert erneut zu lesen, würde ich sowas minimal anders machen:

                  let val2012 = getState("DP_2012").val
                  setState("DP_neu", val2012);
                  setState("DP3", getState("DP4").val + val2012);
                  
                  bahnuhrB Offline
                  bahnuhrB Offline
                  bahnuhr
                  Forum Testing Most Active
                  schrieb am zuletzt editiert von
                  #16

                  @codierknecht

                  Nachteil: 1 Zeile mehr


                  Wenn ich helfen konnte, dann Daumen hoch (Pfeil nach oben)!
                  Danke.
                  gute Forenbeiträge: https://forum.iobroker.net/topic/51555/hinweise-f%C3%BCr-gute-forenbeitr%C3%A4ge
                  ScreenToGif :https://www.screentogif.com/downloads.html

                  HomoranH CodierknechtC 2 Antworten Letzte Antwort
                  0
                  • bahnuhrB bahnuhr

                    @codierknecht

                    Nachteil: 1 Zeile mehr

                    HomoranH Nicht stören
                    HomoranH Nicht stören
                    Homoran
                    Global Moderator Administrators
                    schrieb am zuletzt editiert von
                    #17

                    @bahnuhr sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                    @codierknecht

                    Nachteil: 1 Zeile mehr

                    egal, Berechnungen immer mit Variablen und erst am Ende in DPs schreiben

                    kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                    Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                    der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                    1 Antwort Letzte Antwort
                    0
                    • bahnuhrB bahnuhr

                      @codierknecht

                      Nachteil: 1 Zeile mehr

                      CodierknechtC Online
                      CodierknechtC Online
                      Codierknecht
                      Developer Most Active
                      schrieb am zuletzt editiert von
                      #18

                      @bahnuhr
                      Vorteil: Minimal schneller.

                      Immer dann, wenn ein Wert im Script nochmal benötigt wird, sollte man das mit internen Variablen lösen.
                      Das Problem ist: Du kannst Dich nicht zu 100% darauf verlassen, dass das immer und für alle Ewigkeit funktioniert.
                      Wenn es dann 1x schiefgeht, suchst Du Dir 'nen Wolf, wo denn der Fehler steckt.
                      Die eine Zeile macht den Kohl nicht fett.

                      Es soll auch Leute geben, die die Leerzeichen um Operatoren weglassen, in der Annahme dass das ja Platz spart und womöglich den Code schneller macht.
                      Lesbarer Code sieht anders aus. Da dürfen auch gerne mal Leerzeilen rein, um das zu strukturieren uvam.

                      "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                      Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                      HmIP|ZigBee|Tasmota|Unifi
                      Zabbix Certified Specialist
                      Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                      1 Antwort Letzte Antwort
                      2
                      • CodierknechtC Codierknecht

                        @bahnuhr
                        Da interne Variablen auch schneller verarbeitet werden als den Wert erneut zu lesen, würde ich sowas minimal anders machen:

                        let val2012 = getState("DP_2012").val
                        setState("DP_neu", val2012);
                        setState("DP3", getState("DP4").val + val2012);
                        
                        R Offline
                        R Offline
                        Ralf 6
                        schrieb am zuletzt editiert von
                        #19

                        @codierknecht sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                        Da interne Variablen auch schneller verarbeitet werden als den Wert erneut zu lesen, würde ich sowas minimal anders machen:

                        let val2012 = getState("DP_2012").val
                        setState("DP_neu", val2012);
                        setState("DP3", getState("DP4").val + val2012);
                        

                        Da ich noch am lernen bin, wie würde denn dieses in Blockly aussehen? Ich habe an der ein oder anderen Stelle auch zeitkritsche Operationen. Eventuell kann mir diese Vorgehensweise helfen.
                        Vielen Dank im voraus

                        CodierknechtC 1 Antwort Letzte Antwort
                        0
                        • R Ralf 6

                          @codierknecht sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                          Da interne Variablen auch schneller verarbeitet werden als den Wert erneut zu lesen, würde ich sowas minimal anders machen:

                          let val2012 = getState("DP_2012").val
                          setState("DP_neu", val2012);
                          setState("DP3", getState("DP4").val + val2012);
                          

                          Da ich noch am lernen bin, wie würde denn dieses in Blockly aussehen? Ich habe an der ein oder anderen Stelle auch zeitkritsche Operationen. Eventuell kann mir diese Vorgehensweise helfen.
                          Vielen Dank im voraus

                          CodierknechtC Online
                          CodierknechtC Online
                          Codierknecht
                          Developer Most Active
                          schrieb am zuletzt editiert von
                          #20

                          @ralf-6 sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                          wie würde denn dieses in Blockly aussehen?

                          Prinzipiell so:
                          d27ce49d-7c45-41c7-83f8-b901c78d0468-image.png

                          "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                          Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                          HmIP|ZigBee|Tasmota|Unifi
                          Zabbix Certified Specialist
                          Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                          HomoranH 1 Antwort Letzte Antwort
                          0
                          • CodierknechtC Codierknecht

                            @ralf-6 sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                            wie würde denn dieses in Blockly aussehen?

                            Prinzipiell so:
                            d27ce49d-7c45-41c7-83f8-b901c78d0468-image.png

                            HomoranH Nicht stören
                            HomoranH Nicht stören
                            Homoran
                            Global Moderator Administrators
                            schrieb am zuletzt editiert von Homoran
                            #21

                            @codierknecht ich würde sogar alle Wert von... zu Beginn in Variablen schreiben und nur noch mit diesen rechnen,.
                            Dann passen sie auch zeitlich zusammen

                            kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                            Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                            der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                            paul53P 1 Antwort Letzte Antwort
                            1
                            • HomoranH Homoran

                              @codierknecht ich würde sogar alle Wert von... zu Beginn in Variablen schreiben und nur noch mit diesen rechnen,.
                              Dann passen sie auch zeitlich zusammen

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

                              @homoran sagte: sogar alle Wert von... zu Beginn in Variablen schreiben

                              ... alle Werte, die mehr als einmal verwendet werden.
                              Auch die komplexe Funktion setState() ("steuere"/"aktualisiere") für einen Datenpunkt sollte nur einmal innerhalb einer Callback-Funktion erfolgen, was auch oft die Verwendung von Variablen erfordert.

                              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

                              R 1 Antwort Letzte Antwort
                              0
                              • paul53P paul53

                                @homoran sagte: sogar alle Wert von... zu Beginn in Variablen schreiben

                                ... alle Werte, die mehr als einmal verwendet werden.
                                Auch die komplexe Funktion setState() ("steuere"/"aktualisiere") für einen Datenpunkt sollte nur einmal innerhalb einer Callback-Funktion erfolgen, was auch oft die Verwendung von Variablen erfordert.

                                R Offline
                                R Offline
                                Ralf 6
                                schrieb am zuletzt editiert von
                                #23

                                @paul53; @Homoran; @Codierknecht

                                Vielen Dank für die inspirierende Nachhilfe

                                1 Antwort Letzte Antwort
                                0
                                • CodierknechtC Codierknecht

                                  @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                                  Gibt es eine einfachere / präziesere Funktion, um eine Abfrage zu machen

                                  Ich habe noch nicht durchblickt, was Dein Blockly denn genau machen soll.
                                  Dein Rollo soll genau x Sekunden vor einer bestimmten Zeit hochfahren?
                                  Warum sind da die Sekunden so wichtig?
                                  Also mir persönlich wäre es ziemlich egal, ob das Rollo nun 14 oder 16 Minuten vor einer bestimmten Zeit hochfährt.

                                  Wenn die Weckzeit in einem DP hinterlegt ist, könnte man da bei Änderungen auch mit 'nem Trigger reagieren und einen passgenauen Zeitplan-Trigger erstellen.
                                  Das spart dann auch minütliche Ausführungen.

                                  smileS Offline
                                  smileS Offline
                                  smile
                                  schrieb am zuletzt editiert von smile
                                  #24

                                  @codierknecht sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                                  @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                                  Gibt es eine einfachere / präziesere Funktion, um eine Abfrage zu machen

                                  Ich habe noch nicht durchblickt, was Dein Blockly denn genau machen soll.
                                  Dein Rollo soll genau x Sekunden vor einer bestimmten Zeit hochfahren?
                                  Warum sind da die Sekunden so wichtig?
                                  Also mir persönlich wäre es ziemlich egal, ob das Rollo nun 14 oder 16 Minuten vor einer bestimmten Zeit hochfährt.

                                  Wenn die Weckzeit in einem DP hinterlegt ist, könnte man da bei Änderungen auch mit 'nem Trigger reagieren und einen passgenauen Zeitplan-Trigger erstellen.
                                  Das spart dann auch minütliche Ausführungen.

                                  Ganz einfach: Ich stelle einen Wecker über eine MQTT Wecker app. (Ziemlich coole App von Joaquim Plantin: Google Play Store
                                  Dieser Überträgt die Weckzeit in hh:mm an den iobroker. Dort steht also in einer Variable 08:35
                                  Diese rechne ich um in einen Timestamp in Sekunden seit Tagesanfang:
                                  719ba6df-c317-499e-a37a-c95141481676-grafik.png
                                  Dann lasse ich die im Eingangspost beschriebene Abfrage 1 x pro Minute durchführen, ob dieser Timestamp + - 80 Sekunden gerade zutrifft.
                                  Und wenn ich eine entsprechende Aktion z.B. 15 Minuten davor haben möchte, ziehe ich eben 15 x 60 Sekunden davon ab.
                                  Das funktioniert ja auch alles, nur halt ist immer der 1-minütige Trigger aktiv und es hat diesen leichten Ungenauigkeitsaspekt.
                                  Ich stimme zu dass es nicht so kritisch ist ab 14, 15 oder 16 Minuten - aber es könnte auch in anderen denkbaren Szenarien eine höhere Bedeutung haben, dass der Zeitpunkt exakt übereinstimmt.

                                  Wie würdest du den passgenauen Zeitplan-Trigger erstellen? Wie bekommt man da die unterschiedlichen Werte rein, also einmal die Weckzeit und zum anderen die Unterschiedlichen Rollo - Vorlaufzeiten (15 Min, 30 Min oder 60 Min)?

                                  Danke für die spannenden Infos hier, ich habe schon wieder viel gelernt!


                                  io.broker @ debian @ virtualbox @ Windows 10 Pro / Node 18.17.1, npm 9.6.7 / CCU3 / IR.Trans Server / Daslight 4 / Mobotix IP Cams / Qnap NAS / Sonos /

                                  Mein Rolladen - Blockly: https://forum.iobroker.net/topic/6442/das-ultimative-markisen-rolladen-blockly-script

                                  CodierknechtC 1 Antwort Letzte Antwort
                                  0
                                  • smileS smile

                                    @codierknecht sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                                    @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                                    Gibt es eine einfachere / präziesere Funktion, um eine Abfrage zu machen

                                    Ich habe noch nicht durchblickt, was Dein Blockly denn genau machen soll.
                                    Dein Rollo soll genau x Sekunden vor einer bestimmten Zeit hochfahren?
                                    Warum sind da die Sekunden so wichtig?
                                    Also mir persönlich wäre es ziemlich egal, ob das Rollo nun 14 oder 16 Minuten vor einer bestimmten Zeit hochfährt.

                                    Wenn die Weckzeit in einem DP hinterlegt ist, könnte man da bei Änderungen auch mit 'nem Trigger reagieren und einen passgenauen Zeitplan-Trigger erstellen.
                                    Das spart dann auch minütliche Ausführungen.

                                    Ganz einfach: Ich stelle einen Wecker über eine MQTT Wecker app. (Ziemlich coole App von Joaquim Plantin: Google Play Store
                                    Dieser Überträgt die Weckzeit in hh:mm an den iobroker. Dort steht also in einer Variable 08:35
                                    Diese rechne ich um in einen Timestamp in Sekunden seit Tagesanfang:
                                    719ba6df-c317-499e-a37a-c95141481676-grafik.png
                                    Dann lasse ich die im Eingangspost beschriebene Abfrage 1 x pro Minute durchführen, ob dieser Timestamp + - 80 Sekunden gerade zutrifft.
                                    Und wenn ich eine entsprechende Aktion z.B. 15 Minuten davor haben möchte, ziehe ich eben 15 x 60 Sekunden davon ab.
                                    Das funktioniert ja auch alles, nur halt ist immer der 1-minütige Trigger aktiv und es hat diesen leichten Ungenauigkeitsaspekt.
                                    Ich stimme zu dass es nicht so kritisch ist ab 14, 15 oder 16 Minuten - aber es könnte auch in anderen denkbaren Szenarien eine höhere Bedeutung haben, dass der Zeitpunkt exakt übereinstimmt.

                                    Wie würdest du den passgenauen Zeitplan-Trigger erstellen? Wie bekommt man da die unterschiedlichen Werte rein, also einmal die Weckzeit und zum anderen die Unterschiedlichen Rollo - Vorlaufzeiten (15 Min, 30 Min oder 60 Min)?

                                    Danke für die spannenden Infos hier, ich habe schon wieder viel gelernt!

                                    CodierknechtC Online
                                    CodierknechtC Online
                                    Codierknecht
                                    Developer Most Active
                                    schrieb am zuletzt editiert von
                                    #25

                                    @smile
                                    Du könntest z.B. auf die Änderung der Weckzeit im ioBroker reagieren und damit dann einen (oder mehrere) Zeitpläne erstellen.

                                    So in etwa nach diesem Prinzip:
                                    a536fef0-15f1-4217-ba08-938a088f5b92-grafik.png

                                    "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                    Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                    HmIP|ZigBee|Tasmota|Unifi
                                    Zabbix Certified Specialist
                                    Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                    smileS 1 Antwort Letzte Antwort
                                    0
                                    • CodierknechtC Codierknecht

                                      @smile
                                      Du könntest z.B. auf die Änderung der Weckzeit im ioBroker reagieren und damit dann einen (oder mehrere) Zeitpläne erstellen.

                                      So in etwa nach diesem Prinzip:
                                      a536fef0-15f1-4217-ba08-938a088f5b92-grafik.png

                                      smileS Offline
                                      smileS Offline
                                      smile
                                      schrieb am zuletzt editiert von
                                      #26

                                      @codierknecht Ja das ist eine coole Idee. Und die Zeit davor, also z.B. 15 Minuten davor würdest du dann mit einem zweitem CRON Zeitplan realisieren, wo man die Werte entsprechend um 15 Minuten anpasst?


                                      io.broker @ debian @ virtualbox @ Windows 10 Pro / Node 18.17.1, npm 9.6.7 / CCU3 / IR.Trans Server / Daslight 4 / Mobotix IP Cams / Qnap NAS / Sonos /

                                      Mein Rolladen - Blockly: https://forum.iobroker.net/topic/6442/das-ultimative-markisen-rolladen-blockly-script

                                      CodierknechtC 1 Antwort Letzte Antwort
                                      0
                                      • smileS smile

                                        @codierknecht Ja das ist eine coole Idee. Und die Zeit davor, also z.B. 15 Minuten davor würdest du dann mit einem zweitem CRON Zeitplan realisieren, wo man die Werte entsprechend um 15 Minuten anpasst?

                                        CodierknechtC Online
                                        CodierknechtC Online
                                        Codierknecht
                                        Developer Most Active
                                        schrieb am zuletzt editiert von
                                        #27

                                        @smile sagte in Grundsätzliches: Mathematische Berechnungen in Blockly:

                                        Und die Zeit davor, also z.B. 15 Minuten davor würdest du dann mit einem zweitem CRON Zeitplan realisieren, wo man die Werte entsprechend um 15 Minuten anpasst?

                                        Exakt!

                                        Um mit Versatzzeiten arbeiten zu können, sollte man den Wert zunächst in einen Zeitwert konvertieren.
                                        Damit lässt sich dann rechnen. Also z.B. 15 Minuten abziehen.
                                        Mit dem Ergebnis lassen sich dann verschiedene Zeitpläne einrichten.

                                        Also z.B. die Weckzeit ohne Versatz und dann einen Zweiten Zeitplan mit - 15 Minuten.

                                        "Any fool can write code that a computer can understand. Good programmers write code that humans can understand." (Martin Fowler, "Refactoring")

                                        Proxmox 9.1.1 LXC|8 GB|Core i7-6700
                                        HmIP|ZigBee|Tasmota|Unifi
                                        Zabbix Certified Specialist
                                        Konnte ich Dir helfen? Dann benutze bitte das Voting unten rechts im Beitrag

                                        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

                                        730

                                        Online

                                        32.6k

                                        Benutzer

                                        82.0k

                                        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