Hauptmenü

KNX Rolladen und Alexa

Begonnen von Kohle77, 19 Dezember 2020, 12:15:30

Vorheriges Thema - Nächstes Thema

justme1968

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.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Kohle77

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


justme1968

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..
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Kohle77

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.

Kohle77

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

Kohle77

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":{}}}

Amenophis86

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.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Kohle77

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

Amenophis86

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.
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Amenophis86

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?
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

Kohle77

Guten morgen,
nachdem ich jetzt von erwin in 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


TomLee

Versuch mal obs was bringt das Device in der App zu löschen und dann nach einem restart/neue Suche mit invert=1 klappt ?

Kohle77

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

Amenophis86

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
Aktuell dabei unser neues Haus mit KNX am einrichten. Im nächsten Schritt dann KNX mit FHEM verbinden. Allein zwei Dinge sind dabei selten: Zeit und Geld...

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