#gelöst# Schrittkette bauen ?

Begonnen von Canon.Fritz, 04 Juni 2019, 18:38:36

Vorheriges Thema - Nächstes Thema

Canon.Fritz

Moin,

ich habe folgendes Problem.
Ich verwende zum Steuern meiner Markise das Modul ROLLO.

Wenn ich nun aber meine Markise auf 100% ausfahre hängt mein Markisentuch leicht durch.
Um das Tuch zu spannen möchte ich die Markise wieder kurz nach oben fahren.
Nun habe ich vor folgende "Schrittkette" als doif oder ähnliches zu implementieren.

- ist die Markise 100% ausgefahren -> warte 3 Sekunden
--nach Ablauf der Wartezeit -> fahre Markise für 2 Sekunden nach oben
---nach der 2 Sekundenfahrt soll die Markise stoppen
----sobald die Markise komplett eingefahren wurde und irgendwann wieder 100 % erreicht -> starte mit Schritt 1

meine ersten Gehversuche waren aber leider nicht ganz so erfolgreich ...
##1 ## wenn 100.0% ausgefahren, dann 3 Sek. warten und hochfahren
([Markise:pct] == 10) (set Markise open)

##2 ## wenn hochgefahren wird nach 2 Sek. anhalten
DOELSEIF ([Markise:state] eq "drive-up") (set Markise stop)


Um die Wartezeiten abzubilden habe ich folgendes Attribut gesetzt.
attr Markise_spannen wait 3:2

Ich hoffe ihr könnt mir mit meinem Code auf die Sprünge helfen.
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

Frank_Huber

Wäre es nicht einfacher die Fahrzeit um 2 sek zu verkürzen?

Gesendet von meinem Doogee S60 mit Tapatalk


Canon.Fritz

Hallo Frank,

leider nicht, da das Tuch ab ca. 80 % Prozent leicht durchhängt.
Eine mechanische Nachspannung der Zugfedern ist leider auch nicht mehr möglich.
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

Byte09

Zitat von: Canon.Fritz am 04 Juni 2019, 18:38:36
Moin,

ich habe folgendes Problem.
Ich verwende zum Steuern meiner Markise das Modul ROLLO.

Wenn ich nun aber meine Markise auf 100% ausfahre hängt mein Markisentuch leicht durch.
Um das Tuch zu spannen möchte ich die Markise wieder kurz nach oben fahren.
Nun habe ich vor folgende "Schrittkette" als doif oder ähnliches zu implementieren.

- ist die Markise 100% ausgefahren -> warte 3 Sekunden
--nach Ablauf der Wartezeit -> fahre Markise für 2 Sekunden nach oben
---nach der 2 Sekundenfahrt soll die Markise stoppen
----sobald die Markise komplett eingefahren wurde und irgendwann wieder 100 % erreicht -> starte mit Schritt 1

meine ersten Gehversuche waren aber leider nicht ganz so erfolgreich ...
##1 ## wenn 100.0% ausgefahren, dann 3 Sek. warten und hochfahren
([Markise:pct] == 10) (set Markise open)

##2 ## wenn hochgefahren wird nach 2 Sek. anhalten
DOELSEIF ([Markise:state] eq "drive-up") (set Markise stop)


Um die Wartezeiten abzubilden habe ich folgendes Attribut gesetzt.
attr Markise_spannen wait 3:2

Ich hoffe ihr könnt mir mit meinem Code auf die Sprünge helfen.

ich bringe hier :
Zitatwenn 100.0% ausgefahren, dann 3 Sek. warten und hochfahren
([Markise:pct] == 10) (set Markise open)

gerade die 100% und pct == 10 nicht unter einen hut . ist das ein tippfehler ?
muss es ein DOIF sein , oder nimmst du auch alternativen ?

gruss Byte09

Frank_Huber

Ach so, OK.
dann DOIF (pct = 100) (set hochfahren 2 sek)
Attribut wait 3
Attribut do always

Gesendet von meinem Doogee S60 mit Tapatalk

Musst nur nochmal schauen welches reading im rollo das Ende der Fahrt zeigt.
Eventuell dann auch (fahrt = Ende and pct = 100)

Ellert

Ich kenne Rollo nicht, normalerweise sollte sowas mit Sequenzen funktionieren
([Markise:pct] == 10) (set Markise open) (set Markise stop)
DOELSEIF ([Markise:pct] == <Wert für "sobald die Markise komplett eingefahren wurde">)

wait 3,2

Canon.Fritz

Sorry,

mit pct == 10 war ein versuch um die Funktion auszuprobieren, damit die Markise zu Testzwecken immer ganz ausfahren muss.

Natürlich müsste es später dann pct == 100 heißen.
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

Canon.Fritz

Zitat([Markise:pct] == 10) (set Markise open) (set Markise stop)
DOELSEIF ([Markise:pct] == <Wert für "sobald die Markise komplett eingefahren wurde">)

wait 3,2

Ich habe jetzt folgendes im doif stehen
([Markise:pct] == 10) (set Markise open) (set Markise stop)
DOELSEIF ([Markise:pct] == <Wert für "sobald die Markise komplett eingefahren wurde">)



den wait habe ich per attr eingebunden, also nicht direkt im Skript.

Leider rechnet er nur im ROLLO Modul die Prozente rückwärts. An die Ansteuerung zum hochfahren geht kein Befehl raus.
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

Canon.Fritz

#8
Zitatdann DOIF (pct = 100) (set hochfahren 2 sek)
Attribut wait 3
Attribut do always

Gesendet von meinem Doogee S60 mit Tapatalk

Musst nur nochmal schauen welches reading im rollo das Ende der Fahrt zeigt.
Eventuell dann auch (fahrt = Ende and pct = 100)

Nun funktioniert alles wie es soll  :D

Vielen Dank @  Frank_Huber für die passende Lösung.

Anbei die Lösung die nun bei mir im Einsatz sein wird
([Markise:pct] == 100) (set Markise open) ## wenn 100.0% ausgefahren, dann 2 Sek. warten
([Markise:state] eq "drive-up")  (set Markise stop) ## nach Wartezeit hochgefahren und nach 2 Sek. anhalten


attr wait 2,2
FHEM auf Raspberry3, Betriebssystem Raspberry Pi OS, diverse Wemos D1 mini Boards, Sonoff S20, Shellys

Frank_Huber

Zitat von: Canon.Fritz am 04 Juni 2019, 19:20:14
Ich habe jetzt folgendes im doif stehen
([Markise:pct] == 10) (set Markise open) (set Markise stop)
DOELSEIF ([Markise:pct] == <Wert für "sobald die Markise komplett eingefahren wurde">)



den wait habe ich per attr eingebunden, also nicht direkt im Skript.

Leider rechnet er nur im ROLLO Modul die Prozente rückwärts. An die Ansteuerung zum hochfahren geht kein Befehl raus.
Prozente rückwärts kannst anpassen. Attribut Modus oder so. --> commandred

Gesendet von meinem Doogee S60 mit Tapatalk

Ellert

Zitat von: Canon.Fritz am 04 Juni 2019, 19:20:14
Ich habe jetzt folgendes im doif stehen
([Markise:pct] == 10) (set Markise open) (set Markise stop)
DOELSEIF ([Markise:pct] == <Wert für "sobald die Markise komplett eingefahren wurde">)



den wait habe ich per attr eingebunden, also nicht direkt im Skript.

Leider rechnet er nur im ROLLO Modul die Prozente rückwärts. An die Ansteuerung zum hochfahren geht kein Befehl raus.

<irgendwas> bedeutet, dass der Benutzer die Angabe festlegt.