Neues Modul: Rolladensteuerung

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

Vorheriges Thema - Nächstes Thema

oliv06

#375
Zitat von: weini am 29 Oktober 2016, 21:49:29
Ich habe nochmal eine Frage zu type=HomeKit:

Wie verträgt sich
   Readings:
     2016-10-24 18:43:55   command         closed
     2016-10-24 18:43:55   desired_position 100
     2016-10-24 18:43:55   drive-type      extern
     2016-10-24 18:43:55   last_drive      drive-down
     2016-10-24 18:44:21   position        100
     2016-10-24 18:44:21   state           closed


mit der Doku:

Die "position" müsste bei "closed" doch auf 0 stehen, oder verstehe ich etwas falsch?

I agree : the type=HomeKit attribute gives confusing reading values. For example, if I enter the set roller position 20, I get this
2016-12-29 00:27:16 ROLLO roller command: position-80
2016-12-29 00:27:16 ROLLO roller desired_position: 80
2016-12-29 00:27:16 ROLLO roller last_drive: drive-down
2016-12-29 00:27:16 ROLLO roller drive-down
2016-12-29 00:27:16 ROLLO roller drive-type: modul
2016-12-29 00:27:22 ROLLO roller position-20

and reading position is set to 80
In my opinion, at least the command reading should be consistent and return position-20.

Something else : reading position does not generate an event, shouldn't it ?




Spfrfhem

Hallo,

ich bin von dem ROLLO Modul total begeistert.
Jedoch habe ich noch ein Problem. Ich weiß nicht, wie ich die Kanäle meinen Ausgängen zuordnen kann.

Ich würde gerne meinen Rolladen am Raspi über GPIO14 (hoch) + GPIO15 (runter) ansteuern. Natürlich sind an die Ausgänge noch Relais verbaut.
Wie muss ich das Rollo-Modul definieren?
Ich bekomme es einfach nicht zum laufen.

Vielen Dank.
Gruß Axel

Opa

Hallo Axel,

Du brauchst zunächst für jede Aktion einen Dummy.

z.B.
define WCRollo_auf dummy
define WCRollo_ab dummy

Das sind Deine Merker, die Du manuell oder automatisch ansteuerst, um
den Rollladen zu bewegen.

Dann definierst Du, was beim Setzen/Rücksetzen des Dummys passieren soll:

z.B.
define WCRollo_auf_notify notify WCRollo_auf set GPIO14 on
define WCRollo_ab_notify notify WCRollo_ab set GPIO15 on

Damit das ROLLO-Modul die Rollläden steuern kann, sind folgende Attribute
in WCRollo anzupassen:

commandDown set WCRollo_auf on

commandStopDown set WCRollo_auf off

commandStopUp set WCRollo_auf off

commandUp set WCRollo_auf on

So sollte es funktionieren.

Gruß, Ralf

willybauss

Ich habe mir heute das ROLLO Modul installiert und es funktioniert auf Anhieb fehlerfrei. Allerdings bleiben noch Fragen:

Ich habe eine Peha PHC Rolladensteuerung und simuliere mit dem ROLLO Modul die Tastendrücke auf einem enOcean Funkschalter. Diese Schalter senden beim drücken und beim loslassen des Schalters jeweils einen Befehl, so dass ich z.B. für commandDown einen langen Tastendruck mit der Sequenz

set Rollo_1_EG BI;sleep 1;set Rollo_1_EG released

definiert habe. Diese Sequenz habe ich im Attribut commandDown hinterlegt, und das funktioniert so auch. Somit kann man also Sequenzen von mehreren Kommandos verwenden. Daraus ergibt sich aber die Frage, wofür die Attribute commandDown2 und commandDown3 gedacht sind???

Und wie lang darf denn die Sequenz innerhalb eines Attributs sein?

Zweite Frage:
Das Modul kennt nicht die aktuellen Rolladenpositionen, weil es manuelle Betätigung per Taster (außerhalb von FHEM) nicht mit bekommt. Deshalb möchte ich z.B. für ein "set position 50%" eine Sequenz erstellen, die den Rollladen zuerst ganz hoch fährt und anschließend wieder um 50% runter. Wie stelle ich das an? Ich habe versucht, im WebUI von FHEM einzugeben

set Rolladen_EssZi_gross open; sleep 50; set Rolladen_EssZi_gross position 50

Das klappt auch. Aber gibt es eine einfachere Möglichkeit? Eigentlich wollte ich sowas zeitgesteuert mit einer Kombination von "at" und IF machen,

at *00:01:00 IF ($we) (set Rolladen_EssZi_gross open, sleep 50, set Rolladen_EssZi_gross position 50)

aber die at/IF Kombination kommt ins Schleudern, weil at Semikolons in der Sequenz braucht, IF aber Kommas. Das lässt sich nur sehr unschön umgehen. Ungern würde ich als Alternative auf ein DOIF wechseln, da hier wieder die "sleep" durch "wait" Attribute dargestellt werden müssen - auch das ist unschön.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

willybauss

#379
Nun sehe ich doch noch ein Problem:
Wenn ich per ROLLO Modul den Rollladen auf 50% gesetzt habe und ihn anschließend manuell (mechanischer Taster, von dem FHEM nichts wissen kann) auf 100% fahre, dann fährt das ROLLO-Modul ihn beim "open" Befehl nur halb auf, weil das Modul ja noch glaubt, er sei auf 50%-Stellung.

Wie kann ich das Modul beim "open" Befehl zu einer vollen Fahrt nach oben zwingen?

Ich habe versuchsweise die Sequenz erweitert zu

set Rolladen_EssZi_gross reset closed;set Rollo_1_EG B0;sleep 1;set Rollo_1_EG released

aber das hilft nicht. Es wirkt sich nur auf die Anzeige im Icon aus, nicht auf die Laufzeit des Rollomotors.

Dasselbe

set Rolladen_EssZi_gross reset closed

vorher im Webinterface eingegeben und erst dann die Rolladenfahrt gestartet führt zum richtigen Ergebnis. Aber dann wäre ja die Benutzung des Rollomoduls über seine Icons nicht möglich.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

jazzor

Zitat von: willybauss am 01 Januar 2017, 22:49:20
Wie kann ich das Modul beim "open" Befehl zu einer vollen Fahrt nach oben zwingen?

Wenn sich das Problem darauf reduzieren lässt (so verstehe ich dich gerade), dann brauchst du nur das Attribut "autoStop" auf 1 setzen.

Viele Grüße!

willybauss

#381
Klappt leider nicht. Durch autostop = 1 wird am Ende der Fahrt kein Stop-Befehl gesendet, d.h. die PHC-Steuerung lässt dauerhaft die Spannung am Motor. Eine weitere Fahrt in die entgegengesetzte Richtung klappt deshalb nicht. Die manuelle Bedienung am Taster ist ebenfalls blockiert.

Ok, nach 1 - 2 Minuten setzt die PHC-Steuerung von sich aus den Stop-Befehl. Anschließend geht wieder alles. Aber mit dem autostop Attribut müsste ich dann halt immer ziemlich lange warten, und die manuelle Bedienung wäre auf eine für Unwissende etwas unverständliche Art behindert.

Inzwischen denke ich eher, ich muss im Code des Moduls die Stelle patchen, wo die Fahrtdauer je nach Situation eingeschränkt wird. Wäre nett, wenn mir ThomasRamm dazu einen Tipp geben könnte, da ich mit perl ziemlich auf Kriegsfuß stehe.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

Henne16

Hallo Willybaus,

was für ein Steuermodul hast Du in der PHC Anlage ?

Gruß Henrik.


Gesendet von iPhone mit Tapatalk
FHEM 6 PI4, Fhem2Fhem, Homematic IP CCU3, HMLAN, div. Thermostate, HM IP Wired Ein-Ausgang, Dimmer

willybauss

#383
Zitat von: Henne16 am 03 Januar 2017, 20:01:39
Hallo Willybaus,

was für ein Steuermodul hast Du in der PHC Anlage ?

Gruß Henrik.


Gesendet von iPhone mit Tapatalk

D 950 JRM, der Vorläufer hiervon:
https://www.peha.de/cms/front_content.php?client=1&lang=1&idcatart=1233&Page=1&ProductsPage=12&keyword=&catID=76&prodID=25807

Eine integrierte Lösung, Niederspannungs-Steuereingänge und Rollomotoren-Anschlüsse alles in einer Kiste. Über das Buskabel habe ich ein PHC-Funkmodul (D 941 FU C) angeschlossen, das auf enOcean-Funktechnik basiert. Fhem erzeugt Funksignale, die einen PHC-Funktaster emulieren.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

ThomasRamm

ZitatWie kann ich das Modul beim "open" Befehl zu einer vollen Fahrt nach oben zwingen?

es gibt die beiden Attribute
excessTop und excessBottom

die könntest du dafür benutzen. es handelt sich um einen Zeitaufschlag der nur dann zur Fahrzeit dazugerechnet wird wenn das Rollo komplett auf oder zu fahren soll.
Der Vorteil ist dabei wenn du auf auf klickst und die fahrt vorher stopst wird die position korrekt berechnet, wenn das rollo innerhalt der excessTop/Bottom Zeit ist wird die Position auf auf/zu gesetzt.

Beispielkonfiguration: Dein Rollo benötigt 20 sekunden zum herunterfahren und 21 sekunden zum hochfahren. Jedes mal wenn dein Rollo komplett auf Position 100 oder 0 fährt würde der Ausgang zusätzliche 20/21 sekunden offen bleiben. Wird innerhalb dieser zusätzlichen "Fahrzeit" ein Schaltvorgang ausgelöst geht das Modul davon aus das die Endposition bereits erreicht wurde.


attr myRollo secondsDown 20
attr myRollo secondsUp 21
attr myRollo excessTop 21
attr myRollo excessBottom 20



schöner wäre es natürlich wenn du das drücken des mechanischen Tasters zu fhem bringen könntest, dann könnte das Modul die positionen parallel mit berechnen (dafür ist der external Befehl da)

PS: den Reset- und den Fahrbefehl zusammen in die command zu schreiben hilft nicht, da vor der Ausführung des Befehls die Laufzeit berechnet wird und der Reset somit für die Berechnung wirkungslos ist.

Gruß
Thomas

willybauss

Zitat von: ThomasRamm am 06 Januar 2017, 09:33:38
excessTop und excessBottom
Super. Mein Bauchgefühl "das müsste einfacher gehen" hat sich bestätigt.
excessTop und excessBottom funktioniert. Allerdings verliere ich dabei die korrekte Zuordnung von "half" zu einem tatsächlich halb geöffneten Rollladen, weil ich excessTop und excessBottom nicht mehr ihrem eigentlichen weck entsprechend verwenden kann. Aber damit kann ich leben.

btw: zwei bis drei selbst definierbare Buttons wären hilfreich, die ich mir dann z.B.mit "viertel", "halb" und "Beschattung" benennen würde. Dann könnte ich jedem davon einen %-Wert zuordnen, z.B.
viertel = 27%
halb = 56%
Beschattung = 83%

Zitat von: ThomasRamm am 06 Januar 2017, 09:33:38
schöner wäre es natürlich wenn du das drücken des mechanischen Tasters zu fhem bringen könntest, dann könnte das Modul die positionen parallel mit berechnen (dafür ist der external Befehl da)
Wird nicht klappen. Dann müsste ich alle mechanischenTaster im Haus gegen "intelligente" austauschen. Das ist deutlich zu teuer. Und die PHC-Steuerung unterstützt sowas leider gar nicht.


Folgende Fragen (rot markiert) sind bei mir noch offen:

Zitat von: willybauss am 01 Januar 2017, 21:53:34
Ich habe mir heute das ROLLO Modul installiert und es funktioniert auf Anhieb fehlerfrei. Allerdings bleiben noch Fragen:

Ich habe eine Peha PHC Rolladensteuerung und simuliere mit dem ROLLO Modul die Tastendrücke auf einem enOcean Funkschalter. Diese Schalter senden beim drücken und beim loslassen des Schalters jeweils einen Befehl, so dass ich z.B. für commandDown einen langen Tastendruck mit der Sequenz

set Rollo_1_EG BI;sleep 1;set Rollo_1_EG released

definiert habe. Diese Sequenz habe ich im Attribut commandDown hinterlegt, und das funktioniert so auch. Somit kann man also Sequenzen von mehreren Kommandos verwenden. Daraus ergibt sich aber die Frage, wofür die Attribute commandDown2 und commandDown3 gedacht sind???

Und wie lang darf denn die Sequenz innerhalb eines Attributs sein?

Zweite Frage:
Das Modul kennt nicht die aktuellen Rolladenpositionen, weil es manuelle Betätigung per Taster (außerhalb von FHEM) nicht mit bekommt. Deshalb möchte ich z.B. für ein "set position 50%" eine Sequenz erstellen, die den Rollladen zuerst ganz hoch fährt und anschließend wieder um 50% runter. Wie stelle ich das an? Ich habe versucht, im WebUI von FHEM einzugeben

set Rolladen_EssZi_gross open; sleep 50; set Rolladen_EssZi_gross position 50

Das klappt auch. Aber gibt es eine einfachere Möglichkeit? Eigentlich wollte ich sowas zeitgesteuert mit einer Kombination von "at" und IF machen,

at *00:01:00 IF ($we) (set Rolladen_EssZi_gross open, sleep 50, set Rolladen_EssZi_gross position 50)

aber die at/IF Kombination kommt ins Schleudern, weil at Semikolons in der Sequenz braucht, IF aber Kommas. Das lässt sich nur sehr unschön umgehen. Ungern würde ich als Alternative auf ein DOIF wechseln, da hier wieder die "sleep" durch "wait" Attribute dargestellt werden müssen - auch das ist unschön.
FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

ThomasRamm

ZitatSuper. Mein Bauchgefühl "das müsste einfacher gehen" hat sich bestätigt.
excessTop und excessBottom funktioniert. Allerdings verliere ich dabei die korrekte Zuordnung von "half" zu einem tatsächlich halb geöffneten Rollladen, weil ich excessTop und excessBottom nicht mehr ihrem eigentlichen weck entsprechend verwenden kann. Aber damit kann ich leben.

Dann nimm statt dessen resetTime (der past ja eigentlich von seinem Sinn noch besser als excessTop / excessBottom)

Zitatwofür die Attribute commandDown2 und commandDown3 gedacht sind

Die erfüllen den gleichen Zweck wie mehrere Befehle mit ; voneinander zu trennen. Das ist historisch aus der früheren Version entstanden in der komplette Befehlsgruppen zu Komandotypen zusammengefasst wurden. Du kannst also entweder nur commandDown mit mehreren Befehlen benutzen oder aber deine Befehle auf 3 Gruppen aufteilen.
Wie lang die Sequenz innerhalb eines Attributs sein darf kann ich dir nicht sagen, der Aufruf erfolgt mit fhem("$command1"), es dürfte sich also entweder um einen Grenzwert in fhem oder in der Sprache perl handeln - sprich wir werden diese Grenze nie mit vernünftigen Befehlen erreichen.

Eine einfachere Möglichkeit für deinen Wunsch Position 50% -> fahre auf 0%, fahre auf 50% fällt mir spontan nicht ein

Gruß
Thomas

willybauss

FHEM auf Raspberry Pi B und 2B; THZ (THZ-303SOL), CUL_HM, TCM-EnOcean, SamsungTV, JSONMETER, SYSMON, OBIS, STATISTICS

ThomasRamm

Zitat von: Spfrfhem am 31 Dezember 2016, 09:21:09
Hallo,

ich bin von dem ROLLO Modul total begeistert.
Jedoch habe ich noch ein Problem. Ich weiß nicht, wie ich die Kanäle meinen Ausgängen zuordnen kann.

Ich würde gerne meinen Rolladen am Raspi über GPIO14 (hoch) + GPIO15 (runter) ansteuern. Natürlich sind an die Ausgänge noch Relais verbaut.
Wie muss ich das Rollo-Modul definieren?
Ich bekomme es einfach nicht zum laufen.

Vielen Dank.
Gruß Axel

Du hast die Definition wahrscheinlich nach dem Wiki Artikel bzw. älteren Posts erstellt, das Modul wurde seitdem komplett überarbeitet. Die Definition erfolgt nicht mehr per Typ1,Typ2, etc. in der Definition, sondern die abzusetzenden Befehle werden direkt in die Attribute commandup, commanddown und commandstop eingetragen.
In deinem Beispiel wäre das also:

defmod testrollo ROLLO
attr testrollo commandDown set GPIO15 on
attr testrollo commandStopDown set GPIO15 off
attr testrollo commandUp set GPIO14 on
attr testrollo commandStopUp set GPIO14 off
attr testrollo secondsDown 30
attr testrollo secondsUp 30
attr testrollo type normal


Gruß
Thomas

Henne16

Hallo willybauss,

du verwendest also kein STM Modul von PHC.

Mit dem D 942 STM AN  kann man über HTTP befehle in beide Richtungen arbeiten.
Ich habe für meine Rolladen ein D 940 JRM Modul verbaut.
Das STM Modul sendet per HTTP an den FHEM wenn ich einen Taster betätige, somit habe ich immer die richtige Position im FHEM.
Vom FHEM sende ich per HTTP dann an das STM Modul.

Gruß Henrik.
FHEM 6 PI4, Fhem2Fhem, Homematic IP CCU3, HMLAN, div. Thermostate, HM IP Wired Ein-Ausgang, Dimmer