Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Skripten / Logik
    4. Blockly
    5. (gelöst) mein erstes Blockly... korrekt?

    NEWS

    • Wir empfehlen: Node.js 22.x

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker goes Matter ... Matter Adapter in Stable

    (gelöst) mein erstes Blockly... korrekt?

    This topic has been deleted. Only users with topic management privileges can see it.
    • Humidor
      Humidor last edited by Humidor

      Hallo Gemeinde!

      Möchte euch Korrektur fragen für meinen ersten Bock.
      Ein Feuchtigkeitssensor per zigbee wird eingelesen, dieser soll unter 65% ein Telegram und über 75% abschicken.
      Passt der Block dazu?

      on({id: 'zigbee.0.00158d00042704c0.humidity', change: "ne"}, function (obj) {
        var value = obj.state.val;
        var oldValue = obj.oldState.val;
        if (getState("zigbee.0.00158d00042704c0.humidity").val < 65) {
          sendTo("telegram.0", "send", {
              text: 'Feuchtigkeit im Humidor zu gering !'
          });
          console.log("telegram: " + 'Feuchtigkeit im Humidor zu gering !');
        } else if (getState("zigbee.0.00158d00042704c0.humidity").val > 75) {
          sendTo("telegram.0", "send", {
              text: 'Feuchtigkeit im Humidor zu hoch !'
          });
          console.log("telegram: " + 'Feuchtigkeit im Humidor zu hoch !');
        }
      });
      
      parseFloat();
      

      Bild Text

      paul53 1 Reply Last reply Reply Quote 0
      • OstfrieseUnterwegs
        OstfrieseUnterwegs last edited by

        Kommt darauf an... Du schickst immer ein Telegram wenn sich der Wert außerhalb der Grenzen ändert.
        Also fällt auf 64.9% -> telegram
        fällt auf 64.3 -> telegram
        steigt auf 64.7 -> telegram...
        Bei Luftfeuchte ists wahrscheinlich nicht besonders dynamisch, weil eher ein träges System.

        Jede Änderung wird also ein Telegram auslösen, außer sie finden im Bereich zwischen 65 und 75 statt. Kann man wollen, kann aber auch nervig sein...
        Du könntest vlt ein Flag einbauen, dass sich merkt, ob du schon benachrichtigt hast und dann in der Folge kein Telegram mehr senden. Flag wieder auf true setzen, wenn deine Humidity um soll-Bereich angekommen ist. Oder Flag nach einer Stunde zurücksetzen. Dann meldet Telegram was, lässt dich aber eine Stunde lang in Ruhe.
        Kommt also darauf an, was du erreichen möchtest.

        1 Reply Last reply Reply Quote 1
        • Humidor
          Humidor last edited by

          Hi,
          d.h. das Blockly fkt. so wie es mal ist, korrekt projektiert.

          Dein Einwand ist sehr gut, ist auch meine nächste Änderung die ich vor hatte.
          Da weiß ich aber noch nicht recht wie ich das angehen soll.
          Variable erstellen "bBlock" für Bool (0/1)
          dann eine Abfrage ob bBlock true/false ist und bei true nach einer Zeit resetten.
          Bild Text

          dslraser 1 Reply Last reply Reply Quote 0
          • Humidor
            Humidor last edited by Humidor

            Ha, hab grad die erste Benachrichtigung erhalten 😊
            Bild Text
            noch falsch geschrieben, aber es funktioniert.

            wie funktioniert denn das Debug?, kann ich mir den Zustand von bBlock anzeigen lassen bzw. den Zeitintervall?

            1 Reply Last reply Reply Quote 0
            • OstfrieseUnterwegs
              OstfrieseUnterwegs last edited by

              @Humidor sagte in mein erstes Blockly... korrekt?:

              wie funktioniert denn das Debug?, kann ich mir den Zustand von bBlock anzeigen lassen bzw. den Zeitintervall?

              Einen richtigen Debugger, wie aus programmierumgebungen gibt es nicht wirklich. Ich kenne nur die Möglichkeit, einen Debug Output Block einzufügen.

              Humidor 1 Reply Last reply Reply Quote 0
              • Humidor
                Humidor @OstfrieseUnterwegs last edited by

                @OstfrieseUnterwegs sagte in mein erstes Blockly... korrekt?:

                @Humidor sagte in mein erstes Blockly... korrekt?:

                wie funktioniert denn das Debug?, kann ich mir den Zustand von bBlock anzeigen lassen bzw. den Zeitintervall?

                Einen richtigen Debugger, wie aus programmierumgebungen gibt es nicht wirklich. Ich kenne nur die Möglichkeit, einen Debug Output Block einzufügen.

                schade, das ist das A&O ...

                Homoran 1 Reply Last reply Reply Quote 0
                • OstfrieseUnterwegs
                  OstfrieseUnterwegs last edited by

                  Gerade gesehen, du stoppst deinen Timer nicht... Wenn jetzt das script triggert, dann macht er jedesmal einen neuen Timer und die setzen dann jeder für sich jeweils nach 30 min deine Variable zurück.
                  Du solltest Block 'Ausführen in' nehmen. Der führt einmal nach einer bestimmten Zeit aus und dann ist er weg.

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

                    @Humidor sagte in mein erstes Blockly... korrekt?:

                    schade, das ist das A&O ...

                    Ähm, aber wo ist das Problem?

                    @Humidor sagte in mein erstes Blockly... korrekt?:

                    wie funktioniert denn das Debug?, kann ich mir den Zustand von bBlock anzeigen lassen bzw. den Zeitintervall?

                    Natürlich geht das mit dem Debug-Baustein.
                    Und wenn du fertig bist kannst du ihn löschen oder für späteren Gebrauch einfach deaktivieren

                    1 Reply Last reply Reply Quote 0
                    • dslraser
                      dslraser Forum Testing Most Active @Humidor last edited by

                      @Humidor
                      hm...ich habe es jetzt so noch nicht probiert, aber es sieht auf den ersten Blick so aus, das hier im Laufe der Zeit jede Menge Intervalle laufen werden, da das Intervall nirgends gestoppt wird.
                      Ich glaube Du brauchst ein timeout, aber auch das sollte gestoppt werden.

                      1 Reply Last reply Reply Quote 0
                      • Humidor
                        Humidor last edited by

                        ich verstehe die Worte, kann ich aber nicht in Taten umsetzen, wäre das etwa so?
                        Bild Text

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

                          @Humidor sagte in mein erstes Blockly... korrekt?:

                          wäre das etwa so?

                          etwa, ja!

                          ein weiteres Stop timeout direkt vor dem timeout, damit das alte gestoppt wird auch wenn ein neues gestartet wird

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

                            @Homoran sagte in mein erstes Blockly... korrekt?:

                            @Humidor sagte in mein erstes Blockly... korrekt?:

                            wäre das etwa so?

                            etwa, ja!

                            ein weiteres Stop timeout direkt vor dem timeout, damit das alte gestoppt wird auch wenn ein neues gestartet wird

                            verstehe nicht ganz, wäre das die Lösung?
                            Bild Text

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

                              @Humidor sagte in mein erstes Blockly... korrekt?:

                              verstehe nicht ganz, wäre das die Lösung?

                              nein!

                              das stop direkt VOR "Ausführen...."

                              1 Reply Last reply Reply Quote 0
                              • Humidor
                                Humidor last edited by

                                so?
                                Bild Text

                                Homoran Humidor 2 Replies Last reply Reply Quote 0
                                • Homoran
                                  Homoran Global Moderator Administrators @Humidor last edited by Homoran

                                  @Humidor Ja!

                                  und zum Thema Debug:
                                  debugging.png

                                  Mal auf die Schnelle einen beliebigen Debug-Baustein genommen.
                                  Das Ergebnis wird im log eangezeigt

                                  1 Reply Last reply Reply Quote 1
                                  • Humidor
                                    Humidor last edited by

                                    Super!

                                    dann möchte ich noch einen Debug Ausgabe machen, wo alle 10s die Werte von bBlock, Intervall ausgegeben werden.
                                    läuft das so:
                                    Bild Text

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

                                      @Humidor sagte in mein erstes Blockly... korrekt?:

                                      läuft das so:

                                      neee.
                                      Das ist kein Intervall, sondern ein Timeout.

                                      @Humidor sagte in mein erstes Blockly... korrekt?:

                                      wo alle 10s die Werte

                                      Wieso alle 10 Sekunden.
                                      Es muss doch reichen wenn sie geändert werden, oder?
                                      Dann einfach den Debug ganz oben als erstes unter den Trigger vor "falls bBlock"...

                                      Mit dem Intervall Timeout (???) ist das schon etwas komplizierter, da dort ein fester Name vergeben ist und du den nicht abfragen kannst. Zumindest habe ich es noch nie versucht.

                                      Du kannst aber einen eigenen Namen statt "Intervall" eingeben, legst dazu noch eine Variable mit eben diesem Namen an, und fragst die im debug ab.

                                      paul53 1 Reply Last reply Reply Quote 0
                                      • paul53
                                        paul53 @Humidor last edited by

                                        @Humidor sagte:

                                        soll unter 65% ein Telegram und über 75% abschicken.

                                        Wenn nur einmal bei Grenzwertunterschreitung bzw. -überschreitung ein Telegramm gesendet werden soll, kann man es so machen:

                                        Blockly_temp.JPG

                                        Wert findet man unter "Trigger".

                                        1 Reply Last reply Reply Quote 2
                                        • Humidor
                                          Humidor last edited by Humidor

                                          die Debug-Anzeige soll unabhängig vom Code sein, zeitlich reicht mir
                                          Bild Text

                                          15:04:55.003	info	javascript.0 (5315) script.js.common.Humidity: bBlock: , Timeout:
                                          15:05:00.005	info	javascript.0 (5315) script.js.common.Humidity: bBlock: , Timeout:
                                          

                                          verstehe noch nicht wie ich den Bool Block als True/False oder 1/2 anzeige bzw. die timeouts.. ?

                                          Homoran paul53 2 Replies Last reply Reply Quote 0
                                          • Homoran
                                            Homoran Global Moderator Administrators @Humidor last edited by

                                            @Humidor sagte in mein erstes Blockly... korrekt?:

                                            die Debug-Anzeige soll unabhängig vom Code sein

                                            Da die Variable bBlock aber nur in dem Code vorkommt muss der Cron-Block sich aber im gleichen Blockly (genau gesagt neben oder über/unter dem anderen) befinden

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            657
                                            Online

                                            32.0k
                                            Users

                                            80.4k
                                            Topics

                                            1.3m
                                            Posts

                                            blockly
                                            6
                                            59
                                            2165
                                            Loading More Posts
                                            • Oldest to Newest
                                            • Newest to Oldest
                                            • Most Votes
                                            Reply
                                            • Reply as topic
                                            Log in to reply
                                            Community
                                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen
                                            The ioBroker Community 2014-2023
                                            logo