[gelöst] Ein Taster von HM-PB-(6)-WM55 steuert 6 HM-LC-BI1-FM1 Rolladenaktoren

Begonnen von UweUwe, 16 Februar 2019, 18:31:56

Vorheriges Thema - Nächstes Thema

UweUwe

Hallo,
ich würde gerne mit einem Taster des HM-PB-(-6-)-WM55  6  HM-LC-BI1-FM 1 Rolladenaktoren gleichzeitig steuern, besser gesagt hochfahren und runterfahren bis jeweils zum Anschlag. . Positionierung ist aufgrund der unterschiedlichen Laufzeit der Rolläden und der historischen Position nicht möglich, klar. Brauche ich auch nicht.

Die Rolladenaktoren habe ich bereits einzeln mit Tasten des HM-PB-(-6-)-WM55 gepeert.
Funktion: Drücken: Rolladen läuft los (Umgekehrte Richtung als die letzte Laufrichtung).
                Drücken während des Laufs: Rolladen bleibt stehen.
                Drücken: läuft in Gegenrichtung
Da die Laufrichtung von der Vergangenheit abhängt laufen die 6 auf einen Taster gepeerten Aktoren/Rolläden eventl in unterschiedliche Richtungen, so meine Vermutung
Attribute (short, long) kann ich den Aktoren auch nicht verpassen , da diese auch für die Einzelbedingung  wirken würden, es sind ja dieselben Aktoren. Möchte ich aber nicht. Die aktuelle Funktionalität der Einzelbedienung gefällt mit.

Ich sehe noch den Weg über ein structure für alle 6 Rolläden und ein notify (short/long) für genau diesen Taster für alle 6 Rolläden.
Damit habe ich aber 2 unterschiedliche Bedienungsarten (Drücken/Drücken/Drücken und Short/Long) auf einem 6 fach Tastenblock. Nicht gut.

Hab ich was übersehen? Habt ihr da einen Hinweis für mich?





loetmeister

Hi,

Das peering müsste toggle_to_counter sein, nicht das simple toggle... Damit sollten die Rollos synchron bleiben.

Die Aussage zum anfahren einer bestimmten Position verstehe ich nicht ganz. Wenn du für jeden rollo einen eigenen aktor hast, dann kannst du dort auch die Laufzeiten korrekt einstellen und dann bestimmte Positionen anfahren. Mit nur einem Taster hast du nicht so viele Möglichkeiten. Du könntest aber long press noch mit einer oft benötigten Position konfigurieren...  (on level)

Gruß,
Thomas

UweUwe

Vielen Dank Thomas,
der Hinweis war gut  8) 8) und ich habe gemäss dem Blog https://forum.fhem.de/index.php/topic,90877.msg839412.html#msg839412 durchgearbeitet.  ;D ;D

Kann mal kurz darstellen, was ich gemacht habe
Jeden der Rolläden mit dem Sammel-Taster (ES03_RolloAlle) gepeert und die Taste einmal mit der VCCU: (Beispiel für einen Rolladen = RolladenWohnzimmerSued)
set KS03_RolloAlle peerChan 0 RolladenWohnzimmerSued single set
set KS03_RolloAlle peerChan 0 VCCU_Btn2 single set

Dann für jeden Rolladen folgende Befehlskette:
attr RolladenWohnzimmerSued expert 1_allReg     //     Damit man mehr sieht   
set RolladenWohnzimmerSued regSet intKeyVisib visib    /attr interKeyVisib auf visib setzen
set RolladenWohnzimmerSued  getConfig       // damit alles übernommen wird.
get RolladenWohnzimmerSued regTable        // nachschauen, ob visib angekommen
set RolladenWohnzimmerSued regSet shActionType toggleToCnt self01ans   // ok
set RolladenWohnzimmerSued  getConfig       // damit alles übernommen wird.
set RolladenWohnzimmerSued regSet shActionType toggleToCnt  ES03_RolloAlle// Attribut toggleToCnt setzen


Ich habe bisher noch nicht den Test durch, ob es funktioniert. Bei 3 Rolläden war der erste Test erfolgleich.
Ich verstehe folgende Zeile nicht (habe ich in dem anderen Blog abgeschrieben) (self01ans?)
set RolladenWohnzimmerSued regSet shActionType toggleToCnt self01ans   // ok

dafür habe ich folgendes Kommando hinzugefügt:
set RolladenWohnzimmerSued regSet shActionType toggleToCnt  ES03_RolloAlle Hat mir hierfür jemand eine Erklärung. Ist meine Vorgehensweise überhaupt korrekt?
ES03_RolloAlle ist mein Taster auf dem "6-fach Taster".
RolladenWohnzimmerSued  ist der akctor vom Rolladen.
self01ans ist mir verborgen ??? ::) ::)


             
       

Pfriemler

Zuerst:
Zitat von: UweUwe am 17 Februar 2019, 21:50:36
self01ans ist mir verborgen ??? ::) ::)
Mir auch. Das ist IMO falsch. Interne Tasten heißen self01, self02, ...

@loetmeister: Guter Tipp mit dem toggleToCnt, hatte ich schon vergessen. Ich glaube, mit dem Anfahren der Positionen meint er, dass er mit manuellem Fahren bei langem Tastendruck auf die "Makrotaste", also die welche alle Rolladen ansteuern soll, keine einheitliche Position (wie etwa 50%) erreichen kann, weil die Rolladen unterschiedlich schnell fahren ...

Ich finde keine Erklärung was ES03_RolloAlle ist. Eine Taste des Sechsfachtstasters? Du schriebst, Du hast 6 Rolläden und mit diesen 6 Tasten belegt. Damit ist der Sechsfachtaster voll, ich sehe dann keine weiteren Möglichkeiten zur Einstellung einer Makrofunktion, weder mit peering noch mit notify, sequence etc.
Gegenbeispiel: In meinem Wohnzimmer nutze ich einen Sechsfachtaster zur Steuerung von drei Lampen (jeweils an/aus inkl. Dimmen). Zwei der Tasten überwache ich mit sequence und notify: Drücke ich die Aus-Taste dreimal, fährt ein Rolladen hoch. In diesem Fall bekommt die zugehörige Lampe drei Ausschaltbefehle, aber das macht nichts, weil es morgens eh hell ist und ich das Licht dann nicht mehr brauche. Bei einem single-gepeerten Rolladen würde der Zickzack fahren  :)

Also wenn Du Rolladen 1-6 mit den Tasten 1-6 gepeert hast, musst Du auf die Einzelsteuerung eines Rolladen verzichten (lokal bleibt sie natürlich erhalten).
Eine der sechs Tasten wird dann zur Makrotaste, indem Du die anderen Rolladenaktoren mit dieser Taste zusätzlich peerst.
Ist das jetzt klar?  :o

toggleToCnt bewirkt, dass der Toggle-Trigger synchronisiert wird: Die Tastendrücke werden ja durchgezählt (Short 1_0, Short_1_1, Short 1_2 usw.) Ein Tastendruck bewirkt beim normalen Toggle immer einen Zustandswechsel. Mit toggleToCnt führt eine ungerade Zählernummer (das x in Short 1_x) bspw. bei Schaltern zum Einschalten und eine gerade zum Ausschalten. Befindet sich ein Aktor bereits in einer entsprechenden Stellung, passiert nichts. 
Bei der Betätigung der Makrotaste reicht dann der Blick auf einen Rolladen, um zu sehen, was alle anderen in diesem Moment auch machen, sie werden also synchron fahren.
toggleToCntInv bewirkt eine gegenteilige Aktion (ungerade = aus, gerade = ein) - peert man z.B. zwei Lampen single mit einer Taste und stellt bei einer toggleToCnt und bei der anderen toggleToCntInv ein, werden sie bei dieser Taste immer wechselseitig schalten.

Gar keinen Sinn macht für mich das Einstellen von toggleToCnt auf den internen Tasten der Rolladenaktoren.
set RolladenWohnzimmerSued regSet shActionType toggleToCnt self01

Dagegen ist set RolladenWohnzimmerSued regSet shActionType toggleToCnt ES03_RolloAlle korrekt, wenn ES03_RolloAlle der Makrotaster ist.
Das bewirkt aber nur das synchrone Fahren bei kurzem Tastendruck. Für langen Tastendruck muss es entsprechend (lgActionType) ebenfalls gesetzt werden.

Und: Da Du für diese gewünschte Makroaktion keinen der rolladenaktor-eigenen Tasten verändern musst, brauchst Du sie auch gar nicht erst sichtbar machen.

Dann: Für das peeren mit VCCU_Btn2 gibt es keinen wirklichen Grund. Es wird normalerweise benötigt, um der Taste eine Quittung (grün/rot nach gelb) zu entlocken, wenn kein direkter Peer programmiert ist. In aller Regel sorgt das hier nur für sinnlosen zusätzlichen Datenverkehr. Das peeren mit einem oder mehreren Aktoren reicht. Der Makrotaster etwa wird dann auf die Antwort aller Rolläden warten, d.h. Du bekommst eine grüne Rückmeldung nur, wenn alle Aktoren den Empfang des Befehls quittieren (ist ja beabsichtigt, dass man so weiß dass es überall angekommen ist).
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

UweUwe

Hallo Pfriemler,
danke für die Information. Zu der Erklärung: ES03_RolloAlle meinte ich hier erklärt zu haben:
ZitatJeden der Rolläden mit dem Sammel-Taster (ES03_RolloAlle) gepeert
Ich habe nur 5 Rolläden einzeln mit dem 6 fach Taster gepeert und den Taster "3" mit allen 5 Rolläden.
Den Rest deiner sehr informativen Darstellung lese ich mir gleich im Detail durch.  Ich melde mich, wenn ich noch Fragen habe. Danke  8) 8)

UweUwe

Hallo Pfriemler,
danke für deine ausführlichen Antworten.
Zuerst mal:
set RolladenWohnzimmerSued regSet shActionType toggleToCnt self01 entferne ich für jeden Rolladen und auch das VCCU_Btn2. Das Peeren mit der VCCU war mir klar, dass es eigentlich nicht notwendig ist.

ZitatDas bewirkt aber nur das synchrone Fahren bei kurzem Tastendruck. Für langen Tastendruck muss es entsprechend (lgActionType) ebenfalls gesetzt werden.
Heisst das für mich folgendes:
set RolladenWohnzimmerSued regSet lgActionType toggleToCnt ES03_RolloAlle
Den Rest meine ich verstanden zu haben. Da gibt es aber noch eine sehr wichtige Frage mit dem Endanschlag.
Meine "alten" Rolläden vertragen eigentlich nicht mehr, dass ich ich diese oben anschlagen lasse.
Ich muss diese einige cm vorher anhalten. Solange ich dies einzeln bewege, mach ich dies über den Fahrweg. Gibt es sowas Geniales wie toggleToCnt auch für das "Gruppenfahren" in bezug auf Fahrweg?



Pfriemler

(sh|lg)ActionType wird nicht "entfernt", sondern auf "jmpToTarget" zurückgestellt. Und lgActionType wird genauso wie shActionType programmiert, logisch.

Endanschlag:
Ich weiß nicht wie Du es jetzt löst. Was heißt "einzeln bewegen über Fahrweg"? Fährst Du nur manuell?
Üblicherweise gehört in jeden Rolladenmotor ein Endanschlag. Dieser wird so eingestellt, dass die Rolladen eben nicht anschlagen, sondern der Motor rechtzeitig zum Stehen kommt, auch wenn noch Strom auf den Motor gegeben wird. Alles andere ist mehr oder weniger Murks. Elektronisch werden die Anschläge z.B. über interne Impulsgeber eingehalten, die eine maximale Anzahl von Umdrehungen des Motors gewährleisten. Mitunter kann für automatische Einstellung der Endpunkte der Motorstrom berücksichtigt werden. Homematic bietet das nicht.

Homematic-Aktoren müssen auf die Fahrzeiten programmiert werden, laufen dann immer ein wenig (1-2 s) länger als der tatsächliche Fahrweg, damit der Endpunkt sicher erreicht wird. Du kannst sie alternativ kürzer einstellen, aber das wird regelmäßig Ungenauigkeiten hervorrufen - auf der einen Seite läuft der Motor dann doch in den Anschlag. Fahrzeitprogrammierung könnte einen Endpunkt ersetzen, wenn der andere noch funktioniert und regelmäßig angefahren wird.

In jedem Fall regelt jeder Rolladenaktor seine Fahrzeit selbst. Sendest Du einen Fahrbefehl an alle Rolladenaktoren, so wird jeder für sich sein Programm abarbeiten, logisch, was sonst. Die Homematic-Aktoren betreiben ja über die Laufzeiten der Motor eine Art Positionsschätzung - ist ein Rolladen also schon fast oben, wird er bei einem Fahrbefehl nach oben selbst nur hinreichend kurz agieren. Auch wenn Du über langen Tastendruck eine Fahrt manuell anstösst, läuft jeder Aktor nur bis zu seinem individuellen Endpunkt.

Oder was meinstest Du jetzt?
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

UweUwe

Hallo, vielen Dank, dass du dir mit deinen Erklärungen soviel Mühe gibst. Im  Zeitalter der Smartphones ist dies eher selten. Ich finde es toll.
Das Endanschagproblem muss ich mechanisch lösen, da ist zu wenig Widerstand oben gegeben. War mit irgendwie klar. Danke  :-\ :-\

Der gemeinsame Lauf von Rolläden muss ich nochmals verstehen. Ich bin mit der aktuellen Funktion nach den Änderungen von gestern Abend sehr zufrieden.
Ein "short" auf den "Sammeltaster" lässt die Rolläden immer synchron fahren, unabhängig vom letzten Lauf, toll. Die Roläden laufen , bis ich nochmals "short" drücke, oder an einem Endanschlag angekommen, oder der vorher definierten Laufzeit. Ein nächstes "short" dreht die Laufrichtung um.
Drücke ich auf den Sammeltaster "long", so fahren die Rolläden synchr solange , wie ich auf dem Taster bin. Ein  erneutes Drücken dreht die Laufrichtung wieder um und die Rolläden laufen wieder solange, wie ich auf dem Taster bin.

Genau dieselbe Funktionalität (short und long) ist auch auf den restlichen 5 Schaltern mit Einzelrolladenbelegung vorhanden. Eigentlich genau das, was ich will.
Zum Abgleich, was ich aktuell in jedem der Rolläden gesetzt habe:

(1)attr RolladenWohnzimmerSued expert 1_allReg     //     Damit man mehr sieht   
(2)set RolladenWohnzimmerSued regSet intKeyVisib visib    /attr interKeyVisib auf visib setzen
(3)set RolladenWohnzimmerSued  getConfig       // damit alles übernommen wird.
(4)get RolladenWohnzimmerSued regTable        // nachschauen, ob visib angekommen
(5)set RolladenWohnzimmerSued regSet shActionType toggleToCnt self01ans   // ok
(6) set RolladenWohnzimmerSued  getConfig       // damit alles übernommen wird.
(7)set RolladenWohnzimmerSued regSet shActionType toggleToCnt  ES03_RolloAlle// Attribut toggleToCnt setzen
Ich habe verstanden, dass ich (5) rausnehmen kann und soll.
set RolladenWohnzimmerSued regSet shActionType jmpToTarget self01ans. (1) und (2) benötige ich nicht, schadet aber auch nicht, da es nur zusätzliche Ansichten sind, keine Änderung der Funktion.
Aktuell bin ich also auf dem Pferd: (5) wieder zurücksetzen und den Rest lassen. Die Funktion gefällt mir so, wie sie ist. Spricht irgendwas dagegen?


UweUwe

Hallo,
hab jetzt auch noch einen weiteren Taster HM-PB-6-WM55 mit 6 Funk-Rolladenaktoren belegt, die synchron laufen sollen (unabhängig von der Laufhistorie)  und dies auch tun .
Für alle, die in Zukunft eine ähnliche Aufgabe habe, hier eine kurze Zusammenfassung:

Folgende Funktionalität ist gegeben:
Drücken kurz: die Rolläden laufen alle gemeinsam in eine Richtung solange bis man wieder kurz drückt, oder bis der Endanschlag (Zeit oder Mechanik) erreicht ist.
weiteres Drücken kurz: die Rolläden laufen in umgekehrter Richtung sync.

Drücken lang: die Rolläden laufen so lange, wie man drückt synchron,
nochmaliges lang drücken: die Rolläden laufen in umgekehrter Richtung synchr. . solange man drückt.
Mit synchr ist die Laufrichtung gemeint, nicht die Position.

Folgende Einstellungen habe ich für jeden Rolladen verwendet:
attr RolladenWohnzimmerSued expert 1_allReg     //     Damit man mehr sieht   
set RolladenWohnzimmerSued regSet intKeyVisib visib    /attr interKeyVisib auf visib setzen
set RolladenWohnzimmerSued  getConfig       // damit alles übernommen wird.
get RolladenWohnzimmerSued regTable        // nachschauen, ob visib angekommen
set RolladenWohnzimmerSued  getConfig       // damit alles übernommen wird.
set RolladenWohnzimmerSued regSet shActionType toggleToCnt  ES03_RolloAlle// Attribut toggleToCnt setzen

Die ersten 5 Zeilen dienen wahrscheinlich nur der Einstellung der Parameter/Register/etc. Darstellung und haben ansonsten keine Bedeutung für die Funktion. Damit sind diese optional. Ich hab es jedoch nicht getestet.
Die letzte Zeile setzt das Attribut "shActionType" auf "toggleToCnt" für den Taster "ES03_RolloAlle" und muss damit für jeden Taster gesetzt werden, auf den man ebenfalls diese Funktion (synch. gemeinsames Fahren bringen möchte. Für mich ist diese Aktion beendet und ich danke allen Beratern, die mir hier weitergeholfen haben. ;) ;) ;)
Ich hoffe, dass die Funktion dauerhaft bleibt.  8) 8) 8)

Pfriemler

Interne Taster sichtbar machen sollte man schon der Übersichtlichkeit nur, wenn man Einstellungen daran vorgenommen hat.

Allgemein gesprochen: <Rolladenaktor> (ggf. mehrere) und <Maktrotaste> als Einzeltaste zur gesammelten Rolladenfernbedienung:


set <Maktrotaste> peerChan 0 <Rolladenaktor> single // für alle fraglichen Rolladenaktoren


Dann an allen Rolladenaktoren:

set <Rolladenaktor> getConfig       // Register auf den aktuellen Stand bringen
attr <Rolladenaktor> expert 1_allReg     //     Damit man mehr sieht   
set <Rolladenaktor> regSet shActionType toggleToCnt  <Maktrotaste>  // Attribut toggleToCnt setzen für kurze Tastendrücke
set <Rolladenaktor> regSet lgActionType toggleToCnt  <Maktrotaste>  // Attribut toggleToCnt setzen für lange Tastendrücke
set <Rolladenaktor> getConfig       // damit FHEM die geänderten Einstellungen wieder liest (was eigentlich automatisch passiert)
get <Rolladenaktor> regTable // Kontrolle, ob shActionType und lgActionType geändert wurden.


Das sollte dann im Endeffekt reichen. Alles weitere halte ich für entbehrlich.
"Änd're nie in fhem.cfg, denn das tut hier allen weh!" *** Wheezy@Raspi(3), HMWLAN+HMUART, CUL868(SlowRF) für FHT+KS+FS20, miniCUL433, Rademacher DuoFern *** "... kaum macht man es richtig, funktioniert es ..."

martinp876

Klassischer  Fall für Templates.
So unterschiedlich ist das Vorgehen, wenn auch alle erfolgreich:

Ich mache Internet Keys immer an um mehr zu sehen. Bei Rollo sowieso weil der Default nicht nach meinem Geschmack stoppt.
Expert stelle ich auf TemplateOnly. Damit sehe ich die Abstraktion der Funktion.
Register betrachte ich mit regtable .

Das ist für mich übersichtlich. Wenig readings, alle Infos. Das Template ist in diesem Fall übrigens sehr einfach