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

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

Vorheriges Thema - Nächstes Thema

Vaillant VWS

#180
Danke für den hinweis  :'(

Zitat von: KernSani am 08 April 2020, 17:18:48
Du kannst Beiträge auch ändern ;-)

Grundsätzlich sehe ich Schaltzeiten < 1 Sekunde (oder auch 2-3) Sekunden kritisch, da gibt es erfahrungsgemäß häufig nicht beeinflussbare Latenzen (nicht in FHEM, aber auf dem Übertragungsweg), die eine präzise Steuerung quasi unmöglich machen. Hängt natürlich jeweils von den individuellen Gegebenheiten ab, kommt also auf einen Versuch an...

Gesendet von iPhone mit Tapatalk

Ja, habe ich schon irgendwo gelesen, war eine Anbindung über WLAN mit geflashten Sonoffs. Ich habe über I2C-Bus drahtgebundene Relais am werkeln. Da gehen auch kurze Impulse mit 'set drive up 0.001'  :). Ist bestimmt länger als 1 mS, klar, aber wirklich nur ganz kurz, das geht schon.


rl_commandStopDown          set PCF8574 Port5 off;sleep 1;set RolloOst drive up 1


Diese Befehlsfolge funktioniert z.B. auch zuverlässig zu waagrecht stellen nach dem runterfahren, aber halt auch dann, wenn eine völlige Verschattung im Hochsommer gewünscht ist!

alpinestars

Erst einmal besten Dank für das Modul!

Ich habe folgenden Aufbau und benötige bitte einmal Eure Hilfe:
Ich habe eine "FHEM-Zentrale" auf einem Raspi4 mit MQTT2_SERVER etc. und einen "Remote-FHEM" auf Raspi Pi Zero laufen. Dieser Raspi Pi Zero steuert ein 16-fach Relais, was im Endeffekt alte Funkschalter der 5 Rollläden im Erdgeschoß steuert. Auf dem Raspi Pi Zero gibt es nun die folgenden Devices, funktioniert auch wirklich prima.

define Shutter2_up RPI_GPIO 12
attr Shutter2_up direction output
define Shutter2_stop RPI_GPIO 13
attr Shutter2_stop direction output
define Shutter2_down RPI_GPIO 15
attr Shutter2_down direction output

define TestRollo ROLLO
attr TestRollo cmdIcon open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
attr TestRollo 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 TestRollo rl_autoStop 0
attr TestRollo rl_commandDown set Shutter2_down on-for-timer 0.5
attr TestRollo rl_commandStop set Shutter2_stop on-for-timer 0.5
attr TestRollo rl_commandUp set Shutter2_up on-for-timer 0.5
attr TestRollo rl_excessBottom 2
attr TestRollo rl_excessTop 1
attr TestRollo rl_forceDrive 1
attr TestRollo rl_resetTime 2
attr TestRollo rl_secondsDown 22
attr TestRollo rl_secondsUp 22
attr TestRollo rl_switchTime 1
attr TestRollo rl_type normal
attr TestRollo webCmd open:closed:half:stop:pct


Jetzt möchte ich natürlich gern die Rollladen über den Raspi4 ("FHEM-Zentrale") steuern, hierüber werden auch weitere Rollladen via Shelly2.5 und MQTT angesprochen. Jetzt bin ich allerdings ein wenig "lost", wie ich eine sinnvolle Verbindung zwischen meinen beiden Raspis hinbekomme  :) Auf dem Raspi Pi Zero laufen bei Bedarf ein MQTTBroker oder ein MQTT2Client, diese sind auch zum MQTT2_SERVER verbunden. Nutze ich nun sinnvollerweise eine MQTT_BRIDGE oder MQTT2_DEVICE?

Vielen lieben Dank!

Frank_Huber

Module dazu:

RFHEM
FHEM2FHEM
FHEMSYNC (gerade in Entwicklung)

Ich habe bei mir zwischen 4 FHEM Instanzen seit Jahren RFHEM laufen.

Gesendet von meinem S68Pro mit Tapatalk


KernSani

Frank war schneller ;) Ist eigentlich keine ROLLO-Frage sondern ein generelles Thema zu dem du unter den genannten Stichworten einiges im Forum finden wirst.


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

GU!DO

Hallo zusammen,

ich habe ein merkwürdiges Phenomen mit diesem tollen Modul und hoffe Ihr könnt mir helfen.

Meine Raffstores werden durch 2 Taster gesteuert. ("Up" und "Down")
Eine Fahrt kann mit beiden Tastern gestoppt werden. D.h. Wenn das Raffstore z.B. nach oben fährt, kann ich sowohl mit dem "UP" als auch mit dem "DOWN" Taster stoppen.

Damit der Status im Rollo Modul geändert wird wenn der Raffstore manuell gefahren wird, habe ich, in Anlehung an das Wiki, folgendes DOIF erstellt:
(HCANDeviceRolladen51 ist das Device das mit der Hardware kommuniziert. Raffstore51 mein Rollo Device)

define doif_Raffstore51 DOIF
([HCANDeviceRolladen51:"DOWN"] and [?Raffstore51] ne "drive-down") (set Raffstore51 extern closed) DOELSEIF
([HCANDeviceRolladen51:"DOWN"] and [?Raffstore51] =~ "drive") (set Raffstore51 extern stop) DOELSEIF
([HCANDeviceRolladen51:"UP"] and [?Raffstore51] ne "drive-up") (set Raffstore51 extern open) DOELSEIF
([HCANDeviceRolladen51:"UP"] and [?Raffstore51] =~ "drive") (set Raffstore51 extern stop)


Wenn ich eine Fahrt nach oben mit dem "UP"-Taster stoppe ist alles ok.
Eine Fahrt nach unten mit dem "DOWN" Taster gestoppt: ebenfalls alles gut.

Phenomenal wird es wenn ich eine Fahrt mit dem "falschen" Taster stoppe. Also z.B. Fahrt nach unten und Taster "UP".
Dann passiert folgendes:
Nehmen wir an der Raffstore steht auf Positon 50.
Ich drücke "DOWN". Das Raffstore fährt nach unten. Nun Stoppe mit "UP". Ergebnis (ja nach Laufzeit) z.B. State = 35 (eigentlich hätte der State > 50 sein müssen)
Gehe ich nun nochmals genau so vor, (Taster "DOWN" => Raffstore fährt nach unten => Taster "UP"): Dieses mal wurde in die richtige "Richtung" gezählt. State ändert sich (je nach Laufzeit) von 35 auf z.B. 57
Wir wiederholen das Spiel (Taster "DOWN" => Raffstore fährt nach unten => Taster "UP"): Nun zählt er wieder rückwärts. Also State, obwohl der Raffstore nach unten gefahren ist z.B. auf 38.

Das ganze wechselt dann bei jedem neuen Versuch: Der Raffstore fährt grundstätzlich nach unten. Die Fahrzeit wird jedoch abwechseln addiert bzw. subtrahiert.

Hier mal ein List meine Rollo Devices (die ASC Attribute habe ich heraus gelöscht!)

Internals:
   FUUID      5ea85953-f33f-8741-46fe-de58a7cd866530f8
   NAME       Raffstore51
   NR         175
   STATE      half
   TYPE       ROLLO
   stoptime   1588183116
   READINGS:
     2020-04-29 19:58:07   command         stop
     2020-04-29 19:58:07   desired_pct     51.7857142857143
     2020-04-29 19:58:07   drive-type      na
     2020-04-29 19:58:07   last_drive      drive-up
     2020-04-29 19:58:36   pct             51.7857142857143
     2020-04-29 19:58:36   state           half
Attributes:
   cmdIcon    open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
   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
   group      01-Kochen
   rl_autoStop 1
   rl_commandDown set HCANDeviceRolladen51 DOWN
   rl_commandStopDown set HCANDeviceRolladen51 DOWN
   rl_commandStopUp set HCANDeviceRolladen51 UP
   rl_commandUp set HCANDeviceRolladen51 UP
   rl_excessBottom 0
   rl_excessTop 0
   rl_resetTime 2
   rl_secondsDown 56
   rl_secondsUp 56
   rl_switchTime 0
   rl_type    normal
   room       HCAN


Ich hoffe Ihr könnt wir helfen.

Vielen Dank schon mal

Guido

KernSani

Ok, kurze Analyse was passiert im DOIF:

ZitatNehmen wir an der Raffstore steht auf Positon 50.
Ich drücke "DOWN". Das Raffstore fährt nach unten. Nun Stoppe mit "UP".
CMD_3 wird getriggert, weil "UP" und "drive-down" ne "drive-up". "extern open" wird gesetzt, d.h. ROLLO denkt er fährt nach oben, ich frage mich nur, warum er nicht bis 0 fährt...
ZitatGehe ich nun nochmals genau so vor, (Taster "DOWN" => Raffstore fährt nach unten => Taster "UP")
Das DOIF steht in CMD_3, wenn ich mich recht erinnere tickt DOIF so, dass es dann (es sei denn do always ist gesetzt) nicht nochmal CMD_3 auslöst, aber
CMD_4 wird getriggert weil "UP" und  "drive-down" =~ "drive", d.h. diesmal wird korrekt extern stop ausgeführt.
Problem ist also das DOIF. Du müsstest im ersten und dritten Zweig auf !~ "drive" abfragen, also immer wenn er gerade nicht fährt (egal in welche Richtung) wird extern closed bzw. open ausgeführt.
RasPi: RFXTRX, HM, zigbee2mqtt, mySensors, JeeLink, miLight, squeezbox, Alexa, Siri, ...

GU!DO

#186
Danke für die schnelle Antwort zu so später Zeit.  :D

Da ich Deinen Gedanken um diese Zeit nicht mehr folgen konnte, habe das so zu sagen blind, wie folgt, geändert:

define doif_Raffstore51 DOIF
([HCANDeviceRolladen51:"DOWN"] and [?Raffstore51] !~ "drive") (set Raffstore51 extern closed) DOELSEIF
([HCANDeviceRolladen51:"DOWN"] and [?Raffstore51] =~ "drive") (set Raffstore51 extern stop) DOELSEIF
([HCANDeviceRolladen51:"UP"] and [?Raffstore51] !~ "drive") (set Raffstore51 extern open) DOELSEIF
([HCANDeviceRolladen51:"UP"] and [?Raffstore51] =~ "drive") (set Raffstore51 extern stop)


Ergebnis:
Wenn ich Down drücke und das Raffstore herunter fährt und ich dann Up drücke fährt er das Rollo Device direkt herauf, hält also nicht an.
Hingegen kann ich eine Abwärtsfahrt mittel Taster Down stoppen, benötige danach aber zum erneuten Starten in Richtung Up 2x den Up Taster.  ???

Ich glaube ich denke darüber nach wenn ich ausgeschlafen bin...

Vielen Dank schonmal!

KernSani

Moin,
Beobachte am Besten mal im Eventmonitor, was da getriggert wird und versuche nach zu vollziehen in welche DOIF Zweige er läuft.


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

GU!DO

Also so gehts:

define doif_Raffstore51 DOIF
([HCANDeviceRolladen51:"DOWN"] and [?Raffstore51] ne "drive-down" and [?Raffstore51] ne "drive-up") (set Raffstore51 extern closed) DOELSEIF
([HCANDeviceRolladen51:"DOWN"] and [?Raffstore51] =~ "drive") (set Raffstore51 extern stop) DOELSEIF 
([HCANDeviceRolladen51:"UP"] and [?Raffstore51] ne "drive-down" and [?Raffstore51] ne "drive-up") (set Raffstore51 extern open) DOELSEIF
([HCANDeviceRolladen51:"UP"] and [?Raffstore51] =~ "drive") (set Raffstore51 extern stop)


Dann scheinen sich

([?Raffstore51] ne "drive-down" and [?Raffstore51] ne "drive-up")

und

[?Raffstore51] !~ "drive"

zu unterscheiden, obwohl es keinen anderen "drive"-Zustand als down und up gibt?!?

GU!DO

Zitat von: KernSani am 30 April 2020, 07:38:04
Moin,
Beobachte am Besten mal im Eventmonitor, was da getriggert wird und versuche nach zu vollziehen in welche DOIF Zweige er läuft.


Kurz, weil mobil....

Sorry, habe Deine Mail erst grad gesehen. Ich habe die Zustände nicht getestet. Er muß aber, nachdem ich DOWN gedrückt und cmd1 gegriffen hat nach dem Drücken von UP in cmd3 gesprungen sein. Das physische Raffstore hat dann angehalten, das Rollo Modul fuhr jedoch munter nach oben.

sparkiie

Mal eine kurze Frage zum Modul.

Beim Fhem update wird auch das Rollo Modul immer mal wieder aktualisiert. Sehe ich irgendwo die Änderungen, also eine Art Changelog?

KernSani

Zitat von: sparkiie am 30 April 2020, 08:58:24
Mal eine kurze Frage zum Modul.

Beim Fhem update wird auch das Rollo Modul immer mal wieder aktualisiert. Sehe ich irgendwo die Änderungen, also eine Art Changelog?

Tatsächlich gab es an ROLLO schon recht lange keine Änderungen mehr. Wenn es Änderungen gibt, kann man die der SVN History entnehmen und im Quelltext des Moduls steht oben ebenfalls ein changelog:

Revision: 18436
Author: KernSani
Date: Sonntag, 27. Januar 2019 21:46:04
Message:
44_ROLLO.pm: Fixed an issue with external driving (when already at position)
----
Modified : /trunk/fhem/FHEM/44_ROLLO.pm

Revision: 18352
Author: KernSani
Date: Sonntag, 20. Januar 2019 16:24:51
Message:
44_ROLLO.pm: Hint in Commandref regarding position->pct
----
Modified : /trunk/fhem/FHEM/44_ROLLO.pm

Revision: 18350
Author: KernSani
Date: Sonntag, 20. Januar 2019 11:13:22
Message:
44_ROLLO.pm: Loglevel from 3 to 5 for few messages,Rollo should only drive 10 steps in "force" mode for up/down
----
Modified : /trunk/fhem/FHEM/44_ROLLO.pm

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

sparkiie

Okay, danke für die Info.

Ich dachte diese Zeile bedeutet, dass es ein Update gab?
2020.05.01 06:40:21 1 : UPD FHEM/44_ROLLO.pm

GU!DO

Hallo,

ich möchte nun eine Beschattungsautomation in Betrieb nehmen und habe noch ein Problem und eine Frage:

Vielleicht zuerst zu meinem Problem:

Meine Raffstores bediene ich über 2 Taster UP und DOWN. Die zugehörigen Events lauten: set HCANDeviceRolladen53 DOWN und set HCANDeviceRolladen53 UP
Wenn ich nun während einer Fahrt UP bzw. DOWN sende, wird die Fahrt gestoppt egal ob sie grad aufwärts oder abwärts geht. 

Das Device habe ich daher wie folgt konfiguriert:


rl_commandDown set HCANDeviceRolladen53 DOWN
rl_commandStopDown set HCANDeviceRolladen53 DOWN
rl_commandStopUp set HCANDeviceRolladen53 UP
rl_commandUp set HCANDeviceRolladen53 UP


Ich habe die Icons im Webcmd in Standart Konfiguration:
Wenn ich über das 1. Icon starte und stoppe läuft alles wie erwartet. Ich hab zwar noch nicht herausbekommen wann er von Down nach Up bzw. zurück wechselt, aber das passt schon.
Wenn ich über das 3. Icon nach unten fahre und damit auch wieder stoppe, hält mein Raffstore an, das Rollo Device läuft aber weiter nach unten.
Ebenso wenn ich über das 2. Icon nach oben fahre und über das 2. Icon stoppe: Raffstore hält an, Rollo Device fährt weiter nun aber natürlich nach oben.
Tausche ich Start und Stop, fahre also über das 3. Icon herunter und stoppe über das 2. (UP) Icon, hält der Raffstore an, das Rollo Device ändert die Richtung und fährt nach oben.

Anbei mal ein List von einem Testdevice:

Internals:
   CFGFN     
   FUUID      5eb79632-f33f-8741-abb4-797f460e2113bc54
   NAME       Raffstore53
   NR         1128
   STATE      open
   TYPE       ROLLO
   stoptime   1589394376
   READINGS:
     2020-05-13 20:26:08   command         open
     2020-05-13 20:26:08   desired_pct     0
     2020-05-13 20:26:08   drive-type      modul
     2020-05-13 20:26:08   last_drive      drive-up
     2020-05-13 20:26:16   pct             0
     2020-05-13 20:26:16   state           open
Attributes:
   cmdIcon    open:fts_shutter_up closed:fts_shutter_down stop:fts_shutter_manual half:fts_shutter_50
   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
   group      01-Kochen
   rl_autoStop 1
   rl_commandDown set HCANDeviceRolladen53 DOWN
   rl_commandStopDown set HCANDeviceRolladen53 DOWN
   rl_commandStopUp set HCANDeviceRolladen53 UP
   rl_commandUp set HCANDeviceRolladen53 UP
   rl_excessBottom 2
   rl_excessTop 4
   rl_resetTime 2
   rl_secondsDown 56
   rl_secondsUp 56
   rl_switchTime 0
   rl_type    normal
   room       HCAN
   webCmd     open:closed:half:stop:pct


Nun noch zu meiner Frage:

Ich habe meine Raffstores nach Räumen nummeriert. So haben z.B. die alle Raffstores in der Küche die Gruppen-ID 10. Dann werden sie gemeinsam gefahren. Gleichzeitig haben Sie aber noch eine Einzel-ID. Bei 11 bzw. 12 nur das jeweils zugehörige. Im Esszimmer habe ich 6 Raffstores: Also 20 für die Gruppe und 21-26 für die einzelnen Raffstores.

Ich habe für die einzelnen Raffstores jeweils ein Rollo Device angelegt. Das funktioniert auch soweit wenn ich einzelne Raffstores fahre sowohl über das Rollo Device als auch von Extern (Taster).
Nun möchte ich jedoch auch gerne die Gruppe fahren. Wenn ich jedoch z.B. 20 sende, reagierten die Rollo Device 21-26 natürlich nicht.

Was wäre die eleganteste Möglichkeit Gruppen zu definieren? Vielleicht ein DoIF?
Über die 3 Start / Stop Befehle komme ich im Rollo-Device leider nicht weiter, da ich ja bis zu 6 Raffstores in einer Gruppe habe.

Ich hoffe auf Eure Hilfe.

Vielen Dank schonmal

Guido

KernSani

Kannst du nicht eine STRUCTURE für die gemeinsam zu schaltenden ROLLO Devices anlegen?


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