44_ROLLO: Modul zur präzisen Steuerung von Rollläden

Begonnen von KernSani, 14 Januar 2019, 00:11:37

Vorheriges Thema - Nächstes Thema

87insane

Guten Morgen,

nach dem ganzen Text....
... Normal würdest du die Dummys steuern und diese wiederum die DOIFs. DOIF triggert auf ein EVENT. In deinem Fall (das einzige DOIF was auch angehangen ist):
rollo_8auf:"on" <- Darauf wartet er im Event Monitor. Wenn das nicht kommt, wird das DOIF auch nicht laufen. Dazu lohnt es sich das DOIF etwas schöner zu machen / bzw. richtiger...

Trennzeichen für Befehle ist das Komma, daher ist keine Verdoppelung der Trennzeichen erforderlich.
(<Befehl 1>, <Befehl 2>, ... <Befehl n>)

Quelle: https://wiki.fhem.de/wiki/DOIF/Einsteigerleitfaden,_Grundfunktionen_und_Erl%C3%A4uterungen

Wichtig ist bei dem Modul hier, das du eben die entsprechenden Befehle ausfüllst und zwar so wie du sie in FHEM auch über die Comand-Zeile oben eingeben würdest.

Wenn du dort set rollo_8auf ausführst, was passiert dann? Aufgrund dessen was du hier gepostet hast, würde ich mal sagen nicht viel, oder?
Ach ja und dein DOIF sollte in meinen Augen nicht wirklich oft laufen... Entweder hast du einen DOELSEIF Zweig oder doalways. So könnte ein DOIF aussehen:

defmod sonnenaufgang_rollos DOIF ([{twilight("sonnenuntergang_nv","sr_civil","06:00","09:30")}]) \
(set ^((?!sz)[a-z]?[a-z])_rollo pct 0)\
DOELSEIF ([00:15])

(Dieses DOIF fährt alle Rollos, bis auf das Rollo im SZ hoch. Das macht es immer wenn die Sonne aufgeht aber nicht vor 06:00 Uhr und nicht nach 09:30 Uhr).
Das DOELSIF ist nur dafür, das dieses DOIF mehrfach ausgeführt wird. DOALWAY würde das gleiche tun, ist aber mit Problemen verbunden (weiß gerade nicht mehr was das war ist aber auch unwichtig, an der Stelle).

Hier steht nur ein Befehl zum ausführen drin. Weitere einfach mit "," trennen und beifügen.

Beagel

Guten Morgen,

ja ein langer Text, wollte soviel Info wie möglich geben.
Das angehängte DOIF ist nur eins von vielen, für jeden Rolladen gibt es 4 Stück ( rauf, runter, stop, Beschattung ).
Hab auch gerade gesehen das im Modul ROLLO bei "attr Rolladen_WZ_Fenster rl_commandUp set rollo_8auf " das on fehlt, werden dann die anderen Befehle " attr Rolladen_WZ_Fenster rl_commandDown set rollo_8zu on ; attr Rolladen_WZ_Fenster rl_commandStop set rollo_8stop on " auch nicht ausgeführt ?

Werden die dummys ( webcmd on:off, set rollo_8auf on ) direkt geschaltet funktionieren alle, Rollos fahren wie gewünscht.
Wenn ich die Befehle mit Komma getrennt werden, wird dann auch die Zeitverzögerung (wait ) berücksichtig, ohne Verzögerung verschluckt er sich in der reihenvolge der Befehle.
Das DOELSEIF ([00:15]), heist das das Doif nach 15 sek wieder audführbar ist ?

Danke

87insane

ZitatDas angehängte DOIF ist nur eins von vielen, für jeden Rolladen gibt es 4 Stück ( rauf, runter, stop, Beschattung ).
Geht sicherlich mit weniger DOIFs und schöner. Im Rollo Wiki stehen auch die DOIFs für Schalter z.B... Da kann man sich gut orientieren.

ZitatHab auch gerade gesehen das im Modul ROLLO bei "attr Rolladen_WZ_Fenster rl_commandUp set rollo_8auf " das on fehlt, werden dann die anderen Befehle " attr Rolladen_WZ_Fenster rl_commandDown set rollo_8zu on ; attr Rolladen_WZ_Fenster rl_commandStop set rollo_8stop on " auch nicht ausgeführt ?
Die Frage verstehe ich nicht! Im Wiki steht genau wie man das einrichten muss. Du brauchst hoch und runter Befehle. Diese muss das Rollo Modul ja auch kennen. Du muss dir das Rollo Modul vorstellen als wäre es einfach nur ein Dummy (nicht böse nehmen an die Entwickler, dient nur der Erklärung). Damit der Dummy etwas machen kann, muss dieser auch wissen wie er dies machen kann. Am besten machst du erstmal eine Bestandsaufnahme.
- Welchen Befehl brauchen deine Rollos für hoch?
- Welchen Befehl für runter?
- Welchen Befehl für stop bei hoch und welchen für stop bei runter?
- Welche Befehle brauchst du bei deiner speziellen Konfig? (Hatte nicht die gleiche Steuerung wie du aber wenn man das Modul einmal kennt, ist das einfach...)

ZitatWerden die dummys ( webcmd on:off, set rollo_8auf on ) direkt geschaltet funktionieren alle, Rollos fahren wie gewünscht.
Gut... Auch wenn man sicherlich, wie oben schon gesagt, etwas verbessern/verschönern/Code verkürzen kann.

ZitatWenn ich die Befehle mit Komma getrennt werden, wird dann auch die Zeitverzögerung (wait ) berücksichtig, ohne Verzögerung verschluckt er sich in der reihenvolge der Befehle.
Ein DOIF wird ja ganz normal abgearbeitet... Also sollte es bei korrekter Syntax auch korrekt durch laufen. Du muss auch nicht für jedes Rollo ein eigenes DOIF haben. Dafür kann man auch mit Regex arbeiten. In dem von mir geposteten DOIF sieht man z.B. Regex. Anfangs nervten mich diese Regex sehr aber die sind einfach super nützlich. Aber man muss sich eben ein paar Stunden (ich zumindest) hinsetzen um es zu verstehen.
Nochmal zu dem DOIF. Da muss du natürlich bei allen deinen zukünftigen DOIFs immer mal selber testen lernen. Dazu empfehle ich auch wieder das Wiki. Das gibt es einen ausführlichen Teil "Debug DOIF". Der hat mir auch schon geholfen.

ZitatDas DOELSEIF ([00:15]), heist das das Doif nach 15 sek wieder audführbar ist ?
Nein. Das bedeutet 00:15 Uhr. Und steht hier nur für einen pseudo Zweig. Ich weiß nicht mehr wer mir das hier sagte aber doalways macht in bestimmten Konstellationen wohl Probleme. Um dem aus dem Weg zu gehen, ist es sinnvoll mit dieser Lösung zu arbeiten. An sich würde der ELSIF Zweig nur dann geschehen wenn der erste Teil nicht passiert.

Zur Inspiration nochmal ein altes Stückchen Code. Das macht auch nichts anderes als die DOIFs im Wiki. Also es gibt verschiedene Wege.
Das notify ist damit Rollo den Tastendruck an einem Schalter mitbekommt. Hinzu ist es für alle meine Rollos gewesen. So hatte ich eins für alle Rollos.

(Kopiert aus der Konfig. Da ich das nicht mehr nutze, hatte ich es nur gelassen, wenn ich sowas nochmal bauen will. Am besten garnicht erst anfangen aus der Konfig zu kopieren oder sonst was. Immer den DEF Editor nehmen).
define rollos_manuell notify ESPEasy_.*_rollo:strom_output_(runter|hoch):.* {\\
my $richtung = '';;\
my $zustand = '';;\
my $geraet = $NAME;;\
$geraet =~ s/^ESPEasy_//;;\
\
if ($EVTPART0 eq "strom_output_hoch:") {\
  $richtung = "drive-up";;\
  $zustand = "open";;\
}\
if ($EVTPART0 eq "strom_output_runter:") {\
  $richtung = "drive-down";;\
  $zustand = "closed";;\
}\
\
if ($EVTPART1 eq "on" && Value("$geraet") ne "$richtung") {\
  fhem("set $geraet extern $zustand");;\
  fhem("$geraet extern $zustand");;\
}\
elsif ($EVTPART1 eq "off" && Value("$geraet") eq "$richtung") {\
  fhem("set $geraet extern stop");;\
  fhem("$geraet extern stop");;\
}\
}


Ich hoffe ich kann/konnte dir ein wenig helfen... Viel Erfolg :)

Vorhand

Danke an die Macher von Rollo.
Ich verwende das Modul zusammen mit 24V Rolladenrelais von Schalk. Geht wunderbar. Darüber sitzt die Steuerung ASC - ist noch nicht ganz fertig, aber mächtig.
Meiner Frau gefällt die händische Bedienebene mit den Icons. Zum Fahren und Stoppen z.B. über Handy nutzt sie die hoch runter Icons und wie selbstverständlich klickt sie das FahrIcon an (links) um zu stoppen. Das rechte Icon mit der Hand soll wohl für Stop sein - ist aber überflüssig. Was sie vermisst, ist die Möglichkeit, die Läden einzeln aus der Automatik zu nehmen.
Sie schlägt vor, das rechte Icon für die Hand/Auto-Umschaltung umzuwidmen.
Was haltet ihr davon?

Weitere Frage. Außerdem habe ich ein paar Läden mit dem Jarolift Funkmotor. Leider gibt es in fhem keine Möglichkeit der Funkansteuerung. Aber es gibt noch einen Tastereingang am Motor, den ich z.Zt. mit einem Relais aus FS20 ansteuere. Mit ein paar at-Befehlen fahren sie dann hoch bzw. runter. Bei Handbedienung verlieren sie natürlich die Synchronität zur Automatik. Selbst das ist kein Problem, weil mit 2 x drücken des Tasters bzw. der FB alles wieder stimmt.
Optimal wäre, wenn das Modul Rollo auch diese Toggle Funktion verwalten könnte. Dann wären alle möglichen Hardware-Ebenen erfasst.
Die Oberfläche könnte so bleiben. Falls der Laden in die falsche Richtung läuft könnte man z.B. mit einem Doppelklick auf den Icons eine Richtungsänderung herbeiführen - dauert ohnehin 1s.
Wäre toll. Was haltet ihr davon?

Noch ne Frage. Im Wohnzimmer haben wir Jalousien mit Lamellen verbaut (Relaistechnik), weil man durch ein Beschattungsrollo nicht durchsehen kann. Bei Lamellen sehr wohl. Natürlich nur wenn sie geeignet gekippt sind. Das wird in der Regel mit einem kurzen Gegenlauf von ca. 0,5 s gemacht. Das sollte natürlich auch auf der Handebene (Rollo) funktionieren. Die ASC könnte das irgendwann auch in Abhängigkeit des Sonnenstandes machen - kann es z.Zt noch nicht.
Da dem Modul Rollo alle Zwischenpositionen bekannt sind, könnte man einen Bereich definieren, z.B. 50-90%, bei dem ein einstellbarer Gegenlauf Impuls abgegeben wird. Die Beschattung wäre perfekt. Außerdem bräuchte ASC nicht mehr darauf eingehen.
Mehr braucht der Mensch nicht. Was haltet ihr davon?
Danke



Viele Grüße
Raspi,Homatic,ESP,Fronius,KIA-PHEV,DHW300,Mi,Shelly

cs-online

Hallo zusammen,

wahrscheinlich steht die Lösung schon irgendwo hier, aber ich habe die leider nicht gefunden. Ich würde mit dem Modul gerne eine Leinwand steuern. Diese wird über 3 Relais gesteuert, eben rauf, stop, runter.

Ich habe versucht die drei Relais so einzubinden:

attr Leinwand rl_commandDown Relais_16 An
attr Leinwand rl_commandStop Relais_14 An
attr Leinwand rl_commandUp Relais_12 An


nur wenn ich auf öffnen oder schließen drücke, tut sich an den Relais rein gar nichts. Was kann ich da falsch gemacht haben ?

Würde mich über Hilfe freuen,

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

MarkusHiba

Hallo,

der Set Befehl fehlt
Zum Beispiel:
set (Name Device) open

Grüße

MarkusHiba

Gesendet von meinem G8141 mit Tapatalk

Mit freundlichen Grüßen

MarkusHiba

cs-online

FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

grappa24

muss jetzt mal ein Lob loswerden. Nachdem 44_ROLLO offiziell aufgenommen wurde, hatte ich mich entschlossen, es noch einmal damit zu probieren, hatte auch viel Unterstützung beim Finalisieren der "berüchtigten" DOIFs zum Synchronisieren mit externen Tastern.

Seitdem läuft das Modul ohne Probleme und macht genau das, was es soll; das war in meinem Fall die korrekte Anzeige der Stati in meinen floorplänen - neben der Ansteuerung meiner KNX Rollos natürlich.

Grüße Dieter/grappa24

P.S. Blos nix mehr dran ändern bitte .... ;D
FHEM 6.1, 2 x RasPi 3B+, Debian Buster; KNX, FS20, HM, HUE, Tradfri, Shellies, KLF200
Rollo-/Lichtsteuerung/-szenarien, T-Sensoren, Fensterkontakte, Heizungssteuerung, HEOS, Sprachsteuerung mit Alexa-FHEM, Netatmo, Nuki, ...

Thunder2001

Hallo Leute,

folgendes Problem. Ich habe FS20 Funkschalter und FS20 rsu Rollladenschalter. Ich habe die Rollläden in fhem Eingebunden und kann diese hoch und runter fahren.

Nun wollte ich das Modul Rollo probieren, damit ich auch Zwischenstellungen usw. realisieren kann.
Leider komme ich nicht klar. Ich dachte, ich muss das zu steuernde Device erstmal löschen und dann mit dem Modul Rollo verknüpfen.
So in Etwa:

define FS20_2c610d ROLLO
attr FS20_2c610d rl_secondsDown 30
attr FS20_2c610d rl_secondsUp 30

Befehle werden in keinster Weise angenommen.

set FS20_2c610d 25 zum Beispiel.

Wo liegt mein Denkfehler? Auf jedenfall möchte ich, dass ich weiterhin mit den FS20 Tastern die Rolläden noch steuern kann unabhängig ob fhem läuft.


Vielen Dank!

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

Thunder2001

@CoolTux

Wenn ein bestehendes Device so eintrage (mit vergebenden Alias) kommt diese Meldung:

Fenster_WZ already defined. delete it first.

CoolTux

Zitat von: Thunder2001 am 14 Mai 2019, 09:46:12
@CoolTux

Wenn ein bestehendes Device so eintrage (mit vergebenden Alias) kommt diese Meldung:

Fenster_WZ already defined. delete it first.

Entweder Du benennst die anderen etwas um, oder Du nennt die neuen Devices anders.

define RolloWohnzimmer Rollo

Den Verweis auf das dann zu steuernde Device gibt der eigentliche Device Befehl. So verstehe ich zu mindest die Commandref
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

Thunder2001

Ok. Ich muss also im Modul Rollo die Steuerungsbefehle auf Alias Fenster_WZ weiter ausführen lassen.
Irgendwie finde ich das komisch. Es wäre doch einfacher, wenn ich dem Modul Rollo mitteilen könnte, das er beim Ansprechen von Rollowohnzimmer >> Fenster_WZ ansprechen soll.

Frank_Huber

dann lies doch mal Wiki / Commandref. ;-)

Was deinem define auf jeden Fall fehlt sind die Fahr und Stop-Befehle!

Hier ein Beispiel von einem meiner Rollos:
defmod Rollo4_Dachterrasse ROLLO
attr Rollo4_Dachterrasse cmdIcon open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr Rollo4_Dachterrasse devStateIcon open:fts_shutter_10:closed closed:fts_shutter_100:open half:fts_shutter_50:closed drive-up:fts_shutter_up@red:stop drive-down:fts_shutter_down@red:stop pct-100:fts_shutter_100:open pct-90:fts_shutter_80:closed pct-80:fts_shutter_80:closed pct-70:fts_shutter_70:closed pct-60:fts_shutter_60:closed pct-50:fts_shutter_50:closed pct-40:fts_shutter_40:open pct-30:fts_shutter_30:open pct-20:fts_shutter_20:open pct-10:fts_shutter_10:open pct-0:fts_shutter_10:closed
attr Rollo4_Dachterrasse rl_autoStop 0
attr Rollo4_Dachterrasse rl_commandDown set OUT_1 PortA6 on
attr Rollo4_Dachterrasse rl_commandStopDown set OUT_1 PortA6 off
attr Rollo4_Dachterrasse rl_commandStopUp set OUT_1 PortA6,A7 off
attr Rollo4_Dachterrasse rl_commandUp set OUT_1 PortA7 on
attr Rollo4_Dachterrasse rl_commandUp2 set OUT_1 PortA6 on
attr Rollo4_Dachterrasse rl_excessBottom 2
attr Rollo4_Dachterrasse rl_excessTop 4
attr Rollo4_Dachterrasse rl_resetTime 0
attr Rollo4_Dachterrasse rl_secondsDown 30
attr Rollo4_Dachterrasse rl_secondsUp 30
attr Rollo4_Dachterrasse rl_switchTime 1
attr Rollo4_Dachterrasse rl_type normal
attr Rollo4_Dachterrasse webCmd open:closed:half:stop:pct

CoolTux

Zitat von: Thunder2001 am 14 Mai 2019, 10:22:10
Ok. Ich muss also im Modul Rollo die Steuerungsbefehle auf Alias Fenster_WZ weiter ausführen lassen.
Irgendwie finde ich das komisch. Es wäre doch einfacher, wenn ich dem Modul Rollo mitteilen könnte, das er beim Ansprechen von Rollowohnzimmer >> Fenster_WZ ansprechen soll.

Also ich habe so ein Rolllo Ding nicht, aber wenn ich mir die Commandref durchlese dann setzt Du di Befehle zum fahren des Rolllos einfach in die Attribute rl_command und gut ist.
Wenn Du Dir unsicher bist baue Dir einen kleinen Test auf. Setzte die Steuerbefehle von Deinem eigentlichen Rolllo in FHEM in einem Dummy um. Also die Set Befehle und dann steuerst Du erstmal nur den Dummy mit dem Rollo Modul.
So schwer ist das glaube alles doch nicht.
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