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

liege seit ein paar tagen mit einer ziemlichen erkältung auf der nase. deshalb nur kurz ein paar antworten. mehr wenn ich wieder fit bin...

@rolf: vermutlich ist dein aktor falsch rum angeschlossen. bei hm (und bei homekit und alexa-fhem) bedeutet 100 offen und 0 zu. für UNIROLL musst du das homebridgeMapping selber bauen.

@jvollmer: das mit dem batteriestand muss ich mir anschauen.

@Diggewuff: und was genau findest du unkomfortabel?

@dieda: die anleitung ist so vollständig und präzise das es mindestens eine dreistellige anzahl von anwendern damit geschafft hat. wenn du konkrete fragen, vorschläge oder probleme hast: gerne im thread zu den installationsproblemen. oder selber im wiki verbessern. ansonsten: alles was im wiki steht ist wichtig. was dort nicht steht ist nicht wichtig. wie z.b. der pfad wo alles hin soll. von einem Alexa verzeichniss ist nirgendwo die rede. nur von ~/.alexa das man anlegen soll.

@dl6kbg: in der nächsten version sind die anfragen bzw. antworten konfigurierbar. d.h. quelltext änderungen sind nicht mehr nötig. für die windgeschwindigkeit kannst du dir einfach eine uuid ausdenken und genau so verwenden.

@pah: die aws lambda und auch skill konfigurations seiten bei amazon sind leider recht eigen. syntax fehler im aws lambda code sieht man am besten am kleinen roten punkt neben der zeilennummer im editor. nicht an den tatsächlichen log meldungen.

@vbs: laut log kommt eine anfrage rein und die antwort geht auch raus. schau im cloud watch log ob da mehr zu sehen ist.

@Tommy82: so etwas ist besser innerhalb von fhem gelöst als im mapping. z.b. mit einem readingsProxy statt dem dummy der dann beide geräte steuert oder mit einer structure.

@baukater: tür- und fensterkontakte lassen sich nicht steuern und werden deshalb aktuell ignoriere. in der nächsten version sind auch die status anfragen bzw. antworten konfigurierbar. dann kannst du sie auch ohne quelltextänderung verwenden.

@Stefan M.: deine node version ist zu alt.

@vbs: GitHub und npmjs gibt es sobald ich alexa-fhem und homebridge-fhem wieder zusammengefasst habe. vorher bringt das nur noch mehr aufwand.


ansonsten: die nächste version kommt (hoffentlich) gegen ender der nächsten woche. die wichtigste änderung wird sein das ein fhemIntent direkt eine fhem oder perl routine aufrufen kann die dann auch den antworttext zurückgeben kann. d.h. z.b. über ein 'get ...' einen wert auslesen oder über {return xyz} eine antwort geben kann.

gruss
  andre

ps: weiter oben im thread gab es die frage ob man alexa nach einem kommando stumm lassen kann. das geht nur bedingt. wenn ein skill keinen antwort gibt wird der skill beendet. d.h. es geht nur für 'alexa, sage fhem xyz' kommandos, aber nicht für 'alexa, starte fhem. xyz. abc'. d.h. nicht wenn man den skill explizit startet um dann mehrere kommandos anzusetzen.

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

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

dl6kbg

Vielen Dank und gute Besserung!


Gesendet von iPhone mit Tapatalk

kobza

Hallo,

ich versuche es noch mal (sehe unten)

Ich habe immer noch das Problem mit dem FHEM_hsv2rgb.
Ich schaffe es nicht mit dem fhem (oder alexa, homebdige?) heligkeit (satt RGB) Komando zu senden...

Danke
Thomas

Zitat von: kobza am 28 Januar 2017, 15:23:50
Hi,

bin neu hier, habe das FHEM wegen ALEXA installiert.
So weit läuft alles, erst mal mit dem Smart Home Skill.

Ich habe allerdings Probleme mit meinem KNX Dimmer.

Folgende Definition benutze ich im Moment:

define EG_WZ_Licht_Esstisch KNX 0/1/60:dpt5.001:dimmen-absolut 0/1/6:dpt1:schalten 10/1/60:dpt5.001:status-dimmen 10/1/6:dpt1:status-schalten
attr EG_WZ_Licht_Esstisch IODev KNX
attr EG_WZ_Licht_Esstisch genericDeviceType switch
attr EG_WZ_Licht_Esstisch event-on-change-reading .*
attr EG_WZ_Licht_Esstisch eventMap /on g2:on/off g2:off
attr EG_WZ_Licht_Esstisch room EG,Wohnzimmer,alexa
attr EG_WZ_Licht_Esstisch slider 0,1,100
attr EG_WZ_Licht_Esstisch stateCmd {sprintf("%s", ReadingsVal($name,"status-dimmen-get",""))}
attr EG_WZ_Licht_Esstisch webCmd on::off::value
attr EG_WZ_Licht_Esstisch homebridgeMapping Brightness=dim::dim


Soweit funktionierrt alles im FHEM ich kann die Lampe Ein- und Ausschalten sowie Dimmen.

Mit Alexa kriege ich nur das ON/OFF...

[2017-01-28 15:14:03] [FHEM] homebridgeMapping: Brightness=dim::dim
[2017-01-28 15:14:03] [FHEM] EG_WZ_Licht_Esstisch is switch
[2017-01-28 15:14:03] [FHEM] EG_WZ_Licht_Esstisch has
[2017-01-28 15:14:03] [FHEM]   Hue [rgb;rgb;0-359]
[2017-01-28 15:14:03] [FHEM]   Saturation [rgb;rgb;0-100]
[2017-01-28 15:14:03] [FHEM]   Brightness [dim]
[2017-01-28 15:14:03] [FHEM]   On [state;on,off]


Merkwürdig die Hue, Saturation Ausgabe ... ich habe keine Ahnnung wie das reingekommen ist.
Ich denke ganz am Anfang nach der installation hatte ich nur on/off...

Wenn ich jetzt z.B. auf 50% Dimmen möchte kirge ich folgende Ausgabe:


[2017-01-28 15:22:45] [FHEM] EG_WZ_Licht_Esstisch: executing set cmd for Brightness with value 50
[2017-01-28 15:22:45] [FHEM] EG_WZ_Licht_Esstisch-dim homekit2reading: ReferenceError: FHEM_hsv2rgb is not defined


Für weitere Hilfe wäre ich sehr dankbar.

Gruß
Thomas

Prof. Dr. Peter Henning

#1758
So, ich habe zwei konkrete Beispiele (einfacher Schalter und Wecker im Wiki hinzugefügt), ein Beispiel für Radiobuttons folgt noch.

Weitere exemplarische Beispiele nehme ich gerne entgegen: Definitionen dieser Geräte in FHEM, nötige Einträge bei alexaMapping und ggf. in server.js. Es gibt diverse solche Beispiel auf den vorigen 117 Seiten dieses Threads - ich wäre aber dankbar, wenn mir die jeweiligen Anwender in einer PM die Informationen (oder mindestens Links auf die entsprechenden Posts) in kondensierter Form zukommen ließen.

LG

pah

André: Gute Besserung.

rolf

@dl6kbg

Hallo,
bin gerade genau an der Stelle mit einem Schliesserkontakt - aber bekomme es einfach nicht hin das der Text korrekt gemeldet wird,
obwohl ich o.g. Zeilen bei mir in die  Server.js übernommen habe in der STATUSINTENT-Funktion.

Alexa meldet den korrekten Status - aber eben mit den englischen Begriffen "hat den status closed", bzw. "hat den status open".

Alexa-fhem wurde neu gestartet - fhem wurde neu gestartet - Kontakt wird von alexa-fhem als Kontakt erkannt - Homebridgemapping ist drin - aber leider immer noch die Meldung "hat den status closed"

Bitte einen Tip !
System 1: Intel NUC (ubuntu 18.04.1 lts) mit diversen Homematic-Komponenten + CUNO mit Uniroll/Hoermann + RFXTRX mit TFA + EnOcean mit Eltako + Alexa + Harmony + per HMCCU gekoppelter PI3-Raspberrymatic mit HM-IP-Komponenten
System 2: PI2-Raspberry (Jessie) + Signalduino mit Somfy/RTS

baukater

Der Thread ist ja inzwischen sehr unübersichtlich geworden.

Ich möchte gerne über Customskills noch meine Lüftungsanlage (per Modbus angeschlossen) und außerdem noch die Xiaomi Pflanzensensoren abfragen können.

Ich finde hier immer nur Fragmente von Einrichtungen. Gibt es irgendwo ein kleines walkthrough, wie man das grundsätzlich aufbaut?

Das gleiche auch für einen Philips TV.
FB7490,Raspi 2/3,HM-Lan,Jeelink Classic (868),Logilink BT0015 Bluetooth 4.0, 2x mySmartUSB light,RS485USB , entities:272 device:14 channel:27 virtual:1, 6 x HM-LC-BL1-FM,4 x HM-LC-SW4-WM, 1 x HM-LC-SW2-FM,1 x Fensterkontakt,1 1x Türkontakt, 1 1x Bewegungsmelder, DECT-200,DECT100,6xAuthentic Xiaom

rolf

@dl6kbg

erledigt - habs gerade gefunden - ich war in der falschen server.js  :-\
System 1: Intel NUC (ubuntu 18.04.1 lts) mit diversen Homematic-Komponenten + CUNO mit Uniroll/Hoermann + RFXTRX mit TFA + EnOcean mit Eltako + Alexa + Harmony + per HMCCU gekoppelter PI3-Raspberrymatic mit HM-IP-Komponenten
System 2: PI2-Raspberry (Jessie) + Signalduino mit Somfy/RTS

rolf

@justme1968

Danke für den Tip betreffs Homematic-Aktor - schau ich mir an.

Ansonsten natürlich gute Besserung !!! - habe das gleiche Elend in den letzten Tagen durchgemacht....
System 1: Intel NUC (ubuntu 18.04.1 lts) mit diversen Homematic-Komponenten + CUNO mit Uniroll/Hoermann + RFXTRX mit TFA + EnOcean mit Eltako + Alexa + Harmony + per HMCCU gekoppelter PI3-Raspberrymatic mit HM-IP-Komponenten
System 2: PI2-Raspberry (Jessie) + Signalduino mit Somfy/RTS

jvollmer

Zitat von: justme1968justme1968 am 04 Februar 2017, 18:49:14
liege seit ein paar tagen mit einer ziemlichen erkältung auf der nase. deshalb nur kurz ein paar antworten. mehr wenn ich wieder fit bin...
..........
@jvollmer: das mit dem batteriestand muss ich mir anschauen.
..............
.... erstmal gute Besserung.
Es scheint irgendwas in der server.js nicht zu stimmen. Wenn ich dort statt ...
Zitatstate += 'der Batteriestand ist '+ (device.fhem.cached(device.mappings.StatusLowBattery.informId)?'niedrig':'in ordnung');
          }   
schreibe
Zitatif (..... StatusLowBattery.informId)=='ok'){state+='in ordnung'}
else {state+='niedrig'}; 
dann funktioniert es wie es soll??!!
@justme1968 .... scheint irgendein mapping nicht zu funktionieren?

dl6kbg

#1764
Zitat von: rolf am 04 Februar 2017, 19:42:01
@dl6kbg

Alexa meldet den korrekten Status - aber eben mit den englischen Begriffen "hat den status closed", bzw. "hat den status open".


Hi rolf !

Das ist doch schon einmal gut.

im Ordner alexa-fhem/lib

1. Kopiere die server.js nach server.js.old zur Sicherheit.

Füge das Folgende in die Funktion StatusIntent ein:


if( device.mappings.ContactSensorState ) {
if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
state += 'ist '+ (device.fhem.cached(device.mappings.ContactSensorState.informId)?'geschlossen':'offen');
}


Ist ziemlich weit unten. Du kannst die deutschen Worte auch durch Deine ersetzen.

Grüße, Oliver

rolf

Hallo Oliver,

habs hinbekommen - funktioniert  :)

Danke nochmal !!
System 1: Intel NUC (ubuntu 18.04.1 lts) mit diversen Homematic-Komponenten + CUNO mit Uniroll/Hoermann + RFXTRX mit TFA + EnOcean mit Eltako + Alexa + Harmony + per HMCCU gekoppelter PI3-Raspberrymatic mit HM-IP-Komponenten
System 2: PI2-Raspberry (Jessie) + Signalduino mit Somfy/RTS

dl6kbg

Zitat von: rolf am 04 Februar 2017, 21:12:47
habs hinbekommen - funktioniert  :)
Danke nochmal !!

Perfekt Rolf. Schönen Abend !

Oliver

Stefan M.

Hallo zusammen
es schaut auch bei mir so aus als würde es funktionieren nachdem ich nodejs aktualisiert habe.
node -v bringt nun V4.2.1

Im Logfile ist mir dies noch aufgefallen. Ist das eine Fehlermeldung oder nur ein Hinweis auf was.

Wenn es ein Hinweis ist was bedeutet er ?

Zitat
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] { stelle: 'gestellt',
  schalte: 'geschaltet',
  'färbe': 'gefärbt',
  mach: 'gemacht' }
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] [ OnIntent: [ 'schalte' ],
  prozentIntent: [ 'stelle' ],
  HueIntent: [ 'stelle' ],
  HueIntentB: [ 'färbe' ],
  SaturationIntent: [ 'stelle' ],
  SaturationIntentB: [ 'sättige' ],
  TargetPositionIntent: [ 'mach' ],
  gradIntent: [ 'stelle' ] ]
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] { OnIntent: [ 'On' ],
  prozentIntent: [ 'Brightness', 'TargetPosition', 'Volume' ],
  HueIntent: [ 'Hue' ],
  HueIntentB: [ 'Hue' ],
  SaturationIntent: [ 'Saturation' ],
  SaturationIntentB: [ 'Saturation' ],
  TargetPositionIntent: [ 'TargetPosition' ],
  gradIntent: [ 'TargetTemperature' ] }
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] { OnIntent: undefined,
  prozentIntent: 'auf',
  HueIntent: 'auf',
  HueIntentB: undefined,
  SaturationIntent: 'auf',
  SaturationIntentB: undefined,
  TargetPositionIntent: undefined,
  gradIntent: 'auf' }
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] { OnIntent: undefined,
  prozentIntent: 'prozent',
  HueIntent: undefined,
  HueIntentB: undefined,
  SaturationIntent: undefined,
  SaturationIntentB: undefined,
  TargetPositionIntent: undefined,
  gradIntent: 'grad' }
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] { light: [ 'licht', 'lampen' ],
  blind:
   [ 'rolladen',
     'rolläden',
     'jalousie',
     'jalousien',
     'rollo',
     'rollos' ] }
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] { FHEMgutenMorgenIntent: 'gutenMorgen',
  FHEMguteNachtIntent: 'guteNacht' }
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] [FHEM] got: 4 results
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] [FHEM] Alexa.lampe1 is switch
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] [FHEM] Alexa.lampe1 has
[Sat Feb 04 2017 21:32:38 GMT+0100 (CET)] [FHEM]   On [undefined;on,off]
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM] Alexa.lampe2 is switch
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM] Alexa.lampe2 has
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM]   On [undefined;on,off]
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM] Alexa.lampe3 is switch
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM] Alexa.lampe3 has
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM]   On [undefined;on,off]
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM] Alexa.lampe4 is switch
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM] Alexa.lampe4 has
[Sat Feb 04 2017 21:32:39 GMT+0100 (CET)] [FHEM]   On [undefined;on,off]
FHEM auf 3 x RaspberryPi, 1 x Fritzbox,1 x Win. FS20 über CUL, HomeMatic über HMLan, 6 x  HM_CC_RT_DN,2 x HM_LC_BL1_FM,3 x HM_SEC_KEY,2 x HM_RC_Key4_2,7 x HM_SEC_SC,1 x HM_SEC_WDS,1 x HM_Sen_RD_O, 1x HM_Sen_Wa_Od,2 x HM_RC_Key4_2, 5 x HM-ES-PMSw1-Pl,1 x HM_LC_SW4_WM,1 x HM_SCI_3_FM

dl6kbg

Zitat von: justme1968 am 04 Februar 2017, 18:49:14
@dl6kbg: in der nächsten version sind die anfragen bzw. antworten konfigurierbar. d.h. quelltext änderungen sind nicht mehr nötig. für die windgeschwindigkeit kannst du dir einfach eine uuid ausdenken und genau so verwenden.

Das funktioniert. Habe jetzt zwei homebrigde-mappings im Device:


{
  "Arg":"Aussensensor",
  "Results": [
  {
    "Name":"Aussensensor",
    "PossibleSets":" ",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 readingList setList useSetExtensions disable disabledForIntervals event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading alexaName alexaRoom cmdIcon devStateIcon devStateStyle genericDeviceType:switch,outlet,light,blind,speaker,thermostat homebridgeMapping:textField-long icon sortby webCmd widgetOverride userattr",
    "Internals": {
      "NAME": "Aussensensor",
      "NR": "412",
      "STATE": "???",
      "TYPE": "dummy"
    },
    "Readings": {
      "humidity": { "Value":"99.9", "Time":"2017-02-04 23:26:03" },
      "pressure": { "Value":"1002.31", "Time":"2017-02-04 23:26:03" },
      "temperature": { "Value":"2.9", "Time":"2017-02-04 23:26:03" },
      "wind": { "Value":"0.00", "Time":"2017-02-04 22:36:14" }
    },
    "Attributes": {
      "alexaName": "wetterstation",
      "alexaRoom": "dach",
      "event-on-change-reading": ".*",
      "genericDeviceType": "thermometer",
      "homebridgeMapping": "E863F10F-079E-48FF-8F27-9C2605A29F52=pressure,name=AirPressure,format=UINT8\u000aA863F19D-379E-45FF-8F27-9C2605A29F52=wind,name=Windgeschwindigkeit,format=UINT8",
      "room": "Haus,alexa"
    }
  }  ],
  "totalResultsReturned":1
}


und in lib/server.js:


if( device.mappings['A863F19D-379E-45FF-8F27-9C2605A29F52'] ) {
if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
state += 'die Windgeschwindigkeit beträgt '+ device.fhem.cached(device.mappings['A863F19D-379E-45FF-8F27-9C2605A29F52'].informId).replace('.',',') +' Kilometer pro Stunde';
}


und das ergibt dann die vollständige Ausgabe der DIY Wetterstation aus BMP180, DHT22, und Eltako WS100 Windsensor:


wetterstation  misst 3,0 Grad und der Luftdruck beträgt 1002,34 Hectopascal und die Windgeschwindigkeit beträgt 0,00 Kilometer pro Stunde und die Luftfeuchtigkeit beträgt 99,9 Prozent


Perfekt. Bis auf die ganzen "und"'s aber das ist hier ja auch ein spezieller Fall.

Grüße, Oliver

vbs

Ich hab es nun soweit eingerichtet, dass der SmartHome-Skill funktioniert. Ich habe gerade so ein bisschen Schwierigkeiten mich in die FHEM-Logik einzufinden. Sprich: welche Attribute gibt es und wie funktionieren sie (und welche sind nur für den CustomSkill relevant)? Welche Sprachbefehle gibt es eigentlich (und hängen die vom genericDeviceType ab)?
Das "genericDeviceType" scheint wichtig zu sein, aber ich konnte noch keine wirkliche Erklärung dazu finden. Wenn ich jetzt mein HM-Thermostat per "genericDeviceType" auf "thermostat" gestellt. Kann ich jetzt rausfinden, welche Sprachbefehle ich da nun benutzen kann?
Wäre sehr dankbar, wenn mich jemand mit ein paar Links in die richtige Richtung schubsen könnte, danke!