Neues Modul: Rolladensteuerung

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

Vorheriges Thema - Nächstes Thema

ReggY

Hi Dirk,

hab versucht deine Umsetzung einzubinden, bin aber schon am Erstellen des Readings "homekit_pos" gescheitert.

Daher habe ich mit der neuen Version 1.202 und verschiedenen homebridgeMappings experimentiert. Leider ohne Erfolg.

Aber in der Theorie sollte die Einstellung des Moduls auf "Normal" und das hinzufügen des parameters "invert" an den richtigen Stellen im homebridgeMapping das gleiche machen, wie deine Änderungen im Modul-Quellcode.

Hier mal ein Beispiel, dass aber leider nicht funktioniert. Vielleicht hilft es ja weiter.
clear CurrentPosition=position,invert,minValue=0,maxValue=100 TargetPosition=desired_position,invert,minValue=0,maxValue=100,minStep=10,delay=400,cmd=desired_position PositionState=state,values=/^drive-up/:INCREASING;/^drive-down/:DECREASING;/.*/:STOPPED

Für heute Abend hab ich aber genug Frust aufgebaut und versuche es ein andermal weiter das passende homebridgeMapping zu finden. :(

MfG Patrick

MacHilli

Hallo Patrick
und alle anderen die an einer funktionieren Homekit Anbindung des Rollo-Modules interessiert sind.

Mir ist leider in meinen Erklärungen ein Fehler unterlaufen.
Das Problem ist natürlich, dass man das Modul (44_ROLLO.pm) innerhalb der FHEM Installation ändern muß.
Ich habe FHEM auf einem Raspberry laufen. Über diesen Befehl sudo nano fhem/FHEM/44_ROLLO.pm
habe ich den Texteditor nano mit dem Modul aufgerufen und die Änderungen gemacht.
Alternativ kann man natürlich auch das von mir geänderte Modul über SSH in die FHEM Installation kopieren.
Bei allen Varianten braucht man schon ein wenig Erfahrung, würde aber, im Rahmen meiner Möglichkeiten, dabei helfen.

Wenn ihr das, von mir geänderte Modul, aus meinem letzten oder von diesem Post auf den Rechner speichert und öffnet,
seht Ihr die Änderungen im Vergleich zur Originalversion.

Hier nochmal im Detail:
insgesamt sind es 4 Änderungen.
Die neuen Zeilen sind rot gekennzeichnet, mit jeweils einer Zeile des Original-Moduls über und unter der Änderung.

42   "position" => "0,10,20,30,40,50,60,70,80,90,100",
43   "position_homekit" => "0,10,20,30,40,50,60,70,80,90,100",
44   "reset" => "open,closed",

166    readingsBulkUpdate($hash,"position",$reset_position);
167    readingsBulkUpdate($hash,"homekit_pos",100-$reset_position);
168    readingsEndUpdate($hash,1);

192      $desiredPos = $arg;
193    } elsif ($cmd eq "position_homekit") {
194     $arg = 100-$arg;
195      $cmd = "position-". $arg;
196      $desiredPos = $arg;
197    } else {

421    readingsSingleUpdate($hash,"state",$state,1);
422    readingsSingleUpdate($hash,"position",$newpos,1);
423    readingsSingleUpdate($hash,"homekit_pos",100-$newpos,1);
424    }

Das HomebridgeMapping sollte dann so aussehen:

clear
CurrentPosition=homekit_pos,minValue=0,maxValue=100
TargetPosition=homekit_pos,minValue=0,maxValue=100,minStep=10,delay=400,cmd=position_homekit,
PositionState=state,values=/^drive-up/:INCREASING;/^drive-down/:DECREASING;/.*/:STOPPED


Ebenfalls sollte das GenericDeviceType auf "blind" gesetzt werden.
Der Modultyp sollte nicht auf "Homekit" sondern auf "normal" belassen werden.
Weitere Änderungen sind nicht nötig.

Ich hoffe, dass die Änderungen jetzt deutlicher sichtbar sind und ich damit helfen konnte.
Diese Änderungen funktionieren bei mir nun einwandfrei:
Die Rollos kann ich über FHEM normal steuern und auch die Anbindung an Siri funktioniert nun.
Auch das anfahren von bestimmen Positionen.
Was nicht geht ist: "Öffne Rollo im Wohnzimmer" per Siri.
Obwohl der Befehl: "Schliesse Rollo im Wohnzimmer" funktioniert geht das öffnen bei mir nur mit: "setze Rollo im Wohnzimmer auf 100 Prozent"
Das lässt sich aber verschmerzen.

Viele Grüße
Dirk

condor

#332
Hallo

ich habe die 44_ROLLO_1008.pm Datei, wo musst die hin? Ich habe es nach /opt/fhem/FHEM/ kopiert und FHEM neu gestartet, jedoch kennt er das Modul Rollo nicht.

Beispiel: define WohnzimmerRollo Rollo
Antwort von fhem: Cannot load module Rollo

Wo muss ich fhem sagen, dass er die Datei 44_ROLLO_1008.pm lädt?

Gruß

Änderung:
Ich habe es selber herausgefunden, anscheinend darf der Dateiname nur 44_Rollo.pm sein. Jetzt funktioniert es.

Burny4600

@MacHilli

Habe dein überarbeitetes Modul getestet ohne Homekit.
Es wird bei mir die Version 1.201 angezeigt.
Eigenartig ist das Verhalten bei der Laufzeit die immer anders ist wenn ich zb. die Position 50 anfahre.
Mfg Chris

Raspberry Pi 2/2+/3/3+/4 / Betriebssystem: Bullseye Lite
Schnittstellen: RFXtrx433E, SIGNALduino, MQTT, nanoCUL, HM-MOD-UART, 1-Wire, LAN, ser2net, FHEM2FEHEM
Devices: S.USV, APC-USV, Fronius Datalogger Web 2, FS20, IT, Resol VBUS & DL2, TEK603, WMR200, YouLess, Homematic, MQTT

fhemfreund

Zitat von: MacHilli am 04 Oktober 2016, 23:23:00
Hallo Patrick
und alle anderen die an einer funktionieren Homekit Anbindung des Rollo-Modules interessiert sind.

Mir ist leider in meinen Erklärungen ein Fehler unterlaufen.
Das Problem ist natürlich, dass man das Modul (44_ROLLO.pm) innerhalb der FHEM Installation ändern muß.
Ich habe FHEM auf einem Raspberry laufen. Über diesen Befehl sudo nano fhem/FHEM/44_ROLLO.pm
habe ich den Texteditor nano mit dem Modul aufgerufen und die Änderungen gemacht.
Alternativ kann man natürlich auch das von mir geänderte Modul über SSH in die FHEM Installation kopieren.
Bei allen Varianten braucht man schon ein wenig Erfahrung, würde aber, im Rahmen meiner Möglichkeiten, dabei helfen.

Wenn ihr das, von mir geänderte Modul, aus meinem letzten oder von diesem Post auf den Rechner speichert und öffnet,
seht Ihr die Änderungen im Vergleich zur Originalversion.
...

Viele Grüße
Dirk

Habe mal deine Version + Mapping probiert - sieht bis jetzt schon mal richtig gut aus :-) Allerdings habe ich noch keine Position direkt angefahren, sondern immer nur komplett auf oder zu.

2 Dinge sind mir aufgefallen:

- wenn ich Siri sage: setze (Rollo) Balkon Tür 0% wird der Rollo geschlossen. Bei 100% entsprechend auf gemacht, was für mich invertiert ist. Könnte man das ändern?
- wenn z.B. ein Rollo Kommando zum Hochfahren kommt, und mein Funkrohrmotor das Signal nicht mitbekommt (passiert in ganz seltenen Fällen) dann ist das Rollo Modul der Meinung das Rollo ist schon komplett oben und führt einen weiteren Hochfahr-Befehl nur ganz kurz aus, sodass das Rollo nur stückchenweise hochfährt. Könnte man die Positionslogik dahingehend ändern, dass bei erneutem 100% Hochfahr-Befehl einfach stur nochmal komplett hochgefahren wird? Das gleiche Szenario tritt übrigens auch auf, wenn ich die Rolladenmotoren mit der Original Funkrohrmotor Fernsteuerung (und nicht via FHEM) steuere. Das Rollo Modul bekommt in diesem Falle ja den Status der Rollos nicht mit.

Andreas

ReggY

Hallo zusammen,

ich schaffe es nicht das Device so zum laufen zu bekommen, wie Dirk es beschrieben hat. Ich habe immer das Problem, dass das Reading "position_homekit" nicht gefunden wird.
2016.10.05 20:03:35 2: ERROR: Unknown command position_homekit, choose one of  extern:open,closed,stop stop:noArg half:noArg closed:noArg unblocked:noArg open:noArg position:0,10,20,30,40,50,60,70,80,90,100 reset:open,closed blocked:noArg


Ich hab auch schon versucht das Device nach den Änderungen am Modul neu zu erstellen, leider wird das Reading trotzdem nicht erstellt. Jemand einen Tip?

MfG Patrick

fhemfreund

Zitat von: ReggY am 05 Oktober 2016, 20:13:36
Hallo zusammen,

ich schaffe es nicht das Device so zum laufen zu bekommen, wie Dirk es beschrieben hat. Ich habe immer das Problem, dass das Reading "position_homekit" nicht gefunden wird.
2016.10.05 20:03:35 2: ERROR: Unknown command position_homekit, choose one of  extern:open,closed,stop stop:noArg half:noArg closed:noArg unblocked:noArg open:noArg position:0,10,20,30,40,50,60,70,80,90,100 reset:open,closed blocked:noArg


Ich hab auch schon versucht das Device nach den Änderungen am Modul neu zu erstellen, leider wird das Reading trotzdem nicht erstellt. Jemand einen Tip?

MfG Patrick

Bei mir heisst das Reading homekit_pos (siehe Anhang). Ev. liegt da bei dir der Fehler? Das passt überigens auch zum weiter vorne geposteten HomebridgeMapping Code Schnipsel.

Andreas

ReggY

Hi Andreas,

danke für die schnelle Antwort. Bei mir taucht es momentan nicht auf. Wenn ich das Device jetzt neu anlege. Egal ob mit modifizierter Version von Dirk oder dem original tauchen bei mir überhaupt keine Readings mehr auf.

Habe jetzt ein Backup eingespielt und damit erst mal den alten Status wieder hergestellt, um das Rollo wieder ansteuern zu können.

Habe schon wieder den halben Abend mit dem Rollo und HomeKit ohne Erfolg verbracht und werd es vielleicht morgen weiter versuchen.

MfG Patrick

ReggY

Zitat von: condor am 05 Oktober 2016, 16:03:51
Wo muss ich fhem sagen, dass er die Datei 44_ROLLO_1008.pm lädt?

Hi Condor,

ich hab auch erst die Datei aus dem ersten Post genommen, diese scheint aber etwas älter zu sein.

Ich würde sie löschen und dann das Repo mit
update add https://raw.githubusercontent.com/RettungsTim/fhem-rollo/master/controls_fhemrollo.txt hinzufügen und ein
update
hinterher schieben.

Dann musst du zwar das Device neu anlegen aber hast die aktuelle Version des Moduls, welche auch mit FHEM upzudaten ist.

MfG Patrick

MacHilli

@Reggy

die originalen Readings als auch das Reading "homekit_pos" in meinem modifizierten Modul
werden erst angelegt, wenn das Modul einmal läuft.
Nach der Installation am besten mal den Befehl "reset" und dann "close" oder "open" anwählen.
Dann wird das Modul einmal durchlaufen und die neuen Readings werden gesetzt.

MacHilli

@Burny4600
ZitatHabe dein überarbeitetes Modul getestet ohne Homekit.
Es wird bei mir die Version 1.201 angezeigt.
Eigenartig ist das Verhalten bei der Laufzeit die immer anders ist wenn ich zb. die Position 50 anfahre.

Das Modul welches ich hier im Forum zur Verfügung gestellt habe basiert auf der originalen Version 1.201
der Entwickler Thomas Ramm, Tim Horenkamp und Markus Moises.
Meine Hochachtung nochmals für dieses tolle Modul an die drei.

Meine Änderungen sollen hier nicht als "offiziell überarbeitet" gelten.
Sie sind nur ein Workaround damit das Modul fehlerfrei mit Homekit funktioniert.
Deshalb wird natürlich auch nur die Version 1.201 angezeigt.

Das Problem von unterschiedlichen Laufzeiten habe ich noch nicht bemerkt, könnte aber an einigen Attributen liegen,
die von dem Rollo Modul angelegt werden.
Schau' dir nochmal die Attribute "excessBottom", "excessTop" und "ResetTime" an.
Sie könnten evtl. dafür verantwortlich sein.

@fhemfreund

Zitat2 Dinge sind mir aufgefallen:

- wenn ich Siri sage: setze (Rollo) Balkon Tür 0% wird der Rollo geschlossen. Bei 100% entsprechend auf gemacht, was für mich invertiert ist. Könnte man das ändern?
Das Problem ist bekannt und ich habe keine Ahnung ob es sich überhaupt ändern lässt.
Die Interpretation der Positionen der Rollläden ist bei FHEM und Siri invertiert.
Beispiel: bei FHEM sind die Rollläden 90% geschlossen, in Homekit wird diese Position als 10% geöffnet interpretiert.
Daran muss man sich halt gewöhnen.
Der Befehl "schliesse Rollo" funktioniert in Siri. Zum öffnen muss man allerdings sagen "setze Rollo auf 100%"
Zwischenpositionen funktionieren so auch: "öffne Rollo auf 20%" würde in FHEM "Rollo zu 80% geschlossen" bedeuten.

Zitat- wenn z.B. ein Rollo Kommando zum Hochfahren kommt, und mein Funkrohrmotor das Signal nicht mitbekommt (passiert in ganz seltenen Fällen) dann ist das Rollo Modul der Meinung das Rollo ist schon komplett oben und führt einen weiteren Hochfahr-Befehl nur ganz kurz aus, sodass das Rollo nur stückchenweise hochfährt. Könnte man die Positionslogik dahingehend ändern, dass bei erneutem 100% Hochfahr-Befehl einfach stur nochmal komplett hochgefahren wird? Das gleiche Szenario tritt übrigens auch auf, wenn ich die Rolladenmotoren mit der Original Funkrohrmotor Fernsteuerung (und nicht via FHEM) steuere. Das Rollo Modul bekommt in diesem Falle ja den Status der Rollos nicht mit.

Das Problem ist auch bekannt und eine optimale Lösung gibt es dafür auch nicht.
Das Rollo Modul hat dafür das Attribut "reset Time" um solche Positionverschiebungen auszugleichen.
ResetTime ist die Zeit, die wenn ein Befehl zum öffnen oder schliessen kommt, zu der Laufzeit hinzugerechnet wird.
Der Motor läuft also diese Zeit länger um wirkliche die Position offen oder geschlossen zu haben.
Vielleicht mal mit diesem Attribut experimentieren.
Eine Lösung des Problems wäre nur ein Sensor am Rolladen der die Position abfragen kann und die an FHEM weiterleitet.
Technisch vielleicht möglich aber doch auch mit zusätzlichen Aufwand und Kosten verbunden.

nochmal zur Erklärung an alle:
das Problem des Rollo Modul mit Homekit ist die inverse Interpretation der Befehle und Positionen.
Die Entwickler haben zwar die Option "Homekit" als Typ vorgesehen aber in dieser Betriebsart gibt es,
meiner Meinung und meinen Tests zufolge, noch Probleme mit der Rückgabe der Werte zu und von Homekit.

Deshalb habe ich lange probiert und eine funktionierende Lösung mit Änderungen im Original Modul 44_ROLLO.pm gemacht.
Diese Änderungen habe ich im Post #311 dokumentier und auch ein geändertes Modul als Dateianhang beigefügt.

Für alle die das Modul nur unter FHEM nutzen wollen funktioniert es in der Betriebsart "Normal" super.
Einfach das Original installieren mit diesem Befehl in FHEM:
update all https://raw.githubusercontent.com/RettungsTim/fhem-rollo/master/controls_fhemrollo.txt

Als Änderung habe ich einfach ein neues Reading angelegt das die invertierte Rolloposition für Homekit bereitstellt.
Dieses Reading wird über das HomebridgeMapping an Homekit übergeben und liefert die korrekte Position innerhalb von Homekit.

Damit der Rolladen von Homekit an die richtige Position gefahren wird (nämlich auch invertiert) gibt es ein spezielles Command
"homekit_position".
Im HomebridgeMapping wird dieses Command von Homekit benutzt um FHEM die richtige Anfahrposition mitzuteilen.

Diese Lösung stört die Funktionen von dem originalen Rollo Modul nicht sondern erweitern sie nur.
Wichtig: Für meine Lösung mit dem modifizierten Tool darf der Typ nicht auf "homekit" gestellt werden sondern muss auf "normal" belassen werden.

Über positive Rückmeldungen ob es bei Euch mit Homekit funktioniert, würde ich mich freuen.
Vielleicht können die 3 verantwortlichen Entwickler diese Änderungen auch für das originale Modul übernehmen.

Gruß
Dirk

condor

#341
Hallo,

danke für die Hilfe, ich habe das Modul bei in FHEM mit diesem Befehl hinzugefügt.
update add https://raw.githubusercontent.com/RettungsTim/fhem-rollo/master/controls_fhemrollo.txt

Wie Beschrieben, steht die Steuerung auf Normal und nicht auf HomeKit. Rollos fahren rauf und runter, ich habe die Laufzeit secondsup/secondsdown auf meine Rollladen angepasst. Wenn die Rollos geschlossen sind und ich sie auf 50% fahren lasse, sind sie meine Meinung nach fast exakt mittig. Sind die Rollos jedoch oben und ich lasse diese auf 50% fahren, werden diese zu Dreiviertel zu gefahren. Ich versuche dieses Verhalten mir den Werten secondsDown und excessBottom zu lösen, aber leider bis jetzt ohne Erfolg. Wenn die Rollo beim runterfahren mittig ist, fährt sie nicht weit genug beim schließen herunter.


Rolloschalter:
Ich habe noch Probleme die Schalter(hoch/runter sind gegenseitig mechanisch verriegelt) an das Modul Rolladen anzubinden. Im Beispiel ist es ja so angegeben:
define TestRollo_manuell_auf DOIF ([TestRollo_HOCH] eq "on" and [TestRollo_RUNTER] eq "on" and [TestRollo_dummy] ne "drive-up") \
(set TestRollo_RUNTER off) \
DOELSEIF ([TestRollo_HOCH] eq "on" and [TestRollo_dummy] ne "drive-up" and [TestRollo_dummy:drive-type] ne "system") \
(set TestRollo_dummy extern open) \
DOELSEIF ([TestRollo_HOCH] eq "off" and [TestRollo_dummy] eq "drive-up" and [TestRollo_dummy:drive-type] eq "extern")\
(set TestRollo_dummy extern stop)


Hier erstellt FHEM bei mir jedoch kein Gerät, es gibt auch keine Fehlermeldung, lediglich die Eingabe ohne define steht unter dem Eingabefenster. (Ich habe natürlich die Schalterbezeichnungen auf meine angepasst gehabt.)
Dies ist ja nur für hoch. Fehlt da etwas oder habe ich was falsch verstanden?

Rückmeldung bezüglich Steuerung über Siri:
Diese Befehle funktionieren:
Rollo 50%
Rollo 100% (Rückmeldung offen obwohl die Rollo geschlossen ist)
Rollo 0% (Rückmeldung geschlossen obwohl Rollo jetzt offen ist)
schließe Rollo (geht, jedoch wie weiter oben und in vorherigen Posts genannt, invertiert)

Diese Befehle funktionieren nicht:
Rollo runter   Siri Antwort: Das kann ich leider nicht
Rollo hoch     Siri Antwort: Das geht leider nicht
Rollo auf       Siri Antwort: Die Jalousie steht auf 1%
öffne Rollo    Siri Antwort: Das geht leider nicht


Beim Neustarten von FHEM werden die ROLLO Module nicht erkannt. Beim zweiten Neustart funktioniert es dann bei mir.
sudo /etc/init.d/fhem stop
sudo /etc/init.d/fhem start



An dieser Stelle möchte ich einmal ein ganz großes Lob an alle beteiligten aussprechen. Ich habe vorgestern erst FHEM gefunden und muss sagen das es einfach nur spitze ist und vor allem die große Community. Danke an Euch allen.

Gruß Condor

thegimliboy

Zitat von: condor am 06 Oktober 2016, 08:34:19Sind die Rollos jedoch oben und ich lasse diese auf 50% fahren, werden diese zu Dreiviertel zu gefahren.
Ich hatte die 50% immer als reine Laufzeit von der Gesamtlaufzeit interpretiert, und dann muss natürlich noch die Zeit dazu gerechnet werden, in der die Schlitze "gefüllt" werden.

Wenn ich also auf 80% fahre (egal, ob von oben oder unten) ist das Rollo so weit zu, dass gerade noch die Schlitze frei sind.
Dementsprechend ist das Rollo bei Fhem-Zustand-40% fast genau in der Mitte.

...und ansonsten kämpfe ich auch gerade mit der vermaledeiten 100%-geöffnet Logik bei Homekit. Kopfschüttel.

gruß

thegimliboy

Ich hab es jetzt so gelöst. Erfahrene user werden wohl Fehler finden, aber manchen hilft es hoffentlich.

Einfach mal der ausschnitt meiner fhem.cfg: http://pastebin.com/JAJeZf35

Einfach eure Befehle, Zeiten etc. anpassen, homebridge neu starten und dann sollte es klappen.

Grüsse Gimli

butaluk

Hallo,
ich habe eine Frage.
Haben bestimmt schon mehrere die Funktion bei sich integriert.

Mit einem einfachen Tastendruck fährt das entsprechende Rollo hoch bzw. runter.
Mit einem langen Tastentruck fahren alle Rollläden hoch bzw. runter.