Neues Modul: Rolladensteuerung

Begonnen von ThomasRamm, 11 Januar 2016, 00:00:21

Vorheriges Thema - Nächstes Thema

Ajuba

@KerniSan
Ich konnte nun wegen der Version nachsehen:
Ja, ich verwende die Version aus dem Master branch im Github.
Ich habe auch noch einmal ein "update all https://raw.githubusercontent.com/RettungsTim/fhem-rollo/master/controls_fhemrollo.txt" gemacht.

Am Verhalten hat sich nichts geändert. Welche Informationen kann ich dir noch zur Lösungsfindung liefern?
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

stefan-dd

Ich habe noch ein paar Ideen um das Modul zu vervollständigen. Vielleicht gibt es die eine oder andere Sache schon, ohne das ich dies weiß...

-Rollladen "Position 95%" direkt anfahren, so das gerade die Lamellen geöffnet sind
-wenn der Rollladen geblockt war, den "state" wieder zurück setzen lassen
-2 Tastenbedienung wie es mit Intertechno Funkschaltern direkt funktioniert (lässt sich über ein DOIF lösen, finde ich aber nicht schön) geht sicher im Modul einfacher
-Ausgleich des Prozentualen Weges durch den unterschiedlichen Umfang am Beginn und Ende der Rollladenrolle (habe ich schon mal angeregt)

Dr_Prune

Tolles Modul!

Ich hätte einen Wunsch, damit ich mit dem Modul endlich meine selbstgebaute SOMFY Jalousiesteuerung ersetzen kann: Wäre es möglich, die set-Befehle on-for-timer und off-for-timer zu implementieren?

Die braucht die Somfy, um die Lamellen zu kippen...


Gesendet von iPad mit Tapatalk

leachim200

Es tut mir leid ich bin anscheinend irgendwie zu doof dazu.

Wie schaff ich es das modul im einklang mit meinem Homematic HM-LC-Bl1PBU-FM Funk-Rollladenaktor in einklang zu bringen?

hinzugefügt hab ich das modul mit define Garagentor Rollo
Was muss ich dann noch machen das der Funkaktor auch wirklich bedient wird?

Papaloewe

Zitat von: ThomasRamm am 11 Januar 2016, 00:00:21
Hallo, da ich kein passendes Modul für meine Hardware gefunden habe, habe ich einige Ideen aus dem Forum aufgegriffen und ein neues Modul geschrieben.

Dieses Modul ist gedacht für alle die kein fertiges Rolladenmodul haben, sondern ihre Steuerung selber zusammengebastelt haben und deren Rolladensteuerung auf 1,2 oder 3 Ausgängen beruht.
Über welche Hardware/Module die Ausgänge angesprochen werden ist egal, Hauptsache man kann sie mit <device> ON bzw. <device> OFF in fhem steuern.
...

Ich glaube du hast mit diesem Modul "aufs falsche Pferd " gesetzt.
Der original HM-Rolladenaktor wird doch bereits von fhem "out of the box" bestens unterstützt.

Gruß
Thomas

leachim200

Warum hab ich das schon befürchtet :(
Danke für die Info

kjmEjfu

Zitat von: leachim200 am 12 Juni 2017, 11:46:08
Warum hab ich das schon befürchtet :(
Danke für die Info

du suchst vermutlich etwas zum Automatisieren der Rollosteuerung, oder?
Dafür ist das Modul eh nicht so richtig geeignet. Da wäre z.B. ein Blick nach https://forum.fhem.de/index.php/topic,69704.0.html eine Variante (von vielen weiteren)
Migriere derzeit zu Home Assistant

kurvi

#577
Zitat von: kurvi am 11 Juni 2017, 08:06:06

habe allerdings bei der Visualisierung auf Tablet UI ud sartVISU das Problem, das die erreichte Position aus dem Reading Positiion nicht aktualliesiert wird, bin leider noch nicht so fitt in Fhem und Perl, aber glaube das das reading Position kein Event feuert.


Hallo zusammen,
greife mein Problem noch mal auf, hat eventuell jemand eine Idee wie ich es erreiche das eine Änderung des Readings Position ein Event feuert.

Ajuba

@KerniSan und sonstige Modulexperten
Ich komme noch mal auf mein Problem zurück, dass das Modul verrückt spielt wenn ich die DOIFs für externe Kommandos aktiviere.
Bei Close kann man den Rolladen über das Modul nicht mehr stoppen.
Bei Open kann man es zwar stoppen aber beim anschließenden Versuch weiter Up zu fahren stoppt er von selbst nach weniger als einer Sekunde.
Wenn die DOIFs disabled sind funktioniert alles wunderbar.

Meine Version vom Github Hauptrepository: Rolladen_BU.version => 1.201

Meine Modulconfig und die DOIFs habe ich schon weiter oben gepostet, kann sie aber bei Bedarf gerne noch mal posten.

Das Logfile für Close
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Set (closed,)
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Start
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) drive from 0 to 100. command: closed. state: open
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) position: 0 -> 100 / direction: down
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> calculateDriveTime | going down: from 0 to 100
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) calculateDriveTime: oldpos=0,newpos=100,direction=down,time=18,steps=100,drivetime=25
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Set (extern,stop)
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> calculatePosition
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) calculated Position is 99; rest drivetime is -388
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Start
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) drive from 99 to 100. command: stop. state: drive-down
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) position: 99 -> 100 / direction: down
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Stop
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU): stops from drive-down at position 99
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) is in drive-type extern
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) execute following commands: set PB_RollAb_Buro trigger; ;
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) stop in 25 seconds.
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Set (extern,closed)
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Start
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) drive from 99 to 100. command: closed. state: closed
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) position: 99 -> 100 / direction: down
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> calculateDriveTime | going down: from 99 to 100
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) calculateDriveTime: oldpos=99,newpos=100,direction=down,time=18,steps=1,drivetime=6.18
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) drive-type is extern, not executing driving commands
2017.06.17 20:48:03 4: ROLLO (Rolladen_BU) stop in 6.18 seconds.
2017.06.17 20:48:07 5: ROLLO (Rolladen_BU) >> Set (stop,)
2017.06.17 20:48:07 5: ROLLO (Rolladen_BU) >> calculatePosition
2017.06.17 20:48:07 4: ROLLO (Rolladen_BU) calculated Position is 99; rest drivetime is -5
2017.06.17 20:48:07 5: ROLLO (Rolladen_BU) >> Start
2017.06.17 20:48:07 4: ROLLO (Rolladen_BU) drive from 99 to 100. command: stop. state: drive-down
2017.06.17 20:48:07 4: ROLLO (Rolladen_BU) position: 99 -> 100 / direction: down
2017.06.17 20:48:07 5: ROLLO (Rolladen_BU) >> Stop
2017.06.17 20:48:07 4: ROLLO (Rolladen_BU): stops from drive-down at position 99
2017.06.17 20:48:07 4: ROLLO (Rolladen_BU) is in drive-type extern


Das Logfile für Open
2017.06.17 20:53:10 5: ROLLO (Rolladen_BU) >> Set (open,)
2017.06.17 20:53:10 5: ROLLO (Rolladen_BU) >> Start
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) drive from 100 to 0. command: open. state: closed
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) position: 100 -> 0 / direction: up
2017.06.17 20:53:10 5: ROLLO (Rolladen_BU) >> calculateDriveTime | going up: from 100 to 0
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) calculateDriveTime: oldpos=100,newpos=0,direction=up,time=20,steps=100,drivetime=27
2017.06.17 20:53:10 5: ROLLO (Rolladen_BU) >> Set (extern,stop)
2017.06.17 20:53:10 5: ROLLO (Rolladen_BU) >> calculatePosition
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) calculated Position is 1; rest drivetime is -72
2017.06.17 20:53:10 5: ROLLO (Rolladen_BU) >> Start
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) drive from 1 to 0. command: stop. state: drive-up
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) position: 1 -> 0 / direction: up
2017.06.17 20:53:10 5: ROLLO (Rolladen_BU) >> Stop
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU): stops from drive-up at position 1
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) is in drive-type extern
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) execute following commands: set PB_RollAuf_Buro trigger; ;
2017.06.17 20:53:10 4: ROLLO (Rolladen_BU) stop in 27 seconds.
2017.06.17 20:53:11 5: ROLLO (Rolladen_BU) >> Set (extern,open)
2017.06.17 20:53:11 5: ROLLO (Rolladen_BU) >> Start
2017.06.17 20:53:11 4: ROLLO (Rolladen_BU) drive from 1 to 0. command: open. state: open
2017.06.17 20:53:11 4: ROLLO (Rolladen_BU) position: 1 -> 0 / direction: up
2017.06.17 20:53:11 5: ROLLO (Rolladen_BU) >> calculateDriveTime | going up: from 1 to 0
2017.06.17 20:53:11 4: ROLLO (Rolladen_BU) calculateDriveTime: oldpos=1,newpos=0,direction=up,time=20,steps=1,drivetime=1.2
2017.06.17 20:53:11 4: ROLLO (Rolladen_BU) drive-type is extern, not executing driving commands
2017.06.17 20:53:11 4: ROLLO (Rolladen_BU) stop in 1.2 seconds.
2017.06.17 20:53:12 5: ROLLO (Rolladen_BU) >> Timer
2017.06.17 20:53:12 5: ROLLO (Rolladen_BU) >> Stop
2017.06.17 20:53:12 4: ROLLO (Rolladen_BU): stops from drive-up at position 0
2017.06.17 20:53:12 4: ROLLO (Rolladen_BU) is in drive-type extern
2017.06.17 20:53:16 5: ROLLO (Rolladen_BU) >> Set (stop,)
2017.06.17 20:53:16 3: WARNING: command is stop but shutter is not driving!
2017.06.17 20:53:16 5: ROLLO (Rolladen_BU) >> Stop
2017.06.17 20:53:16 4: ROLLO (Rolladen_BU): stops from open at position 0
2017.06.17 20:53:16 4: ROLLO (Rolladen_BU) stopped by excute the command: set PB_RollAb_Buro trigger


Abgesehen von der Tatsache, dass sich das Modul komplett verrechnet fällt mir auf, dass gleich zu Beginn ein Set (extern,stop) kommt was mir unlogisch erscheint:
2017.06.17 20:48:03 5: ROLLO (Rolladen_BU) >> Set (extern,stop)
Als ob das DOIF zwar anschlägt aber das RückmeldeSignal vom Antrieb noch gar nicht da wäre ?!?!?

Wäre toll, wenn jemand Rat weiß.
Danke
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

jazzor

#579
Hat hier außer mir noch jemand eigentlich das Problem, dass in Homekit falsche Prozentangaben stehen?
Und zwar nicht die invertierten sondern beliebige?
Bspw. steht mein Rollo im Arbeitszimmer gerade auf 50%, in Fhem auch so dargestellt, aber in Homekit auf 86%.
Habe die Rollos ganz standardmäßig definiert. (Bis auf die Tatsache, dass ich mir eine IO-Funktion dahintergeschrieben habe, aber damit wird das nix zu tun haben)

Bin für Vorschläge offen ;)

Gelöst:

Dieser Beitrag von MacHilli brachte die Lösung. Falls sich hier nicht alle durch 39 Seiten Thread wühlen wollen  ;)

grappa24

Hallo,

im Wiki sind ja die DOIFs zur Synchronisierung mit einem externen Taster beschrieben; leider hab ich damit immer so meine Probleme gehabt. Wo find ich denn aktuelle Infos bzw. Ansätze zu diesem Thema?

Gruß, Dieter
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, ...

Ajuba

Hallo Grappa24
Ich kann dir nur zustimmen. Ich mühe mich gerade auch damit ab.

Bei mir ist es bei den original DOIFs, dass sich dann der Rolladen über die Modulbedienung in eine Richtung nicht mehr stoppen lässt und dass sich das Modul bei der Position komplett verrechnet.

Hauptgrund ist bei mir wahrscheinlich, dass ich keine eigenes "commandStop" habe sondern über "commandStopUp" und "commandStopDown" mit jeweils des Startbefehls in der Gegenrichtung stoppe. Ich könnte meine PLC umprogrammieren, hoffe aber vorher auf eine Rückmeldung der Modulentwickler.

Einen Teilerfolg habe ich durch Umstieg von DOIF auf Notify und leichte Modifizierung der Logik

Rolladen_BU_ManUPRolladen_BuroUp:.*
{
if (Value("Rolladen_BuroUp")eq "on" && Value("Rolladen_BU") ne "drive-down")
{fhem ("set Rolladen_BU open")}
elsif
(Value("Rolladen_BuroUp")eq "off" && Value("Rolladen_BU") eq "drive-up")
{fhem ("set Rolladen_BU extern stop")} }


Rolladen_BU_ManDNRolladen_BuroDn:.*
{
if (Value("Rolladen_BuroDn")eq "on" && Value("Rolladen_BU") ne "drive-up")
{fhem ("set Rolladen_BU closed")}
elsif
(Value("Rolladen_BuroDn")eq "off" && Value("Rolladen_BU") eq "drive-down")
{fhem ("set Rolladen_BU extern stop")} }


Ich sende dabei statt des "set Rolladen_BU extern closed" nur ein "set Rolladen_BU closed", weil ich der Hoffnung war dass es eigentlich egal sein müsste wenn ich zum bereits laufenden Rolladen noch ein weiteres Start nachsende. Es läuft aber trotzdem irgendwie falsch weil er nicht Positionen nicht richtig ansteuert die bei deaktiviertem Notify richtig angefahren werden.
Immerhin bin ich durch das Notify das Problem los, dass er sich nicht mehr stoppen lässt.
Aber solange das Modul nicht richtig rechnet ist es in dieser Form für mich trotzdem noch nicht brauchbar.

Ich hoffe auf eine Lösung der Entwickler.
FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight

Willtho

Bei mir wird die Position nicht zuverlässig gesetzt, wenn der Rolladen in eine Position gefahren wurde. Es funktioniert nur, wenn ich manuell auf stop drücke, ansonsten bleibt die Position auf dem vorherigen Wert.


Hier mal meine Definition:
defmod Rolladen ROLLO
attr Rolladen autoStop 0
attr Rolladen cmdIcon open:control_arrow_upward closed:control_arrow_downward half:control_arrow_down stop:audio_stop
attr Rolladen commandDown set Rolladen_backend down
attr Rolladen commandStop set Rolladen_backend stop
attr Rolladen commandStopDown set Rolladen_backend stop
attr Rolladen commandStopUp set Rolladen_backend stop
attr Rolladen commandUp set Rolladen_backend up
attr Rolladen 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 position-100:fts_shutter_10:open position-90:fts_shutter_10:closed position-80:fts_shutter_20:closed position-70:fts_shutter_30:closed position-60:fts_shutter_40:closed position-50:fts_shutter_50:closed position-40:fts_shutter_60:open position-30:fts_shutter_70:open position-20:fts_shutter_80:open position-10:fts_shutter_90:open position-0:fts_shutter_100:closed
attr Rolladen excessBottom 2
attr Rolladen excessTop 1
attr Rolladen genericDeviceType blind
attr Rolladen resetTime 0
attr Rolladen room Wohnzimmer,alexa,homekit
attr Rolladen secondsDown 23
attr Rolladen secondsUp 30
attr Rolladen switchTime 1
attr Rolladen type HomeKit
attr Rolladen webCmd open:closed:half:stop:position

setstate Rolladen half
setstate Rolladen 2017-07-03 13:50:49 command half
setstate Rolladen 2017-07-03 13:50:49 desired_position 50
setstate Rolladen 2017-07-03 13:50:49 drive-type modul
setstate Rolladen 2017-07-03 13:50:49 last_drive drive-up
setstate Rolladen 2017-07-03 13:51:04 position 50
setstate Rolladen 2017-07-03 13:51:04 state half


StefanH

Hallo,

ich habe jetzt einige Stunden damit verbracht das Modul in Betrieb zu nehmen. Die Ansteuerung über FHEM funktioniert auch super!
Als Schalter verwende ich von Homematic den HM-LC-SW2 (selbstgebaut). Dieser schaltet mit einen Schalter zum Hochfahren, den anderen zum Runterfahren des Rollladen. Dieser Schalter besitzt in meiner Selbstbauversion zwei Taster, welche direkt die Relais schalten, aber entsprechend dann auch den Schaltzustand an FHEM senden. Somit habe ich die Informationen, wann mein Motor hoch- bzw. runterläuft.

Mit dem vorgeschlagenen "extern" Befehl wäre diese Konstelation wahrscheinlich machbar, richtig? Aber dann stoppt mein Motor nicht automatisch, wenn er oben oder unten angekommen ist. Also müsste ich die DOIF Anweisung ohne "extern" schreiben. Dann habe ich aber das Problem, dass mein Schalter, wenn er von Rollo angesteuert wird und anschließend vom DOIF abgefragt wird, scheinbar noch auf "off" liegt. Es scheint intern noch irgendwo eine kurze Verzögerung zu geben, bis dass FHEM selbst mitbekommen hat, das es den Schalter gleich ansteuert. Somit läuft mir meine DOIF Abfrage beim ganz normalen Betrieb über die Weboberfläche schon in die externen Schleifen. Also habe ich ein "wait" in der DOIF versucht, aber hier habe ich scheinbar noch nicht ganz verstanden, wie das funktioniert.


Hier mal meine DOIF Abfrage:
([HM_123456_Sw_02] eq "on" and [TestRollo_dummy] ne "drive-down") ( {Log 1, [TestRollo_dummy] [HM_123456_Sw_02] } set TestRollo_dummy closed ) DOELSEIF ([HM_123456_Sw_02] eq "off" and [TestRollo_dummy] eq"drive-down") ( {Log 1, [TestRollo_dummy] [HM_123456_Sw_02] } set TestRollo_dummy stop ) DOELSE ({})

Hat jemand eine Idee, was ich noch ändern könnte?

Ajuba

Hallo StefanH
Wenn du dir die letzten Postings durchliest siehst du, dass mehrere mit den externen Tastern kämpfen.
Mir hatte KerniSan vor einiger Zeit Hilfe versprochen aber außer der Erkenntnis, dass sich das Modul nach der Aktivierung der DOIFs ganz heftig verrechnet ist nichts weiter raus gekommen.
Ich hab meine stundenlangen Testversuche aufgegeben und beobachte diesen Thread nur mehr, ob vielleicht doch noch eine Lösung der Experten kommt.

Gesendet von meinem SM-G920F mit Tapatalk

FHEM auf RPi3, Homematic CCU3 mit Cuxd und CUL 868 für FS20, Siemens S7 über CP343-1,
DbLog zu MySQL auf NAS QNAP TS-253D,
Yeelight