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:

      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
                                      • R
                                        Random 0 @Random 0 last edited by

                                        Ich will deine / eure Hilfsbereitschaft nicht ausreizen aber gibt eine Möglichkeit die selbe Aktion in verschiedene DP zu schreiben? Ich dachte mir ich erstelle mit 52 Datenpunkte, für 52 Kalenderwochen. Oder 12 DP´s für 12 Monate und wenn es möglich wäre in den DP für den jeweiligen Monat / Woche zu schreiben (automatisch) dann wüsste ich wie oft die Spülmaschine in den jeweiligen Wochen / Monaten läuft.. Also es wird erkannt welcher Monat / KW gerade ist und dann in den entsprechenden DP geschrieben,,

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

                                          @random-0 Für sowas gibt es Adapter wie "History", "influxdb", "Sourceanalytix".

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

                                            @djmarc75

                                            Gut möglich das ich da was übersehe, aber mit den Adaptern kriege ich es nicht hin.
                                            In Influx DB schreibe ich zwar den Stromverbrauch der Spülmaschine und in der Auswertung könnte ich die Ausschläge zählen und dann wüsste ich auch wie oft die Spülmaschine in der Woche / Monat läuft. Hoffe aber es gibt eine smartere Lösung als mit dem Finger am Bilschirm die Kurven zu zählen. Es sei den es gibt eine Möglichkeit das InfluxDB2 oder Grafana das für mich rechnen. Hab da aber leider noch nix gefunden das zufriedenstellend wäre.
                                            Sourceanalytix nutze ich auch, ist echt super. Daher auch die Idee mit den verschiedenen Ordnern für jede KW. Der Adapter zeichnet sehr gut pro Woche den Strom auf aber ich kann mir mit dem nicht anzeigen lassen wie oft dieSpülmaschine in der Woche / Monat / Jahr läuft.
                                            History kann auch nicht zählen nur verbrauch aufzeichnen. Mir wurde auch der Statistics adapter empfohlen aber auch der kann mir nicht anzeigen wie oft die Spülmaschine läuft.

                                            Auf meiner VIS wird mir angezeigt wieviel Watt die Spülmaschine im Monat zieht und wieviel das Kostet, was klasse ist. Ich würde mir nur gerne zusätzlich anzeigen lassen wie oft die Spülmaschine gelaufen hat im Monat.

                                            Etliche Adpter können das nicht. Oder ich mache was falsch. Eine Adapterlösung wäre mich auch am liebsten.
                                            Daher bin ich beim Device Reminder Adapter hängen geblieben, der erkrennt wann die Maschine läuft und wann nicht und da dachte ich mir es müsste doch möglich sein das Signal zu zählen und vielleicht sortiert zu schreiben um es mir dann schön anzeigen zu lassen.

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            817
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

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