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

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

Vorheriges Thema - Nächstes Thema

RaspiCOC

@justme1968: Mit dem Update der 39_alexa.pm ist jetzt das Attribut alexaRoom bereitgestellt. Sehe ich das richtig, dass das hinsichtlich Alexa-FHEM, des Smart Home Skills und des Custom Skills ins Leere geht?

Wird denn Alexa-Fhem bei vorhandensein des Attributs alexaRoom den enthaltenen Wert anstelle des Attributs room verwenden? Denke, das wäre gut...

justme1968

alexaName hat vorrang vor alias hat vorrang vor name und gilt für beide skills

alexaRoom hat vorrang vor room und gilt nur für den custom skill. und erst nach dem nächsten alexa-fhem update.

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

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

prodigy7

@justme1968: Kannst du abschätzen wann das nächste Update? Bzw. kannst du mir aus dem stehgreif sagen wo ich den Code selbst anpassen kann?

justme1968

ich denke am wochenende gibt es die nächste version mit allen fixes und den konfigurierbaren anweisungen.

wenn du in lib/server.js nach friendlyDescription suchst kannst du den teil nach dem : vereinfachen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

justme1968

ich habe eben im wiki: http://www.fhemwiki.de/wiki/Alexa-Fhem#Einf.C3.BChrung noch ein paar dinge zum datenfluss geschrieben.

vielleicht hilft das beim verstehen und debuggen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

prodigy7

Danke, hat funktioniert! Werden wieder alle Geräte gefunden. Vielleicht 2 Verbesserungsvorschläge:


  • Prüfung des FriendlyName und ggf. via console.log Warnmeldung ausgeben, wenn zu lang
  • Wenn ein Gerät zum ersten Mal erkannt wird, den FHEM Name übermitteln. Beim zweiten Erkennen dann den Alias (weil in Alexa leider nur der Alias angezeigt wird wenn Räume eingerichtet werden). Alternativ ggf. einen Switch oder ähnliches wo man bei laufenden NodeJS angeben kann, dass NAME statt ALIAS ausgegeben wird

Grimm80

#621
Ich habe folgendes Problem:
Heizung ist auch der aktuelle alexaName

Ich sage: "Alexa, erhöhe Heizung um 10 Grad"
Anwort: Dieser Befehl funktioniert für das Gerät Heizung nicht.

Was mach ich da falsch?

Hier der Auszug der Konsole:


"additionalApplianceDetails":{"device":"EZ1_OG.Heizung_Clima"}},"targetTemperature":{"value":10},"deltaTemperature":{"value":10}}}
[2016-11-30 19:35:26] [FHEM] EZ1_OG.Heizung_Clima: executing set cmd for TargetTemperature with value NaN
[2016-11-30 19:35:26] [FHEM]   executing: http://192.168.190.201:8083/fhem?cmd=set%20EZ1_OG.Heizung_Clima%20desired-temp%20NaN&XHR=1
response :{"header":{"name":"IncrementTargetTemperatureConfirmation","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"ba747c01-f2b5-430e-bd20-40cd70f40979"},"payload":{"targetTemperature":{"value":null},"previousState":{"targetTemperature":{"value":null}}}}


Achja, und hier noch der Ausschnitt beim Start des alexa-fhem:


[2016-11-30 19:30:00] [FHEM] EZ1_OG.Heizung_Clima is thermostat
[2016-11-30 19:30:00] [FHEM] EZ1_OG.Heizung_Clima has
[2016-11-30 19:30:00] [FHEM]   TargetTemperature [desired-temp]
[2016-11-30 19:30:00] [FHEM]   Custom Actuation [ValvePosition]
[2016-11-30 19:30:00] [FHEM]   CurrentTemperature [measured-temp]
[2016-11-30 19:30:00] [FHEM]   CurrentHeatingCoolingState [undefined]
  2016-11-30 19:30:00 caching: EZ1_OG.Heizung_Clima-desired-temp: off
  2016-11-30 19:30:00 caching: EZ1_OG.Heizung_Clima-ValvePosition: 0
[2016-11-30 19:30:00] [FHEM]     caching: Custom Actuation: 0 (as number; from '0')
  2016-11-30 19:30:00 caching: EZ1_OG.Heizung_Clima-measured-temp: 20.0

justme1968

das problem ist desired-temp off.
bitte setz mal im homebridgeMapping TargetTemperature=values=off:10;/.*/:#
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Grimm80

Danke damit funktioniert das perfekt.
Kann ich die eingestellte Temperatur oder die gemssene Temeratur auch irgendiwe abfragen?


justme1968

mit dem custom skill: 'alexa, frag fhem nach dem status von heizung'
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Grimm80

das muss ich mir mal anschauen.

mit welchem homebridge wert kann ich sagen heizung aus?
Aktuell kann sie das nicht nur zwischen 5 un 30

justme1968

alexa kennt kein aus.

mit dem custom skill kannst du dir das mit einem passenden mapping selber so konfigurieren wie du möchtest.

wobei 10 ja schon ziemlich aus ist.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Aladin222

#627
Zitat von: RedCreek am 07 November 2016, 20:56:36
Hallo justme,

erstmal vielen Dank für den alexa-skill!
Hat auch schon wunderbar mit Version 0.0 funktioniert.

Was mir noch nicht gefällt, dass momentan kein Passwort auf dem Port 3000 gesetzt ist uns somit jeder einen Zugriff von aussen machen kann.

Ich habe zusätzlich einen startupscript von homebridge umgeschrieben (Ausgehend von http://www.fhemwiki.de/wiki/Homebridge_Start_und_Status_in_FHEM) damit man alexa aus fhem starten und stoppen kann.
(siehe Anhang)
script downloaden und unter /etc/init.d/alexa ablegen.
Der script geht davon aus, das der alexa-fhem script unter /opt/fhem/alexa-fhem liegt, und die logfiles später unter /opt/fhem/log
falls das bei euch nicht der Fall ist, muss das in diesem Script am Anfang angepasst werden.


sudo chmod 755 /etc/init.d/alexa
sudo update-rc.d alexa defaults


dann mit sudo nano /etc/sudoers
den alexa script für den fhem user zulassen

Um diesen zu verwenden muss innerhalb von fhem folgendes angelegt werden:
define FHEM.Alexa.Status dummy
attr FHEM.Alexa.Status room AlexaRoom
define FHEM.Alexa dummy
attr FHEM.Alexa event-on-change-reading state
attr FHEM.Alexa room AlexaRoom
attr FHEM.Alexa webCmd status:start:stop:restart
define FHEM.Alexa.DOIF DOIF ([FHEM.Alexa] eq "start") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "stop") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa stop > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "restart") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa restart > /dev/null 2>&1 &")})\
DOELSEIF ([FHEM.Alexa] eq "status") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa status > /dev/null 2>&1 &")})
attr FHEM.Alexa.DOIF room AlexaRoom


Das sollte es schon gewesen sein.

HI ,

also ich hab es es genauso versucht !
Leider bekomme ich keinen Status im Fhem angezeigt  :(
Fhem.Alexa.Status bleibt mit ??? stehen ...
in den Readings vom DOIF wird folgender error angezeigt :



error

{system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")}: -1 




List vom DOIF


Internals:
   DEF        ([FHEM.Alexa] eq "start") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")})
DOELSEIF ([FHEM.Alexa] eq "stop") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa stop > /dev/null 2>&1 &")})
DOELSEIF ([FHEM.Alexa] eq "restart") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa restart > /dev/null 2>&1 &")})
DOELSEIF ([FHEM.Alexa] eq "status") (set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa status > /dev/null 2>&1 &")})
   NAME       FHEM.Alexa.DOIF
   NR         1641
   NTFY_ORDER 50-FHEM.Alexa.DOIF
   STATE      cmd_1
   TYPE       DOIF
   Readings:
     2016-12-01 04:22:30   Device          FHEM.Alexa
     2016-12-01 04:22:30   cmd             1
     2016-12-01 04:22:30   cmd_event       FHEM.Alexa
     2016-12-01 04:22:30   cmd_nr          1
     2016-12-01 04:22:30   e_FHEM.Alexa_STATE start
     2016-12-01 04:22:30   error           {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")}: -1
     2016-12-01 04:22:30   state           cmd_1
   Condition:
     0          InternalDoIf($hash,'FHEM.Alexa','STATE') eq "start"
     1          InternalDoIf($hash,'FHEM.Alexa','STATE') eq "stop"
     2          InternalDoIf($hash,'FHEM.Alexa','STATE') eq "restart"
     3          InternalDoIf($hash,'FHEM.Alexa','STATE') eq "status"
   Devices:
     0           FHEM.Alexa
     1           FHEM.Alexa
     2           FHEM.Alexa
     3           FHEM.Alexa
     all         FHEM.Alexa
   Do:
     0:
       0          set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa start > /dev/null 2>&1 &")}
     1:
       0          set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa stop > /dev/null 2>&1 &")}
     2:
       0          set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa restart > /dev/null 2>&1 &")}
     3:
       0          set FHEM.Alexa on, {system ("sudo /etc/init.d/alexa status > /dev/null 2>&1 &")}
   Helper:
     event      start
     globalinit 1
     last_timer 0
     sleeptimer -1
     timerdev   FHEM.Alexa
     timerevent start
     triggerDev FHEM.Alexa
     timerevents:
       start
       on
     timereventsState:
       state: start
     triggerEvents:
       start
       on
     triggerEventsState:
       state: start
   Internals:
     0           FHEM.Alexa:STATE
     1           FHEM.Alexa:STATE
     2           FHEM.Alexa:STATE
     3           FHEM.Alexa:STATE
     all         FHEM.Alexa:STATE
   Itimer:
   Readings:
   Regexp:
     0:
     1:
     All:
   State:
   Trigger:
Attributes:
   room       AlexaRoom

Mathea

Hallo Leute,

Amazon hat die Alexa API heute anscheinend noch mal deutlich erweitert. Schaut mal hier: https://aws.amazon.com/de/blogs/aws/amazon-lex-build-conversational-voice-text-interfaces/

Wäre es nicht der Wahnsinn, das zu implementieren?


justme1968

das ist erst mal nur in amerika verfügbar. genau so wie die 100 neuen default types die auch gerade angekündigt wurden.

es wird also noch etwas dauern bis man das bei uns sinnvoll probieren kann.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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