Hauptmenü

Rollo mit Homebridge

Begonnen von Bumbum, 17 Oktober 2016, 15:13:34

Vorheriges Thema - Nächstes Thema

dennis_n

Hallo,

ich hole mal diesen uralten Thread hoch, weil ich nicht extra ein neues Thema aufmachen wollte. Irgendwie gehört mine Frage hier dazu.

Ich bin gerade dabei meine Fibaro Roller Shutter2 in Homekit einzubinden. Das ganze dank dieses Threads recht erfolgreich.
Allerdings habe ich das Problem, dass das Reading position im geschlossenen Zustand nicht immer 0 ist. Manchmal steht es auf 1 oder 3. Das hat dann zur Folge, dass in Homekit der Rolladen nicht als ZU angezeigt wird, sondern eben 3% geöffnet.

Wie kann ich das abfangen, dass ein kleiner Toleranzbereich bei geschlossen und geöffnet als AUF oder ZU angezeigt wird?

Hier mal das List von dem Device

Internals:
   DEF        c1aa9dda 3
   FUUID      5ddb9358-f33f-8212-63e5-6ba4a2ec1dc6ec59
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     519
   NAME       ZWave_SWITCH_MULTILEVEL_3
   NR         25
   STATE      0
   TYPE       ZWave
   ZWDongle_0_MSGCNT 519
   ZWDongle_0_RAWMSG 0004000306310504220000
   ZWDongle_0_TIME 2022-11-27 17:21:22
   ZWaveSubDevice no
   cmdsPending 0
   eventCount 563
   homeId     c1aa9dda
   isWakeUp   
   lastMsgSent 1669566080.02232
   nodeIdHex  03
   READINGS:
     2019-10-28 12:31:25   CMD             ZW_APPLICATION_UPDATE
     2022-11-19 17:38:42   IODev           ZWDongle_0
     2020-10-19 13:20:00   UNKNOWN         multilevel type  84 fl: 22 arg: 0000
     2022-10-07 16:33:36   UNKNOWN_17      3.23 UNKNOWN
     2022-10-28 06:33:02   UNKNOWN_9       3.25 UNKNOWN
     2022-09-20 20:06:34   UNPARSED        SWITCH_MULTILEVEL 03260100
     2018-04-24 19:35:59   alarm           HomeSecurity: Intrusion - Unknown Location, arg 0000
     2022-11-27 16:27:35   assocGroup_1    Max 16 Nodes ZWDongle_0
     2022-11-27 16:27:35   assocGroup_2    Max 16 Nodes
     2022-11-27 16:27:35   assocGroup_3    Max 1 Nodes ZWDongle_0
     2022-11-27 16:27:35   assocGroups     3
     2022-11-27 16:27:39   configEnergyReports 10
     2022-11-27 16:27:39   configInRollerBlindModeOrVenetianBlind17 10
     2022-11-27 16:27:39   configInVenetianBlindModeTheParameter12 150
     2022-11-27 16:27:44   configManagingLamellasInResponseTo35 SetLamellasToTheirExtreme1
     2022-11-27 16:27:44   configMotorOperationDetection 10
     2022-11-27 16:27:44   configMotorOperationTime 240
     2022-11-27 16:27:45   configPeriodicPowerOrEnergyReports 3600
     2022-11-27 16:27:45   configPowerReports 10
     2022-11-27 16:27:50   configReportsType BlindPositionReportsSentToThe0
     2022-11-27 16:27:50   configResponseToFloodingAlarm NoReaction
     2022-11-27 16:27:50   configResponseToGeneralAlarm CloseBlind
     2022-11-27 16:27:50   configResponseToSmokeCOOrCO2Alarm OpenBlind
     2022-11-27 16:27:50   configResponseToTemperatureAlarm OpenBlind
     2022-11-27 16:27:50   configRollerShutterOperatingModes 1RollerBlindModeWithPositioning
     2022-11-27 16:27:50   configScenesAssociationsActivation AssociationsActivation
     2022-11-27 16:27:50   configSelfMeasurement SelfMeasurementInactive
     2022-11-27 16:27:50   configSetLamellasBackToPrevious13 1LamellasReturnToPreviouslySet1
     2022-11-27 16:27:50   configSwitchType ToggleSwitches
     2022-11-27 16:32:11   energy          3.29 kWh
     2018-03-30 01:16:59   model           FIBARO System FGRM222 Roller Shutter Controller 2
     2018-03-30 01:16:59   modelConfig     fibaro/fgrm222.xml
     2018-03-30 01:16:59   modelId         010f-0301-1001
     2022-11-27 17:21:22   position        0
     2022-11-27 17:21:22   power           0.0 W
     2022-11-27 16:55:41   reportedState   dim 99
     2022-11-27 17:21:20   state           dim 0
     2022-11-27 17:21:20   timeToAck       0.071
     2022-11-27 17:21:20   transmit        OK
Attributes:
   IODev      ZWDongle_0
   alexaName  Rolladen Büro rechts
   alias      Buero_rechts
   classes    MANUFACTURER_SPECIFIC VERSION CONFIGURATION ASSOCIATION SWITCH_BINARY POWERLEVEL METER SENSOR_MULTILEVEL FIRMWARE_UPDATE_MD SWITCH_BINARY MANUFACTURER_PROPRIETARY PROTECTION MARK METER SENSOR_MULTILEVEL MANUFACTURER_PROPRIETARY SCENE_ACTIVATION SWITCH_MULTILEVEL SWITCH_BINARY
   devStateIcon up:fts_shutter_20 down:fts_shutter_90
   eventMap   on:up off:down dim.[89]\d:up dim.[1-9]:down dim.*:up
   genericDeviceType blind
   homebridgeMapping clear CurrentPosition=position,minValue=0,maxValue=99 TargetPosition=dim::position,minValue=0,maxValue=99,minStep=1
   room       Alexa,Homekit,ZWave
   stateFormat position
   userattr   room_map structexclude
   vclasses   ASSOCIATION:2 CONFIGURATION:1 FIRMWARE_UPDATE_MD:1 MANUFACTURER_PROPRIETARY:1 MANUFACTURER_SPECIFIC:1 METER:2 POWERLEVEL:1 PROTECTION:2 SCENE_ACTIVATION:1 SENSOR_MULTILEVEL:2 SWITCH_BINARY:1 SWITCH_MULTILEVEL:3 VERSION:1
   webCmd     dim:up:down


Danke

Dennis

dennis_n

Keiner einen Tipp für mich?

Ich will quasi festlegen, dass wenn das Reading position einen Wert zwischen 0 und 5 hat, Homekit dies als geschlossen sieht und wenn es einen Wert zwischen 90 und 100 hat, der Rolladen als geöffnet gesehen wird.

Alle anderen Werte gelten als geöffnet.

Wie im list zu sehen, hatte ich das mal in meiner eventMap. Aber wie bringe ich das der Homebridge bei?

eventMap   on:up off:down dim.[89]\d:up dim.[1-9]:down dim.*:up


Miami

Deine eventMap nutzt (meiner Meinung nach) hier nichts, weil du up und down definierst, dim aber eine Zahl ist.
Ich habe zwar keine Ahnung, ob so was gehen könnte, aber versuche mal: eventMap dim.[89]\d:100 dim.[1-9]:down dim.*:0

Hast Du mal versucht den die CurrentPosition einzuschränken?:
Code (homebridgeMapping ) Auswählen
CurrentPosition=position,minValue=5,maxValue=95
Du könntest einen Dummy zwischen deinem Rollo und Homebridge einbauen, damit Du die Werte manipulieren kannst.

dennis_n

Hat leider beides nicht funktioniert.

Das muss doch irgendwie abzufangen sein.  :-\

Gruss
Dennis

Beta-User

Habe grade nur was für den Vorgänger (?) im venetian mode im Angebot, hilft vielleicht weiter:
attr Jalousie_Mitte userReadings positionSlat:power..0.0.W {ReadingsVal($name,'position',0) =~ m,Slat.([0-9]+),?$1:undef},
dim:power..0.0.W {my $pos = ReadingsVal($name,'state',0) =~ m,dim, ? ReadingsNum($name,'state',0) : ReadingsNum($name,'dim',0); my $pos1 = ReadingsNum($name,'position',0); $pos = $pos1 if abs($pos - $pos1) > 2 || $pos < 3 && ReadingsNum($name,'positionSlat',0) > 2; if ($pos < 3) { $pos = 1 if ReadingsNum($name,'positionSlat',0) > 2; $pos = 2 if ReadingsNum($name,'positionSlat',0) > 45; }; return $pos }


Die Idee dahinter ist, gewisse "Fehler" in der Endberechnung der Position zu ignorieren bzw. ggf. zu begradigen, wenn wegen der Beschattung zwar die Endposition angefahren wird, aber die Lamellen dann gekippt werden.
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

dennis_n

Puuuh, ich füchte das hilft mir leider nicht viel.
Da blicke ich keider nicht so ganz durch.

Also ich verstehe im Ansatz was damit gemacht wird, aber ich bekomme das nicht auf meinen Fall übertragen. Sorry  :-\

Gruss
Dennis

Miami

Zitat von: dennis_n am 28 November 2022, 16:07:43
Hat leider beides nicht funktioniert.

Hast Du auch jeweils die Homebridge neu gestartet?

Ich hatte übrigens drei Lösungsansätze vorgeschlagen ...

dennis_n

Homebridge wurde immer neu gestartet,

Deine dritte Lösung habe ich noch nicht probiert, da ich nicht genau weiß wie ich das mit einem Dummy machen soll.
Kannst Du mir da noch helfen?

Danke

dennis_n

Also ich bin ein kleines Stück weiter.
Aber ich komme einfach mit der Syntax nicht klar.

In meiner eventMap habe ich jetzt stehen:
on:up off:down [89]\d:up [1-9]:down

Damit zeigt er mir ab 89% öffnung an, dass der Rolladen geöffnet ist und bis 9% dass er geschlossen ist. Dies schreibt er auch sauber in das Reading position
Aber bei allen Werten  dazwischen, steht im Reading position immer nur down und die zweite Zahl des eigentlichen Wertes.
Also wenn der Rolladen 49% geöffnet ist, steht dann im Reading position: down9

Wer kann mir bei der richtigen Syntax helfen?

Miami

Zitat von: dennis_n am 29 November 2022, 21:31:49
Deine dritte Lösung habe ich noch nicht probiert, da ich nicht genau weiß wie ich das mit einem Dummy machen soll.
Der Dummy dient dazu einen "Proxy" deines Rolladens für Homebridge anzulegen. Dessen Werte kannst Du dann mit set oder setreading beliebig in FHEM verändern und sehen, was Homebridge damit macht.
Du kannst z.B. mit einem Notify oder DoIf die Istposition deines Rollladens manipulieren und dann in actualPosition kopieren (siehe unten).

Kopiere das in die fhem.cfg:
define test_rollo2 dummy
attr test_rollo2 devStateIcon 0:fts_shutter_100    100:fts_window_2w \
1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 \
3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 \
5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 \
7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 \
9\d.*:fts_shutter_10 \d.*:fts_shutter_90 \
.*:fts_shutter_manual@gray
attr test_rollo2 genericDeviceType blind
attr test_rollo2 room Test,Alexa,Homekit,ZWave
attr test_rollo2 setList state
attr test_rollo2 stateFormat pct
attr test_rollo2 userReadings pct {ReadingsNum($NAME, "state", "0")},\
actual_pct { \
   (ReadingsNum($NAME,"state",0)<10)?0: \
   (ReadingsNum($NAME,"state",0)>90)?100: \
   ReadingsNum($NAME,"state",0)\
   }
attr test_rollo2 webCmd state
attr test_rollo2 widgetOverride state:slider,0,5,100

Nachdem Du die Homebridge neu starten hast, hast Du in eine neue neue Jalousie/Rollladen.

Du kannst ja dann die Berechnung der actual_pct deinen Bedürfnissen entsprechend anpassen, z.B. den Abschnittt für actualPosition im Userreading:

attr test_rollo2 userReadings pct {ReadingsNum($NAME, "state", "0")},\
actual_pct { \
   (ReadingsNum("ZWave_SWITCH_MULTILEVEL_3","position",0)<10)?0: \
   (ReadingsNum("ZWave_SWITCH_MULTILEVEL_3","position",0)>90)?100: \
   ReadingsNum("ZWave_SWITCH_MULTILEVEL_3","position",0)\
   }


Ich verwende Apples Homekit. Da kann man mit dem Attribut homebridgeMapping die Zuordnung von FHEM zu Homekit Variablen definieren. Wie das bei Alexa geht, weiß ich nicht. Daher habe ich pct verwendet, das mappt Homebridge (bei mir) automatisch (Das kann man sehen, wenn man den Diagnosemodus in Homebridge aktiviert, neu startet und dann das Log durchforstet.)

Und für alle anderen Apple-User hier noch der Dummy für die Verwendung mit Homekit:
define test_rollo dummy
attr test_rollo devStateIcon 0:fts_shutter_100    100:fts_window_2w \
1\d.*:fts_shutter_90 2\d.*:fts_shutter_80 \
3\d.*:fts_shutter_70 4\d.*:fts_shutter_60 \
5\d.*:fts_shutter_50 6\d.*:fts_shutter_40 \
7\d.*:fts_shutter_30 8\d.*:fts_shutter_20 \
9\d.*:fts_shutter_10 \d.*:fts_shutter_90 \
.*:fts_shutter_manual@gray
attr test_rollo genericDeviceType blind
attr test_rollo homebridgeMapping TargetPosition=targetPosition::targetPosition\
CurrentPosition=actualPosition\
PositionState=moving,values=DECREASING:0;;INCREASING:1;;STOPPED:2
attr test_rollo room Homekit,Test
attr test_rollo setList state:slider,0,5,100
attr test_rollo stateFormat actualPosition
attr test_rollo userReadings targetPosition {ReadingsNum($NAME, "state", "0")},\
actualPosition {ReadingsNum($NAME, "state", "0")},\
moving {"STOPPED"}
attr test_rollo webCmd state
attr test_rollo widgetOverride state:slider,0,5,100

dennis_n

Vielen vielen Dank für Deine ausführliche Erklärung.

Letztenendes hat das Attribut userReadings den entscheidenden Hinweis gebracht.
Diesen verwende ich jetzt und damit funktioniert alles so wie es soll.

Und nur zum Verständnis (vielleicht haben wir da aneinander vorbei geredet): Ich nutze ebenfalls FHEM, Hoembridge und Homekit. Von Alexa hatte ich nie gesprochen ;-)

Für alle die es interessiert. So sieht mein list vom Device jetzt aus:

Internals:
   DEF        c1aa9dda 5
   FUUID      5ddb9358-f33f-8212-d7c2-9650097ae7469be8
   IODev      ZWDongle_0
   LASTInputDev ZWDongle_0
   MSGCNT     168
   NAME       ZWave_SWITCH_MULTILEVEL_5
   NR         29
   STATE      98
   TYPE       ZWave
   ZWDongle_0_MSGCNT 168
   ZWDongle_0_RAWMSG 0004000506310504220000
   ZWDongle_0_TIME 2022-12-02 16:21:34
   ZWaveSubDevice no
   cmdsPending 0
   eventCount 200
   homeId     c1aa9dda
   isWakeUp   
   lastMsgSent 1669994492.67319
   nodeIdHex  05
   READINGS:
     2022-11-30 19:26:36   IODev           ZWDongle_0
     2021-08-01 11:55:26   SEND_DATA       failed:00
     2022-09-06 11:41:47   UNPARSED        SENSOR_BINARY 06300504230000
     2022-12-02 16:21:34   actual_position 100
     2022-11-27 17:48:16   assocGroup_1    Max 16 Nodes ZWDongle_0
     2022-11-27 17:48:16   assocGroup_2    Max 16 Nodes
     2022-11-27 17:48:17   assocGroup_3    Max 1 Nodes ZWDongle_0
     2022-11-27 17:48:16   assocGroups     3
     2022-11-27 17:48:20   configEnergyReports 10
     2022-11-27 17:48:21   configInRollerBlindModeOrVenetianBlind17 10
     2022-11-27 17:48:21   configInVenetianBlindModeTheParameter12 150
     2022-11-27 17:48:26   configManagingLamellasInResponseTo35 SetLamellasToTheirExtreme1
     2022-11-27 17:48:26   configMotorOperationDetection 10
     2022-11-27 17:48:26   configMotorOperationTime 240
     2022-11-27 17:48:26   configPeriodicPowerOrEnergyReports 3600
     2022-11-27 17:48:26   configPowerReports 10
     2022-11-27 17:48:32   configReportsType BlindPositionReportsSentToThe0
     2022-11-27 17:48:32   configResponseToFloodingAlarm NoReaction
     2022-11-27 17:48:32   configResponseToGeneralAlarm CloseBlind
     2022-11-27 17:48:32   configResponseToSmokeCOOrCO2Alarm OpenBlind
     2022-11-27 17:48:32   configResponseToTemperatureAlarm OpenBlind
     2022-11-27 17:48:32   configRollerShutterOperatingModes 1RollerBlindModeWithPositioning
     2022-11-27 17:48:32   configScenesAssociationsActivation AssociationsActivation
     2022-11-27 17:48:33   configSelfMeasurement SelfMeasurementInactive
     2022-11-27 17:48:33   configSetLamellasBackToPrevious13 1LamellasReturnToPreviouslySet1
     2022-11-27 17:48:33   configSwitchType ToggleSwitches
     2022-12-02 16:17:46   energy          3.99 kWh
     2022-07-11 17:37:36   formaldehydeLevel 0.0 mol/m3
     2018-03-30 02:17:30   model           FIBARO System FGRM222 Roller Shutter Controller 2
     2018-03-30 02:17:30   modelConfig     fibaro/fgrm222.xml
     2018-03-30 02:17:30   modelId         010f-0301-1001
     2022-12-02 16:21:34   position        98
     2022-12-02 16:21:34   power           0.0 W
     2022-11-27 17:13:56   reportedState   off
     2022-12-02 16:21:32   state           dim 99
     2022-12-02 16:21:32   timeToAck       0.078
     2022-12-02 16:21:32   transmit        OK
     2021-09-01 09:52:17   undef           3.13 undef
Attributes:
   IODev      ZWDongle_0
   alexaName  Rolladen Abstellraum
   alias      Abstellraum
   classes    MANUFACTURER_SPECIFIC VERSION CONFIGURATION ASSOCIATION SWITCH_BINARY POWERLEVEL METER SENSOR_MULTILEVEL FIRMWARE_UPDATE_MD SWITCH_BINARY MANUFACTURER_PROPRIETARY PROTECTION MARK METER SENSOR_MULTILEVEL MANUFACTURER_PROPRIETARY SCENE_ACTIVATION SWITCH_MULTILEVEL SWITCH_BINARY
   devStateIcon up:fts_shutter_20 down:fts_shutter_90
   eventMap   on:up off:down
   genericDeviceType blind
   homebridgeMapping clear CurrentPosition=actual_position,minValue=0,maxValue=100 TargetPosition=dim::actual_position,minValue=0,maxValue=100,minStep=1
   room       Alexa,Homekit,ZWave
   stateFormat position
   userReadings actual_position {(ReadingsNum($NAME,"position",0)<10)?0: (ReadingsNum($NAME,"position",0)>90)?100: ReadingsNum($NAME,"position",0)}
   userattr   room_map structexclude
   vclasses   ASSOCIATION:2 CONFIGURATION:1 FIRMWARE_UPDATE_MD:1 MANUFACTURER_PROPRIETARY:1 MANUFACTURER_SPECIFIC:1 METER:2 POWERLEVEL:1 PROTECTION:2 SCENE_ACTIVATION:1 SENSOR_MULTILEVEL:2 SWITCH_MULTILEVEL:3 VERSION:1
   webCmd     dim:up:down


Vielen Dank für eure Geduld.

Dennis

Beta-User

Grummel. Warum das userReading ohne trigger?
Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

dennis_n


Beta-User

Zitat von: dennis_n am 02 Dezember 2022, 16:46:35
Was meinst Du?
Du notierst das so:
attr ZWave_SWITCH_MULTILEVEL_5  userReadings actual_position {(ReadingsNum($NAME,"position",0)<10)?0: (ReadingsNum($NAME,"position",0)>90)?100: ReadingsNum($NAME,"position",0)}
Ich würde es so versuchen:
attr ZWave_SWITCH_MULTILEVEL_5 userReadings actual_position:power..0.0.W {my $pos=ReadingsNum($NAME,'position',0); $pos<10 ? 0 : $pos>90 ? 100 : $pos}Also:
- nur bei Fahrtende wird überhaupt gerechnet (Keine Energieaufnahme mehr; => trigger)
- Es wird nicht 3* der Wert rausgefischt, sondern nur ein mal...
- Klammern auf die notwendigen beschränkt
- keine Interpolationsanweisung, da nicht erforderlich (Quotes in Perl).

Server: HP-elitedesk@Debian 12, aktuelles FHEM@ConfigDB | CUL_HM (VCCU) | MQTT2: MiLight@ESP-GW, BT@OpenMQTTGw | MySensors: seriell, v.a. 2.3.1@RS485 | ZWave | ZigBee@deCONZ | SIGNALduino | MapleCUN | RHASSPY
svn: u.a MySensors, Weekday-&RandomTimer, Twilight,  div. attrTemplate-files

dennis_n

Alles klar, ich habe es entsprechend abgeändert.
Aber da wäre ich nie drauf gekommen.

Natürlich auch Dir vielen Dank dafür.

Gruss
Dennis