Skip to content
  • Home
  • Recent
  • Tags
  • 0 Unread 0
  • Categories
  • Unreplied
  • Popular
  • 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

  • Default (No Skin)
  • No Skin
Collapse
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

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    18
    1
    697

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

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

Grundsätzliches: Mathematische Berechnungen in Blockly

Scheduled Pinned Locked Moved Blockly
blockly
27 Posts 6 Posters 3.8k Views 4 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • bahnuhrB bahnuhr

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

    js hat immer den neuen Werte genommen.

    CodierknechtC Offline
    CodierknechtC Offline
    Codierknecht
    Developer Most Active
    wrote on last edited by
    #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 Replies Last reply
    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 Online
      bahnuhrB Online
      bahnuhr
      Forum Testing Most Active
      wrote on last edited by
      #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 Replies Last reply
      0
      • bahnuhrB bahnuhr

        @codierknecht

        Nachteil: 1 Zeile mehr

        HomoranH Do not disturb
        HomoranH Do not disturb
        Homoran
        Global Moderator Administrators
        wrote on last edited by
        #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 -
        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
        Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

        1 Reply Last reply
        0
        • bahnuhrB bahnuhr

          @codierknecht

          Nachteil: 1 Zeile mehr

          CodierknechtC Offline
          CodierknechtC Offline
          Codierknecht
          Developer Most Active
          wrote on last edited by
          #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 Reply Last reply
          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
            wrote on last edited by
            #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 Reply Last reply
            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 Offline
              CodierknechtC Offline
              Codierknecht
              Developer Most Active
              wrote on last edited by
              #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 Reply Last reply
              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 Do not disturb
                HomoranH Do not disturb
                Homoran
                Global Moderator Administrators
                wrote on last edited by 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 -
                Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.
                Das Forum freut sich über eine Spende. Benutzt dazu den Spendenbutton im Header. Danke!
                der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                paul53P 1 Reply Last reply
                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
                  wrote on last edited by 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 Reply Last reply
                  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
                    wrote on last edited by
                    #23

                    @paul53; @Homoran; @Codierknecht

                    Vielen Dank für die inspirierende Nachhilfe

                    1 Reply Last reply
                    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
                      wrote on last edited by 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 Reply Last reply
                      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 Offline
                        CodierknechtC Offline
                        Codierknecht
                        Developer Most Active
                        wrote on last edited by
                        #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 Reply Last reply
                        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
                          wrote on last edited by
                          #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 Reply Last reply
                          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 Offline
                            CodierknechtC Offline
                            Codierknecht
                            Developer Most Active
                            wrote on last edited by
                            #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 Reply Last reply
                            1

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            Support us

                            ioBroker
                            Community Adapters
                            Donate

                            618

                            Online

                            32.7k

                            Users

                            82.6k

                            Topics

                            1.3m

                            Posts
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • Home
                            • Recent
                            • Tags
                            • Unread 0
                            • Categories
                            • Unreplied
                            • Popular
                            • GitHub
                            • Docu
                            • Hilfe