Wie feststellen ob eine Rollo gerade in Bewegung ist

Hallo zusammen,
ich brauche mal wieder etwas Starthilfe von euch…

Ich habe jetzt einen Flow erstellt mit dem ich 2 Qubino Rollo Shutter über eine Hue Fernbedienung steuern kann, also je eine Taste für Rollo hoch und je eine Taste für Rollo runter.
Wenn man eine Taste nochmal drückt während die Rollo hoch- oder runterfährt, wird die Rollo gestoppt.

Das funktioniert mal grundsätzlich ok, aber eben nur halbwegs.
Ich frage beim Stoppen der Rollo ab, ob gerade Strom verbraucht wird. Und wenn ja, wird der Stopp-Befehl ausgeführt. Allerdings steht der Stromverbraucht nicht wirklich in “Realtime” zur Verfügung.
Daher kann es vorkommen das der Stopp-Befehl nicht ausgeführt wird, da der Stromverbrauch noch nicht aktualiert ist.
Das gleiche Problem hatte ich auch mit homee, damals hatte ich den Flow dann umgestellt auf so etwas wie “Rollo öffnet”, und es funktionierte dann einwandfrei.

Ich suche daher jetzt etwas in Homey mit dem ich erkennen kann ob sich eine Rollo bewegt, oder eben auch nicht. In den Dann-Karten bin ich leider nicht fündig geworden, weder für Qubino, noch bei Fibaro, noch unter Logik.

Könnt ihr mir hier weiterhelfen?

Guten Abend,

ich kenne mich mit den verwendeten Geräten zwar nicht aus, weshalb ich nicht beurteilen kann, ob es einen leichteren Weg gäbe, aber meine spontane Idee wäre an dieser Stelle, mit einer Variablen zu arbeiten, die dir den Status “Rollo fährt (nicht)” angibt und dann folgenden Advanced Flow zu basteln:

-wenn Taste gedrückt wird und Variable Rollo trägt den Wert “fährt nicht”, dann fahre Rollo hoch/runter und setze Variable Rollo auf “fährt” und Starte Timer mit … Sekunden (solange wie dein Rollo braucht, um von offen nach geschlossen oder umgekehrt zu wechseln)

-wenn Taste gedrückt wird und Variable Rollo trägt den Wert “fährt”, dann halte Rollo an

-wenn Timer abgelaufen ist, setze die Variable Rollo auf “fährt nicht”

Viele Grüße!

Danke @Sina für die Idee.
Mit dem Timer funktioniert das aber nicht, denn mit der Fernbedienung will ich die Rollo mal nur für 20 cm nach unten haben (1 Sekunden) oder 1 m nach oben fahren (5 Sekunden).

So wie du beschrieben hast, ich jetzt eine Variable erstellt die auf “fährt” bzw “fährt nicht” gesetzt wird wenn die Rollo hoch/runter fährt. Aber das mit dem Stoppen funktioniert nicht.
Das klappt allerdings noch nicht, aber das liegt wohl an der Uhrzeit und mir. :slight_smile:
Ich probiere das nächstes Wochenende nochmal aus und melde mich nochmal, vorher komme ich leider nicht dazu.

Sehr gerne :slight_smile:

Ich denke, wenn ich jetzt nicht auf dem Schlauch stehe, sollte es mit dem Timer funktionieren. Es ist nämlich egal, an welcher Position bzw. nach wie vielen Sekunden du stoppst, wichtig ist nur, dass der Timer so lange läuft, dass du an jeder beliebigen Stelle stoppen kannst, bevor anhand des Timers die Variable wieder auf ihren ursprünglichen Zustand (fährt nicht) gesetzt wird.

Eigentlich - ohne verwirren zu wollen - kannst du auch ganz ohne die Variable arbeiten und lediglich einen Timer starten, sobald das Rollo läuft:

  • wenn Taste gedrückt wird und Timer läuft nicht, dann bewege Rollo und starte Timer
  • wenn Taste gedrückt wird und Timer läuft, dann halte Rollo an (bzw. schalte zwischen bewegen und stoppen um, dann könntest du innerhalb des Timers sogar nochmal die Taste drücken, um das Rollo doch noch ein Stück weiterfahren zu lassen und schließlich anzuhalten)

Der Timer müsste hierbei mindestens die Länge der maximalen Bewegungsdauer haben, damit du während dieser Zeit frei agieren kannst.

Sehr gute Idee mit dem Timer, @Sina! :+1:t2:
Ich würde es auch ohne Variable machen. Allerdings würde ich den Timer immer direkt stoppen wenn die Auf- bzw. Ab-Taste ein 2. Mal gedrückt wird. Und wenn die Endpostion des Rollos erreicht ist dann würde ich den Timer auch stoppen lassen:

Theoretisch bräuchte man allerdings 2 Timer, einen fürs vollständige Öffnen, einen fürs vollständige Schließen. Das Schließen geht zumindest bei uns etwas schneller als das Öffnen.

@Warmduscher, wie bekommst Du das denn hin, dass das Rollo stoppt? Lt. App Store gibt es nur die Flow-Karte Setze die Position auf x %. Sind die Shutter schon ziemlich lange inkludiert? Weil früher gab es tatsächlich noch Flowkarten für Hoch / Runter / Stopp.

1 Like

@DirkG: Nein, ich bin erst vor ca. 1 Monat auf Homey umgestiegen. Ich habe nach langem Suchen im englischen Forum etwas gefunden das man für die Qubinos Rawdaten zum Stoppen schicken kann. Das war genau was ich suchte, nachdem ich auch enttäuscht gesehen habe das es keine Flowkarte für stoppen gibt. Das Stoppen funktioniert damit gut bei mir, siehe hier:

Hier mein Flow dazu wie ich das eingebunden habe:

Danke für den Flow! Du würdest den Timer serat laufen lassen?! Auch nicht schlecht, das macht das Ganze viel übersichtilicher.

@Sina: Danke Sina für die weitere Idee. Ich werde das auch mal ausprobieren, denn mit der Variablen klappt es bei mir nicht richtig. Meist wird der 2. Druck zum Stoppen nicht erkannt. Da bin ich heute Nacht nicht mehr dahinter gekommen an was es liegt.

@Sina, @DirkG
Wo seht ihr einen Vorteil wenn man den Timer anstelle einer Variablen verwendet? Beides ist ja nur ein “Indikator” der zeigt das sich die Rollo bewegt, und wäre für mich gleichwertig.
Könnt ihr bitte auch mal einen Blick auf meinen Flow oben werfen, und habt vielleicht eine Idee warum das Stoppen nur selten funktioniert?

Danke für die Info mit dem Rohbefehl, werde mir den Thread mal durchlesen.

Nach der Aktion Setze die Position auf… setzt Du die Variable Rollo fährt… sofort wieder auf Nein, obwohl das Rollo je nach Startposition mit sehr großer Wahrscheinlichkeit noch fährt. Wenn Du dann den Taster erneut drückst steht die Variable bereits auf Nein und die Aktion Setze die Position auf… wird erneut ausgeführt, obwohl eigentlich der Rohbefehl gesendet werden soll. Deshalb wird das Rollo nicht gestoppt. Du müsstest die Logik-Karten hinter den Aktionskarten Setze die Position auf… also entfernen.
Die Variable müsste also dann wieder auf Nein gesetzt werden wenn das Rollo gestoppt wurde (was Du ja hast) und wenn die oberste bzw. unterste Position erreicht wurde.

Die Umsetzung mit einem Timer ist meiner Meinung nach etwas einfacher und man benötigt keine zusätzlichen Variablen:

Wenn Du den von mir oben bereits geposteten Flow noch hinzufügst, dann kannst Du die Zeit der Timer auch deutlich länger wählen. Es geht einfach darum, dass ein Timer gestartet wird wenn man die Hoch/Runter Taste das 1. Mal drückt und der Timer gestoppt wird wenn die Hoch/Runter Taste das 2. Mal gedrückt wird oder eine der Endpositionen erreicht werden.

1 Like

Noch als kleine Ergänzung zu @DirkG Antwort: Homey arbeitet deine Flow-Karten direkt nacheinander ab, wartet dabei aber nicht bis zur vollständigen Erfüllung der vorherigen Karten, was in deinem Fall bedeutet, dass du in deinem gegebenen Flow die Rolladen zwar auf 100% fahren lassen willst und Homey das auch entsprechend für dich veranlasst, Homey aber mit der Änderung deiner Variable nicht wartet bis die 100 % auch erreicht sind und damit, wie @DirkG bereits erklärt hat, deine Variable zu früh den “nein”-Status erreicht.

1 Like

Danke @Sina und @DirkG, das ist der Fehler.
Im normalen Flow wäre mir das klar gewesen, aber im Advanced Flow dachte ich das die Variable erst auf Nein gesetzt wird wenn die vorherige Karte abgearbeitet ist. Das sah für mich optisch einfach danach aus. Aber dann ist natürlich klar wo der Fehler ist.
Dann werde ich das wahrscheinlich am kommenden Wochenende mal so umsetzen, ich werde berichten. :slight_smile:

Wenn ich es aber doch mit der Variablen machen würde, dann müsste ich noch eine ANY-Karte vor dem setzen der Variable einfügen, richtig?

Super, dass wir helfen konnten @Warmduscher!

Nein, so wie ich es verstehe, hilft dir ein any nicht. Any und all verwendest du, wenn du mehrere Bedingungen hast, die etwas auslösen sollen. Reicht dir, dass eine Bedingung erfüllt ist, nimmst du den any-Block, möchtest du, dass alle Bedingungen erfüllt sind bevor etwas ausgelöst wird, nimmst du den all-Block.

Any ist damit nicht gleichzusetzen mit dem Warten auf die Erfüllung vorheriger Aktionen (wie dem vollständigen Schließen eines Rolladen), sondern nur damit, dass vorherige Bedingungen erfüllt sind oder Aktionen von Homey gestartet wurden.

Willst du weiterhin mit der Textvariable arbeiten, so kannst du

  • entweder eine Verzögerung vor der Variable “WOHN Rollo links fährt auf Nein setzen” einbauen, wobei die Verzögerung der Länge in Sekunden entsprechen muss, die das Rollo braucht, um auf 100% zu fahren,
  • oder du entfernst diese Logikkarte an der Stelle und baust dir einen weiteren Flow der Form wie @DirkG es in Post 5 gezeigt hat, wobei du den Timer weglässt und hinter Any nicht Timer stoppen, sondern “WOHN Rollo links fährt auf Nein setzen” einbaust.
2 Likes

Noch ein kurze Zusatzinfo: Wenn man einen Advanced Flow simulieren lässt, dann entspricht die Geschwindigkeit in der der Flow abläuft NICHT der realen Geschwindigkeit, sondern ist deutlich langsamer als automatisch gestarteter/getriggerter Flow.
Beispiel Text-To-Speech Flow Karte: In der Simulation wird solange gewartet, bis der Text der ersten Karte “ausgesprochen” wurde. Rrst dann startet die zweite TTS Flow Karte. Der Text wird also schön nacheinander ausgegeben.
In Realität ist es aber so, dass der Flow bereits fortgeführt wird wenn die erste TTS Flow Karte erfolgreich ausgelöst wurde. Das geschieht üblicherweise unter 0,5 Sekunden:

image

Danach wird sofort die nächste TTS Flow Karte gestartet. Ergebnis: Beide Texte werden nahezu gleichzeitig gestartet und gleichzeitig ausgegeben.

1 Like

Danke @Sina und @DirkG für eure weitere Hilfe, ich werde das am Wochenende ausprobieren

Ich habe heute mit dem Flow rumexperimentiert, und es läuft jetzt wie es soll.

Wie @sina schon sagte, funktionierte Any und All hier nicht, mit den Variablen war es etwas unübersichtlicher und daher habe ich den Vorschlag von @DirkG übernommen und den Timer genutzt. Dadurch ist der Flow auch in 6 Monaten noch verständlich wenn ich da nochmal reinschaue.

Danke an euch beide für die Hilfe! Ihr hört bestimmt wieder von mir. :rofl:

1 Like