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

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

Vorheriges Thema - Nächstes Thema

KernSani

Schau dir mal das Wiki an: https://wiki.fhem.de/wiki/ROLLO - ist vielleicht nicht 100%ig aktuell und vollständig, sollte aber weitestgehend passen.

Du musst noch im HWR_Test Device die entsprechenden Attribute pflegen - insbesondere rl_commandUp (in deinem Fall sollte da sowas rein, wie "set Roll_HWR auf"), rl_commandDown und rl_commandStop. Zudem sind natürlich die Zeiten (insbesondere rl_secondsDown und rl_secondsUp) wichtig, sonst kommt Unfug raus.

RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Kuehnhackel

So, dadurch, dass ich näher am Rolladen im WZ  sitze teste ich hier.

###Rolladen Wohnzimmer Manuell###
define Roll_WZ ROLLO
attr Roll_WZ rl_secondsDown 10
attr Roll_WZ rl_secondsUp 10
set Roll_WZ pct 50
set Roll_WZ ab
set Roll_WZ auf


dann kommt folgende Meldung nach dem Speichern:
Unknown argument ab, choose one of down:noArg reset:open,closed extern:open,closed,stop half:noArg unblocked:noArg blocked:noArg stop:noArg up:noArg pct:0,10,20,30,40,50,60,70,80,90,100 open:noArg closed:noArg drive:textField Unknown argument auf, choose one of down:noArg reset:open,closed extern:open,closed,stop half:noArg unblocked:noArg blocked:noArg stop:noArg up:noArg pct:0,10,20,30,40,50,60,70,80,90,100 open:noArg closed:noArg drive:textField

auf bzw. ab wird ja wohl nicht erkannt. Muss ich in den anderen Teilen ab durch closed ersetzen oder was mache ich sonst falsch?

KernSani

Zitat von: Kuehnhackel am 10 März 2019, 21:30:48
So, dadurch, dass ich näher am Rolladen im WZ  sitze teste ich hier.

###Rolladen Wohnzimmer Manuell###
define Roll_WZ ROLLO
attr Roll_WZ rl_secondsDown 10
attr Roll_WZ rl_secondsUp 10
set Roll_WZ pct 50
set Roll_WZ ab
set Roll_WZ auf


dann kommt folgende Meldung nach dem Speichern:
Unknown argument ab, choose one of down:noArg reset:open,closed extern:open,closed,stop half:noArg unblocked:noArg blocked:noArg stop:noArg up:noArg pct:0,10,20,30,40,50,60,70,80,90,100 open:noArg closed:noArg drive:textField Unknown argument auf, choose one of down:noArg reset:open,closed extern:open,closed,stop half:noArg unblocked:noArg blocked:noArg stop:noArg up:noArg pct:0,10,20,30,40,50,60,70,80,90,100 open:noArg closed:noArg drive:textField

auf bzw. ab wird ja wohl nicht erkannt. Muss ich in den anderen Teilen ab durch closed ersetzen oder was mache ich sonst falsch?

Sorry, aber bitte mach dich erstmal mit den Grundlagen von FHEM vertraut (im Anfängerforum sind da ein paar hilfreiche Beiträge oben angepinnt).
Du schreibst den Kram doch nicht etwa von Hand in die fhem.cfg?? Bitte gib mal den define Befehl in der Kommandozeile der FHEM Web-Oberfläche ein und Pflege die Attribute dann (so wie ich es vorhin beschrieben hatte) über die Web-Oberfläche, dann sollte das klarer werden...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Kuehnhackel

Habe jetzt mal nach Deinen Anweisungen folgende Befehle in die Kommandozeile eingegeben:

define Roll_WZ ROLLO
attr Roll_WZ rl_commandDown Roll_WZ ab
attr Roll_WZ rl_secondsDown 10
attr Roll_WZ rl_commandUp Roll_WZ auf
attr Roll_WZ rl_secondsUp 10

set Roll_WZ pct 50
set Roll_WZ ab
set Roll_WZ auf


Aber keine Reaktion

KernSani

ok, ich versuche es nochmal... Du hast ein funktionierendes (Dummy-) Device namens Roll_HWR, das du mit den Kommandos "set Roll_HWR ab", "set Roll_HWR auf" und "set Roll_HWR stop" steuern kannst, richtig?

Mit ROLLO legen wir jetzt eine Schicht darüber. Wir legen also ein neues Device vom Typ ROLLO an, das dein existierendes Roll_HWR steuert. Dieses neue ROLLO-Device muß wissen, welche Befehle es ausführen soll, um Roll_HWR zu steuern. Das passiert über die Attribute. Wenn du also sowas eingibst (einzeln, über die Weboberfläche, nicht in der fhem.cfg):

define Roll_WZ ROLLO
attr Roll_WZ rl_commandDown set Roll_HWR ab
attr Roll_WZ rl_secondsDown 10
attr Roll_WZ rl_commandUp set Roll_HWR auf
attr Roll_WZ rl_secondsUp 10
attr Roll_WZ rl_commandStop set Roll_HWR stop

sollten wir ein Stück weiter kommen. Du solltest dann auch ein paar hübsche Icons sehen, über die du den ROLLO hoch und runter fahren kannst. Wenn das nicht funktioniert, bitte verbose 5 am ROLLO Device setzen, einen Versuch unternehmen und die Logausgabe posten.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Kuehnhackel

Zitatok, ich versuche es nochmal... Du hast ein funktionierendes (Dummy-) Device namens Roll_HWR, das du mit den Kommandos "set Roll_HWR ab", "set Roll_HWR auf" und "set Roll_HWR stop" steuern kannst, richtig?
Ja, Roll_WZ, aber ist ja egal.

ZitatMit ROLLO legen wir jetzt eine Schicht darüber. Wir legen also ein neues Device vom Typ ROLLO an, das dein existierendes Roll_HWR steuert. Dieses neue ROLLO-Device muß wissen, welche Befehle es ausführen soll, um Roll_HWR zu steuern. Das passiert über die Attribute. Wenn du also sowas eingibst

Folgendes habe ich daraufhin eingegeben:
define Rollade_WZ ROLLO
attr Rollade_WZ rl_commandDown set Roll_WZ ab
attr Rollade_WZ rl_secondsDown 10
attr Rollade_WZ rl_commandUp set Roll_WZ auf
attr Rollade_WZ rl_secondsUp 10
attr Rollade_WZ rl_commandStop set Roll_WZ stop


Die 5 Icons sehe ich, kann och ja auch anklicken, aber es funktioniert nicht.

Ob ich das jetzt mit "attr global verbose 5" richtig gemacht habe weiß ich nicht

AUf jeden Fall steht folgendes im LOG
2019.03.10 23:10:23 5: Cmd: >set Rollade_WZ open<
2019.03.10 23:10:23 5: ROLLO (Rollade_WZ) >> Set (open,)
2019.03.10 23:10:23 5: ROLLO (Rollade_WZ) DesiredPos set to open, ()
2019.03.10 23:10:23 5: ROLLO (Rollade_WZ) DesiredPos now 0, open
2019.03.10 23:10:23 5: Starting notify loop for Rollade_WZ, 2 event(s), first is command: open
2019.03.10 23:10:23 5: End notify loop for Rollade_WZ
2019.03.10 23:10:23 5: ROLLO (Rollade_WZ) >> Start
2019.03.10 23:10:23 4: ROLLO (Rollade_WZ) drive from 40 to 0. command: open. state: pct-40
2019.03.10 23:10:23 4: ROLLO (Rollade_WZ) pct: 40 -> 0 / direction: up
2019.03.10 23:10:23 5: ROLLO (Rollade_WZ) >> calculateDriveTime | going up: from 40 to 0
2019.03.10 23:10:23 5: ROLLO (Rollade_WZ) netto drive time = 4
2019.03.10 23:10:23 4: ROLLO (Rollade_WZ) calculateDriveTime: oldpos=40,newpos=0,direction=up,time=10,steps=40,drivetime=8
2019.03.10 23:10:23 5: Starting notify loop for Rollade_WZ, 2 event(s), first is last_drive: drive-up
2019.03.10 23:10:23 5: End notify loop for Rollade_WZ
2019.03.10 23:10:23 4: ROLLO (Rollade_WZ) execute following commands: ; ;
2019.03.10 23:10:23 5: Starting notify loop for Rollade_WZ, 1 event(s), first is drive-type: modul
2019.03.10 23:10:23 5: End notify loop for Rollade_WZ
2019.03.10 23:10:23 4: ROLLO (Rollade_WZ) stop in 8 seconds.


Ich weiß ich bin ein schwierigeer Fall ...

KernSani

Das mit dem verbose 5 hat schonmal geklappt :) Was mich irritiert ist die Zeile:

ROLLO (Rollade_WZ) execute following commands: ; ;

da sollte eigentlich das Kommando stehen... Mach bitte mal ein

list Rollade_WZ
und poste das Ergebnis...
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Kuehnhackel

Hallo, nochmal danke an alle, für die Mithilfe und euren Langmut mir zu helfen.

Nachdem ich alles noch einmal eingetragen habe funktioniert alles.

Jetzt werde und kann ich ja ein bisschen mit den Zeiten basteln, mal sehen ob ich das alleine hinbekomme, oder in kürze wieder nerve.

Danke

Kuehnhackel

AxelR

Hallo Entwickler des Moduls 44_ROLLO,

ein klasse Modul, jedoch komme ich mit  der Dokumentation ich nicht ganz klar.

In der englischen Commandref unter Attributes ist zu lesen:
--
rl_secondsDown attr <Rollo-Device> rl_secondsDown <number>
time in seconds needed to drive the shutter down
--
und in der deutschen und im Wiki ist folgender Eintrag zu finden:
--
rl_secondsDown attr <Rollo-Device> rl_secondsDown <number>
Sekunden zum hochfahren
--

Genau so verhält es sich mit der Beschreibung von "rl_secondsUp". Sind die beiden Beschreibungen für Up und Down nicht vertauscht? Die englische Beschreibung sollte wohl die Richtige sein.

Nach meinen Tests sollten die Zeiten von "rl_excessTop" und "rl_excessBottom" von den Zeiten von "rl_secondsDown" und "rl_secondsUp" abgezogen werden. Oder die Zeiten von "rl_secondsDown" und "rl_secondsUp" sind die Fahrzeiten, von den Scheiben Ober und Unterkanten, dann muss nichts abgezogen werden.
Ansonsten ist z.B. ein anfahren der Position "half" irgendwo, nur nicht in der Mitte des Fensters.


Ein Beispiel von meinem Schlafzimmer Rolladen, den ich mit einem Sonoff T1 2Kanal, geflasht mit der Tasmota Firmware, als MQTT2_DEVICE steuere. Die Bezeichnungen für die beiden Schalter (Kanäle) des Sonoff lauten SzRollK1 und SzRollK2.
Die Fahrzeiten wurden mit der Stoppuhr eines Smartphones ermittelt.

Beispiel:
Zeit zum Runterfahren gesamt = 27 Sek.
Zeit zum Hochfahren gesamt = 28 Sek.
Zeit von oberem Scheibenrand, bis der Rolladen komplett hochgefahren ist = 1 Sek.
Zeit vom unteren Scheibenrand, bis komplett geschlossen, Lamellen sind zu = 10 Sek.

Somit ergeben sich folgende Werte:
Fahrzeit Runterfahren gesamt - Top - Bottom: 27 - 1 - 10 = 16
rl_secondsDown: 16

Fahrzeit Hochfahren gesamt - Top - Bottom: 28 - 1 - 10 = 17
rl_secondsUp: 17

Hier nun die eingesetzten/geänderten Attribute:
rl_autoStop 0
rl_commandDown set SzRollK2 on
rl_commandStopDown set SzRollK2 off
rl_commandStopUp set SzRollK1 off
rl_commandUp set SzRollK1 on
rl_excessBottom 10
rl_excessTop 1
rl_resetTime 2
rl_secondsDown 16
rl_secondsUp 17
rl_switchTime 1
rl_type normal
room Schlafzimmer


Sollte ich hier richtig liegen, bitte ich die vertauschten Werte im Wiki und in der Commandref zu berichtigen und das Beispiel, oder ein ähnliches, wegen der besseren Verständlichkeit  in der Wiki aufzunehmen. Bei meinem Rolladen funktioniert es mit diesen Werten.

Gruß
Axel

87insane

Hey und guten Morgen,

auch wenn ich die Fragen alle beantworten könnte verweise ich mal auf: https://forum.fhem.de/index.php/topic,98366.msg917091.html#msg917091
Das funktioniert besser als ohne den Shutter Fork. Hinzu wird dann alles im Schalter berechnet. Die Symbolik ist fast identisch zu diesem Modul.

Das 44er Modul ist wirklich klasse. Allerdings für deine Konstellation nicht notwendig. Hier hat Beta-User ganze Arbeit geleistet mit den Templates usw.

An sich sind die Dokus alle ein wenig veraltet aber lassen sich durch einfache Tests ja ableiten (die Befehle).

Was die Position half angeht, kann diese auch bei z.B. 65% der eigentlichen Fahrt liegen. Jeder hat auch ein anderes Empfinden für "halb". Auch das würde mit der Einrichtung aus dem Link oben einstellbar sein.

Gruß,
Kai

KernSani

Zitat von: AxelR am 01 April 2019, 09:22:53

Sollte ich hier richtig liegen, bitte ich die vertauschten Werte im Wiki und in der Commandref zu berichtigen und das Beispiel, oder ein ähnliches, wegen der besseren Verständlichkeit  in der Wiki aufzunehmen. Bei meinem Rolladen funktioniert es mit diesen Werten.

Gruß
Axel
Danke für den Hinweis. CommandRef schaue ich mir an und passe sie an. Das Wiki lebt vom Mitmachen - User.anlegen und selber machen ;-)


Kurz, weil mobil
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Sunless

Hallo in die Runde,
habe nun endlich mal meine Rollos ins FHEM gezerrt, das Modul ist eine sehr feine Sache.

Kurz zur Hardware: ESP8266 mit EspEasy steuert ein Doppel-SSR, welches je nach gewünschter Fahrtrichtung die Schaltkontakte meiner GW195 (Gurtwickler) überbrückt und Rückmeldung ans FHEM gibt, welche Taste gerade "gedrückt" wurde. Endpunkte sind direkt im Wickler gespeichert und die Laufzeiten passen auch recht gut. Klappt also super ...

Nur ein kleines 'Problem' habe ich: Da, wie gesagt, Gurtwickler im Einsatz sind und einige Rollladen zudem in der Welle auch noch ein Getriebe haben (groß, schwer, wurden irgendwann mal nachgerüstet - praktisch jeder im Haus ist anders aufgebaut) passen die PCT-Werte gar nicht.
Bei geschlossenem Rollo z.B. Terrassentür Arbeitszimmer orgelt der Wickler erstmal rund 30 Sekunden (Gesamtlaufzeit 70 Sekunden), bis er das Rollo ca. 20cm hochgezogen hat. Danach geht es dann rasant(er) weiter, je mehr "Material" aufgerollt wird und je weniger Rollogewicht noch hochzuwuchten ist (Küchenfenster dauert beispielsweise nur 15s zu und 19s auf - ist ohne Getriebe, kleiner und auch ansich leichter).
Also generell progressiv beim Öffnen und regressiv beim Schließen.

Gäbe es eine Möglichkeit, diese Option mit ins Modul zu integrieren? Könnte mir vorstellen, eine Auswahl möglich zu machen, ob das Rollo linear läuft oder nicht und dann für jede +/-10% PCT die Laufzeit für hoch und runter eingeben zu können - alternativ die PCT/Fahrzeit berechnen, was allerdings u.U. reichlich kompliziert werden könnte ...

Ist jetzt nichts ultrawichtiges, wäre aber evtl. eine Idee.

Gruß Sebastian
FHEM-Master@Raspi2B (CUL433,etliche CUL_TCM97001-Sensoren, zig IT-Steckdosenschalter, Squeezelite)
FHEM-Slave@Raspi (via RFHEM,wired Bewegungsmelder, Sqeezelite)
DS212+ (LMS für Squeezelite-Clients, Surveillance, Mediaserver und Datengrab)
Billig-Tablets zum Steuern (TabletUI)

KernSani

Hi Sebastian,

eine ähnliche Anfrage gab es schon mal. Dmals war die Überlegung, einen Faktor mit einzubauen, in der Art 0.9:1.1, heißt beim ersten Prozent bewegt sich der Rolle nur 0,9%, beim letzten Prozent 1,1% (also eine konstante Steigung - ich habe schon damals die Integralrechnung geliebt ;-)) Das würde in deinem Fall aber wahrscheinlich nicht wirklich helfen... Ich denke übers Wochenende mal drüber nach, wie man so ein %-Staffelung einbauen könnte.

Grüße,

Oli
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

Sunless

Hi Oli,
ich denke, mit einer Art "manuellen Mapping" wäre jedem in einer ähnlichen Situation geholfen. Bei mir kommt noch hinzu, dass einige Rolladen nicht ganz bis "offen" gefahren werden könne, da dann nicht genug Eigengewicht "herunterzieht", damit der Wickler schließen kann - fährt an, Rollo zuckt sich nicht - er merkt dann keinen Widerstand und geht auf Fehler - Die Rollläden hängen also eh schon zwischen ca 10 und 20% unten, damit der Wickler funktioniert ...
Mach Dir keinen Streß, ist nicht wirklich wichtig  :D
benutze derzeit nur die privacy vom ASC und komplett hoch resp. herunter nach Sonnenauf- und untergang und ich "weiss" ja, wieviel ich fahren müsste, um die gewünschte reale Postion zu erreichen, sollte ich es einmal wollen  8)

Schöne RestOstern noch

Sebastian
FHEM-Master@Raspi2B (CUL433,etliche CUL_TCM97001-Sensoren, zig IT-Steckdosenschalter, Squeezelite)
FHEM-Slave@Raspi (via RFHEM,wired Bewegungsmelder, Sqeezelite)
DS212+ (LMS für Squeezelite-Clients, Surveillance, Mediaserver und Datengrab)
Billig-Tablets zum Steuern (TabletUI)

Beagel

Hallo zusammen,

hab mich jetzt mal daran versucht meine Jaroliftrolladen (mit Rolling Code) Smart zubekommen.
Dafür hab ich eine 16Kanalfernbedienung umgebaut um sie über GPIO Pin anzusteuern, die Anregung dafür hab von hier
https://forum.fhem.de/index.php/topic,27114.0.html und von hier https://forum-raspberrypi.de/forum/thread/12341-rollladen-steuerung-per-modifizierter-fb/?pageNo=1. Leider hab ich keine Ahnung vom Programmieren, die Sache mir den Script oder Pyhdon
hab ich nicht hin bekommen, daher sieht meine Rolladensteuerung im Moment so aus:

für jede Funktion der Fernbedienung gibt es ein Device (Dummy) z.B. Kanal hoch (set GPIO17 blink bis der Gewünschte Kanal erreicht)
für jede Rollade muss der Kanal wieder zum Anfang zurück

Ein Dummy (rollo_8auf) schaltet dann ein Diof in dem mehre Befehle abgearbeitet werden:
defmod do_rollo_8auf DOIF ([rollo_8auf:"on"]) (set GPIO17 blink 3 1) (set Rollo_Auf Impuls3sek) (set GPIO23 blink 3 1) (set rollo_8auf off)
attr do_rollo_8auf room 7_Jaro
attr do_rollo_8auf verbose 5
attr do_rollo_8auf wait 0,5,4,5

setstate do_rollo_8auf cmd_1
setstate do_rollo_8auf 2019-05-06 19:52:32 Device rollo_8auf
setstate do_rollo_8auf 2019-05-06 19:52:46 cmd 1.4
setstate do_rollo_8auf 2019-05-06 19:52:46 cmd_event rollo_8auf
setstate do_rollo_8auf 2019-05-06 19:52:46 cmd_nr 1
setstate do_rollo_8auf 2019-05-06 19:52:46 cmd_seqnr 4
setstate do_rollo_8auf 2019-05-06 19:52:32 e_rollo_8auf_events on
setstate do_rollo_8auf 2019-05-06 14:50:33 mode enabled
setstate do_rollo_8auf 2019-05-06 19:52:46 state cmd_1
setstate do_rollo_8auf 2019-05-06 19:52:46 wait_timer no timer


Es gibt noch Doif für Runter und Stop und für die Beschattung, jetzt würde ich gerne die Bedienung der einzlen Dummys (DIOF)
über das Modul ROLLO machen leider funktioniert es nicht. Die Doif werden nicht abgearbeitet, Rollade fährt nicht.

defmod Rolladen_WZ_Fenster ROLLO
attr Rolladen_WZ_Fenster alias Rollo_Wohnzimmerfenster
attr Rolladen_WZ_Fenster cmdIcon open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr Rolladen_WZ_Fenster 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 Rolladen_WZ_Fenster rl_autoStop 0
attr Rolladen_WZ_Fenster rl_commandDown set rollo_8zu on
attr Rolladen_WZ_Fenster rl_commandStop set rollo_8stop on
attr Rolladen_WZ_Fenster rl_commandUp set rollo_8auf
attr Rolladen_WZ_Fenster rl_excessBottom 2
attr Rolladen_WZ_Fenster rl_excessTop 4
attr Rolladen_WZ_Fenster rl_secondsDown 20
attr Rolladen_WZ_Fenster rl_secondsUp 20
attr Rolladen_WZ_Fenster rl_switchTime 1
attr Rolladen_WZ_Fenster rl_type normal
attr Rolladen_WZ_Fenster room 7_Jaro
attr Rolladen_WZ_Fenster verbose 5
attr Rolladen_WZ_Fenster webCmd open:closed:half:stop:pct

setstate Rolladen_WZ_Fenster closed
setstate Rolladen_WZ_Fenster 2019-05-06 19:02:09 command closed
setstate Rolladen_WZ_Fenster 2019-05-06 19:02:09 desired_pct 100
setstate Rolladen_WZ_Fenster 2019-05-06 19:02:10 drive-type modul
setstate Rolladen_WZ_Fenster 2019-05-06 19:02:10 last_drive drive-down
setstate Rolladen_WZ_Fenster 2019-05-06 19:02:36 pct 100
setstate Rolladen_WZ_Fenster 2019-05-06 19:02:36 state closed


Leider konnte ich den Logeintrag nicht kopieren :( daher ein Screenshot

Vielleicht kann mir ja jemand auf die Sprünge helfen oder falls es mit dem Modul wegen der Kanal anwahl nicht geht eine schönere Rolladensteuerung empfehlen. Würde natürlich gerne irgend wann die Beschattung und automatisierte (Zeit) Steuerung verwirklichen, auch dafür brauche ich noch Anregungen.

Schon mal Vielen Dank