alexa-fhem: amazon alexa smart home skill für fhem

Begonnen von justme1968, 05 November 2016, 23:21:32

Vorheriges Thema - Nächstes Thema

justme1968

#495
ACHTUNG: die daten unter 'interaction model' unten gelten nur für skill version 0.1.3. ab version 0.1.4 werden die daten im alexa device erzeugt. wie das geht steht hier: https://forum.fhem.de/index.php/topic,60244.msg540117.html#msg540117


also... ins unreine:

die vorhandene anleitung für den home automation skill durcharbeiten und wenn alles geht dann zusätzlich:

- bei aws lambda einen zusätzlichen trigger 'Alexa Skills Kit' einrichten

- einen zweiten skill anlegen, aber diesmal nicht homeautomation sondern custom
  und die application id des custom skill in ~/.alexa/config.json file bei applicationId eintragen

- beim 'punkt interaction model' folgendes eingeben:

  - Intent Schema:{
  "intents": [
    {
      "intent": "HelloWorldIntent"
    },
    {
      "intent": "TemperaturIntent",
      "slots": [
        {
          "name": "Device",
          "type": "FHEM_DEVICE"
        }
      ]
    },
    {
      "intent": "StatusIntent",
      "slots": [
        {
          "name": "Device",
          "type": "FHEM_DEVICE"
        },
        {
          "name": "Room",
          "type": "FHEM_ROOM"
        }         
      ]
    },   
    {
      "intent": "SwitchIntent",
       "slots": [
        {
          "name": "artikel",
          "type": "FHEM_artikel"
        },
        {
          "name": "Device",
          "type": "FHEM_DEVICE"
        },


        {
          "name": "Room",
          "type": "FHEM_ROOM"
        },         
        {
          "name": "Action",
          "type": "FHEM_SWITCH_ACTION"
        }
      ]
    },

    {
      "intent": "TemperaturenIntent"
    },
   
    {
      "intent": "RoomListIntent"
    },   
    {
      "intent": "DeviceListIntent",
      "slots": [
        {
          "name": "Room",
          "type": "FHEM_ROOM"
        }         
      ]


    },
    {
      "intent": "DeviceTypeListIntent"
    },   
   
    {
      "intent": "AMAZON.HelpIntent"
    },   
    {
      "intent": "AMAZON.CancelIntent"
    },
    {
      "intent": "AMAZON.StopIntent"
    }
  ]
}


  - Custom Slot Types:Type                Values
FHEM_DEVICE         switch | thermostat | radio | lampe
FHEM_ROOM           Bad | Esszimmer | Wohnzimmer | Schlafzimmer
FHEM_SWITCH_ACTION  an | ein | aus | um
FHEM_artikel        der | die | das | den

  bitte jeweils die eigenen räume und eigenen geräte namen eintragen.

  - Sample Utterances:HelloWorldIntent hallo
HelloWorldIntent sag hallo

StatusIntent status
StatusIntent {Device} status
StatusIntent status von {Device}
StatusIntent wie ist der status von {Device}
StatusIntent wie ist der status im {Room}
StatusIntent wie ist der status in der {Room}

SwitchIntent schalte {Device} {Action}
SwitchIntent schalte {Device} im {Room} {Action}
SwitchIntent schalte {Device} in der {Room} {Action}
SwitchIntent schalte {artikel} {Device} {Action}
SwitchIntent schalte {artikel} {Device} im {Room} {Action}
SwitchIntent schalte {artikel} {Device} in der {Room} {Action}

TemperaturenIntent temperaturen
TemperaturIntent temperatur von {Device}

RoomListIntent raumliste
DeviceListIntent geräteliste
DeviceListIntent geräteliste für {Room}
DeviceTypeListIntent typenliste


fertig. der erste der es erfolgreich eingerichtet hat darf es im wiki nachtragen :).


danach kann man dinge machen wie:
Zitatalexa, frage fhem nach dem status
alexa, frage fhem nach dem status im raum xy
alexa, frage fhem nach dem status von <gerät>
alexa, frage fhem nach dem status von <gerät> in <raum>

alexa, frage fhem nach der raumliste
alexa, frage fhem nach der geräteliste
alexa, frage fhem nach der geräteliste für <raum>

alexa, sage fhem schalte <gerät> ein|an|aus
alexa, sage fhem schalte <gerät> im <raum> ein|an|aus
und noch mehr kombinationen aus den angaben unter Sample Utterances von oben.

statt alexa, sage... und alexa, frage... kann man auch sagen alexa, starte fhem und danach (mehrfach) ohne das einleitende alexa, ... fhem:
Zitatschalte <gerät> ein|aus|an
schalte <gerät> in <raum> ein|an|aus
status von <gerät>
...

statt geräte namen kann man auch den geräte typ verwenden. mit der version von oben gehen aber nur lampe. das passt dann auf alles was genericDeviceType light hat.

in der nächsten version wird das alexa device in fhem get kommandos bekommen um den inhalt der drei interaction model felder automatisch zu erzeugen. danach kommt eine konfigurierbarkeit für eigene anfragen.

wichtige unterschiede zum homeautomation skill:
- man muss entweder sagen für welchen skill es ist (alexa, sage fhem...) oder den skill explizit starten (alexa, starte fhem)
- raum namen kommen direkt aus fhem, müssen aber in der Custom Slot Types konfiguriert werden.
- es können gleichnamige geräte in unterschiedlichen räumen angesprochen werden (radio im bad, radio im wohnzimmer, ...)
- es können statt device namen auch device typen verwendet werden.


was noch nicht geht in der hoch geladenen version:
- andere device typen als lampen
- mehr automatisch mögliche fragen und antworten

gruss
  andre

ps: bitte erst mal nur probieren wenn man sich mit der (aws lambda und skill) konfiguration halbwegs sicher fühlt und die fehler selber findet. sonst bin ich die nächsten tage mit helfen beschäftigt statt den skill fertig zu machen :)
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

bartman121

Kann mir jemand verraten wie ich einen Dimmer einbinden kann?

Ich habe einen Eltako-Dimmer, aber wenn ich den einrichte, dann kann ich nur "on,off" machen. Hat Jemand einen Tip?

Grüße

justme1968

attr <name> homebridgeMapping Brightness=<reading>,cmd=<kommando>

zeig mal ein jsonlist2 vom device.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

bartman121

hmmm, wie komme ich denn zu dem von dir besagten jsonlist?

[Fri Nov 25 2016 15:14:49 GMT+0000 (UTC)] [FHEM] homebridgeMapping: Brightness=dim,cmd=dim
[Fri Nov 25 2016 15:14:49 GMT+0000 (UTC)] [FHEM] WZ.KRON is switch
[Fri Nov 25 2016 15:14:49 GMT+0000 (UTC)] [FHEM] WZ.KRON has
[Fri Nov 25 2016 15:14:49 GMT+0000 (UTC)] [FHEM]   On [state;on,off]
[Fri Nov 25 2016 15:14:49 GMT+0000 (UTC)] [FHEM]   Brightness [dim]
  2016-11-25 15:14:49 caching: WZ.KRON-state: on
  2016-11-25 15:14:49 caching: WZ.KRON-dim: 60


"alexa, stelle Kronleuchter 70%" führt zu "diesen Befehl gibt es für dieses Gerät nicht!"

justme1968

nach dem mapping ein reload machen oder alexa-fhem neu starten und dann die geräte suche neu starten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

bartman121

habe ich erstmal gemacht, geht trotzdem erstmal nicht, wie erstelle ich die json list?

justme1968

mit dem jsonlist2 kommando.

zeig mal die antwort auf die geräte suche. steht auf der alexa-fhem konsole.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

bartman121

hier erstmal die jsonlist vom Dimmer:
{
    "Name":"WZ.KRON",
    "PossibleSets":"dim:slider,0,1,100 local:learn on:noArg off:noArg teach:noArg on-for-timer on-till off-for-timer on-till-overnight blink toggle off-till-overnight intervals off-till",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 IODev do_not_notify:1,0 ignore:0,1 dummy:0,1 showtime:1,0 actualTemp angleMax:slider,-180,20,180 alarmAction angleMin:slider,-180,20,180 angleTime setCmdTrigger:man,refDev blockUnknownMSC:no,yes blockMotion:no,yes blockTemp:no,yes blockDisplay:no,yes blockDateTime:no,yes blockTimeProgram:no,yes blockOccupancy:no,yes blockSetpointTemp:no,yes blockFanSpeed:no,yes blockKey:no,yes comMode:confirm,biDir,uniDir creator:autocreate,manual daylightSavingTime:supported,not_supported dataEnc:VAES,AES-CBC defaultChannel:all,input,0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20,21,22,23,24,25,26,27,28,29 demandRespAction demandRespRefDev demandRespMax:A0,AI,B0,BI,C0,CI,D0,DI demandRespMin:A0,AI,B0,BI,C0,CI,D0,DI demandRespRandomTime demandRespThreshold:slider,0,1,15 demandRespTimeoutLevel:max,last destinationID devChannel devMode:master,slave devUpdate:off,auto,demand,polling,interrupt dimMax dimMin dimValueOn disable:0,1 disabledForIntervals displayContent:default,humidity,off,setpointTemp,tempertureExtern,temperatureIntern,time,no_change displayOrientation:0,90,180,270 eep gpDef gwCmd:blindCmd,controlVar,dimming,fanStage,setpointBasic,setpointShift,switching humitity humidityRefDev keyRcv keySnd macAlgo:no,3,4 measurementCtrl:disable,enable manufID:000,001,002,003,004,005,006,007,008,009,00A,00B,00C,00D,00E,00F,010,011,012,013,014,015,016,017,018,019,01A,01B,01C,01D,01E,01F,020,021,022,023,024,025,026,027,028,029,02A,02B,02C,02D,030,031,032,033,034,035,036,038,039,03A,03C,03E,03F,040,041,043,045,046,049,7FF model:other,FAE14,FHK14,FHK61,FSA12,FSB14,FSB61,FSB70,FSM12,FSM61,FT55,FTS12,TF,tracker observe:on,off observeCmdRepetition:1,2,3,4,5 observeErrorAction observeInterval observeLogic:and,or observeRefDev pidActorErrorAction:errorPos,freeze pidActorCallBeforeSetting pidActorErrorPos pidActorLimitLower pidActorLimitUpper pidCtrl:on,off pidDeltaTreshold pidFactor_D pidFactor_I pidFactor_P pidIPortionCallBeforeSetting pidSensorTimeout pollInterval postmasterID productID rampTime rcvRespAction releasedChannel:A,B,C,D,I,0,auto repeatingAllowed:yes,no remoteCode remoteEEP remoteID remoteManufID remoteManagement:client,manager,off rlcAlgo:no,2++,3++ rlcRcv rlcSnd rlcTX:true,false reposition:directly,opens,closes rltRepeat:16,32,64,128,256 rltType:1BS,4BS scaleDecimals:0,1,2,3,4,5,6,7,8,9 scaleMax scaleMin secMode:rcv,snd,bidir secLevel:encapsulation,encryption,off sendDevStatus:no,yes sensorMode:switch,pushbutton serviceOn:no,yes settingAccuracy:high,low setpointRefDev setpointSummerMode:slider,0,5,100 setpointTempRefDev shutTime shutTimeCloses subDef subDef0 subDefI subDefA subDefB subDefC subDefD subDefH subDefW subType:CO2Sensor.01,COSensor.01,COSensor.02,FRW,HSensor.01,PM101,actuator.01,autoMeterReading.00,autoMeterReading.01,autoMeterReading.02,autoMeterReading.03,autoMeterReading.04,autoMeterReading.05,autoMeterReading.10,baroSensor.01,blindsCtrl.00,blindsCtrl.01,contact,currentClamp.00,currentClamp.01,currentClamp.02,digitalInput.01,digitalInput.02,digitalInput.03,digitalInput.04,digitalInput.05,energyManagement.01,environmentApp,fanCtrl.00,gateway,genericProfile,heatRecovery.00,hvac.01,hvac.04,hvac.10,hvac.11,keycard,ledCtrlState.00,ledCtrlState.01,lightCtrl.01,lightCtrlState.01,lightCtrlState.02,lightSensor.01,lightSensor.02,lightSensor.03,lightSensor.04,lightSensor.05,lightTempOccupSensor.01,lightTempOccupSensor.02,lightTempOccupSensor.03,liquidLeakage,manufProfile,multiFuncSensor,multisensor.01,occupSensor.01,occupSensor.02,occupSensor.03,particlesSensor.01,radiationSensor.01,radioLinkTest,radonSensor.01,rainSensor.01,raw,remote,roomCtrlPanel.00,roomCtrlPanel.01,roomSensorControl.01,roomSensorControl.02,roomSensorControl.05,roomSensorControl.18,roomSensorControl.19,roomSensorControl.1A,roomSensorControl.1B,roomSensorControl.1C,roomSensorControl.1D,roomSensorControl.1F,roomSensorControl.20,roomSensorControl.22,shutterCtrlState.01,switch,switch.00,switch.05,switch.7F,tempCtrlState.01,tempHumiCO2Sensor.01,tempHumiSensor.02,tempHumiSensor.03,tempSensor.01,tempSensor.02,tempSensor.03,tempSensor.04,tempSensor.05,tempSensor.06,tempSensor.07,tempSensor.08,tempSensor.09,tempSensor.0A,tempSensor.0B,tempSensor.10,tempSensor.11,tempSensor.12,tempSensor.13,tempSensor.14,tempSensor.15,tempSensor.16,tempSensor.17,tempSensor.18,tempSensor.19,tempSensor.1A,tempSensor.1B,tempSensor.20,tempSensor.30,valveCtrl.00,vocSensor.01,windSensor.01,windowHandle,windowHandle.10 subTypeSet:CO2Sensor.01,COSensor.01,COSensor.02,FRW,HSensor.01,PM101,actuator.01,autoMeterReading.00,autoMeterReading.01,autoMeterReading.02,autoMeterReading.03,autoMeterReading.04,autoMeterReading.05,autoMeterReading.10,baroSensor.01,blindsCtrl.00,blindsCtrl.01,contact,currentClamp.00,currentClamp.01,currentClamp.02,digitalInput.01,digitalInput.02,digitalInput.03,digitalInput.04,digitalInput.05,energyManagement.01,environmentApp,fanCtrl.00,gateway,genericProfile,heatRecovery.00,hvac.01,hvac.04,hvac.10,hvac.11,keycard,ledCtrlState.00,ledCtrlState.01,lightCtrl.01,lightCtrlState.01,lightCtrlState.02,lightSensor.01,lightSensor.02,lightSensor.03,lightSensor.04,lightSensor.05,lightTempOccupSensor.01,lightTempOccupSensor.02,lightTempOccupSensor.03,liquidLeakage,manufProfile,multiFuncSensor,multisensor.01,occupSensor.01,occupSensor.02,occupSensor.03,particlesSensor.01,radiationSensor.01,radioLinkTest,radonSensor.01,rainSensor.01,raw,remote,roomCtrlPanel.00,roomCtrlPanel.01,roomSensorControl.01,roomSensorControl.02,roomSensorControl.05,roomSensorControl.18,roomSensorControl.19,roomSensorControl.1A,roomSensorControl.1B,roomSensorControl.1C,roomSensorControl.1D,roomSensorControl.1F,roomSensorControl.20,roomSensorControl.22,shutterCtrlState.01,switch,switch.00,switch.05,switch.7F,tempCtrlState.01,tempHumiCO2Sensor.01,tempHumiSensor.02,tempHumiSensor.03,tempSensor.01,tempSensor.02,tempSensor.03,tempSensor.04,tempSensor.05,tempSensor.06,tempSensor.07,tempSensor.08,tempSensor.09,tempSensor.0A,tempSensor.0B,tempSensor.10,tempSensor.11,tempSensor.12,tempSensor.13,tempSensor.14,tempSensor.15,tempSensor.16,tempSensor.17,tempSensor.18,tempSensor.19,tempSensor.1A,tempSensor.1B,tempSensor.20,tempSensor.30,valveCtrl.00,vocSensor.01,windSensor.01,windowHandle,windowHandle.10 subTypeReading:CO2Sensor.01,COSensor.01,COSensor.02,FRW,HSensor.01,PM101,actuator.01,autoMeterReading.00,autoMeterReading.01,autoMeterReading.02,autoMeterReading.03,autoMeterReading.04,autoMeterReading.05,autoMeterReading.10,baroSensor.01,blindsCtrl.00,blindsCtrl.01,contact,currentClamp.00,currentClamp.01,currentClamp.02,digitalInput.01,digitalInput.02,digitalInput.03,digitalInput.04,digitalInput.05,energyManagement.01,environmentApp,fanCtrl.00,gateway,genericProfile,heatRecovery.00,hvac.01,hvac.04,hvac.10,hvac.11,keycard,ledCtrlState.00,ledCtrlState.01,lightCtrl.01,lightCtrlState.01,lightCtrlState.02,lightSensor.01,lightSensor.02,lightSensor.03,lightSensor.04,lightSensor.05,lightTempOccupSensor.01,lightTempOccupSensor.02,lightTempOccupSensor.03,liquidLeakage,manufProfile,multiFuncSensor,multisensor.01,occupSensor.01,occupSensor.02,occupSensor.03,particlesSensor.01,radiationSensor.01,radioLinkTest,radonSensor.01,rainSensor.01,raw,remote,roomCtrlPanel.00,roomCtrlPanel.01,roomSensorControl.01,roomSensorControl.02,roomSensorControl.05,roomSensorControl.18,roomSensorControl.19,roomSensorControl.1A,roomSensorControl.1B,roomSensorControl.1C,roomSensorControl.1D,roomSensorControl.1F,roomSensorControl.20,roomSensorControl.22,shutterCtrlState.01,switch,switch.00,switch.05,switch.7F,tempCtrlState.01,tempHumiCO2Sensor.01,tempHumiSensor.02,tempHumiSensor.03,tempSensor.01,tempSensor.02,tempSensor.03,tempSensor.04,tempSensor.05,tempSensor.06,tempSensor.07,tempSensor.08,tempSensor.09,tempSensor.0A,tempSensor.0B,tempSensor.10,tempSensor.11,tempSensor.12,tempSensor.13,tempSensor.14,tempSensor.15,tempSensor.16,tempSensor.17,tempSensor.18,tempSensor.19,tempSensor.1A,tempSensor.1B,tempSensor.20,tempSensor.30,valveCtrl.00,vocSensor.01,windSensor.01,windowHandle,windowHandle.10 summerMode:off,on switchMode:switch,pushbutton switchHysteresis switchType:direction,universal,channel,central teachMethod:1BS,4BS,confirm,GP,RPS,smartAck,STE,UTE temperatureRefDev temperatureScale:C,F,default,no_change timeNotation:12,24,default,no_change timeProgram1 timeProgram2 timeProgram3 timeProgram4 trackerWakeUpCycle:30,60,3600,86400 updateState:default,yes,no uteResponseRequest:yes,no wakeUpCycle:660,90,1410,720,600,1320,43200,1050,180,780,54000,151200,1200,1020,240,690,21600,10,1350,1290,330,480,140400,1380,86400,990,360,1140,97200,210,540,930,1500,60,750,510,118800,64800,1080,570,1110,300,1440,120,870,1230,450,1470,960,150,32400,108000,10800,75600,420,900,1170,840,630,129600,390,1260,810,270 event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading DbLogExclude DbLogInclude cmdIcon devStateIcon devStateStyle genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd widgetOverride userattr",
    "Internals": {
      "DEF": "0193FD57",
      "LASTInputDev": "TCM_ESP3_0",
      "MSGCNT": "4",
      "NAME": "WZ.KRON",
      "NR": "82",
      "NTFY_ORDER": "50-WZ.KRON",
      "STATE": "60",
      "TCM_ESP3_0_DestinationID": "FFFFFFFF",
      "TCM_ESP3_0_MSGCNT": "4",
      "TCM_ESP3_0_PacketType": "1",
      "TCM_ESP3_0_RSSI": "-68",
      "TCM_ESP3_0_ReceivingQuality": "excellent",
      "TCM_ESP3_0_RepeatingCounter": "0",
      "TCM_ESP3_0_SubTelNum": "3",
      "TCM_ESP3_0_TIME": "2016-11-25 16:22:17",
      "TYPE": "EnOcean"
    },
    "Readings": {
      "block": { "Value":"unlock", "Time":"2016-11-25 16:22:15" },
      "dim": { "Value":"60", "Time":"2016-11-25 16:22:17" },
      "dimValueLast": { "Value":"60", "Time":"2016-11-25 16:22:17" },
      "dimValueStored": { "Value":"56", "Time":"2016-11-25 07:03:31" },
      "rampTime": { "Value":"0", "Time":"2016-11-25 16:22:17" },
      "state": { "Value":"on", "Time":"2016-11-25 16:22:17" }
    },
    "Attributes": {
      "IODev": "TCM_ESP3_0",
      "alias": "Kronleuchter",
      "comMode": "biDir",
      "dimValueOn": "60",
      "eep": "A5-38-08",
      "genericDeviceType": "switch",
      "group": "Strom",
      "gwCmd": "dimming",
      "homebridgeMapping": "Brightness=dim,cmd=dim",
      "manufID": "00D",
      "room": "MAX,Wohnzimmer,alexa",
      "stateFormat": "dim",
      "subType": "gateway",
      "webCmd": "on:off:48:56:60:70:90"
    }
 


Das hier kommt in der Konsole, wenn ich die Geräte suche:
**** Received Directive: {"header":{"namespace":"Alexa.ConnectedHome.Discovery","name":"DiscoverAppliancesRequest","payloadVersion":"2","messageId":"1df66dc9-ee72-4c7b-ae02-ad427f41f0f0"},"payload":{"accessToken":"Atza|IwEBIEO7byA2rd4emQo09QQ9P1dHORvuem_UTCwXkggrF2b3OTiGLA-Tt5uIPqoS1sVRpkHdxWDAxo23IpjNUrWo6FlgP-l__E6yO6ynXqpw8vAEOKQgmWb5vdZyDuzf8PDb6AnrbKE3kBFRcZLgge_y70ubn6Jdaq3PcOtrlvrEQt2Aq-8MJyQLk5g0GASpZjFoskM0251EeuboX5yhNd70rAhCgcCV82kZR1uUz6BAVzHETsHFEBbZnTsQtAPfl7dwSG1SnMSXTWw39LnmJFf4xcyolsp1VY2c_dB6rzHPBU05pEENOce07orTXxAVDanJEJHd61CswbVpVzEYjsfFC1of8o0U8QVCDJnDGkR_LggNz8Cpj08J2g9A8Khv3PuTN5NnNvtokciIbHw-KKjkhjeWhY2PquspKDqnEeAbpDxbufLvbY2dcpQy6lVrOHMSVA9-PORbtOwelQLrUL1-rl4JRiRVDe1dGwirbEr5zppHBQQppEvbEommTuOToNsBerE"}}
response :{"header":{"name":"DiscoverAppliancesResponse","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Discovery","messageId":"10e2bae0-8861-48ac-b96a-49280abb9d81"},"payload":{"discoveredAppliances":[{"applianceId":"EnOcean_0193FD57","manufacturerName":"FHEMEnOcean","modelName":"FHEM<unknown>","version":"<unknown>","friendlyName":"Kronleuchter","friendlyDescription":"name: WZ.KRON, alias: Kronleuchter, room: MAX,Wohnzimmer,alexa","isReachable":true,"actions":["turnOn","turnOff","setPercentage","incrementPercentage","decrementPercentage"],"additionalApplianceDetails":{"device":"WZ.KRON"}},{"applianceId":"WZ_TV","manufacturerName":"FHEMdummy","modelName":"FHEM<unknown>","version":"<unknown>","friendlyName":"Fernseher","friendlyDescription":"name: WZ.TV, alias: Fernseher, room: alexa,MAX,Wohnzimmer","isReachable":true,"actions":["turnOn","turnOff"],"additionalApplianceDetails":{"device":"WZ.TV"}}]}}

bartman121


BobbyD

Hallo,

ich bin begeistert wie das mit der alexa funktioniert. Ich benutze unter FHEM viele selbst gebaute Sensoren von MySensors. Aktuell habe ich einen im Bad, bei dem ich die RGB Werte von einer LED Leiste ändern kann.
Diese Leiste ist auch dimmbar. 
Schalten habe ich hinbekommen nur dimmen irgednwie nicht. Der Sensor liefert auch noch Temp und Feuchtifkeit zurück. wäre schön wenn ich das in einem Statusbericht von alexa angesagt bekommen würde.
z.B. Wenn ich sage, Alexa, wie ist der Status vom Bad.
Aber ich würde gerne die Dim-funktion erstmal nutzen wollen.

Hier mal die Jsonlist von dem Sensor:
"Name":"BadNode",
    "PossibleSets":"power1:1 power6:1 reboot rgb1:1 status6:on,off time value15:1 value25:1 value35:1 value45:1 value55:1",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 config:M,I mode:node,repeater version:1.4 setCommands setReading_.+ mapReadingType_.+ mapReading_.+ requestAck:1 IODev showtime:0,1 event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading DbLogExclude DbLogInclude alexaName cmdIcon devStateIcon devStateStyle genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd widgetOverride userattr",
    "Internals": {
      "DEF": "100",
      "NAME": "BadNode",
      "NR": "56",
      "STATE": "???",
      "TYPE": "MYSENSORS_DEVICE",
      "ack": "0",
      "protocol": "2.0.1-beta",
      "radioId": "100",
      "repeater": "0"
    },
    "Readings": {
      "SKETCH_NAME": { "Value":"BadNode3", "Time":"2016-10-17 10:17:20" },
      "SKETCH_VERSION": { "Value":"v1.21", "Time":"2016-10-17 10:17:20" },
      "humidity2": { "Value":"39.1", "Time":"2016-11-25 17:02:08" },
      "parentId": { "Value":"0", "Time":"2016-10-17 10:17:20" },
      "rgb1": { "Value":"000000", "Time":"2016-11-25 16:53:59" },
      "status6": { "Value":"off", "Time":"2016-11-25 16:53:59" },
      "temperature3": { "Value":"21.8", "Time":"2016-11-25 17:00:49" },
      "tripped7": { "Value":"off", "Time":"2016-11-25 16:53:59" },
      "value15": { "Value":"30", "Time":"2016-10-17 10:26:42" }
    },
    "Attributes": {
      "IODev": "MYS_GW",
      "mapReading_humidity2": "2 humidity",
      "mapReading_power1": "1 power",
      "mapReading_power6": "6 power",
      "mapReading_rgb1": "1 rgb",
      "mapReading_status6": "6 status",
      "mapReading_temperature3": "3 temperature",
      "mapReading_tripped7": "7 tripped",
      "mapReading_value15": "5 value1",
      "mapReading_value25": "5 value2",
      "mapReading_value35": "5 value3",
      "mapReading_value45": "5 value4",
      "mapReading_value55": "5 value5",
      "mode": "node",
      "setReading_power1": "1",
      "setReading_power6": "1",
      "setReading_rgb1": "1",
      "setReading_status6": "on,off",
      "setReading_value15": "1",
      "setReading_value25": "1",
      "setReading_value35": "1",
      "setReading_value45": "1",
      "setReading_value55": "1",
      "version": "2.0.1-beta"
    }
  },


Hat schon mal jemand Sensoren vom MySensor-Device angebunden?

Danke
Bobby

dk3572

Hi,

ich benötige einen Dummy den ich per Alexa auf 0, 20, 40,...100% stellen kann.
Die Beiträge über Dummys habe ich mehrfach gelesen, ich raffe es aber nicht.
Welche Attribute muss der Dummy enthalten?

Danke schon mal im Voraus.

dk3572

ok, hat sich erledigt.
In Antwort #502 stand die Antwort  ;)

justme1968

@BobbyD: attr <name> homebridgeMapping Brightness=<reading>,cmd=<kommando>
aber scheinbar hast du kein kommando um eine helligkeit zu setzen? dann wird es schwierige. wie dimmst du aktuell aus fhem heraus?

setz mal genericDeviceType auf light und schau ob das eventuell schon reicht.

ansonsten schau dir mal das farbige lampen beispiel aus der fhem.cfg.demo an. wenn du so einen readingsProxy etwas abwandelst und auf deinen rgb wert los lässt müsste auch ein dim kommando rauskommen das mit alexa/homekit funktioniert.

das abfragen der ganzen anderen readings kommt in den nächsten versionen des custom skills.

@dk3572: etwa so:define <name> dummy
attr <name> genericDeviceType light
attr <name> homebridgeMapping Brightness=state,minValue=0,maxValue=100,minStep=20
setreading dummy state 0


hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

BobbyD

Hallo Andre,

Danke für die schnelle Antwort. Hast recht im Bad habe ich das dimmen momentan gar nicht drin. Da ich ständig an der Firmware für die Nodes bastel, war das wahrscheinlich raus gefolgen  :(
Wo ich es aber habe ist im Flur.
Hier setze ich die Helligkeit mit dem Wert "percentage"
{
    "Name":"FlurNode",
    "PossibleSets":"percentage:slider,0,1,100 power:1 reboot status:on,off time",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 config:M,I mode:node,repeater version:1.4 setCommands setReading_.+ mapReadingType_.+ mapReading_.+ requestAck:1 IODev showtime:0,1 event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading DbLogExclude DbLogInclude alexaName cmdIcon devStateIcon devStateStyle genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd widgetOverride userattr",
    "Internals": {
      "DEF": "2",
      "NAME": "FlurNode",
      "NR": "46",
      "STATE": "on",
      "TYPE": "MYSENSORS_DEVICE",
      "ack": "0",
      "protocol": "2.0.1-beta",
      "radioId": "2",
      "repeater": "0"
    },
    "Readings": {
      "percentage": { "Value":"37", "Time":"2016-11-25 18:22:04" },
      "status": { "Value":"on", "Time":"2016-11-25 18:22:04" },
      "tripped1": { "Value":"off", "Time":"2016-11-25 18:14:06" }
    },
    "Attributes": {
      "IODev": "MYS_GW",
      "alexaName": "flur",
      "alias": "Flur",
      "genericDeviceType": "light",
      "homebridgeMapping": "Brightness=percentage,minValue=0,maxValue=100,minStep=20",
      "mapReading_armed1": "1 armed",
      "mapReading_percentage": "0 percentage",
      "mapReading_power": "0 power",
      "mapReading_status": "0 status",
      "mapReading_tripped1": "1 tripped",
      "mode": "node",
      "room": "Alexa",
      "setReading_percentage": "slider,0,1,100",
      "setReading_power": "1",
      "setReading_status": "on,off",
      "stateFormat": "status",
      "version": "2.0.1-beta"
    }
  },


Das homemaping habe ich eingebunden. Alexa erkennt das jetzt auch, aber es kommt im Los folgendes zurück:
... "appliance":{"applianceId":"FlurNode","additionalApplianceDetails":{"device":"FlurNode"}},"percentageState":{"value":40}}}
[2016-11-25 18:23:04] [FHEM] FlurNode: executing set cmd for Brightness with value 40
[2016-11-25 18:23:04] [FHEM]   executing: http://192.168.1.102:8083/fhem?cmd=set%20FlurNode%20undefined%2040&XHR=1


Irgendwie kommt hier "percentageState" zurück. Das reading heisst aber nur "percentage". Darum kann FHEM damit nichts anfangen. Denke ich mal.

Wo könnte ich noch einen Fehler haben?

Danke

justme1968

percentageState ist das was alexa dem skill sendet. das ist ok. das problem ist das undefiniert im set kommando das der skill an fhem sendet und das kommt daher weil du im mapping  den ,cmd=<kommando> teil nicht mit drin hast und der skill so nicht weiss welches kommando er verwenden soll.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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