Rolladensteuerung mit Twilight, aber trotzdem ein paar Sekunden verzögern

Begonnen von B.Stromberg, 05 Oktober 2018, 11:43:08

Vorheriges Thema - Nächstes Thema

B.Stromberg

Hallo!

Ich schalte meine Rolläden über MQTT mit dem Modul Twilight mit FHEM.

Das Ganze sieht so aus:


define Rollo_BadMQTT MQTT_DEVICE
attr Rollo_BadMQTT IODev mqtt
attr Rollo_BadMQTT devStateIcon UP:shutter_open DOWN:shutter_closed SHADE:shutter_halfopen STOP:shutter_halfopen
attr Rollo_BadMQTT eventMap UP:UP DOWN:DOWN SHADE:SHADE STOP:STOP UPDOWN:UPDOWN LEARN:LEARN
attr Rollo_BadMQTT publishSet UP DOWN STOP SHADE UPDOWN LEARN cmd/jarolift/shutter/7
attr Rollo_BadMQTT room Jarolift
attr Rollo_BadMQTT stateFormat state
attr Rollo_BadMQTT subscribeReading_state stat/jarolift/shutter/7
attr Rollo_BadMQTT webCmd UP:DOWN:STOP:SHADE:UPDOWN:LEARN
[b]define Rollo_BadMQTT_UP DOIF ([{twilight("TC_TWILIGHT","sr_indoor","7:00","7:00")}]) (set Rollo_BadMQTT UP) DOELSEIF ([00:00])
define Rollo_BadMQTT_SHADE DOIF ([{twilight("TC_TWILIGHT","ss_weather","17:00","22:00")}]) (set Rollo_BadMQTT SHADE) DOELSEIF ([00:00])[/b]


Mir geht es nun um die fett markierte Steuerung mit Twilight.

Leider hat mein Dongle wohl Probleme die Funksignale an 10 Rolladen Motoren gleichzeitig abzusetzen. Erschwerend kommt hinzu. dass 2 Rolläden auf "halbgeöffnet" bleiben sollen, was nur durch das Simulieren eines längeren Tastendrucks (2-3 Sekunden) gemacht werden kann.
So öffnen bzw. schließen die Rolläden leider eher rudimentär.

Es gibt doch sicher eine Möglichkeit den ausgegebenen Wert von Twilight je Device um ein paar Sekunden zu verzögern, oder?
Nur habe ich davon leider keinen Plan, wie man das bewerkstelligen könnte.

Plan wäre, jede von Twilight vorgegebene Zeit um +5 Sekunden zu verzögern je Device....

Kann mir dabei bitte jemand helfen?

Beta-User

Vorneweg: m.E. ist es nicht optimal, für jedes Device zwei Logikelemente zu benutzen, um einen simplen Task (der ja bei allen gleich ist bzw. zum gleichen zeitpunkt ausgeführt werden soll, wenn ich das richtig verstanden habe) auszuführen, das ist schlecht wartbar.

Vorschlag: structure benutzen und dann die structure schalten (über ein Logikdevice, ich würde weekdayTimer statt doif nehmen); dabei kann man ein delay angeben, das zwischen den einzelnen Schaltvorgängen liegt.

Hier würde ich mir überlegen, ob es nicht Sinn macht, ein Logiklevel dazwischenzuschalten, das aus dem MQTT-Device ein ROLLO macht (mit dem ROLLO-Modul); das dürfte vermutlich gehen und du kannst anschließend auch zeitgesteuert Zwischenlevel anfahren.

Wenn das klappt, ist evtl. das neue, gerade im Betatest laufend Modul AutoShuttersControl (=> Automatisierung) was für dich ;) .
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

B.Stromberg

Das Kernproblem ist ja nicht das Schalten über Twilight...
Das das Ganze unstrukturiert ist gebe ich ja zu.

Trotzdem ändert es mein Kernproblem nicht.

Ich MUSS jedes einzelne Device mit ca. 5 Sekunden Verzögerung schalten...

Oder ginge das auch in einer Zeile so wie:

define AlleRollos_MQTT_UP DOIF ([{twilight("TC_TWILIGHT","sr_indoor","7:00","9:00")}]) (set Rollo_BadMQTT UP), wait 5, (set Rollo_BueroMQTT UP), wait 5, (set Rollo_BadMQTT UP) etc.......... DOELSEIF ([00:00])

"wait" war jetzt nur so ein Begriff für mich.....

Mit Rollo war ich auch am testen, bin ja immernoch dabei mit meinen Jarolift Dongle... Nur kommt da von den Entwicklern leider nicht mehr so viel in letzter Zeit so behelfe ich mir etwas anders (wobei es dort ja nur um die Readings ging in dem anderen Thread)

Mir würde die reine Steuerung erst einmal so mit Twilight reichen. Was ich bräuchte wäre nur dieses "wait 5" bevor der nächste "set" Befehlt ausgeführt wird.



TomLee

ZitatIch MUSS jedes einzelne Device mit ca. 5 Sekunden Verzögerung schalten...


ZitatVorschlag: structure benutzen und dann die structure schalten (über ein Logikdevice, ich würde weekdayTimer statt doif nehmen); dabei kann man ein delay angeben, das zwischen den einzelnen Schaltvorgängen liegt.

Gruß

Thomas

CoolTux

DOIF hat ein wait Attribut. Ist in der Commandref sehr gut beschrieben.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Das mit DOIF und wait könnte so ähnlich gehen (ich nutze dieses Modul nicht, meine aber dass du statt des DOELSEIF auch schlicht den Runterfahrbefehl in das "Hoch"-DOIF reinnehmen könntest und das Rückstellen um 00:00 Uhr verzichten). Nur dass das wait in ein Attribut gehört (ich finde das völlig unübersichtlich; ist einer der Gründe, warum ich das nicht (mehr) nutze). Sollte aber in einem der unzähligen Anwendungsbeispiele unter verzögerter Ausführung zu finden sein.

Aber wie TomLee bereits ausgeführt hat: der Vorschlag war, alle Rolläden in eine structure zu packen und da dann das Attribut async_delay zu nutzen (hier: auf "5" zu setzen). Siehe https://fhem.de/commandref_DE.html#structure
Dann beschränkt sich das DOIF in beiden Ausführungsteilen auf das Schalten der structure (ein Device-Name).
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

B.Stromberg

Habe mir nun mal die Geschichte mit structure angesehen.
Schön und gut
Nur wie verklöppel ich das mit Twilight?

Ich möchte meine Rolläder via Twilight zu der Zeit "sr_indoor bzw. ss_weather" zwischen 7:00 bis 9:00 Uhr bzw. zwischen 17:00 und 21:00 Uhr fahren lassen.

Vielleicht bin ich ja blöd, aber all die Vorschläge von euch beziehen sich doch auf feste Timer und haben mit Twilight nichts zu tun...

Oder stehe ich vollkommen auf dem Schlauch?

Wollte ich eine reine Timersteuerrung wüßte ich denke ich schon wie das geht....
Es soll aber alles nach Twilight laufen, halt nur von Device zu Device mit Verzögerung.....

Aber vielleicht habe ich auch nur eine Lang Leitung....
Nicht vergessen, poste nicht grundlos im Anfängerforum  :'(


CoolTux

Genau so wie du es oben schon gemacht hast, nur als Device gibst du die structure an.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

B.Stromberg

puuuuh, ja, so wie es aussieht stand ich etwas auf dem Schlauch

Also


define AlleRollos structure Rolladen Rollo_WohnzimmerTuerMQTT Rollo_WohnzimmerMitteMQTT Rollo_WohnzimmerRechtsMQTT etc.
attr AlleRollos async_delay5

define AlleRollos_UP DOIF ([{twilight("TC_TWILIGHT","sr_indoor","7:00","9:00")}]) (set Rolladen) DOELSEIF ([00:00])


wäre das so richtig?



CoolTux

Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

TomLee

Zitatset AlleRollos

Irgendwas muss die structure doch noch auch machen, schätze doch mal "on".

B.Stromberg

na ihr laßt mich hier aber ganz schön zappeln  ;D


define AlleRollos structure Rolladen Rollo_WohnzimmerTuerMQTT Rollo_WohnzimmerMitteMQTT Rollo_WohnzimmerRechtsMQTT etc.
attr AlleRollos async_delay5

define AlleRollos_UP DOIF ([{twilight("TC_TWILIGHT","sr_indoor","7:00","9:00")}]) (set AlleRollos on) DOELSEIF ([00:00])


besser?

Wobei...

"on" sollte eher "up" oder "down" oder "shade" heißen, gleiches Kommando wie vorher, richtig?

CoolTux

Ja natürlich. Die structure ist ja nichts weiter wie alle Rollos zusammen geführt. Deshalb sollte man ja nur Geräte gleichen Typs ein bauen.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Beta-User

Zitat von: CoolTux am 06 Oktober 2018, 05:59:25
Ja natürlich. Die structure ist ja nichts weiter wie alle Rollos zusammen geführt. Deshalb sollte man ja nur Geräte gleichen Typs ein bauen.
So ist es jedenfalls am einfachsten. Es gibt aber auch Möglichkeiten, Readings und Befehle umzumappen, um verschiedene Device-Arten über eine structure gleich zu behandeln. Das ist allerdings etwas, mit dem man sich beschäftigen muß.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: ZigBee2mqtt, MiLight@ESP-GW, BT@OpenMQTTGw | ZWave | SIGNALduino | MapleCUN | RHASSPY
svn: u.a Weekday-&RandomTimer, Twilight,  div. attrTemplate-files, MySensors

B.Stromberg

...erst einmal vielen Dank Jungs für die Hilfestellung!

Heute Morgen gingen alle Rollos gut hoch, keins ist zu geblieben, wie als ich den Befehl an den Dongle gleichzeitig geschickt hatte.

Und wieder ein wenig mehr dazu gelernt :)