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.1k

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

  • 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

    Hi zusammen,

    mich würde interessieren wie Blockly Scripte mathematische Berechnungen durchführen, sprich welche Art Berechnungsschema dahintersteckt und nach welcher Maßgabe und Reihenfolge Berechnungen durchgeführt werden. Insbesondere ist interessant, wie mit Rechenketten umgegangen wird, in denen z.B. auch Multiplikationen enthalten sind. Ich habe in einem Blockly simple Berechnungen aufgestellt und es kommen nicht nachvollziehbare Ergebnisse dabei heraus. Hier mal ein Auszug:

    iobroker-timestamp-Ergebnisse 2.png
    Nicht nachvollziehbar ist nun das ,was bei Ergebnis 2 herauskommt:

    2023-10-08 19:16:52.397	info	script.js.Beschattungen.0: ERGEBNIS 2:3509180
    2023-10-08 19:16:52.397	info	script.js.Beschattungen.0: ERGEBNIS:34120
    

    Auf dem unteren Teil des Screenshots seht ihr, wozu das ganze dient - es soll minütlich geprüft werden, ob ein aktueller Zeitpunk (Timestamp) zutrifft, abzüglich einer Vorlaufzeit ("rollo_weckzeit_timestamp") von 900 sec.
    Es soll also 15 Minuten vor dem Zeitpunk etwas passieren. Die -80 und die +80 in dem unterem Blockly dienen dazu, 1 Minute und 40 Sekunden Puffer zu geben, da ja nur 1 x pro Minute dieser Zeitpunkt abgefragt wird. (Nebenbei: Falls es eine einfachere Methode gibt um einen Zeitpunk - x Minuten abzufragen um dann eine Aktion auszulösen bin ich für Tipps sehr dankbar :blush: )

    Die Frage ist ja nun, wieso kommt das Blockly auf dieses Ergebnis 2?
    Für die Scripprofis hier auch nochmal der Auszug aus dem Code des Blocklys:

    // Beschreibe diese Funktion …
    async function ERGEBNIS() {
      Wecker_1__3E = (getState('0_userdata.0.Wecker.wecker_1_timestamp').val - 80) - getState('0_userdata.0.Wecker.rollo_weckzeit_timestamp').val;
      return Wecker_1__3E;
    }
    
    // Beschreibe diese Funktion …
    async function ERGEBNIS_2() {
      Wecker_1__3C = (getState('0_userdata.0.Wecker.wecker_1_timestamp').val + 80) - getState('0_userdata.0.Wecker.rollo_weckzeit_timestamp').val;
      return Wecker_1__3C;
    }
    

    Aus dieser Thematik stellen sich mir grundsätzliche Fragen zu Blockly Mathematik, auf die ich bisher noch keine Antworten gefunden habe:

    • Wie funktioniert der Mathematik-Block von Blockly grundsätzlich?
    • Wie werden Reihenfolgen von Berechnungen durchgeführt mit "+" "-" und "x" ? Gibt es eine "Punkt-vor-Strich-Rechnung"?
    • Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)
    • Welchen Unterschied macht "Externe Eingeänge" / "Interne Eingänge" in dem Mathematik-Block?
    • Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen oder macht es Sinn, eines zu erstellen? Ggf. auch hier in dem Thread sammeln.

    Danke für eure Hilfe :tumbler_glass: :tumbler_glass:

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

    @smile sagte: Gibt es eine "Punkt-vor-Strich-Rechnung"?

    In Javascript: Ja. Blockly setzt automatisch Klammern um einen Block.

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

    Welchen Unterschied macht "Externe Eingeänge" / "Interne Eingänge" in dem Mathematik-Block?

    Der Unterschied ist nur optisch.

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

    Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen

    Doku auf Github

    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

    smileS 1 Antwort Letzte Antwort
    0
    • smileS smile

      Hi zusammen,

      mich würde interessieren wie Blockly Scripte mathematische Berechnungen durchführen, sprich welche Art Berechnungsschema dahintersteckt und nach welcher Maßgabe und Reihenfolge Berechnungen durchgeführt werden. Insbesondere ist interessant, wie mit Rechenketten umgegangen wird, in denen z.B. auch Multiplikationen enthalten sind. Ich habe in einem Blockly simple Berechnungen aufgestellt und es kommen nicht nachvollziehbare Ergebnisse dabei heraus. Hier mal ein Auszug:

      iobroker-timestamp-Ergebnisse 2.png
      Nicht nachvollziehbar ist nun das ,was bei Ergebnis 2 herauskommt:

      2023-10-08 19:16:52.397	info	script.js.Beschattungen.0: ERGEBNIS 2:3509180
      2023-10-08 19:16:52.397	info	script.js.Beschattungen.0: ERGEBNIS:34120
      

      Auf dem unteren Teil des Screenshots seht ihr, wozu das ganze dient - es soll minütlich geprüft werden, ob ein aktueller Zeitpunk (Timestamp) zutrifft, abzüglich einer Vorlaufzeit ("rollo_weckzeit_timestamp") von 900 sec.
      Es soll also 15 Minuten vor dem Zeitpunk etwas passieren. Die -80 und die +80 in dem unterem Blockly dienen dazu, 1 Minute und 40 Sekunden Puffer zu geben, da ja nur 1 x pro Minute dieser Zeitpunkt abgefragt wird. (Nebenbei: Falls es eine einfachere Methode gibt um einen Zeitpunk - x Minuten abzufragen um dann eine Aktion auszulösen bin ich für Tipps sehr dankbar :blush: )

      Die Frage ist ja nun, wieso kommt das Blockly auf dieses Ergebnis 2?
      Für die Scripprofis hier auch nochmal der Auszug aus dem Code des Blocklys:

      // Beschreibe diese Funktion …
      async function ERGEBNIS() {
        Wecker_1__3E = (getState('0_userdata.0.Wecker.wecker_1_timestamp').val - 80) - getState('0_userdata.0.Wecker.rollo_weckzeit_timestamp').val;
        return Wecker_1__3E;
      }
      
      // Beschreibe diese Funktion …
      async function ERGEBNIS_2() {
        Wecker_1__3C = (getState('0_userdata.0.Wecker.wecker_1_timestamp').val + 80) - getState('0_userdata.0.Wecker.rollo_weckzeit_timestamp').val;
        return Wecker_1__3C;
      }
      

      Aus dieser Thematik stellen sich mir grundsätzliche Fragen zu Blockly Mathematik, auf die ich bisher noch keine Antworten gefunden habe:

      • Wie funktioniert der Mathematik-Block von Blockly grundsätzlich?
      • Wie werden Reihenfolgen von Berechnungen durchgeführt mit "+" "-" und "x" ? Gibt es eine "Punkt-vor-Strich-Rechnung"?
      • Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)
      • Welchen Unterschied macht "Externe Eingeänge" / "Interne Eingänge" in dem Mathematik-Block?
      • Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen oder macht es Sinn, eines zu erstellen? Ggf. auch hier in dem Thread sammeln.

      Danke für eure Hilfe :tumbler_glass: :tumbler_glass:

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

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

      Wie funktioniert der Mathematik-Block von Blockly grundsätzlich?

      Er rechnet

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

      Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)

      durch sinnvolle Struktur

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

      Welchen Unterschied macht "Externe Eingeänge" / "Interne Eingänge" in dem Mathematik-Block?

      den selben wie in allen Blöcken! zusammenklappen

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

      Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen

      welche?

      • addiert
      • subtrahiert
        : teilt
      • multipliziert

      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
      • paul53P paul53

        @smile sagte: Gibt es eine "Punkt-vor-Strich-Rechnung"?

        In Javascript: Ja. Blockly setzt automatisch Klammern um einen Block.

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

        Welchen Unterschied macht "Externe Eingeänge" / "Interne Eingänge" in dem Mathematik-Block?

        Der Unterschied ist nur optisch.

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

        Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen

        Doku auf Github

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

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

        @smile sagte: Gibt es eine "Punkt-vor-Strich-Rechnung"?

        In Javascript: Ja. Blockly setzt automatisch Klammern um einen Block.

        Okay, wie genau wird die Klammer um den Block gesetzt? Kannst du mir das anhand der zwei Beispiele auf dem Screenshot sagen:
        c4d3c276-dc6e-49ba-8574-4c96de3352d2-grafik.png

        Die Unterschiedlichen Ergebnisse sprechen aber nicht dafür, dass das zuverlässig funktioniert, oder?

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

        Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen

        Doku auf Github

        Die hat im Bereich Mathematik nur einen Eintrag, dort war zu diesem Thema nichts zu finden.

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

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

        Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)

        durch sinnvolle Struktur

        Würdest Du sagen dass die Struktur aus meinem Beispiel nicht sinnvoll ist, bzw. wie wäre sie sinnvoll?

        Danke euch beiden.


        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

        bahnuhrB HomoranH 2 Antworten Letzte Antwort
        0
        • smileS smile

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

          @smile sagte: Gibt es eine "Punkt-vor-Strich-Rechnung"?

          In Javascript: Ja. Blockly setzt automatisch Klammern um einen Block.

          Okay, wie genau wird die Klammer um den Block gesetzt? Kannst du mir das anhand der zwei Beispiele auf dem Screenshot sagen:
          c4d3c276-dc6e-49ba-8574-4c96de3352d2-grafik.png

          Die Unterschiedlichen Ergebnisse sprechen aber nicht dafür, dass das zuverlässig funktioniert, oder?

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

          Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen

          Doku auf Github

          Die hat im Bereich Mathematik nur einen Eintrag, dort war zu diesem Thema nichts zu finden.

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

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

          Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)

          durch sinnvolle Struktur

          Würdest Du sagen dass die Struktur aus meinem Beispiel nicht sinnvoll ist, bzw. wie wäre sie sinnvoll?

          Danke euch beiden.

          bahnuhrB Online
          bahnuhrB Online
          bahnuhr
          Forum Testing Most Active
          schrieb am zuletzt editiert von
          #5

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

          hast dies mal probiert ?


          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

          smileS 1 Antwort Letzte Antwort
          0
          • smileS smile

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

            @smile sagte: Gibt es eine "Punkt-vor-Strich-Rechnung"?

            In Javascript: Ja. Blockly setzt automatisch Klammern um einen Block.

            Okay, wie genau wird die Klammer um den Block gesetzt? Kannst du mir das anhand der zwei Beispiele auf dem Screenshot sagen:
            c4d3c276-dc6e-49ba-8574-4c96de3352d2-grafik.png

            Die Unterschiedlichen Ergebnisse sprechen aber nicht dafür, dass das zuverlässig funktioniert, oder?

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

            Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen

            Doku auf Github

            Die hat im Bereich Mathematik nur einen Eintrag, dort war zu diesem Thema nichts zu finden.

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

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

            Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)

            durch sinnvolle Struktur

            Würdest Du sagen dass die Struktur aus meinem Beispiel nicht sinnvoll ist, bzw. wie wäre sie sinnvoll?

            Danke euch beiden.

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

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

            Würdest Du sagen dass die Struktur aus meinem Beispiel nicht sinnvoll ist, bzw. wie wäre sie sinnvoll?

            wenn du so gerechnet haben willst wie du die Klammern im ersten Fall gezeichnet hast wäre das die sinnvolle struktur

            wobei bei reiner Strichrechnung eh das Kommutativgesetz gilt.

            Wenn das Ergebnis nicht reproduzierbar funktioniert läufst du eher in die Asynchronfalle

            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
            • smileS smile

              Hi zusammen,

              mich würde interessieren wie Blockly Scripte mathematische Berechnungen durchführen, sprich welche Art Berechnungsschema dahintersteckt und nach welcher Maßgabe und Reihenfolge Berechnungen durchgeführt werden. Insbesondere ist interessant, wie mit Rechenketten umgegangen wird, in denen z.B. auch Multiplikationen enthalten sind. Ich habe in einem Blockly simple Berechnungen aufgestellt und es kommen nicht nachvollziehbare Ergebnisse dabei heraus. Hier mal ein Auszug:

              iobroker-timestamp-Ergebnisse 2.png
              Nicht nachvollziehbar ist nun das ,was bei Ergebnis 2 herauskommt:

              2023-10-08 19:16:52.397	info	script.js.Beschattungen.0: ERGEBNIS 2:3509180
              2023-10-08 19:16:52.397	info	script.js.Beschattungen.0: ERGEBNIS:34120
              

              Auf dem unteren Teil des Screenshots seht ihr, wozu das ganze dient - es soll minütlich geprüft werden, ob ein aktueller Zeitpunk (Timestamp) zutrifft, abzüglich einer Vorlaufzeit ("rollo_weckzeit_timestamp") von 900 sec.
              Es soll also 15 Minuten vor dem Zeitpunk etwas passieren. Die -80 und die +80 in dem unterem Blockly dienen dazu, 1 Minute und 40 Sekunden Puffer zu geben, da ja nur 1 x pro Minute dieser Zeitpunkt abgefragt wird. (Nebenbei: Falls es eine einfachere Methode gibt um einen Zeitpunk - x Minuten abzufragen um dann eine Aktion auszulösen bin ich für Tipps sehr dankbar :blush: )

              Die Frage ist ja nun, wieso kommt das Blockly auf dieses Ergebnis 2?
              Für die Scripprofis hier auch nochmal der Auszug aus dem Code des Blocklys:

              // Beschreibe diese Funktion …
              async function ERGEBNIS() {
                Wecker_1__3E = (getState('0_userdata.0.Wecker.wecker_1_timestamp').val - 80) - getState('0_userdata.0.Wecker.rollo_weckzeit_timestamp').val;
                return Wecker_1__3E;
              }
              
              // Beschreibe diese Funktion …
              async function ERGEBNIS_2() {
                Wecker_1__3C = (getState('0_userdata.0.Wecker.wecker_1_timestamp').val + 80) - getState('0_userdata.0.Wecker.rollo_weckzeit_timestamp').val;
                return Wecker_1__3C;
              }
              

              Aus dieser Thematik stellen sich mir grundsätzliche Fragen zu Blockly Mathematik, auf die ich bisher noch keine Antworten gefunden habe:

              • Wie funktioniert der Mathematik-Block von Blockly grundsätzlich?
              • Wie werden Reihenfolgen von Berechnungen durchgeführt mit "+" "-" und "x" ? Gibt es eine "Punkt-vor-Strich-Rechnung"?
              • Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)
              • Welchen Unterschied macht "Externe Eingeänge" / "Interne Eingänge" in dem Mathematik-Block?
              • Gibt es irgendwo ein Tutorial / Übersicht über diese Blockly Funktionen oder macht es Sinn, eines zu erstellen? Ggf. auch hier in dem Thread sammeln.

              Danke für eure Hilfe :tumbler_glass: :tumbler_glass:

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

              @smile sagte: Hat man die Möglichkeit Klammern zu verwenden und wenn ja wie? Z.b. (Wert von ObjectID + 10) * (Varable1 * 0,5)

              Blockly_temp.JPG

              Erzeugter Javascript-Code:

              (getState('ID auswählen').val + 10) * Variable1 * 0.5;
              

              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
              0
              • bahnuhrB bahnuhr

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

                hast dies mal probiert ?

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

                @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)


                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 HomoranH 3 Antworten 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
                  #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 Online
                        bahnuhrB Online
                        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 Online
                            bahnuhrB Online
                            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 Online
                                bahnuhrB Online
                                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
                                          Antworten
                                          • In einem neuen Thema antworten
                                          Anmelden zum Antworten
                                          • Älteste zuerst
                                          • Neuste zuerst
                                          • Meiste Stimmen


                                          Support us

                                          ioBroker
                                          Community Adapters
                                          Donate

                                          753

                                          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