Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Einsteigerfragen
    4. Zählen eines Zustandes

    NEWS

    • Neuer Blog: Fotos und Eindrücke aus Solingen

    • ioBroker@Smart Living Forum Solingen, 14.06. - Agenda added

    • ioBroker goes Matter ... Matter Adapter in Stable

    Zählen eines Zustandes

    This topic has been deleted. Only users with topic management privileges can see it.
    • Codierknecht
      Codierknecht Developer Most Active @Chris 1 last edited by

      @chris-1 sagte in Zählen eines Zustandes:

      Also viele viele "kurze" Skripts statt wenigen mit allen möglichen Fallunterscheidungen

      Nicht unbedingt (eher gar nicht).
      Du musst in Ereignissen denken. Man braucht 'ne Weile, bis man sich daran gewöhnt hat.
      Der Dreh- und Angelpunkt ist eigentlich immer, den richtigen Trigger zu definieren. Der legt fest, zu welchem Zeitpunkt das Ganze überhaupt loslegt. Und das ist oft gar nicht so einfach.
      Der Rest kommt dann innerhalb ...

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

        @chris-1 sagte in Zählen eines Zustandes:

        Das irritiert mich jetzt

        ich glaube das ist aber der Knackpunkt für dein (fehlendes) Verständnis für Javascript

        Chris 1 1 Reply Last reply Reply Quote 1
        • Chris 1
          Chris 1 @Homoran last edited by Chris 1

          @homoran Ich beginne ja gerade das System dahinter zu verstehen 🙂

          Es ist keine andere Welt,
          sondern nur ein anderer Ansatz 🙂

          1 Reply Last reply Reply Quote 0
          • Codierknecht
            Codierknecht Developer Most Active @Chris 1 last edited by

            @chris-1 sagte in Zählen eines Zustandes:

            ist was für morgen

            Vielleicht fällt uns bis dahin ja noch ein schöner Vergleich ein, an dem man event-driven-development irgendwie anschaulicher erklären kann 😁

            Chris 1 1 Reply Last reply Reply Quote 0
            • Chris 1
              Chris 1 @Codierknecht last edited by Chris 1

              @codierknecht Ich glaube, ich habe dies, zumindest im Ansatz, bereits verstanden - danke 🙂

              Anstatt in zyklischen Skripten zu denken,
              reagiere ich auf einen Trigger A und setze zB X auf false

              In einem Andere Skript reagiere ich auf Trigger X und agiere dann abhängig davon, ob auf true oder false gesetzt/geändert/... wurde

              haselchen M 2 Replies Last reply Reply Quote 0
              • haselchen
                haselchen Most Active @Chris 1 last edited by

                @Codierknecht
                @paul53
                @Homoran

                Fachfrage an die Experten.
                Gibt es eine definierte Zeit (1ms….1sek….?) in der die Bedingungen erfüllt sein müssen ?
                Beispiel , ein Blockly mit vielen Und / Oder Bedingungen.

                Chris 1 Codierknecht 2 Replies Last reply Reply Quote 0
                • Chris 1
                  Chris 1 @haselchen last edited by

                  @haselchen Gemäß oben "gelerntem?" dürfte es keine bestimmte Zeit geben, da (erst) nach Abarbeitung alles unmittelbar ausgeführt wird.

                  1 Reply Last reply Reply Quote 0
                  • Codierknecht
                    Codierknecht Developer Most Active @haselchen last edited by Codierknecht

                    @haselchen sagte in Zählen eines Zustandes:

                    Gibt es eine definierte Zeit (1ms….1sek….?) in der die Bedingungen erfüllt sein müssen ?
                    Beispiel , ein Blockly mit vielen Und / Oder Bedingungen.

                    In meiner Welt (Windows) nicht.
                    Zumindest gibt es da keine "vorgegebene" Zeit.
                    Ist natürlich auch ein bisschen abhängig von der Rechenleistung des Systems und ein paar anderen Faktoren, aber solche Vergleiche sind normalerweise in wenigen Mikrosekunden berechnet.
                    Da musst Du Dich schon extrem anstrengen und wirklich viel ineinander verschachteln, um das überhaupt messen zu können - geschweige denn zu bemerken.
                    Das "vorgegeben" habe ich bewußt in Anführungszeichen gesetzt: Wenn man's tatsächlich extrem übertreibt, könnten die Berechnungen so lange dauern, dass in der Zwischenzeit das Event schon ein weiteres Mal ausgelöst wird. Aber solche Dinge wie "Datenbankverbindungen innerhalb von Schleifen öffnen/schließen", "Dateien laden" und ähnliche Schweinereien machen wir ja hier eher nicht 🙂
                    Das ist aber alles eher theoretisch zu sehen. In der Praxis tritt der Fall nicht auf (berühmte letzte Worte)

                    haselchen 1 Reply Last reply Reply Quote 0
                    • M
                      Metamorph @Chris 1 last edited by

                      @chris-1 sagte

                      Anstatt in zyklischen Skripten zu denken,
                      reagiere ich auf einen Trigger A und setze zB X auf false

                      In einem Andere Skript reagiere ich auf Trigger X und agiere dann abhängig davon, ob auf true oder false gesetzt/geändert/... wurde

                      Du denkst noch zu aufwändig. Wenn du in Trigger A den Wert von X änderst, kannst du sofort dahinter abhängig von der Änderung weiter machen. Dies muss aber im Trigger und hinter der Variablenänderung geschehen.

                      Als Beispiel ein Lichtschalter, der bei jedem Drücken die Helligkeit der Lampe um 20% erhöht:

                      1. Trigger A wartet auf das Drücken des Schalters.
                      2. Löst der Trigger aus, erhöhst du den Wert von X (Helligkeit) um 20%.
                      3. Wenn X größer 100%, dann reduziere ihn auf 0%
                      4. Übertrage den Wert X in die Lampe.

                      Die Punkte 2-4 sind aufeinanderfolgende Schritte, die aber alle innerhalb des Triggers liegen. Im Prinzip kannst du dutzende Aktionen reinschreiben, die dann alle nacheinander ausgeführt werden, sobald ein Ereignis den Trigger auslöst.

                      1 Reply Last reply Reply Quote 0
                      • haselchen
                        haselchen Most Active @Codierknecht last edited by

                        @codierknecht

                        Diese Frage schwebt schon Ewigkeiten in meinem Kopf.
                        Trigger wird ausgelöst und manche andere Bedingungen in dem Blockly werden erst in 3,4 oder 5 Sekunden erfolgen .
                        Und da ist die Frage wie lange das Blockly wartet bis alles erfüllt ist nachdem der Trigger ausgelöst hat .

                        Codierknecht Homoran 2 Replies Last reply Reply Quote 0
                        • Codierknecht
                          Codierknecht Developer Most Active @haselchen last edited by

                          @haselchen sagte in Zählen eines Zustandes:

                          Bedingungen in dem Blockly werden erst in 3,4 oder 5 Sekunden erfolgen

                          Was sollte so lange dauern?
                          Doch nicht etwa ein Trigger im Trigger? 😉

                          haselchen 1 Reply Last reply Reply Quote 0
                          • haselchen
                            haselchen Most Active @Codierknecht last edited by

                            @codierknecht

                            Die Auslösung eines BWM zum Beispiel.

                            Codierknecht 1 Reply Last reply Reply Quote 0
                            • Codierknecht
                              Codierknecht Developer Most Active @haselchen last edited by

                              @haselchen sagte in Zählen eines Zustandes:

                              @codierknecht

                              Die Auslösung eines BWM zum Beispiel.

                              ???? Die Auslösung ist doch in der Regel der Trigger ❓
                              Und in der Behandlung desselben wird dann noch eine Reihe von Prüfungen durchgeführt, oder?

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

                                @haselchen sagte in Zählen eines Zustandes:

                                Und da ist die Frage wie lange das Blockly wartet bis alles erfüllt ist nachdem der Trigger ausgelöst hat .

                                gar nicht.
                                Da musst du sogar aufpassen dass du ni ht in die asynchron Falle läufst und due Werte in dem Moment wo sie abgefragt werden (im DP) auch schon geschrieben sind.
                                Deswegen empfiehlt es sich immer mit Variablen zu arbeiten, die direkt nach dem Triggern gestzt werden, i Falle von der "Trigger variable" Wert sogar mit dem Wert arbeitet die zum triggern geführt hat.
                                Ansonsten werden bei Vergleich mit Wert von ID diese immer genau dann angefordert wenn das Skript an dieser Stelle ankommt.
                                Letzteres wird nur Millisekunden nach Triggerung sein, aber bis der Wert ankommt dauert etwas länger.

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

                                  @fredf
                                  Hab mir den Adapter angeschaut. Dachte erst das ist was ich brauche aber da ich im Device Reminder Adapter nur den DP "switched off" und "in action" habe mit dem ich zuverlässig zählen kann und der Statistics adapter anscheinend nur true & false tählen kann scheint es nicht brauchbar zu sein. Also den zustand Steckdose ein, kann ich mit Statistics aufzeichnen und er zählt auch aber den DP Status Spülmaschine (siehe Bild) scheint er nicht zu erfassen, obwohl ich den aktiviert habe. Konnte da nur einen Namen angeben sonst nix. Bei der Steckdose konnte ich ein Hacken setzten bei Zählen...

                                  Unbenannt2222.JPG

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

                                    @paul53

                                    haste das Skript selbst gemacht oder wirklich im netz auf die schnelle gefunden?

                                    Auf jeden Fall verstehe ich leider nicht viel.. Ich muss mich noch viel mit Blockly beschäftigen...
                                    Dieser Thread hier allein hat so viele Infos das ich mir wohl den einen oder anderen Nachmittag wieder des Arsch platt sitzen werde um es zu studieren und wenigstens etwas schlauer zu werden.

                                    Ich habt es alle sowas von drauf... Wahnsinn...!

                                    1668019756542-bild_2022-11-09_194916249.png

                                    Paul, hab vesucht das nachzubastelt bei mir.

                                    in der oberen Zeile die ID ist das der DP den ich erstellt habe? Der in dem gerade 0 steht. Da wo er reinschreiben soll?
                                    In der Objekt ID wo in gelb Maschine an steht. Das ist doch bestimmt DP von dem Devise Reminder Adapter. Der wo "switched off" & "in acton" seht wenn die Maschine läuft oder aus ist. Kann ich denn da die werte nehmen die der Device Reminder Adapter mir gibt? Oder muss es ein true oder false wert sein? Wenn ich da nur auf änderung reagiere dann würde er ja zwei mal zählen oder?
                                    Und in der unteren Objekt ID (im Blauen) ist doch wieder der DP in der reingeschrieben werden soll und um einen erhöht, oder?

                                    Sorry für meine Blödheit und das ich, in euren Augen, bestimmt richtig dämliche Fragen stelle. Ich hoffe ihr habt etwas Verständniss und Geduld mit mir.

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

                                      @random-0 sagte: in der oberen Zeile die ID ist das der DP den ich erstellt habe? ... Da wo er reinschreiben soll?

                                      Ja, ich dachte, dass der Variablenbezeichner aussagekräftig genug ist.

                                      @random-0 sagte in Zählen eines Zustandes:

                                      Oder muss es ein true oder false wert sein? Wenn ich da nur auf änderung reagiere dann würde er ja zwei mal zählen oder?

                                      Ja. Wenn er aber einen String enthält, dann auf Änderung triggern und im Trigger einen String-Vergleich machen.

                                      Bild_2022-11-10_115307839.png

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

                                        @paul53

                                        Danke die nochmal Paul. Hab es nachgebaut bei mir aber leider wird in dem DP nichts reingeschrieben wenn die Spülmaschine läuft.
                                        Der Trigger (in action) an der Spülmaschine wird gesetzt aber in dem von mir erstellten DP bleibt eine 0 stehen.

                                        Hab alles gespeichert und das Skript aktiviert. Muss ich noch was tun, was ich übersehen habe, damit es funzt?

                                        sieht so bei mir aus mir den Infos wie ich die DP´s gesetzt habe
                                        tempsnip33.png

                                        mein erstellter DP
                                        dp.JPG

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

                                          @random-0
                                          Falsche Vergleichsvariable: zyklen. Es muss der Wert des Trigger-Datenpunktes (unter "Trigger") verglichen werden.

                                          Blockly_DP_Props.JPG

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

                                            @paul53
                                            geändert.. Hab ich übersehen.
                                            skript1.JPG

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            857
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            9
                                            72
                                            3145
                                            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