FHEM Forum

FHEM => Automatisierung => DOIF => Thema gestartet von: hanswerner1 am 15 Oktober 2017, 13:26:25

Titel: DOIF attr Wait
Beitrag von: hanswerner1 am 15 Oktober 2017, 13:26:25
Hallo,

ich steuere über DOIF eine Leinwand, zum runterfahren schalte ich dem Motor über ein DOIF ein und nach 54sec durch das attr Wait wieder aus.
Allerdings müsste zur genaueren Positionierung die Leinwand 54,5 sec runterfahren. das bekomm ich allerdings nicht hin. Gibt es eine Möglichkeit kleinere Einheiten als Sekunden für Wait zu bekommen ?

VG HW1
Titel: Antw:DOIF attr Wait
Beitrag von: igami am 15 Oktober 2017, 13:51:30
Schon mit​ 54.5 versucht?
Titel: Antw:DOIF attr Wait
Beitrag von: hanswerner1 am 15 Oktober 2017, 14:07:50
ja, aber das scheint nicht zu klappen, die LW fährt nicht weiter runter.
Titel: Antw:DOIF attr Wait
Beitrag von: viegener am 15 Oktober 2017, 17:21:13
Soweit ich mich erinnere arbeitet DOIF, wie eigentlich das gesamte FHEM-System intern mit Sekundengenauigkeit, da FHEM intern aus einem einzigen Thread für den grundsätzlichen Ablauf besteht wäre alles andere wohl auch wenig erfolgversprechend. Also die Wartezeiten und anderen Zeitangaben sind immer mit einer gewissen Ungenauigkeit behaftet, da würde eine Wartezeit von plus einer halben Sekunde nicht sehr sicher getroffen.

Titel: Antw:DOIF attr Wait
Beitrag von: Ellert am 15 Oktober 2017, 17:55:07
Zitat54,5 sec
Im wait gibst Du sicherlich einen Punkt an, statt einem Komma.
Titel: Antw:DOIF attr Wait
Beitrag von: amenomade am 18 Oktober 2017, 22:57:10
Wenn DOIF nicht kann, ist es vielleicht mit sequence und triggerpartial möglich?

EDIT: aber laut CommandREF sollte DOIF können:
<quote>attr <DOIF-module> wait 1,2:3,0.5</quote>
Titel: Antw:DOIF attr Wait
Beitrag von: viegener am 19 Oktober 2017, 08:36:30
Ja hab auch mal im Code nachgeschaut, generell werden vermutlich auch Sekundenbruchteile unterstützt, allerdings gilt nachwievor, dass in FHEM durch die zentrale Abarbeitung in einem einzelnen Thread die Genauigkeit nicht gewährleistet, deshalb wird das immer fehlerbehaftet bleiben.

Und richtig: Es müsste mit . (Punkt) angegeben werden, weil es auf perl-Ebene ausgewertet wird.
Titel: Antw:DOIF attr Wait
Beitrag von: hanswerner1 am 19 Oktober 2017, 11:34:05
Zitat von: viegener am 19 Oktober 2017, 08:36:30
Ja hab auch mal im Code nachgeschaut, generell werden vermutlich auch Sekundenbruchteile unterstützt, allerdings gilt nachwievor, dass in FHEM durch die zentrale Abarbeitung in einem einzelnen Thread die Genauigkeit nicht gewährleistet, deshalb wird das immer fehlerbehaftet bleiben.

Ich hab jetzt einiges versucht, immer mit "." Ich denke das Problem ist wirklich die Genauigkeit. Der Motor läuft nicht wirklich jedes mal auf die Zehntelsekunde gleich lange. Bei der Leinwand macht sich das dann im 0,5 cm Bereich bemerkbar.


Titel: Antw:DOIF attr Wait
Beitrag von: Per am 19 Oktober 2017, 14:13:23
Jenachdem, wie die Command-Struktur ist: ruf ein Phyton Sript auf und gib dort die Zeit ein. Dann hast du einen zweiten Thread, der unabhängig ist.
Titel: Antw:DOIF attr Wait
Beitrag von: Beta-User am 19 Oktober 2017, 14:19:44
Was ist das für eine Art der Ansteuerung?

On-for-timer direkt auf dem Aktor geht nicht?

Ansonsten: ggf. einen Rolladenaktor nehmen. Z.B. bei Homematic kann man die Laufzeiten sehr genau einstellen.

Gruß, Beta-User
Titel: Antw:DOIF attr Wait
Beitrag von: hanswerner1 am 19 Oktober 2017, 14:32:00
Zitat von: Per am 19 Oktober 2017, 14:13:23
Jenachdem, wie die Command-Struktur ist: ruf ein Phyton Sript auf und gib dort die Zeit ein. Dann hast du einen zweiten Thread, der unabhängig ist.

Das bekomme ich leider mit meinen Kenntnissen nicht hin. :-(

Zitat von: Beta-User am 19 Oktober 2017, 14:19:44
Was ist das für eine Art der Ansteuerung?

On-for-timer direkt auf dem Aktor geht nicht?

Ansonsten: ggf. einen Rolladenaktor nehmen. Z.B. bei Homematic kann man die Laufzeiten sehr genau einstellen.

Gruß, Beta-User

Ansteuerung ist ein Sonoff 4Ch, 2 Kanäle für LW rauf/runter und 2 Kanäle für Maskierung rauf/runter.
Das mit dem Rolladenaktor wäre natürlich noch eine Idee, wobei dort 2 Zeiten eingestellt werden müssten, einmal die gesamte Zeit die die LW rauf/runter fährt und dann die Zeit die sie nur kurz rauf/runter fährt um von 16:9 auf 21:9 umzustellen.

Kann ich einen Homematic Aktor die Zeit On-for-timer mitgeben und die Zeit wird direkt im Aktor gesetzt ?
Titel: Antw:DOIF attr Wait
Beitrag von: Beta-User am 19 Oktober 2017, 14:44:51
Ein normaler HM-Aktor kann ein on-for-timer, der Rolladenaktor aber keine 2 unterschiedliche Zeiten. Dafür kannst du aber natürlich mit einem Rolladenaktor auch eine definierte Zwischenposition anfahren, im Prinzip auch aus jeder Zwischenlage heraus. Wenn 0% bzw. 100% als Startwert passen, müßte das hinreichend genau sein (das Problem mit häufigeren Wechseln bei Zwischenpositionen ist der schwindende Durchmesser der Achse, will heißen: oben wird schneller abgerollt).

Achtung: Bei einem normalen Aktor muß man sicherstellen, dass immer nur ein Kanal an ist! Sonst droht evtl. Motorschaden...

Idee für den Sonoff: Flashen auf Espeasy, und dann rules drauf machen (weiß aber nicht, ob damit mehrere Bedingungen gesetzt werden können). Ist aber nicht meine Spezialität, das kenne ich nur vom Hörensagen ::) .
Titel: Antw:DOIF attr Wait
Beitrag von: amenomade am 19 Oktober 2017, 14:55:50
Zitat von: hanswerner1 am 19 Oktober 2017, 11:34:05
Bei der Leinwand macht sich das dann im 0,5 cm Bereich bemerkbar.

Naja... 5 Millimeter? Ich glaub, ich könnte damit leben...