Neues Modul: Rolladensteuerung

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

Vorheriges Thema - Nächstes Thema

ThomasRamm

Dann kann ich das aufnehmen.
Einzig die Tatsache das wir jetzt bei 3 Kanälen gelandet sind macht mir etwas sorgen.

Entweder ich muss die define erweitern das 3 Kanäle angelegt werden können,
oder die Kanäle doch in Attribute auslagern. Dann müssen Personen die nur 1 Kanal zur Steuerung haben eben nur 1 attribut anlegen, die anderen mit mehreren Kanälen entsprechend weitere Attribute.

Abändern müssten alle ihre definitionen auf jeden Fall, denn Kanal 3 als optionalen Parameter hinter den Typ zu setzen wäre zwar rückwärtskompatibel aber extrem unleserlich.
Was meint ihr dazu?

AndiL

Hallo Thomas,

Zitat@AndiL: ehrlich gesagt habe ich deine Verdrahtung noch nicht ganz verstanden.
Die Nachfrage ist natürlich berechtigt.

Im Moment habe ich eine von einem ehrwürdigen 8051 gesteuerte Rolladensteuerung aus meiner "Vor-Fhem-Zeit".
Bedient wird jeder Rolladen durch einen Taster Auf/Stop/Zu in einem 6-Fach Tastsensor von Gira. Alle anderen Tasten sind mit anderen Funktionen belegt deshalb muß meine neue Rolladenlösung unbedingt mit einem Taster zur Ansteuerung auskommen. Dieser Giratasten sind konventionell potentialfrei, also nix mit Bus/Funk etc. und über Kabel mit der zentralen Verteilung verbunden.

Die alte Steuerung würde ich jetzt gerne in Rente schicken und durch was Fhem kompatibles ersetzen. Dein Modul war das worauf ich lange gewartet habe.
Die Relais für die Rohrmotoren würde ich jetzt gerne mit den FS20
http://www.fhemwiki.de/wiki/FS20_SM8_8-Kanal-Schaltmodul
ansteuern weil ich von denen noch 4 Stück rumliegen habe. Ich kann die auch verhöckern und die entsprechenden Homematicteile verwenden. Die sind relativ günstig im Vergleich zu den fertigen HM-Rolladenaktoren.

Die FS20 Dinger haben den entscheidenden Nachteil das sie keine Rückmeldung an Fhem melden wenn sie über den onboard Taster geschaltet wurden. Die Homematicteile machen das.
Mit deinem Modul ist diese fehlende Rückmeldung aber kein Nachteil mehr. Daher haben es diese Dinger eigentlich verdient, daß ich benutze. Zumal sie schon da sind.

Die Gegenstücke zu den Schaltmodulen, die 8-fach FS Sender habe ich auch noch vorrätigt.

Dankenswerter Weise hast Du mir den Wunsch nach dem Toggelbefehl erfüllt, daher habe ich mir jetzt folgendes überlegt.

Der potentialfreie Taster an der Wand geht auf einen Eingang des 8-fach FS20 Senders.
Dieser sendet an Fhem:
Langer Tastendruck-> an Fhem. Fhem an Rollomodul -> Rolladen toggle
Kurzer Tastendruck-> an Fhem. Fhem an Rollomodul -> Rolladen stop
somit ist schon mal nach außen hin alles wie früher  ;D

Tritt jetzt der seltene Fall auf, daß Fhem unpäßlich ist, liegt im Anschlußraum eine FS20 Fernbedienung die direkt mit jedem Kanal der Rolladensteuerung verheiratet ist und so einen Ersatzbetrieb gewährleistet. Alternativ könnte man noch ein Bedienfeld mit Tastern basteln oder direkt auf die FS20 Platinentaster drücken.

Hatte auch schon überlegt die Rolladenrelais mit 1-wire-Schaltaktoren z.B. DS2408 anzusteuern. Das wäre wohl die günstigste Rolladensteuerung die man sich vorstellen kann...


Gruß
Andreas


FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

octek0815

Zitat von: ThomasRamm am 14 Januar 2016, 15:31:21
Dann kann ich das aufnehmen.
Einzig die Tatsache das wir jetzt bei 3 Kanälen gelandet sind macht mir etwas sorgen.

Entweder ich muss die define erweitern das 3 Kanäle angelegt werden können,
oder die Kanäle doch in Attribute auslagern. Dann müssen Personen die nur 1 Kanal zur Steuerung haben eben nur 1 attribut anlegen, die anderen mit mehreren Kanälen entsprechend weitere Attribute.

Abändern müssten alle ihre definitionen auf jeden Fall, denn Kanal 3 als optionalen Parameter hinter den Typ zu setzen wäre zwar rückwärtskompatibel aber extrem unleserlich.
Was meint ihr dazu?


Ich kann das nur schwer beurteilen was besser ist da ich das Modul ja noch nicht im Einsatz habe, hätte aber halt gern die Möglichkeit.

AndiL

ZitatWas meint ihr dazu?

Ich finde das wirklich toll das Thomas für jede Anfrage offen ist. Daumen hoch.

Aber bei der Markiesenanfrage finde ich, das ist doch etwas exotisch in der Ansteuerung um es direkt ins Modul aufzunehmen.
Meiner Meinung nach ist das doch mit Bordmitteln jetzt schon zu lösen.

Der Kollege octek0815 kann sich doch einen Rolladen Typ2 anlegen, der mit je einem Kanal für AUF und AB. Statt realen Schaltaktoren nimmt man(n) zwei Dummys für Kanal-Auf und Kanal-Ab. Mit drei DOIFs die auf die drei Kombinationen der AUF-AB-Dummys triggern generiere ich meine drei on-for-timer Impulse für die realen Schaltaktoren die auf die Fernbedienungsknöpfchen drücken.
Fertig ist die Markiese mit Positionierungsanzeige in Fhem. Vielleicht gibt es sogar Bildchen für eine Markiese statt einem Rolladen.

Müßte doch funktionieren oder?

Gruß
Andi



FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

grappa24

Die extern-Steuerung im Zusammenhang mit den (für Typ3 angepassten) DOIF aus dem Wiki funktioniert perfekt bei meinem Typ3-Rollo (knx).

Anbei mal ein Screenshot von meiner Visualisierung und einem vom ROLLO-Modul korrekt auf halb gesetzten Rollo, es ist einfach nur geil ....
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, ...

AndiL

hallo grappa24,

das sieht in der Tat sehr gut aus.
Wenn ich mit dem auch noch anfange muß ich eins von meinen anderen Hobbys aufgeben.... ;D

Gruß
Andi
FHEM 5.8 auf RasPi 3
***********************************
FB 7390, FS20, HM mit USB-CFG, 1-wire (DS1820 und DS2408), Buderus KM200 mit GB 152, Phillips HUE und Bastelkram....

grappa24

#81
jetzt brauch ich doch noch mal Eure Hilfe, meine manuelle Abwärtskontrolle zieht den Status des Rollos bei externer Steuerung nicht nach (aufwärts funktioniert es), weder beim Runterfahren aus Pos0 noch beim Runterfahren aus einer bel. Position

Hier meine DOIFs:define rollo_manuell_auf DOIF ([meinRollo_Kanal1] eq "off" and [meinRolloModul] ne "drive-up") (set meinRolloModul extern offen) DOELSEIF ([meinRollo_Kanal2] eq "on" and [meinRolloModul] eq "drive-up") (set meinRolloModul extern stop)
define rollo_manuell_ab  DOIF ([meinRollo_Kanal1] eq "on" and [meinRolloModul] ne "drive-down") (set meinRolloModul extern geschlossen) DOELSEIF ([meinRollo_Kanal2] eq "off" and [meinRolloModul] eq "drive-down") (set meinRolloModul extern stop)


Ich hab ein Rollo Typ3 mit folgenden Kanälen:

meinRollo_Kanal1 off -> fährt Rollo hoch
meinRollo_Kanal1 on -> fährt das Rollo runter
meinRollo_Kanal2 on -> Stop beim Hochfahren
meinRollo_Kanal2 off -> Stop beim Runterfahren

Vom "Gefühl" her wird der "set extern geschlossen" Befehl nicht angestoßen (manuell funktioniert dieser Befehl)

Modul Version 1004

Vielleicht hab ich das ja auch falsch verstanden, meine "externen" Befehle kommen von einem EIB-Wandtaster, der genau die vier o.a. Befehle senden kann und die auch von fhem registiert werden ...


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, ...

HoTi

Schau dir mal die DOIF's an. Auf was steht der Status? Das funktionierende wird immer wechseln. Wenn nix passiert steht es auf cmd_2 wenn Manuelles fahren erkannt wird steht es auf cmd_1.

Wechselt das nicht funktionierende DOIF den Status? Wenn nicht liegt es am DOIF.

Hier mal meine DOIF's

Internals:
   DEF        ([EG_wc_RO_mi_SW_02] eq "on" and [Test_Rollo] ne "drive-down") (set Test_Rollo extern geschlossen) DOELSEIF ([EG_wc_RO_mi_SW_02] eq "off" and [Test_Rollo] eq "drive-down") (set Test_Rollo extern stop)
   NAME       rollo_manuell_ab
   NR         859
   NTFY_ORDER 50-rollo_manuell_ab
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-01-14 13:13:39   Device          Test_Rollo
     2016-01-14 13:13:39   cmd_event       EG_wc_RO_mi_SW_02
     2016-01-14 13:13:39   cmd_nr          2
     2016-01-14 13:13:39   e_EG_wc_RO_mi_SW_02_STATE off
     2016-01-14 13:13:39   e_Test_Rollo_STATE position-80
     2016-01-14 13:13:39   state           cmd_2
   Condition:
     0          InternalDoIf('EG_wc_RO_mi_SW_02','STATE','') eq "on" and InternalDoIf('Test_Rollo','STATE','') ne "drive-down"
     1          InternalDoIf('EG_wc_RO_mi_SW_02','STATE','') eq "off" and InternalDoIf('Test_Rollo','STATE','') eq "drive-down"
   Devices:
     0           EG_wc_RO_mi_SW_02 Test_Rollo
     1           EG_wc_RO_mi_SW_02 Test_Rollo
     all         EG_wc_RO_mi_SW_02 Test_Rollo
   Do:
     0:
       0          set Test_Rollo extern geschlossen
     1:
       0          set Test_Rollo extern stop
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Internals:
     0           EG_wc_RO_mi_SW_02:STATE Test_Rollo:STATE
     1           EG_wc_RO_mi_SW_02:STATE Test_Rollo:STATE
     all         EG_wc_RO_mi_SW_02:STATE Test_Rollo:STATE
   Itimer:
   State:
Attributes:
   room       Test


Internals:
   DEF        ([EG_wc_RO_mi_SW_01] eq "on" and [Test_Rollo] ne "drive-up") (set Test_Rollo extern offen) DOELSEIF ([EG_wc_RO_mi_SW_01] eq "off" and [Test_Rollo] eq "drive-up") (set Test_Rollo extern stop)
   NAME       rollo_manuell_auf
   NR         858
   NTFY_ORDER 50-rollo_manuell_auf
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-01-14 13:13:39   Device          Test_Rollo
     2016-01-14 13:04:03   cmd_event       EG_wc_RO_mi_SW_01
     2016-01-14 13:04:03   cmd_nr          2
     2016-01-14 13:11:34   e_EG_wc_RO_mi_SW_01_STATE off
     2016-01-14 13:13:39   e_Test_Rollo_STATE position-80
     2016-01-14 13:04:03   state           cmd_2
   Condition:
     0          InternalDoIf('EG_wc_RO_mi_SW_01','STATE','') eq "on" and InternalDoIf('Test_Rollo','STATE','') ne "drive-up"
     1          InternalDoIf('EG_wc_RO_mi_SW_01','STATE','') eq "off" and InternalDoIf('Test_Rollo','STATE','') eq "drive-up"
   Devices:
     0           EG_wc_RO_mi_SW_01 Test_Rollo
     1           EG_wc_RO_mi_SW_01 Test_Rollo
     all         EG_wc_RO_mi_SW_01 Test_Rollo
   Do:
     0:
       0          set Test_Rollo extern offen
     1:
       0          set Test_Rollo extern stop
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Internals:
     0           EG_wc_RO_mi_SW_01:STATE Test_Rollo:STATE
     1           EG_wc_RO_mi_SW_01:STATE Test_Rollo:STATE
     all         EG_wc_RO_mi_SW_01:STATE Test_Rollo:STATE
   Itimer:
   State:
Attributes:
   room       Test


Viele Grüße aus  Oberbayern
Tim (RettungsTim)

grappa24

#83
Danke Tim ...

folgender Test aus geschlossenem Zustand:

1. manuell hochgefahren
2. manuell stopp bei 70%
2. manuell runtergefahren bis Autostop


Die manuelle Aufwärtskontrolle funktioniert:
Internals:
   CFGFN
   DEF        ([di_rollo_lang] eq "off" and [Rollo_Dieter] ne "drive-up") (set Rollo_Dieter extern offen) DOELSEIF ([di_rollo_kurz] eq "on" and [Rollo_Dieter] eq "drive-up") (set Rollo_Dieter extern stop)
   NAME       Rollo_Dieter_manuell_auf
   NR         477
   NTFY_ORDER 50-Rollo_Dieter_manuell_auf
   STATE      cmd_2
   TYPE       DOIF
   Readings:
     2016-01-15 07:24:22   Device          di_rollo_lang
     2016-01-15 07:23:13   cmd_event       di_rollo_kurz
     2016-01-15 07:23:13   cmd_nr          2
     2016-01-15 07:23:13   e_Rollo_Dieter_STATE position-70
     2016-01-15 07:23:13   e_di_rollo_kurz_STATE on
     2016-01-15 07:24:22   e_di_rollo_lang_STATE on
     2016-01-15 07:23:13   state           cmd_2
   Condition:
     0          InternalDoIf('di_rollo_lang','STATE','') eq "off" and InternalDoIf('Rollo_Dieter','STATE','') ne "drive-up"
     1          InternalDoIf('di_rollo_kurz','STATE','') eq "on" and InternalDoIf('Rollo_Dieter','STATE','') eq "drive-up"
   Devices:
     0           di_rollo_lang Rollo_Dieter
     1           di_rollo_kurz Rollo_Dieter
     all         di_rollo_lang Rollo_Dieter di_rollo_kurz
   Do:
     0:
       0          set Rollo_Dieter extern offen
     1:
       0          set Rollo_Dieter extern stop
     2:
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Internals:
     0           di_rollo_lang:STATE Rollo_Dieter:STATE
     1           di_rollo_kurz:STATE Rollo_Dieter:STATE
     all         di_rollo_lang:STATE Rollo_Dieter:STATE di_rollo_kurz:STATE
   Itimer:
   Readings:
   State:
   Timerfunc:
   Trigger:
Attributes:
   room       Dieter,Rollos


Die manuelle Abwärtskontrolle funktioniert offensichtlich nicht:
Internals:
   CFGFN
   DEF        ([di_rollo_lang] eq "on" and [Rollo_Dieter] ne "drive-down") (set Rollo_Dieter extern geschlossen) DOELSEIF ([di_rollo_kurz] eq "off" and [Rollo_Dieter] eq "drive-down") (set Rollo_Dieter extern stop)
   NAME       Rollo_Dieter_manuell_ab
   NR         929
   NTFY_ORDER 50-Rollo_Dieter_manuell_ab
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-01-15 07:24:22   Device          di_rollo_lang
     2016-01-14 19:44:10   cmd_event       Rollo_Dieter
     2016-01-14 19:44:10   cmd_nr          1
     2016-01-15 07:23:13   e_Rollo_Dieter_STATE position-70
     2016-01-15 07:23:13   e_di_rollo_kurz_STATE on
     2016-01-15 07:24:22   e_di_rollo_lang_STATE on
     2016-01-14 19:44:10   state           cmd_1
   Condition:
     0          InternalDoIf('di_rollo_lang','STATE','') eq "on" and InternalDoIf('Rollo_Dieter','STATE','') ne "drive-down"
     1          InternalDoIf('di_rollo_kurz','STATE','') eq "off" and InternalDoIf('Rollo_Dieter','STATE','') eq "drive-down"
   Devices:
     0           di_rollo_lang Rollo_Dieter
     1           di_rollo_kurz Rollo_Dieter
     all         di_rollo_lang Rollo_Dieter di_rollo_kurz
   Do:
     0:
       0          set Rollo_Dieter extern geschlossen
     1:
       0          set Rollo_Dieter extern stop
     2:
   Helper:
     globalinit 1
     last_timer 0
     sleeptimer -1
   Internals:
     0           di_rollo_lang:STATE Rollo_Dieter:STATE
     1           di_rollo_kurz:STATE Rollo_Dieter:STATE
     all         di_rollo_lang:STATE Rollo_Dieter:STATE di_rollo_kurz:STATE
   Itimer:
   Readings:
   State:
   Timerfunc:
   Trigger:
Attributes:
   room       Dieter,Rollos
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, ...

ThomasRamm

Mir fällt dabei nur auf das RettungsTim ein Problem mit seinem zweiten doif hat und grappa24 ebenfalls das Problem mit seinem zweiten doif hat.
Was passiert wenn ihr den funktionierenden doif entfernt? Funktioniert dann der andere DOIF?
Kenne mich mit DOIF nicht so gut aus, habe selber nur einen einigen eingesetzt.

Gruß
Thomas

grappa24

Zitat von: ThomasRamm am 15 Januar 2016, 09:12:06
Was passiert wenn ihr den funktionierenden doif entfernt? Funktioniert dann der andere DOIF?
Auch dann funktioniert der zweite DOIF nicht

Schaut man sich die Readings des nicht funktionierenden DOIF an, sieht man, dass "cmd_event", "cmd_nr" und "state" seit gestern abend 19:44:10 nicht mehr verändert wurden, die anderen schon:Readings:
     2016-01-15 07:24:22   Device          di_rollo_lang
     2016-01-14 19:44:10   cmd_event       Rollo_Dieter
     2016-01-14 19:44:10   cmd_nr          1
     2016-01-15 07:23:13   e_Rollo_Dieter_STATE position-70
     2016-01-15 07:23:13   e_di_rollo_kurz_STATE on
     2016-01-15 07:24:22   e_di_rollo_lang_STATE on
     2016-01-14 19:44:10   state           cmd_1
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, ...

HoTi

Mein Probelm habe ich gefunden.

Hier die Funktionierenden DOIF's. Nicht ganz sauber aber geht.

define rollo_manuell_auf DOIF ([EG_wc_RO_mi_SW_01] eq "on" and [Test_Rollo] ne "drive-up") (set Test_Rollo extern offen) DOELSEIF ([EG_wc_RO_mi_SW_01] eq "off") (set Test_Rollo extern stop)
attr rollo_manuell_auf room Test

define rollo_manuell_ab DOIF ([EG_wc_RO_mi_SW_02] eq "on" and [Test_Rollo] ne "drive-down") (set Test_Rollo extern geschlossen) DOELSEIF ([EG_wc_RO_mi_SW_02] eq "off") (set Test_Rollo extern stop)
attr rollo_manuell_ab room Test
Viele Grüße aus  Oberbayern
Tim (RettungsTim)

grappa24

#87
Tim, was genau hast Du gegenüber den DOIFs im Wiki geändert, was an der Syntax oder an der Logik, ich sehs grad nicht ...

ah ja, Du hast beim DOELSEIF die zweite Bedingung (AND) weggelassen ...
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, ...

ThomasRamm

im DOELSIF fehlt die Abfrage nach dem Status des Rollo-Modul.

Nachteil dabei ist das der ELSIF bei jedem OFF des Kanal ausgeführt wird, also auch wenn das ganze über das Modul gesteuert wurde und somit im Modul doppelt abgearbeitet wird.

im Wiki steht dort DOELSEIF ([meinRollo_Kanal1] eq "off" and [meinRolloModul] eq "drive-up")
Wenn also mein Kanal1 den Status von "on" auf "off" wechselt,
aber mein RolloModul denkt ich fahre gerade hoch (state=drive-up),
dann ist der stop-Befehl an fhem vorbeigegangen und ich will es dem RolloModul schnell noch mit "extern..." mitteilen.

grappa24

#89
Das Problem sitzt meist vor dem PC  8)   Ich hab ja Typ3 und damit zwei Befehle fürs stoppen, im DOELSEIF wird aber nur der eine abgefragt. Das ist auch die Erklärung, warum bei mir manuell_auf geht und manuell_ab nicht ... werds gleich testen, muss aber jetzt erst mal kochen, man kommt ja zu nix mehr  ;)
Außerdem ist mein Rollomotor vom Testen schon ganz heiß, so was sollte man nicht im Sommer machen ...
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, ...