Hauptmenü

Rolladenstruerung

Begonnen von FHEM16, 22 Juli 2018, 13:24:42

Vorheriges Thema - Nächstes Thema

FHEM16

Hallo zusammen,

ich steuere einige Rollläden über SIGNALduino & CUL und habe leider ein Problem, wo ich keine zuverlässige Lösung finde.

Das Problem ist, dass ein Rollladen nicht angesprochen wird, wenn der Befehl vom vorherigen noch nicht 100% beendet ist.
Aktuell steht bei mir vor jedem Befehl sleep 10; sleep 20; sleep 30; .... und somit wird erst nach 10 Sekunden der nächste Rollladen angesprochen.

Das Attribut wait kann ich auch nicht verwenden, da z.B. in dem DOIF auch andere Befehle ausgeführt werden, die keine Verzögerungen haben dürfen.

Ich würde gerne etwas über Eure Umsetzung erfahren um mehrere Rollläden direkt hintereinander anzusteuern um meine Rollladensteuerung optimieren zu können.

Vielen Dank im Voraus für Eure Informationen und viele Grüße
Fhem16

rudolfkoenig

Haengt vom verwendeten Funkprotokoll ab: z.Bsp. bei FS20 versendet das FHEM Modul 00_CUL.pm die Signale so, dass es keine Ueberschneidung gibt, im Hintergrund, ohne Blockierung, automatisch. Auch bei ZWave wird darauf geachtet, dass die einzelnen Befehle nacheinander abgeschickt werden. Nur bei Mischen der Protokolle muss der Benutzer was ueberlegen, dafuer gibt es aber im Structure das asyncWait Attribut. Allerdings kommit mir 10s ziemlich viel vor, ich haette eher was im Bereich von 0.2s, je nach Protokoll auch weniger.

So ganz ohne SIGNALduino und DOIF :)

FHEM16

Es werden nur SOMFY Rollläden angesprochen

über den CUL habe ich bei 5 Sekunden Verzögerung weniger Probleme bemerkt und bei SIGNALduino funktioniert es bei 5 Sekunden nicht und ich benötige eine längere Verzögerung.
Ich kann auch keine genauen Zeiten sagen, da ich nur mit den sleep Zeiten im DOIF teste.

Was bedeutet das "asyncWait" Attribut? kann ich da etwas einstellen/prüfen? Mein Ziel ist es z.B. 10 set pos direkt an verschiedene Rollläden zu senden und alle Rollläden fahren ohne Störung an die angegeben Position (das ist momentan ohne sleep Verzögerung nicht möglich).

Vielleicht habe ich auch grundsätzlich einen Denkfehler oder mache etwas anderes falsch...

rudolfkoenig

ZitatWas bedeutet das "asyncWait" Attribut?

Sorry mein Fehler, es heisst async_delay:
Zitatasync_delay
If this attribute is defined, unfiltered set commands will not be executed in the clients immediately. Instead, they are added to a queue to be executed later. The set command returns immediately, whereas the clients will be set timer-driven, one at a time. The delay between two timercalls is given by the value of async_delay (in seconds) and may be 0 for fastest possible execution.  This way, excessive delays often known from large structures, can be broken down in smaller junks.

FHEM16

Ich denke, mir fehlt eine wichtige Information um das async_delay Attribut verwenden zu können :(
Im CUL und bei den Rollläden sehe ich es nicht und habe keine Idee wo ich das Attribut anpassen kann...

Wo finde ich das Attribut und mit welchem Wert würdest Du starten?

Sorry aber ich bin wohl gerade vollkommen auf dem Holzweg :(

FHEM16

OK ich muss vermutlich eine structure anlegen ... habe ich bisher noch nicht gemacht.
Könntest Du mir bitte Starthilfe geben, wenn ich 10 Rollläden unabhängig ansprechen möchte?

rudolfkoenig

structure ist fuers gemeinsame Schalten aller Mitgliedsgeraete zustaendig.
Wenn du die Geraete in beliebiger Kombination schalten willst, dann muss diese Behandlung im FHEM-Modul oder im Firmware erfolgen.

FHEM16

OK dann ist structure auch nicht meine Lösung da ich jeden Rollladen einzeln (aber mehrere direkt hintereinander) ansprechen möchte

FHEM16

Ich habe es jetzt mal mit einer structure (3 Rollläden und async_delay = 0.2) getestet und alle Rollläden wurden richtig angefahren.
... spricht etwas dagegen eine structure für jeden Rollladen (also jeweils nur ein Rollladen und mit async_delay) anzulegen und die Rollläden dann nicht mehr direkt sondern nur über diese direkte structure anzusprechen?

rudolfkoenig

Ja, es bringt nichts :)

structure setzt fuer alle Mitglieder das set Befehl nacheinnander ab, und fuegt async_delay dazwischen ein.
Wenn man nur ein Mitglied hat....

FHEM16

OK :( war wohl wieder nichts
Leider sollen die Rollläden alle unterschiedlich angefahren werden... ich erstelle mir aber eine neue structure mit allen Rollläden und bei Feuer fahren dann alle Rollläden hoch ;)

Auf jeden Fall vielen Dank für den Hinweis auf structure (war bei mir noch eingebunden)