Navigation

    Logo
    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unread
    • Categories
    • Unreplied
    • Popular
    • GitHub
    • Docu
    • Hilfe
    1. Home
    2. Deutsch
    3. Entwicklung
    4. Richtige Roles und States für Relais und Taster?

    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

    Richtige Roles und States für Relais und Taster?

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

      Hallo an die Experten!

      Ich baue gerade einen Adapter für unser Relaismodul, dass zusätzlich auch Eingänge hat.
      Dazu habe ich mangels Erfahrung mit der IO Broker Regelprogrammierung und VIS folgende Fragen:

      1. Unsere Eingänge unterstützen bei der Verwendung mit einem Taster folgende Events. Ich würde die gern auch alle anbieten, oder macht das im Umfeld IO-Broker keinen Sinn ? Und sollte ich eine andere Role verwenden?
      • State "covered" - Role indicator -> Taste wurde gedrückt
      • State "free" - Role indicator -> Taste wurde losgelassen
      • State "click" - Role button.press -> Taste wurde gedrückt und losgelassen
      • State "double_click" - Role indicator -> Taste 2 x geklickt
      • State "hold_start" - Role button.long -> Taste wird gehalten
      • State "hold_end" - Role indicator -> Gehaltene Taste wurde losgelassen

      Hintergrund ist, dass wir mit diesen Events in unserem eigenen System diverse unterschiedliche Dinge auslösen:

      • Wenn man eine Lampe nur an und ausschalten wird, kann man das Event "covered" verwenden und hat die schnellste Reaktion
      • Wenn man unterschiedliche Aktionen auslösen will mit Klick, DoubleKlick, Hold, kann man z.b. folgendes tun:
      • Klick -> Lampe an/ausschalten
      • DoubleKlick: Lampe auf vordefinierte Helligkeit dimmen
      • HoldStart: Lamp dimmen bis Taste losgelassen wird
      • HoldEnd: Dimmen stop

      Macht es Sinn diese Funktionen auf für IO Broker anzubieten oder hat IO Broker dafür eigene Funktionen?

      Dan noch eine Frage zu Relais

      • Bisher habe ich einfach nur den State "on" als boolean zum an- und ausschalten des Relais. Unsere Firrmware hat aber noch folgende Zusatzfunktionen. Kann man davon etwas im IO Broker Umfeld gebrauchen?

      • On mit Einschaltverzögerung und Dauer: z.b. on 2 10 bedeutet, in 2 Sekunden anschalten für 10 Sekunden

      • Off mit Ausschaltverzögerung: z.b. off 2 bedeutet, in 2 Sekunden ausschalten

      • Toggle Umschalten mit Zeitangaben und Wiederholanzahl: z.b. toggle 5 2 10 bedeutet: Relais 10 mal umschalten, damit jeweils 5 Sekunden anschalten und 2 Sekunden ausschalten.

      Zu den Verzögerungen hatte ich schonmal was in der IO Broker Programmierung gesehen. Das braucht man also nicht oder ?
      Aber die Tasterevents sind alle sinnvoll ?

      dslraser Jey Cee 2 Replies Last reply Reply Quote 0
      • dslraser
        dslraser Forum Testing Most Active @HausBusDe last edited by

        @HausBusDe

        suchst Du das ?

        https://www.iobroker.net/#de/documentation/dev/stateroles.md

        H 1 Reply Last reply Reply Quote 0
        • H
          HausBusDe @dslraser last edited by

          @dslraser ne danke. Das kenne ich schon

          1 Reply Last reply Reply Quote 0
          • Jey Cee
            Jey Cee Developer @HausBusDe last edited by

            @HausBusDe können die events coverd, free, click, usw. IoBroker seitig usgelöst werden? Wenn ja dann sollten sie alle eine Rolle button* haben, wenn nicht könnte auch indicator verwendet werden.

            @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

            Macht es Sinn diese Funktionen auf für IO Broker anzubieten oder hat IO Broker dafür eigene Funktionen?

            Wenn das Hardware seitig umgesetzt ist macht das auf jedenfall sinn. ioBroker hat dafür keine fertigen funktionen, sowas muss man dann mit skripten bauen.

            @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

            Kann man davon etwas im IO Broker Umfeld gebrauchen?

            Einfach mit einbauen, man hat immer wieder den fall das man ein relais nur eine bestimmte Zeit schalten will. Bei Homematic gibt es so eine funktion auch.
            Den on als boolean, rolle switch, lassen und die Zeiten/Schaltzyklen als eigene Objekte erstellen.

            H 1 Reply Last reply Reply Quote 0
            • H
              HausBusDe @Jey Cee last edited by

              @Jey-Cee Vielen Dank. Das war hilfreich! Habe ich das richtig verstanden, dass ich die Tasterevents alle drinlassen sollte, dann aber zur Sicherheit alle auf den gleichen Typ setzen und nicht einen Teil auf indicator und einen auf button.press und einen auf button.long. Ich dachte, dass IO Broker ggf. irgend etwas aus button.press ableitet und ich deshalb den auf jeden Fall verwenden sollte. Ich würde dann aber jetzt bei allen Tasterevents auf indicator gehen.
              Und dann ists es best pratice, dass der Value solcher Events einfach immer true bleibt und sich bei jedem Tastendruck nur der Timestamp ändert, ja ?

              Wie setzt man Aufrufe mit Parametern am besten um. Wenns nur einer ist (z.b. on mit Dauer) könnte man anstatt boolean einfach number verwenden, wo man dann die gewünschte Schaltdauer in Sekunden angeben kann. Wie macht man es am besten, wenn es zwei Parameter gibt (z.b. Einschaltverzögerung + Dauer). Verwendet man dann einen String mit Kommaseparierung oder besser ein Array oder ein Object wo die beiden Werte drin sind ?

              Danke!
              Herm

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

                @HausBusDe sagte:

                auf button.press und einen auf button.long.

                Laut Doku sind button "write only" und indicator "read only".

                @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

                Wie macht man es am besten, wenn es zwei Parameter gibt (z.b. Einschaltverzögerung + Dauer).

                Zwei Datenpunkte "number", aktiviert durch Datenpunkt state / on = true.

                @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

                State "covered" - Role indicator -> Taste wurde gedrückt
                State "free" - Role indicator -> Taste wurde losgelassen

                Diese Bezeichnungen sind unüblich. Üblich:

                • "pressed" -> Taste wurde gedrückt
                • "released" -> Taste wurde losgelassen

                @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

                State "hold_end" - Role indicator -> Gehaltene Taste wurde losgelassen

                Das beinhaltet gegenüber "Taste wurde losgelassen" keine zusätzliche Information.

                H Jey Cee 2 Replies Last reply Reply Quote 0
                • H
                  HausBusDe @paul53 last edited by HausBusDe

                  @paul53
                  Laut Doku sind button "write only" und indicator "read only".

                  • Ok, dann verwende ich tatsächlich besser indicator

                  Zwei Datenpunkte "number", aktiviert durch Datenpunkt state / on = true.

                  • Da müsste dann bei jedem Schalten quasi 3 Datenpunkte ändern?

                  Diese Bezeichnungen sind unüblich. Üblich:
                  "pressed" -> Taste wurde gedrückt
                  "released" -> Taste wurde losgelassen

                  • Das kommt ein bishen daher, dass an einem Eingang Taster aber auch einfach ein Schalter angeschlossen sein kann. Wenn der geschlossen ist, wäre pressed auch etwas unpassend. Aber vielleicht ist es dann doch gefälliger, wenn ich auf pressed und released gehe und damit beim Schalterszenario lebe

                  State "hold_end" - Role indicator -> Gehaltene Taste wurde losgelassen
                  Das beinhaltet gegenüber "Taste wurde losgelassen" keine zusätzliche Information.

                  • Das hat schon eine Zusatzinfo in dem Fall, wo man mit einer Taste eine Lampe schaltet und dimmed. Dann würde man bei Event clicked nur an und ausschalten und bei hold_start würde man das Dimmen starten und bei hold_end das Dimmen stoppen. Wenn man hold_end nicht hätte, müsste man über released beide Sacheverhalte abbilden und müsste sich künstlich merken, was man gerade bei der Lampe gestartet hat.
                  paul53 1 Reply Last reply Reply Quote 0
                  • paul53
                    paul53 @HausBusDe last edited by

                    @HausBusDe sagte:

                    Da müsste dann bei jedem Schalten quasi 3 Datenpunkte ändern?

                    Nur, wenn auch Einschalt-Verzögerung und -Dauer benötigt werden. Standard sollte unverzögert ohne Einschaltdauer-Begrenzung sein.

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

                      @paul53 Das stimmt. Wie ist das im IO Broker eigentlich mit der Parallelität? Kann es sein, dass zwei Regeln beide ein Relais kurz nacheinander schalten wollen und der erste das eine Property schon wieder verstellt, wo der vorherige gerade den State auf on schalten will ?

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

                        @HausBusDe sagte:

                        Kann es sein, dass zwei Regeln beide ein Relais kurz nacheinander schalten wollen

                        Welche zwei Regeln ?

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

                          @paul53 Ich meinte, wenn man später Regeln programmiert die das Licht schalten. (Weiß nicht, wie man das in IO Brokersprache nennt). Also sowas wie "Um 18 Uhr Licht anschalten mit Helligkeit 50%" und "Wenn jemand diese Taste drückt, dann Helligkeit 100%". Wenn beides gleichzeitig passiert könnte ich mir schon vorstellen, dass der Zugriff auf einen Datenpunkt synchronisiert ist, aber nicht über mehrere oder? Dann könnten die sich da schon gegenseitig überschreiben ?

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

                            @HausBusDe sagte:

                            Wenn beides gleichzeitig passiert

                            Gleichzeitig gibt es nicht. Der letzte gewinnt - auch wenn er nur wenige ms später ist.

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

                              @paul53 Ist das auch sichergestellt, wenn 3 Datenpunkte geändert werden müssen? Oder kann halt folgendes passieren:
                              Erster will Relais mit Dauer schalten und zweiter will Relais ohne Dauer schalten. Da es nun getrennte Datenpunkte sind, passiert folgendes:

                              Erster setzt den Datenpunkt für die Dauer auf 10 Sekunden
                              Zweiter setzt den Datenpunkt für die Dauer auf 0
                              Erster setzt den State auf ON
                              Zweiter setzt den State auf ON

                              paul53 Jey Cee 2 Replies Last reply Reply Quote 0
                              • paul53
                                paul53 @HausBusDe last edited by

                                @HausBusDe sagte:

                                Erster setzt den Datenpunkt für die Dauer auf 10 Sekunden
                                Zweiter setzt den Datenpunkt für die Dauer auf 0

                                Auch hier gilt: Der letzte siegt. Der zugehörige Timer wird erst mit ON gestartet.

                                1 Reply Last reply Reply Quote 0
                                • Jey Cee
                                  Jey Cee Developer @HausBusDe last edited by

                                  @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

                                  Ist das auch sichergestellt, wenn 3 Datenpunkte geändert werden müssen?

                                  Also sollte es passieren das es zu einer Überschneidung kommt, was wirklich unwahrscheinlich ist, dann kann das nicht sicher gestellt werden.

                                  Am ende muss der User wissen was er will und tut. Der sollte verhindern das so etwas passiert, immerhin kann ioBroker nicht wissen was das Ziel ist.

                                  1 Reply Last reply Reply Quote 0
                                  • Jey Cee
                                    Jey Cee Developer @paul53 last edited by

                                    @paul53 sagte in Richtige Roles und States für Relais und Taster?:

                                    @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

                                    Wie macht man es am besten, wenn es zwei Parameter gibt (z.b. Einschaltverzögerung + Dauer).

                                    Zwei Datenpunkte "number", aktiviert durch Datenpunkt state / on = true.

                                    Getrennte Datenpunkte sollten verwendet werden wenn jeder Parameter für sich stehen kann. Sollten sie nur in Kombination funktionieren kann man einen daraus machen. (Macht auch sinn um nicht unnötigen traffic zu erzeugen)

                                    Beispiel:
                                    On, Einschaltverzögerung und Dauer -> Datenpunkt delayed -> Parameter: 2, 10 //das on kann man sich als eigenen Parameter sparen weil ja schon klar ist das dieser Befehl mit den gegebenen Parametern einschaltet. Das Format der Parameter sollte so einfach wie möglich gehalten werden, wenn man nur Zahlen ohne Kommastellen verwendet ist ein Komma völlig ok. Bei Zahlen mit Nachkommastellen ist ein Semikolon zu verwenden, weil ioBroker international ist und sowohl Punkt als auch Komma für Dezimal Zahlen in frage kommen.

                                    Ist sowohl die Möglichkeit gegeben sie in Kombination als auch einzeln zu verwenden ist es sinnvoll beides an zu bieten.

                                    H 1 Reply Last reply Reply Quote 0
                                    • H
                                      HausBusDe @Jey Cee last edited by

                                      @Jey-Cee genau so mache ich das. Mit mehreren Datenpunkten wird es auf jeden Fall Probleme geben. In der Firmware ist es schließlich auch nur ein Aufruf mit 2 Parametern. Ich wollte nur wissen, ob ein kommaseparierter String ok ist oder ob dann ein IO Broker User ein Anfall bekommt 😁

                                      Jey Cee 1 Reply Last reply Reply Quote 0
                                      • Jey Cee
                                        Jey Cee Developer @HausBusDe last edited by

                                        @HausBusDe sagte in Richtige Roles und States für Relais und Taster?:

                                        ob ein kommaseparierter String ok ist oder ob dann ein IO Broker User ein Anfall bekommt

                                        Ganz bestimmt. Es gibt dafür keine Vorgabe, weswegen man nie weis wad man eingeben muss.

                                        H 1 Reply Last reply Reply Quote 0
                                        • H
                                          HausBusDe @Jey Cee last edited by

                                          @Jey-Cee Ich könnte ja zusätzlich eine Conveniencefunktion machen, die nur an und ausschaltet und eine mit Parametern. Dann sollte eigentlich alle glücklich werden

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

                                            @HausBusDe sagte:

                                            und eine mit Parametern.

                                            Welcher Wert soll an diesen Datenpunkt übergeben werden ?

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

                                            Support us

                                            ioBroker
                                            Community Adapters
                                            Donate

                                            697
                                            Online

                                            31.9k
                                            Users

                                            80.2k
                                            Topics

                                            1.3m
                                            Posts

                                            adapterentwicklung relais tast
                                            4
                                            26
                                            1241
                                            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