Hallo,
ich blicke einfach nicht mehr durch und irgendwie gibt es keine richtige Lösung oder attr sind nicht vorhanden.
Also ich habe eine KNX Aktor der einen Rolladen steuert (der Teil HomeBridgeMapping vergesst mal da ich da x Änderungen schon hatte). Dieser Aktor hat 4 Adressen (Auf/Ab , Stop, Position und Status):
Internals:
CFGFN /opt/fhem/FHEM/CFG/2_neuMi_rollos.cfg
DEF 3/1/4:dpt1.008:Auf/Ab 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:Position 3/1/17:dpt5.001:Status
DEVNAME KNX_0301004
FIRSTGADNAME Auf/Ab
FUUID 5e89ca80-f33f-f555-da32-3148abd23b731b80
GETSTRING Position:noArg Stop:noArg Status:noArg Auf/Ab:noArg
IODev KNX
KNX_MSGCNT 28
KNX_RAWMSG C0001bw031114c
KNX_TIME 2020-12-19 11:56:33
LASTInputDev KNX
MSGCNT 28
NAME KNX_0301004
NR 87
NTFY_ORDER 50-KNX_0301004
SETSTRING Position:slider,0,1,100 Stop:trigger,trigger Status:slider,0,1,100 Auf/Ab:up,down
STATE 30 %
TYPE KNX
GADDETAILS:
Auf/Ab:
CODE 03104
GROUP 3/1/4
MODEL dpt1.008
NO 1
OPTION
RDNAMEGET Auf/Ab-get
RDNAMEPUT Auf/Ab-put
RDNAMESET Auf/Ab-set
SETLIST :up,down
Position:
CODE 03110
GROUP 3/1/16
MODEL dpt5.001
NO 3
OPTION
RDNAMEGET Position-get
RDNAMEPUT Position-put
RDNAMESET Position-set
SETLIST :slider,0,1,100
Status:
CODE 03111
GROUP 3/1/17
MODEL dpt5.001
NO 4
OPTION
RDNAMEGET Status-get
RDNAMEPUT Status-put
RDNAMESET Status-set
SETLIST :slider,0,1,100
Stop:
CODE 03105
GROUP 3/1/5
MODEL dpt1.017
NO 2
OPTION
RDNAMEGET Stop-get
RDNAMEPUT Stop-put
RDNAMESET Stop-set
SETLIST :trigger,trigger
GADTABLE:
03104 Auf/Ab
03105 Stop
03110 Position
03111 Status
READINGS:
2020-12-16 07:08:26 Auf/Ab-get up
2020-12-19 11:43:08 Auf/Ab-set up
2020-12-19 11:56:28 Position-set 30 %
2020-12-19 11:56:33 Status-get 30 %
2020-12-19 10:53:28 Status-set 0 %
2020-12-13 10:03:54 Stop-get trigger
2020-12-19 11:16:01 Stop-set trigger
2020-12-13 10:03:54 getG1 up
2020-12-13 10:03:54 getG2 up
2020-12-19 11:56:33 last-sender 0/0/27
2020-12-13 10:03:54 schalten-set up
2020-12-13 10:03:54 setG1 down
2020-12-13 10:03:54 setG2 down
2020-12-19 11:56:33 state 30 %
2020-12-13 10:03:54 stop-set down
Attributes:
DbLogExclude .*
IODev KNX
alexaName Büro Christian
alias Rollo
devStateIcon up:fts_shutter_1w_0@green down:fts_shutter_1w_100@black 9\d.*:fts_shutter_1w_100 8\d.*:fts_shutter_1w_90 7\d.*:fts_shutter_1w_80 6\d.*:fts_shutter_1w_70 5\d.*:fts_shutter_1w_60 4\d.*:fts_shutter_1w_50 3\d.*:fts_shutter_1w_40 2\d.*:fts_shutter_1w_30 1\d.*:fts_shutter_1w_20 0\d.*:fts_shutter_1w_10up:shutter_1 down:shutter_closed
genericDeviceType blind
group Christian Buero
homebridgeMapping clear CurrentPosition=getG1,minValue=0,maxValue=100,minStep=1,invert=1 Position=value::getG1,minValue=0,maxValue=100,minStep=1,invert=1
room DG_MI->Buero Chris
verbose 5
Ich habe ein Alexa Connector device. Ich möchte nun gerne über
ZitatAlexa Büro Christian Auf (oder eben Zu)
oder
ZitatAlexa stelle Büro Christian auf 30 prozent
den Rolladen verfahren.
Das Mapping wie auf https://wiki.fhem.de/wiki/Alexa_und_Mappings unter Rolladen beschrieben geht nicht weil ich mit:
Save config ?
Tablet-UI
DG_MI
OG_MI
EG_MI
Alles
Wetter
Draussen
9_Diagramme
Amazon
Automatikschalter
Kalender
Listen
Logfiles
Logik
Steckdosen
Stromzaehler
System
Test
Unsorted
icoEverything Everything
Logfile
Commandref
Remote doc
Edit files
Select style
Event monitor
Update
UpdateCheck
Restart
BackupNow
RereadConf
SaveUI
Historie löschen
KNX_0301004: unknown attribute ?, choose one of alias comment eventMap group room suppressReading userReadings verbose IODev do_not_notify showtime answerReading stateRegex stateCmd putCmd format listenonly readonly slider useSetExtensions event-aggregator event-min-interval event-on-change-reading event-on-update-reading oldreadings stateFormat timestamp-on-change-reading DbLogExclude DbLogInclude DbLogValueFn alexaName alexaProactiveEvents alexaRoom cmdIcon devStateIcon devStateStyle genericDeviceType homebridgeMapping icon msgContactAudio msgContactLight msgContactMail msgContactPush msgContactScreen msgParams msgPriority msgRecipient msgRecipientAudio msgRecipientLight msgRecipientMail msgRecipientPush msgRecipientScreen msgRecipientText msgTitle msgTitleShrt msgType sortby webCmd webCmdLabel widgetOverride userattr
überhaupt kein readingList, setList als attribute habe.
Ich denke schon das Alexa den Wert liefert (mit verbose 5 im Log von Alexa):
[19.12.2020, 09:22:36] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.RangeController","name":"SetRangeValue","payloadVersion":"3","instance":"Blind.Position","messageId":"aaaabbbb-3b9e-4a2e-b592-e361aa6adddd","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"aaaabbbb-1234DC470F831234"},"endpointId":"aaaabbbb-f33f-f555-da32-1234DC470F831234","cookie":{"fuuid":"aaaabbbb-f33f-f555-da32-1234DC470F831234","device":"KNX_0301004"}},"payload":{"rangeValue":50}}}
[19.12.2020, 09:22:36] [FHEM] KNX_0301004: executing set cmd for TargetPosition with value 50
[19.12.2020, 09:22:36] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=set%20KNX_0301004%20pct%2050&fwcsrf=csrf_111234123412345&XHR=1
[19.12.2020, 09:22:36] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.RangeController","instance":"Blind.Position","name":"rangeValue","value":50,"timeOfSample":"2020-12-19T08:22:36.223Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"abcdabcd-62b8-4b6b-8f64-1234d7881234","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"aaaabbbb-1234DC470F831234"},"endpointId":"aaaabbbb-f33f-f555-da32-1234DC470F831234"},"payload":{}}}
Hat jemand es schon fertig gebracht so eine KNX Rolladen über Alexa richtig zu steuern und wenn ja wie?
Gruß
Christian Eidenmüller
Mit welchem Befehl setzt Du die position?
In welchem Reading sieht man die position?
Das 2. Teil deises HomeBridgeMapping hat wenig Sinn, da Alexa keine Characteristic Position braucht, sondern TargetPosition
Hast Du schon versucht ohne homeBridgeMapping Attribut?
Was alexa-fhem erkennt und wie, sieht man in der alexa-fhem Log, wenn man ein "set alexa reload" macht.
Hallo,
danke erstmal für feedback.
Mit set KNX_0301004 position 70
setze ich den Rolladen z.B. auf 70%.
Das Reading rufe ich ab mit get KNX_0301004 Status
Das liegt an der definition 3/1/4:dpt1.008 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:position 3/1/17:dpt5.001:Status
Ich könnte auch definieren 3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:SetPos 3/1/17:dpt5.001:Percentage
Dann würde ich mit set KNX_0301004 SetPos 70
den Wert setzen.
Ich nenne das ganze jetzt mal so:
3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:TargetPosition 3/1/17:dpt5.001:Percentage
und lösche das HomeBridgeMapping.
Hab den Alexa reload gemacht.
[20.12.2020, 08:37:22] [FHEM] KNX_0301004 is blind
[20.12.2020, 08:37:22] [FHEM] KNX_0301004 has
[20.12.2020, 08:37:22] [FHEM] CurrentPosition [pct]
[20.12.2020, 08:37:22] [FHEM] TargetPosition [pct]
[20.12.2020, 08:37:22] [FHEM] KNX_0301004 will not send proactive events
[20.12.2020, 08:37:22] [FHEM] KNX_0301004 uses ID: abcdca80-f33f-f123-da32-31234
Denk somit müsste meine definition so aussehen:
3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:TargetPosition 3/1/17:dpt5.001:CurrentPosition:listenonly
Werde ich dann mal testen. Leider fehlt dann ja aber Auf und Zu und zusätzlich Stop aber wenn ich das richtig weiß braucht man dazu einen CustomSkill.
Ich teste mal.
Hallo,
habe jetzt die definition wei folgt 3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:TargetPosition 3/1/17:dpt5.001:CurrentPosition:listenonly
der Eintrag im Alexa Log ist [20.12.2020, 12:51:04] [FHEM] KNX_0301004: executing set cmd for TargetPosition with value 49
aber leider bewegt sich der Rolladen nicht.
In der Alexa App sehe ich nur eine Fehlermeldung die sagt "Ein Problem ist aufgetreten"
Irgendwie scheint die Umsetzung zu fehlen zu dem set KNX_0301004 TargetPosition 49
Gruß
Christian
Was hast Du jetzt im Attribut homeBridgeMapping? Immer noch gelöscht?
Zitat[20.12.2020, 08:37:22] [FHEM] CurrentPosition [pct]
[20.12.2020, 08:37:22] [FHEM] TargetPosition [pct]
bedeutet, alexa-fhem sucht CurrentPosition im Reading pct, und setzt die TargetPostion mit "set xxx pct 49"
Wenn ich dich richtig verfolgt habe, muss jetzt homeBridgeMapping so aussehen:
CurrentPosition=CurrentPosition TargetPosition=TargetPosition::TargetPosition
Vor deiner Änderung hätte es irgendwie so aussehen müssen (angenommen, dass alexa-fhem das % Zeichen versteht, das weiss ich nicht):
CurrentPosition=state TargetPosition=Position-set::position
Hallo,
alo ich habe das device jetzt wie folgt definiert:
Internals:
CFGFN /opt/fhem/FHEM/CFG/2_neuMi_rollos.cfg
DEF 3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:TargetPosition 3/1/17:dpt5.001:CurrentPosition:listenonly
DEVNAME KNX_0301004
FIRSTGADNAME Auf/Zu
FUUID 5e89ca80-f33f-f555-da32-3148abd23b731b80
GETSTRING TargetPosition:noArg Stop:noArg CurrentPosition:noArg Auf/Zu:noArg
IODev KNX
KNX_MSGCNT 127
KNX_RAWMSG C0001bw0311100
KNX_TIME 2020-12-21 05:56:12
LASTInputDev KNX
MSGCNT 127
NAME KNX_0301004
NR 87
NTFY_ORDER 50-KNX_0301004
SETSTRING TargetPosition:slider,0,1,100 Stop:trigger,trigger Auf/Zu:up,down
STATE 0 %
TYPE KNX
GADDETAILS:
Auf/Zu:
CODE 03104
GROUP 3/1/4
MODEL dpt1.008
NO 1
OPTION
RDNAMEGET Auf/Zu-get
RDNAMEPUT Auf/Zu-put
RDNAMESET Auf/Zu-set
SETLIST :up,down
CurrentPosition:
CODE 03111
GROUP 3/1/17
MODEL dpt5.001
NO 4
OPTION listenonly
RDNAMEGET CurrentPosition-get
RDNAMEPUT CurrentPosition-put
RDNAMESET
SETLIST :slider,0,1,100
Stop:
CODE 03105
GROUP 3/1/5
MODEL dpt1.017
NO 2
OPTION
RDNAMEGET Stop-get
RDNAMEPUT Stop-put
RDNAMESET Stop-set
SETLIST :trigger,trigger
TargetPosition:
CODE 03110
GROUP 3/1/16
MODEL dpt5.001
NO 3
OPTION
RDNAMEGET TargetPosition-get
RDNAMEPUT TargetPosition-put
RDNAMESET TargetPosition-set
SETLIST :slider,0,1,100
GADTABLE:
03104 Auf/Zu
03105 Stop
03110 TargetPosition
03111 CurrentPosition
OLDREADINGS:
READINGS:
2020-12-20 12:57:08 Auf/Zu-set up
2020-12-21 05:56:12 CurrentPosition-get 0 %
2020-12-20 12:48:20 Stop-set trigger
2020-12-20 12:55:16 TargetPosition-set 49 %
2020-12-21 05:56:12 last-sender 0/0/27
2020-12-21 05:56:12 state 0 %
Attributes:
DbLogExclude .*
IODev KNX
alexaName Büro Christian
alias Rollo
devStateIcon up:fts_shutter_1w_0@green down:fts_shutter_1w_100@black 9\d.*:fts_shutter_1w_100 8\d.*:fts_shutter_1w_90 7\d.*:fts_shutter_1w_80 6\d.*:fts_shutter_1w_70 5\d.*:fts_shutter_1w_60 4\d.*:fts_shutter_1w_50 3\d.*:fts_shutter_1w_40 2\d.*:fts_shutter_1w_30 1\d.*:fts_shutter_1w_20 0\d.*:fts_shutter_1w_10up:shutter_1 down:shutter_closed
eventMap /on g2:Stop/off g1:Auf/on g1:Zu/value 30% g3:Pos30/value 50% g3:Pos50/value 70% g3:Pos70
genericDeviceType blind
group Christian Buero
homebridgeMapping CurrentPosition=CurrentPosition TargetPosition=TargetPosition::TargetPosition
room DG_MI->Buero Chris
verbose 5
webCmd Auf:Stop:Zu::Pos30:Pos50:Pos70
Danach hab ich das device in der Alexa App gelöscht. Alexa Connector in FHEM gestoppt und nach einer kurzen Zeit wieder gestartet.
In der Alexa App das Device wieder gesucht.
Es wird zwar in der Alexa App immer noch angezeigt "Ein Problem ist aufgetreten" aber wenn ich den Schieberegler auf, als Beispiel 47%, schiebe fährt der Rolladen auch auf 47 Prozent. Die Richtung stimmt auch. 70% ist fast zu und 13% fast auf.
Allerdings zeigt die Alex App nicht die Prozentzahl an auf der sich der Rolladen befindet wenn ich Ihn aus fhem heraus auf einen Wert fahre.
Sollte doch meines Erachtens wenn ich den Rolladen auf 50% fahre, aus FHEM heraus und die Alex App öffne die angefahrenen 50% auch anzeigen.
Gruß
Christian
Wie immer: zeigt aus der Log, wie das Gerät jetzt erkannt wird
Hello,
hier der Alexa output nach alexa restart:
[21.12.2020, 12:40:09] [FHEM] KNX_0301004 is blind
[21.12.2020, 12:40:09] [FHEM] KNX_0301004 has
[21.12.2020, 12:40:09] [FHEM] CurrentPosition [pct]
[21.12.2020, 12:40:09] [FHEM] TargetPosition [TargetPosition]
[21.12.2020, 12:40:09] [FHEM] KNX_0301004 will not send proactive events
[21.12.2020, 12:40:09] [FHEM] KNX_0301004 uses ID: abcdef80-1234-f125-da32-3148a d23b731123
Der hat immer noch pct als CurrentPosition, und pct ist kein vorhandenes Reading. Er akzeptiert wahrscheinlich CurrentPostion nicht, da dieses % Zeichen drin steht. Mach evtl. ein userReading ohne % (egal der Name, aber diesen Name im homeBridgeMapping dann übertragen.)
Hi,
also als erstes habe ich mit:
deletereading KNX_0301004 .*
alle readings des KNX devices gelöscht.
Die DEF des KNX devices habe ich so abgeändert 3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:TargetPosition 3/1/17:dpt5.001:AktuellePos:listenonly
Dann habe ich den Rollo aus FHEM ein Stück verfahren und habe ein Reading mit dem Namen "AktuellePos-get" erhalten.
Damit have ich mir mit attr KNX_0301004 userReadings CurrentPosition {ReadingsNum("KNX_0301004", "AktuellePos-get",0)}
gebaut.
Danach wieder den Rolladen ein Stück verfahren und bei dem UserReading das ich angelegt habe erscheint nun der ganzzahlige Wert der Rollo Position.
Nun habe ich das erkannt device in der Alexa App wieder gelöscht und mit set alexa reload
das alexa device neu geladen. Zur Sicherheit habe ich auch den Dienst aus FHEM gestoppt und wieder gestartet.
In der Alexa App jetzt nach neue Geräte suche.
Im Alexa Log sehe ich nun das:
[22.12.2020, 07:37:48] [FHEM] KNX_0301004: executing set cmd for TargetPosition with value 27
[22.12.2020, 07:37:48] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=set%20KNX_0301004%20TargetPosition%2027&fwcsrf=csrf_123191221633539&XHR=1
[22.12.2020, 07:37:48] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.RangeController","instance":"Blind.Position","name":"rangeValue","value":27,"timeOfSample":"2020-12-22T06:37:48.222Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"1234e9e0-6c67-4c0f-1234-8aead12b1234","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"1234221F-1234DC470F83E73D"},"endpointId":"1234ca80-f33f-f123-da32-3148abd23b731234"},"payload":{}}}
[22.12.2020, 07:37:51] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa","name":"ReportState","payloadVersion":"3","messageId":"c9262325-2d9a-428f-b410-9c1d064f147b","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"1234221F-3E19DC470F831234"},"endpointId":"1234ca80-f33f-f123-da32-3148abd23b731234","cookie":{"fuuid":"1234ca80-f33f-f123-da32-3148abd23b731234","device":"KNX_0301004"}},"payload":{}}}
[22.12.2020, 07:37:51] <<<< [ssh] {"context":{"properties":[]},"event":{"header":{"namespace":"Alexa","name":"StateReport","payloadVersion":"3","messageId":"4bb3f157-1861-479f-850b-361188789591","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"1234221F-3E19DC470F831234"},"endpointId":"1234ca80-f33f-f123-da32-3148abd23b731234"},"payload":{}}}
[22.12.2020, 07:37:54] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa","name":"ReportState","payloadVersion":"3","messageId":"b66595bf-71b8-4009-a310-e5df4637782e","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"1234221F-3E19DC470F831234"},"endpointId":"1234ca80-f33f-f123-da32-3148abd23b731234","cookie":{"fuuid":"1234ca80-f33f-f123-da32-3148abd23b731234","device":"KNX_0301004"}},"payload":{}}}
[22.12.2020, 07:37:54] <<<< [ssh] {"context":{"properties":[]},"event":{"header":{"namespace":"Alexa","name":"StateReport","payloadVersion":"3","messageId":"e4d50d31-0dff-41be-832f-bc646f809aad","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"1234221F-3E19DC470F831234"},"endpointId":"1234ca80-f33f-f123-da32-3148abd23b731234"},"payload":{}}}
[22.12.2020, 07:37:57] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa","name":"ReportState","payloadVersion":"3","messageId":"001ae01c-1eb4-4f80-b2fd-30679fb6fc7b","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"1234221F-3E19DC470F831234"},"endpointId":"1234ca80-f33f-f123-da32-3148abd23b731234","cookie":{"fuuid":"1234ca80-f33f-f123-da32-3148abd23b731234","device":"KNX_0301004"}},"payload":{}}}
[22.12.2020, 07:37:57] <<<< [ssh] {"context":{"properties":[]},"event":{"header":{"namespace":"Alexa","name":"StateReport","payloadVersion":"3","messageId":"424615b3-6c21-4b62-970e-246dfbb2c364","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"1234221F-3E19DC470F831234"},"endpointId":"1234ca80-f33f-f123-da32-3148abd23b731234"},"payload":{}}}
Also nochmal ein set alexa reload
und wieder ins Log geschaut:
[22.12.2020, 07:43:37] [FHEM] KNX_0301004 is blind
[22.12.2020, 07:43:37] [FHEM] KNX_0301004 has
[22.12.2020, 07:43:37] [FHEM] CurrentPosition [pct]
[22.12.2020, 07:43:37] [FHEM] TargetPosition [TargetPosition]
[22.12.2020, 07:43:37] [FHEM] KNX_0301004 will not send proactive events
[22.12.2020, 07:43:37] [FHEM] KNX_0301004 uses ID: 1234ca80-f33f-f123-da32-3148abd23b731234
Mache ich aber ein "list KNX_0301004" habe ich diesen output:
Internals:
CFGFN /opt/fhem/FHEM/CFG/2_neuMi_rollos.cfg
DEF 3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:TargetPosition 3/1/17:dpt5.001:AktuellePos:listenonly
DEVNAME KNX_0301004
FIRSTGADNAME Auf/Zu
FUUID 1234ca80-f33f-f123-da32-3148abd23b731234
GETSTRING AktuellePos:noArg TargetPosition:noArg Stop:noArg Auf/Zu:noArg
IODev KNX
KNX_MSGCNT 26
KNX_RAWMSG C0001bw0311143
KNX_TIME 2020-12-22 07:37:53
LASTInputDev KNX
MSGCNT 26
NAME KNX_0301004
NR 87
NTFY_ORDER 50-KNX_0301004
SETSTRING TargetPosition:slider,0,1,100 Stop:trigger,trigger Auf/Zu:up,down
STATE 26 %
TYPE KNX
GADDETAILS:
AktuellePos:
CODE 03111
GROUP 3/1/17
MODEL dpt5.001
NO 4
OPTION listenonly
RDNAMEGET AktuellePos-get
RDNAMEPUT AktuellePos-put
RDNAMESET
SETLIST :slider,0,1,100
Auf/Zu:
CODE 03104
GROUP 3/1/4
MODEL dpt1.008
NO 1
OPTION
RDNAMEGET Auf/Zu-get
RDNAMEPUT Auf/Zu-put
RDNAMESET Auf/Zu-set
SETLIST :up,down
Stop:
CODE 03105
GROUP 3/1/5
MODEL dpt1.017
NO 2
OPTION
RDNAMEGET Stop-get
RDNAMEPUT Stop-put
RDNAMESET Stop-set
SETLIST :trigger,trigger
TargetPosition:
CODE 03110
GROUP 3/1/16
MODEL dpt5.001
NO 3
OPTION
RDNAMEGET TargetPosition-get
RDNAMEPUT TargetPosition-put
RDNAMESET TargetPosition-set
SETLIST :slider,0,1,100
GADTABLE:
03104 Auf/Zu
03105 Stop
03110 TargetPosition
03111 AktuellePos
OLDREADINGS:
READINGS:
2020-12-22 07:37:53 AktuellePos-get 26 %
2020-12-22 07:36:20 Auf/Zu-set down
2020-12-22 07:37:53 CurrentPosition 26
2020-12-22 07:36:24 Stop-set trigger
2020-12-22 07:37:48 TargetPosition-set 27 %
2020-12-22 07:37:53 last-sender 0/0/27
2020-12-22 07:37:53 state 26 %
Attributes:
DbLogExclude .*
IODev KNX
alexaName Büro Christian
alias Rollo
devStateIcon up:fts_shutter_1w_0@green down:fts_shutter_1w_100@black 9\d.*:fts_shutter_1w_100 8\d.*:fts_shutter_1w_90 7\d.*:fts_shutter_1w_80 6\d.*:fts_shutter_1w_70 5\d.*:fts_shutter_1w_60 4\d.*:fts_shutter_1w_50 3\d.*:fts_shutter_1w_40 2\d.*:fts_shutter_1w_30 1\d.*:fts_shutter_1w_20 0\d.*:fts_shutter_1w_10up:shutter_1 down:shutter_closed
eventMap /on g2:Stop/off g1:Auf/on g1:Zu/value 30% g3:Pos30/value 50% g3:Pos50/value 70% g3:Pos70
genericDeviceType blind
group Christian Buero
homebridgeMapping CurrentPosition=CurrentPosition TargetPosition=TargetPosition::TargetPosition
room DG_MI->Buero Chris
userReadings CurrentPosition {ReadingsNum("KNX_0301004", "AktuellePos-get",0)}
verbose 5
webCmd Auf:Stop:Zu::Pos30:Pos50:Pos70
Dort ist also ein Reading mit den Namen CurrentPosition das den Wert 26 hat.
Gruß
Christian
Versuch mal noch ein "clear" + Leerzeichen ganz am Anfang des homeBridgeMappings hinzuzufügen, dann "set alexa reload"
hier gehen glaube ich gerade ein paar dinge durcheinander. am besten geht man so vor:
- welches reading enthält die aktuelle position? welches (set-) kommando ändert die position?
- falls es das reading nicht gibt: mit userReading (oder device spezifisch) dafür sorgen das es vorhanden ist
- falls es das kommando nicht gibt: mit cmdalias (oder device spezifisch) dafür sorgen das es vorhanden ist
- das reading muss auch ein event (siehe event monitor) erzeugen
- wenn irgend möglich 100% -> offen, 0% -> zu!
- genericDeviceType auf blind setzen und homebridgeMapping anlegen (s.u.)
- set <alexa> add <name> oder alexa-fhem neu starten
- geräte suche starten
- sicherstellen das es einen slider in der alexa app gibt
- slider testen
- probieren ob alexa, <name> <wert> prozent funktioniert
- probieren ob alexa, <name> ganz hoch oder alexa, <name> ganz runter funktioniert
- probieren ob alexa, <name> hoch oder alexa, <name> runter funktioniert
- wichtig: zum ganz rauf und ganz runter fahren muss man 'ganz rauf' bzw. 'ganz runter' sagen. nur 'rauf' oder 'runter' fahren jeweils nur ein kleines stück.
- danach fine tuning des alexa mappings (minValue, maxValue invert)
CurrentPosition: konfiguration für das auslesen der aktuellen position
TargetPosition: konfiguration für die gewünschte konfiguration
also: attr homebridgeMapping TargetPosition:<reading>,cmd=<cmd> CurrentPosition:TargetPosition
<reading>: das reading in dem die aktuelle position steht
<cmd>: das kommando zum setzen der gewünschten position
CurrentPosition=TargetPosition: kopiert die konfiguration von TargetPosition nach CurrentPosition statt alles einzeln anzugeben. die reihenfolge in homebridgeMapping ist wichtig. readings sollten dann nicht genau so heissen wie characteristics.
attr homebridgeMapping CurrentPosition:<reading> TargetPosition:CurrentPosition,cmd=<cmd>
so rum geht auch.
So in die Richtung waren wir am Anfang.
Zitat- welches reading enthält die aktuelle position? welches (set-) kommando ändert die position?
Das war meine erste Frage. Aber dann hat er angefangen, seine Readings und Kommandos umzubenennen, und:
Zitat von: justme1968 am 22 Dezember 2020, 11:47:15
CurrentPosition=TargetPosition: kopiert die konfiguration von TargetPosition nach CurrentPosition statt alles einzeln anzugeben. die reihenfolge in homebridgeMapping ist wichtig. readings sollten dann nicht genau so heissen wie characteristics.
Aha! Darauf habe ich nicht aufgepasst. Und deswegen geht es mit seinen umgenannten Readings (CurrentPosition) und Kommandos (TargetPosition)nicht. Also ... die Readings wie die Characteristics zu nennen = schlechte Idee?
Das hätte vermutlich (bis auf das % Zeichen -
versteht alexa-fhem Readings/sets mit % Zeichen?) mit seiner urspünglichen Definition funktioniert:
Zitat von: amenomade am 21 Dezember 2020, 01:53:07
Vor deiner Änderung hätte es irgendwie so aussehen müssen (angenommen, dass alexa-fhem das % Zeichen versteht, das weiss ich nicht):
CurrentPosition=state TargetPosition=Position-set::position
Danke, für die Erklärung :)
Hallo,
als erstes habe ich mal das userReading gelöscht. Das hatte ich ja gemacht um das Reading ohne % Zeichen zu erhalten.
So war es definiert:
userReadings CurrentPosition {ReadingsNum("KNX_0301004", "AktuellePos-get",0)}
Die definition des KNX devices lautet:
3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:TargetPosition 3/1/17:dpt5.001:AktuellePos:listenonly
Dort ist der erste Teil für das öffnen oder schließen des Rolladens.
Der 3/1/5 Teil ist die Adresse zum stoppen des Rolladens.
3/1/6 wird benutzt um den Rolle auf eine Prozentzahl zu fahren.
3/1/17 liefert die aktuelle Rolladen Position in ein Reading das "AktuellePos" heist (wobei ich glaube das ich das nicht brauche da es ja schon in state steht).
In der FHEM Eingabezeile kann ich den Rolladen darüber steuern.
set KNX_0301004 Zu
fährt der Rolladen zu (= 100% im Reading state)
und mit
set KNX_0301004 Auf
fährt der Rolladen auf (= 0% im Reading state)
mit
set KNX_0301004 Stop
kann ich den Rolladen stoppen während er fährt
mit
set KNX_0301004 TargetPosition 35%
(es geht auch ohne das % Zeichen)
fährt der Rolladen auf die gewünscht Position (also 35%).
Das homebridgeMapping war bisher CurrentPosition=CurrentPosition TargetPosition=TargetPosition::TargetPosition
Auch dieses gelöscht.
Schaue ich mir den Event Monitor an bekomme ich folgendes:
2020-12-22 13:40:51 KNX KNX_0301004 TargetPosition-set: 30 %
2020-12-22 13:40:51 KNX KNX_0301004 30 %
2020-12-22 13:40:51 KNX KNX_0301004 last-sender: fhem
2020-12-22 13:40:56 KNX KNX_0301004 AktuellePos-get: 30 %
2020-12-22 13:40:56 KNX KNX_0301004 last-sender: 0/0/27
2020-12-22 13:40:56 KNX KNX_0301004 30 %
2020-12-22 13:40:56 KNX KNX_0301004 AktuellePos-get: 30 %
2020-12-22 13:40:56 KNX KNX_0301004 last-sender: 0/0/27
2020-12-22 13:40:56 KNX KNX_0301004 30 %
Somit wird auch ein Reading "AktuellePos-get" im Event monitor geloggt (das state beinhaltet dieses aber auch).
Wenn ich es nun richtig verstehe und diesem folge für das homebridgeMapping Beispiel/Erklärung:
attr homebridgeMapping TargetPosition:<reading>,cmd=<cmd> CurrentPosition:TargetPosition
TargetPosition:<reading> wäre für mich dann TargetPosition:state
cmd=<cmd> wäre dann set
Also müsste das ganze dann so aussehen:
attr homebridgeMapping TargetPosition:state,cmd=set CurrentPosition:TargetPosition
genericDeviceType ist auf blind gesetzt.
Um ganz sicher zugehen habe ich in der Alexa App (auf dem Handy) wieder gelöscht und in FHEM Alexa gestoppt und wieder gestartet.
Danach das Gerät wieder aus der Alexa App gesucht.
Jetzt zum test.
Ich war mir nicht sicher welchen slider du meinst. Den in der Alexa App oder in FHEM.
Habe mit dem slider in FHEM angefangen. Ergebniss funktioniert und in state wie auch in AktuellePos-get steht der richtige Wert.
Schaue ich jetzt in die Alexa App werden dort auch % angezeigt (Juhu) aber weiter im test.
Verschieben des Reglers in der AlexaApp. Ergebniss Rolladen fährt nicht (das ging doch vorher...)
Das war das alte homebridgeMapping war (hier konnte ich den Rolladen über die Alexa App steuern aber die Anzeige funktioniert nicht):
homebridgeMapping CurrentPosition=CurrentPosition TargetPosition=TargetPosition::TargetPosition
das neue ist (hier funktioniert die Anzeige aber ich konnte den Rolladen nicht aus der Alexa App steuern) :
homebridgeMapping TargetPosition:state,cmd=set CurrentPosition:TargetPosition
Es kann jetzt nicht mehr viel sein. Ich hoffe ihr könnt mir jetzt noch bei dem letzten Rest helfen (mache natürlich auch die Restlichen Tests).
Wenn alles funktiort Poste ich das ganze Setup nochmal damit andere das vielleich nachvollziehen können.
Gruß
Christian
Nein. Versuche nicht die Readings nach Characteristics zu nennen.
Nimm das "list" deines Geräts, und schaue im Abschnitt "READINGS" wo die jetzige Position steht.
READINGS:
2020-12-22 07:37:53 AktuellePos-get 26 %
2020-12-22 07:36:20 Auf/Zu-set down
2020-12-22 07:37:53 CurrentPosition 26
2020-12-22 07:36:24 Stop-set trigger
2020-12-22 07:37:48 TargetPosition-set 27 %
2020-12-22 07:37:53 last-sender 0/0/27
2020-12-22 07:37:53 state 26 %
Sagen wir mal hier AktuellePos-get
Dann kommt in homeBridgeMapping
CurrentPosition=AktuellePos-get
Linker Teil ist der Name der Characteristic bei Alexa, das ist fest und kann man nicht ändern. So muss es heissen, damit Alexa es versteht => CurrentPosition
Rechter Teil ist das entspr. Reading in Fhem, das dafür benutzt werden muss => AktuellePos-get
Dann nimmst Du den "set" Befehl, der zum Position Setzen gilt: z.B.
set KNX_0301004 TargetPosition-set 50
Dann kommt in homeBridgeMapping
TargetPostion=TargetPosition-set,cmd=set
für alexa–fhem sind die direkten auf und zu set kommandos nicht relevant. alexa kennt nur die prozentuale steuerung.
stop eigentlich auch nicht. inneinem anderen thread hat aber jemand heraus gefunden das man es alexa per On characteristic auch für rollläden beibringen kann. das ist aber kür. zuerst muss die prozentuale steuerung gehen.
readings mit einem % sollten keine probleme machen. wenn das reading komplizierter ist kann man über die part anweisung im homebridgeMapping teile extrahieren.
ein zwingendes % im set müsste man per cmdalias erzeugen. ist hier aber nicht nötig.
die readings sollte man nicht wie die characteristic benennen. im besten fall verwirrt es, im schlimmsten fall sorgt es für fast nicht auffindbare probleme.
wie oben geschrieben kann man die ,falsche' richtung mit einem invert im mapping korrigieren.
Hallo,
also ich habe verstanden das die Reading nicht gleich den Characteristics sein darf.
Dazu habe ich meine definition wie folgt geändert:
DEF 3/1/4:dpt1.008:Auf/Zu 3/1/5:dpt1.017:Stop 3/1/16:dpt5.001:Position 3/1/17:dpt5.001:AktuellePos
Somit wäre "Position" das womit ich den % wert setze was aus FHEM heraus auch geht mit:
set KNX_0301004 Position 30
Jetzt stellt sich mir aber die Frage wie Alexa diesen Wert liest. Aus FHEM heraus mache ich das mit:
get KNX_0301004 AktuellePos
READINGS:
2020-12-23 08:02:30 AktuellePos-get 37 %
2020-12-23 07:59:47 Auf/Zu-get down
2020-12-23 07:55:56 Auf/Zu-set down
2020-12-23 08:02:28 Position-set 38 %
2020-12-23 07:59:48 Stop-get trigger
2020-12-23 07:55:58 Stop-set trigger
2020-12-23 08:02:30 last-sender 0/0/27
2020-12-23 08:02:30 state 37 %
Warum in den Readings das -get und -set and Position bzw. AktuellePos angehängt wird weiß ich nicht.
Um den Wert auch zu sehen habe ich aus FHEM heraus das ausgeführt:
{ReadingsNum("KNX_0301004", "AktuellePos-get",0)}
und es wird mir dann auch der aktuelle Wert des readings AktuellePos-get angezeigt.
Ich habe das homebridgeMapping so definiert:
TargetPosition=Position::Position CurrentPosition=AktuellePos-get
Was bedeuten eigentlich diese ::?
Mit diesem Mapping kann ich den Rolladen aus der Alexa App auf einen Prozentwert fahren.
Fahre ich aber den Rolladen aus FHEM auf einen anderen Wert ändert sich die Anzeige nicht.
Führ das fahren des Rolladens sehe ich Alex log:
[23.12.2020, 08:13:31] [FHEM] KNX_0301004: executing set cmd for TargetPosition with value 31
[23.12.2020, 08:13:31] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=set%20KNX_0301004%20Position%2031&fwcsrf=csrf_878497296073011&XHR=1
Letztendlich lässt sich durch ersetzen die %20 durch eine Leerzeichen folgendes schreiben:
<---snipped--->set KNX_0301004 Position 31<---snipped--->
Also genau die Zeile die ich auch as FHEM heraus eingeben würde.
Schaue ich jetzt im Alexa log nach dem get finde ich nur:
2020-12-23 08:19:26 caching: KNX_0301004-AktuellePos-get: 31 %
[23.12.2020, 08:19:26] [FHEM] caching: CurrentPosition: 31 % (as string; from '31 %')
also müsste das lesen der Position doch auch funktionieren?
Warum zeigt er diesen Wert den nicht an in der Alexa App?
Fahre den Rolladen aus FHEM auf 50% dann sollte in dem Alexa Log ja auch ein get zu sehen sein, richtig?
2020-12-23 08:22:02 caching: KNX_0301004-AktuellePos-get: 50 %
[23.12.2020, 08:22:02] [FHEM] caching: CurrentPosition: 50 % (as string; from '50 %')
das scheint ja auch der Fall zu sein aber in der Alexa App sehe ich noch immer auf 31 Prozent und die Meldung "Ein Problem ist aufgetreten".
Zu dem fahren des Rolladens via Sprachsteuerung.
"Alexa fahre Büro Christian auf 70 prozent" -> funktioniert
"Alexa fahre Büro Christian ganz auf" -> geht nicht bekomme nur eine Ton (PlümPlüm)
Gruß
Christian
alexa erwartet das die position im reading automatisch aktualisiert wird und per event gemeldet wird. so wie ein notify auch. so wie fhem an sich ja auch event basiert ist.
dan hat alexa dich nicht verstanden. versuch ,ganz hoch' statt ,ganz auf'. wie schon im anderen thread geschrieben die sprachassitenten sind dumm. sie verstehen nicht was du sagst sondern du musst sagen was sie verstehen..
Hello,
Im Event Log (aus der GUI auf "Zu" im event log down und dann "Stop" im event log trigger):
2020-12-23 09:37:31 KNX KNX_0301004 Auf/Zu-set: down
2020-12-23 09:37:31 KNX KNX_0301004 down
2020-12-23 09:37:31 KNX KNX_0301004 last-sender: fhem
2020-12-23 09:37:34 KNX KNX_0301004 Stop-set: trigger
2020-12-23 09:37:34 KNX KNX_0301004 trigger
2020-12-23 09:37:34 KNX KNX_0301004 last-sender: fhem
2020-12-23 09:37:34 KNX KNX_0301004 AktuellePos-get: 16 %
2020-12-23 09:37:34 KNX KNX_0301004 last-sender: 0/0/27
2020-12-23 09:37:34 KNX KNX_0301004 16 %
2020-12-23 09:37:34 KNX KNX_0301004 AktuellePos-get: 16 %
2020-12-23 09:37:34 KNX KNX_0301004 last-sender: 0/0/27
2020-12-23 09:37:34 KNX KNX_0301004 16 %
Die Readings dazu:
READINGS:
2020-12-23 09:37:34 AktuellePos-get 16 %
2020-12-23 07:59:47 Auf/Zu-get down
2020-12-23 09:37:31 Auf/Zu-set down
2020-12-23 08:26:00 Position-set 0 %
2020-12-23 07:59:48 Stop-get trigger
2020-12-23 09:37:34 Stop-set trigger
2020-12-23 09:37:34 last-sender 0/0/27
2020-12-23 09:37:34 state 16 %
Somit hat "AktuellePos-get" ein Event log eintrag.
"Alexa fahre Büro Christian ganz hoch" -> Rückmeldung Büro Christian reagiert grade nicht
mach ich direkt danach aber ein "Alexa fahre Büro Christian auf 70 prozent" funktioniert es.
Hi,
also ich ignoriere mal die falsche Anzeige in der Alexa App.
Ich habe nicht ganz verstanden was mit der Option -D gemeint wurde.
Aus der fhem set <alexa> stop dann set <alexa> start -D ?
Ich habe jetzt gesprochen:
ZitatAlexa, fahre <device> ganz hoch
und alexa sagt mir dann das <device> reagiert grade nicht.
Im Log steht dazu:
[5.1.2021, 07:00:52] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.RangeController","name":"AdjustRangeValue","payloadVersion":"3","instance":"Blind.Position","messageId":"12345678-e283-47aa-8a59-acd4c7244321","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"12345678-3E19DC470F834321"},"endpointId":"abcdefgh-f33f-f555-da32-3148abd23b731234","cookie":{"fuuid":"lalalala-f33f-f555-da32-3148abd23b73bbbb","device":"KNX_0301004"}},"payload":{"rangeValueDelta":100,"rangeValueDeltaDefault":false}}}
[5.1.2021, 07:00:52] [FHEM] KNX_0301004: executing set cmd for TargetPosition with value NaN
[5.1.2021, 07:00:52] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=set%20KNX_0301004%20Position%20NaN&fwcsrf=csrf_126653004448903&XHR=1
Natürlich kann KNX_0301004 diese
ZitatNaN
nicht. Sollte da nicht 0% bzw. 100% geliefert werden?
Habe dann mal das homebridgeMapping auf das geändert:
CurrentPosition=curPosNum TargetPosition=Position::Position,minValue=0,maxValue=100,minStep=5
und mit set <alexa> reload das device neu geladen.
ZitatAlexa, fahre <device> ganz hoch
und alexa sagt mir dann das <device> reagiert grade nicht.
Im log steht das gleiche.
Gruß
Christian
Hi,
habe jetzt meinen FHEM Server auf Buster umgezogen.
Hallo,
also ich habe das homeBridge Mapping ganz gelöscht. genericDeviceType ist blind.
[18.1.2021, 07:34:04] SSH: Welcome at the reverse proxy! This pseudoshell does not react to any input - do not get irritated.
Jetzt sage ich
ZitatAlexa fahre RolladenName ganz zu
Im Alexa log steht:
[18.1.2021, 07:48:34] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.RangeController","name":"AdjustRangeValue","payloadVersion":"3","instance":"Blind.Position","messageId":"12345678-1234-1234-1234-123456789012","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"12345678-1234567890123456"},"endpointId":"12345678-1234-1234-1234-1234567890123456","cookie":{"fuuid":"12345678-1234-1234-1234-1234567890123456","device":"KNX_0301004"}},"payload":{"rangeValueDelta":-100,"rangeValueDeltaDefault":false}}}
[18.1.2021, 07:48:34] [FHEM] KNX_0301004: executing set cmd for TargetPosition with value NaN
[18.1.2021, 07:48:34] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=set%20KNX_0301004%20pct%20NaN&fwcsrf=csrf_123456789227169&XHR=1
Wenn ich es richtig verstehe ist der Wert der von Amazon zurück kommt -100 aber das gibt es bei dem KNX device nicht und deswegen macht er ein set auf NaN.
Ich habe ja nur die Werte 0 bis 100.
100% wäre zu und 0% wäre auf.
Jetzt sage ich "Alexa fahre RolladenName auf 30 prozent"
[18.1.2021, 07:55:51] >>>> [ssh] {"directive":{"header":{"namespace":"Alexa.RangeController","name":"SetRangeValue","payloadVersion":"3","instance":"Blind.Position","messageId":"12345678-1234-1234-1234-123456789012","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"12345678-1234567890123456"},"endpointId":"12345678-1234-1234-1234-1234567890123456","cookie":{"fuuid":"12345678-1234-1234-1234-1234567890123456","device":"KNX_0301004"}},"payload":{"rangeValue":30}}}
[18.1.2021, 07:55:51] [FHEM] KNX_0301004: executing set cmd for TargetPosition with value 30
[18.1.2021, 07:55:51] [FHEM] executing: https://127.0.0.1:8083/fhem?cmd=set%20KNX_0301004%20pct%2030&fwcsrf=csrf_123456789227169&XHR=1
[18.1.2021, 07:55:51] <<<< [ssh] {"context":{"properties":[{"namespace":"Alexa.RangeController","instance":"Blind.Position","name":"rangeValue","value":30,"timeOfSample":"2021-01-18T06:55:51.794Z","uncertaintyInMilliseconds":500}]},"event":{"header":{"namespace":"Alexa","name":"Response","payloadVersion":"3","messageId":"6ea7c7f5-f12d-4cf8-8b81-3c42a0c3e83d","correlationToken":"-"},"endpoint":{"scope":{"type":"BearerToken","token":"5500183B-C38E230E27661A3B"},"endpointId":"5e89ca80-f33f-f555-da32-3148abd23b731b80"},"payload":{}}}
Also ich kämpfe auch aktuell mit der Einbindung von Alexa und einem KNX Rollladen. Kann bisher über absolute Pos in der Alexa App anfahren aber sehe in der App den Status noch nicht.
Hello Amenophis86,
ja genau das hatte ich am Anfang. Ist mir aber inzwischen egal ob es in der Alexa App richtig angezeigt wird.
Ich möchte nur das "Alexa fahre devicename ganz auf" oder "zu" funktioniert.
Habe allerdings am WE auch die 10_KNX.pm eingespielt https://forum.fhem.de/index.php/topic,116737.0.html (https://forum.fhem.de/index.php/topic,116737.0.html)
Leider funktioniert danach aber meine Web Buttons nicht mehr richtig und habe deswegen "https://forum.fhem.de/index.php/topic,117869.0.html" eröffnet.
Gruß
Christian
Das mit dem Webbuttons habe ich noch nicht umgesetzt, da mir die Alexa Anbindung noch wichtiger ist. Dann muss ich mal weiter versuchen die blöden Dinger richtig angezeigt zu bekommen.
An amenomade und justme1968:
Ich hänge am gleichen Problem mit der Anzeige. Allerdings scheint laut Log der Wert anzukommen:
2021-01-18 14:38:48 caching: EKU_Rollo_test-Status: 0
[18.1.2021, 14:38:48] [FHEM] caching: CurrentPosition: 0 (as string; from '0')
Warum wird er mir nicht in der Anzeige in der Alexa App angezeigt? Es steht dort nur, dass es zu einem Fehler gekommen ist. Kann ich irgendwie den Fehler finden?
Guten morgen,
nachdem ich jetzt von erwin in https://forum.fhem.de/index.php/topic,117869.0.html (https://forum.fhem.de/index.php/topic,117869.0.html) erfahren habe wie ich das Mapping der Webbuttons richtig mache und folgendes homebridgeMapping gemacht habe CurrentPosition=posstatus TargetPosition=position::position
funktioniert die Einbidung mit Alex fast einwandfrei (Anzeige geht, steuerung per Sprache mit ganz rauf/runter und nur rauf/runter, ändern des Reglers in der Alexa App funktionieren). Das einzige problem dabei ist das im Moment rauf und runter vertauscht sind aber wenn ich sage "Alexa fahre Gerät auf 30 %" fährt es in die richtige Richtung.
Ich weiß es gibt einen Paramter in dem homebridgeMapping der invert=1 heist aber an welcher stelle muss ich diesen einbauen?
CurrentPosition=posstatus TargetPosition=position::position,invert=1
(fährt immer noch nach oben bei ganz runter)
oder
CurrentPosition=posstatus TargetPosition=position,invert=1::position
(fährt immer noch nach oben bei runter)
Danke
Christian
Versuch mal obs was bringt das Device in der App zu löschen und dann nach einem restart/neue Suche mit invert=1 klappt ?
Hallo,
also ich habe das homebridgeMapping nun auf:
CurrentPosition=posstatus TargetPosition=position,invert=1,minValue=0,maxValue=100,minStep=10::position,invert=1,minValue=0,maxValue=100,minStep=10
geändert.
Jetzt kann ich sagen "Alexa fahre KNXDev runter" und er fährt in die richtige Richtung nur "ganz runter" bzw. "ganz rauf" geht noch in die falsche Richtung.
Gruß
Christian
Kann mir mal jemand bitte erklären was das :: bedeutet und warum man das braucht? Und würdest du mal ein raw (kein list) deines Rollladen Devices posten @Kohle77
Hi,
ich kann dir leider auch nicht sagen für was die :: sind.
Leider wird der status in der Alexa App auch nicht mehr richtig angezeigt wenn ich das invert=1 in dem homebridgeMapping einfüge.
Hier mal das list KNX_0301004:
Internals:
CFGFN /opt/fhem/FHEM/CFG/2_neuMi_rollos.cfg
DEF 3/1/4:dpt1.008:aufab:set:nosuffix
3/1/5:dpt1.010:stop:set:nosuffix
3/1/17:dpt5.001:posstatus:listenonly:nosuffix
3/1/16:dpt5.001:position:set:nosuffix
DEVNAME KNX_0301004
Eversion E04.20 10-01-2021
FIRSTGADNAME aufab
FUUID 5e89ca80-f33f-f555-da32-3148abd23b731b80
GETSTRING
IODev KNX
KNX_MSGCNT 96
KNX_RAWMSG C0001bw031111b
KNX_TIME 2021-01-19 08:46:18
LASTInputDev KNX
MSGCNT 96
NAME KNX_0301004
NOTIFYDEV global,TYPE=KNX
NR 87
NTFY_ORDER 50-KNX_0301004
SETSTRING aufab:up,down stop:stop,start position:slider,0,1,100
STATE 11 %
TYPE KNX
GADDETAILS:
aufab:
CODE 03104
GROUP 3/1/4
MODEL dpt1.008
NO 1
OPTION set
RDNAMEGET
RDNAMEPUT aufab
RDNAMESET aufab
SETLIST :up,down
position:
CODE 03110
GROUP 3/1/16
MODEL dpt5.001
NO 4
OPTION set
RDNAMEGET
RDNAMEPUT position
RDNAMESET position
SETLIST :slider,0,1,100
posstatus:
CODE 03111
GROUP 3/1/17
MODEL dpt5.001
NO 3
OPTION listenonly
RDNAMEGET posstatus
RDNAMEPUT posstatus
RDNAMESET
SETLIST :slider,0,1,100
stop:
CODE 03105
GROUP 3/1/5
MODEL dpt1.010
NO 2
OPTION set
RDNAMEGET
RDNAMEPUT stop
RDNAMESET stop
SETLIST :stop,start
GADTABLE:
03104 aufab
03105 stop
03110 position
03111 posstatus
OLDREADINGS:
READINGS:
2021-01-19 08:40:35 aufab down
2021-01-19 08:46:18 last-sender 0.0.27
2021-01-19 08:46:12 position 0
2021-01-19 08:46:18 posstatus 11 %
2021-01-19 08:46:18 state 11 %
2021-01-19 08:46:18 stop stop
Attributes:
DbLogExclude .*
IODev KNX
alexaName Büro Christian
alias Rollo
devStateIcon up:fts_shutter_1w_0@green down:fts_shutter_1w_100@black 9\d.*:fts_shutter_1w_100 8\d.*:fts_shutter_1w_90 7\d.*:fts_shutter_1w_80 6\d.*:fts_shutter_1w_70 5\d.*:fts_shutter_1w_60 4\d.*:fts_shutter_1w_50 3\d.*:fts_shutter_1w_40 2\d.*:fts_shutter_1w_30 1\d.*:fts_shutter_1w_20 \d.*:fts_shutter_1w_10
eventMap { dev=>{'^posstatus:.(.*)'=>'position: $1'}, usr=>{"Stop"=>"stop stop","Auf"=>"aufab up","Ab"=>"aufab down","Pos30"=>'position 30'},fw=>{'^posstatus (.*)'=>'position' } }
genericDeviceType blind
group Christian Buero
homebridgeMapping CurrentPosition=posstatus TargetPosition=position,invert=1,minValue=0,maxValue=100,minStep=10::position,invert=1,minValue=0,maxValue=100,minStep=10
room DG_MI->Buero Chris
verbose 5
webCmd Auf:Stop:Ab::Pos30:position
widgetOverride position:slider,0,10,100
Gruß
Christian
Ich habe mir mal dein Device angeschaut und nachgebaut. Was ich festgestellt habe ist, dass Alexa wohl ein Problem damit hat, wenn der Aktuelle Status in einem anderen Reading als im Absolute Position Reading steht. Selbst, wenn ich das CurrentPosition auf mein Status Reading mappe kommt in der App es nicht richtig an. Die App orientiert sich immer am TargetPosition Reading. Dadurch, dass du mittels Eventmap den aktuellen Status auf das Absolute Positions Reading mapps stimmt die Anzeige in der App mit der Wirklichkeit überein. Sobald man dieses Mapping raus nimmt und versucht zwei verschieden Readings zu nutzen, also eins für CurrentPosition und eins für TargetPosition klappt die Anzeige nicht mehr. Aber warum ist das so? Genau dafür gibt es doch eigentlich die Unterscheidung und laut Log liest Alexa ja auch in den beiden Readings die richtigen Werte, wie ich es oben geschrieben habe.
was das :: bedeutet
Was ich bisher mitgenommen habe (das ist nicht viel und kann mich auch irren)
minStep=10::position
ist nur die Abkürzung von
minStep=10,cmd=position
Bei Alexa ist auf 100 und zu 0, wenn das so ist das bei KNX oben 0 und unten 100 ist und dann mit invert=1 arbeitet, dann werded ihr nie einen korrekten Status in der App angezeigt bekommen und korrekt per Sprache steuern können.
Eines von beiden geht dann halt nicht, das ist das was ich bezüglich diesem Thema bisher mitgenommen habe und Justme1968 schon oft erwähnt hat.
Ok,
ich habe verstanden das ich auf die Anzeige verzichten muss wenn ich invert=1 verwenden muss.
Was mir aber noch immer nicht klar ist warum der Rolladen in die richtige Richtung fährt wenn ich sage
ZitatAlexa fahre KNXDev runter
aber wenn ich sage
ZitatAlexa fahre KNXDev ganz runter
eben ganz nach oben fährt.
Wie vorher schon gesagt ist mir die Anzeige der Position in der Alexa App egal.
Gruß
Christian
Hallo,
ich habe jetzt mal ein wenig getestet. Hierzu lösche ich das Gerät immer in der Alexa App, ändere das homebridgeMapping und mache aus der FHEM Gui immer ein "set Alexa restart".
#### erster Fall ohne invert ####
Ohne Invert also mit dem homebridgeMapping
ZitatCurrentPosition=posstatus TargetPosition=position::position
Ich sage
ZitatAlexa fahre KNXDev ganz runter
aber der Rolladen fährt hoch und die Anzeige in der Alexa App funktioniert.
Ich sage
ZitatAlexa fahre KNXDev runter
aber der Rolladen fährt 10% hoch
Beim Scan der Alexa devices bekommen ich:
found 32 device(s)
<--snipped--->
{"endpointId":"","manufacturerName":"KNX",
"description":"n: KNX_0301004, r: dg_mi->buero chris",
"friendlyName":"büro christian",
"displayCategories":["EXTERIOR_BLIND"],
<---snipped--->
"configuration":{"supportedRange":{"minimumValue":0,"maximumValue":100,"precision":1},
"unitOfMeasure":"Alexa.Unit.Percent"},
"semantics":{"actionMappings":
[{"@type":"ActionsToDirective","actions":["Alexa.Actions.Close"],
"directive":{"name":"SetRangeValue","payload":{"rangeValue":0}}}, <<<<<<<<<<< dieser Wert scheint mir nicht richtig zu sein da ja Rolladen geschlossen = 100% ist
{"@type":"ActionsToDirective","actions":["Alexa.Actions.Open"],
"directive":{"name":"SetRangeValue","payload":{"rangeValue":100}}}, <<<<<<<<<<< dieser Wert scheint mir nicht richtig zu sein da ja Rolladen offen = 0% ist
{"@type":"ActionsToDirective","actions":["Alexa.Actions.Lower"],
"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":-10,"rangeValueDeltaDefault":false}}}, <<<< also bei Runter den aktuellen Wert -10 was ja Rolladen hoch bedeutet
{"@type":"ActionsToDirective","actions":["Alexa.Actions.Raise"],
"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":10,"rangeValueDeltaDefault":false}}}], <<<< also bei Rauf den aktuellen Wert +10 was ja Rolladen runter bedeutet
"stateMappings":[{"@type":"StatesToValue","states":["Alexa.States.Closed"],"value":0},
{"@type":"StatesToRange","states":["Alexa.States.Open"],"range":{"minimumValue":1,"maximumValue":100}}]}}]
#### zweiter Fall mit invert ####
Nun mit Invert im homebridgeMapping
ZitatCurrentPosition=posstatus TargetPosition=position::position,invert=1
Ich sage
ZitatAlexa fahre KNXDev ganz runter
aber der Rolladen fährt hoch und die Anzeige in der Alexa App funktioniert.
Ich sage
ZitatAlexa fahre KNXDev runter
aber der Rolladen fährt 10% runter
Mit Invert
found 32 device(s)
{"endpointId":"","manufacturerName":"KNX",
"description":"n: KNX_0301004, r: dg_mi->buero chris",
"friendlyName":"büro christian",
"displayCategories":["EXTERIOR_BLIND"],
"configuration":{"supportedRange":{"minimumValue":0,"maximumValue":100,"precision":1},
"unitOfMeasure":"Alexa.Unit.Percent"},
"semantics":{"actionMappings":
[{"@type":"ActionsToDirective","actions":["Alexa.Actions.Close"],
"directive":{"name":"SetRangeValue","payload":{"rangeValue":100}}}, <<<<<<<<<<< dieser Wert scheint mir richtig zu sein da ja Rolladen geschlossen = 100% ist
{"@type":"ActionsToDirective","actions":["Alexa.Actions.Open"],
"directive":{"name":"SetRangeValue","payload":{"rangeValue":0}}}, <<<<<<<<<<< dieser Wert scheint mir richtig zu sein da ja Rolladen offen = 0% ist
{"@type":"ActionsToDirective","actions":["Alexa.Actions.Lower"],
"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":10,"rangeValueDeltaDefault":false}}}, <<<< also bei Runter den aktuellen Wert +10 was ja Rolladen runter bedeutet
{"@type":"ActionsToDirective","actions":["Alexa.Actions.Raise"],
"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":-10,"rangeValueDeltaDefault":false}}}], <<<< also bei Rauf den aktuellen Wert -10 was ja Rolladen hoch bedeutet
"stateMappings":[{"@type":"StatesToValue","states":["Alexa.States.Closed"],"value":0},
{"@type":"StatesToRange","states":["Alexa.States.Open"],"range":{"minimumValue":1,"maximumValue":100}}]}}],
Jetzt ist mir schon die Idee gekommen wenn ich die Richtung am Aktor drehe. Mal sehen was da dann passiert.
Gruß
Christian
Hi,
habe ich jetzt auch getestet. Letzendlich ist dann mit invert bei
ganz rauf bzw.
ganz runter die richtige Richtung aber dann mal nur
rauf oder nur
runter und die Prozente nicht mehr.
Irgendwo ist da eine Drehung drin.
Im moment sieht es für die Richtung rauf so aus:
Zitatganz rauf & runter
und für runter
Zitatganz runter & rauf
Gruß
Christian
Hi,
wenn ich es mir so recht überlege müsste ich in der https://github.com/justme-1968/alexa-fhem/blob/master/lib/server.js (https://github.com/justme-1968/alexa-fhem/blob/master/lib/server.js)
in den Zeilen 3199-3203, genauer in Zeile 3203 minValue || 0 und maxValue || 100 setzen (für close)
und in Zeile 3213 umgedreht.
Damit müsste sich das
Zitatganz rauf
bzw.
Zitatganz runter
drehen lassen.
Ich habe die Datei auch auf dem Pi gefunden unter
Zitat/usr/local/lib/node_modules/alexa-fhem/lib/server.js
Kann ich die Werte dort einfach drehen um zu sehen was passiert?
Gruß
Christian
Wüsste nicht was dagegen spricht. Bei einem Update würde es wieder raus fliegen aber zum testen kein Problem.
Aber ist das nicht genau das, was eigentlich das Mapping machen sollte?
Hi,
irgendwie blicke ich es nicht.
Also 0% ist Offen
100% ist geschlossen
Sage ich "Alexa fahre KNXDev auf 10%" fährt er von auf 10% zu
Sage ich "Alexa fahre KNXDev runter" fährt er weitere 10% nach unten
Sage ich "Alexa fahre KNXDev ganz runter" fährt er ganz nach oben
Wenn ich also auf %te fahre passt es.
Wenn ich nur runter benutze passt auch die Richtung
Nur wenn ich ganz runter benutze fährt er in die falsche Richtung
Es muss doch möglich sein nur das ganz runter und ganz rauf umzudrehen.
Leider bringt das auch nichts die Änderung in der server.js bzw wenn man etwas später noch die Werte tauscht finde alexa das Gerät überhaupt nicht mehr.
:'(
Gruß
Christian
Hi,
ich weiß nichtz ob ich den Thread offen lassen soll.
Mir fehlt es einfach an der Zeit und es scheint damit immer wieder probleme zugeben und nicht nur mit KNX.
Vielleicht findet irgendwann jemand dazu eine Lösung.
Gruß
Christian
Lass offen, habe es auch aufgegeben. Vielleicht findet sich irgendwann einer und schließen macht keinen Sinn