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

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

Vorheriges Thema - Nächstes Thema

dela2017

Das Problem hatte ich auch.
Du musst in der alexa.service auch noch das WorkingDirectory setzen. Z.B.:
WorkingDirectory=/home/alexa/.alexa


Zitat von: cs-online am 23 Juli 2017, 12:52:07
Halleluja, nach ganz viel lesen und Eurer Hilfe habe ich das nun soweit, daß der Skill läuft und meine erste Lampe an und aus geht. Dafür erstmal vielen Dank an alle, die bis hierher geholfen haben !!!!!!!!!

Nun habe ich noch das Problem, daß der Dienst nicht automatisch startet. Wenn ich den von Hand als User PI starte, fragt er nach dem root-PW, wenn ich das als sudo starte, dann startet der Dienst und läuft auch. Ich bekomme den auch mit dem FHEM-Start-Dummy ans Laufen. Ich habe das "Jessie" als OS für den Raspi, habe auch alles nach wiki gemacht (glaube ich zumindest), das Ergebnis sieht dann so aus

login as: pi
pi@192.168.2.66's password:

pi@FHEM-Jessie:~ $ sudo systemctl status alexa
● alexa.service - Node.js Alexa Server
   Loaded: loaded (/etc/systemd/system/alexa.service; enabled)
   Active: activating (auto-restart) (Result: exit-code) since So 2017-07-23 12:37:33 CEST; 3s ago
  Process: 1084 ExecStart=/opt/fhem/alexa-fhem/bin/alexa $ALEXA_OPTS (code=exited, status=217/USER)
Main PID: 1084 (code=exited, status=217/USER)

Jul 23 12:37:33 FHEM-Jessie systemd[1]: alexa.service: main process exited, ...R
Jul 23 12:37:33 FHEM-Jessie systemd[1]: Unit alexa.service entered failed state.
Hint: Some lines were ellipsized, use -l to show in full.
pi@FHEM-Jessie:~ $


Im Journal steht:

login as: pi
pi@192.168.2.66's password:

The programs included with the Debian GNU/Linux system are free software;
the exact distribution terms for each program are described in the
individual files in /usr/share/doc/*/copyright.

Debian GNU/Linux comes with ABSOLUTELY NO WARRANTY, to the extent
permitted by applicable law.
Last login: Sun Jul 23 12:49:09 2017

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

pi@FHEM-Jessie:~ $ sudo journalctl -u alexa
-- Logs begin at So 2017-07-23 12:49:02 CEST, end at So 2017-07-23 12:49:55 CEST
Jul 23 12:49:05 FHEM-Jessie systemd[1]: Starting Node.js Alexa Server...
Jul 23 12:49:05 FHEM-Jessie systemd[1]: Started Node.js Alexa Server.
Jul 23 12:49:05 FHEM-Jessie systemd[1]: alexa.service: main process exited, code
Jul 23 12:49:05 FHEM-Jessie systemd[1]: Unit alexa.service entered failed state.
Jul 23 12:49:16 FHEM-Jessie systemd[1]: alexa.service holdoff time over, schedul
Jul 23 12:49:16 FHEM-Jessie systemd[1]: Stopping Node.js Alexa Server...
Jul 23 12:49:16 FHEM-Jessie systemd[1]: Starting Node.js Alexa Server...
Jul 23 12:49:16 FHEM-Jessie systemd[1]: Started Node.js Alexa Server.
Jul 23 12:49:16 FHEM-Jessie systemd[1]: alexa.service: main process exited, code
Jul 23 12:49:16 FHEM-Jessie systemd[1]: Unit alexa.service entered failed state.
Jul 23 12:49:33 FHEM-Jessie systemd[1]: alexa.service holdoff time over, schedul
Jul 23 12:49:33 FHEM-Jessie systemd[1]: Stopping Node.js Alexa Server...
Jul 23 12:49:33 FHEM-Jessie systemd[1]: Starting Node.js Alexa Server...
Jul 23 12:49:33 FHEM-Jessie systemd[1]: Started Node.js Alexa Server.
Jul 23 12:49:33 FHEM-Jessie systemd[1]: alexa.service: main process exited, code
Jul 23 12:49:33 FHEM-Jessie systemd[1]: Unit alexa.service entered failed state.
Jul 23 12:49:43 FHEM-Jessie systemd[1]: alexa.service holdoff time over, schedul
Jul 23 12:49:43 FHEM-Jessie systemd[1]: Stopping Node.js Alexa Server...
Jul 23 12:49:43 FHEM-Jessie systemd[1]: Starting Node.js Alexa Server...
Jul 23 12:49:44 FHEM-Jessie systemd[1]: Started Node.js Alexa Server.
Jul 23 12:49:44 FHEM-Jessie systemd[1]: alexa.service: main process exited, code
Jul 23 12:49:44 FHEM-Jessie systemd[1]: Unit alexa.service entered failed state.
Jul 23 12:49:54 FHEM-Jessie systemd[1]: alexa.service holdoff time over, schedul
Jul 23 12:49:54 FHEM-Jessie systemd[1]: Stopping Node.js Alexa Server...
Jul 23 12:49:54 FHEM-Jessie systemd[1]: Starting Node.js Alexa Server...
Jul 23 12:49:54 FHEM-Jessie systemd[1]: Started Node.js Alexa Server.
Jul 23 12:49:54 FHEM-Jessie systemd[1]: alexa.service: main process exited, code
Jul 23 12:49:54 FHEM-Jessie systemd[1]: Unit alexa.service entered failed state.
lines 7-29/29 (END)


ein Aufruf vom Status unter init.d liefert:

pi@FHEM-Jessie:~ $ /etc/init.d/alexa status
Alexa is not running
script done


aber dort gestartet, geht's:

pi@FHEM-Jessie:~ $ sudo /etc/init.d/alexa start

SSH is enabled and the default password for the 'pi' user has not been changed.
This is a security risk - please login as the 'pi' user and type 'passwd' to set a new password.

Alexa starting
Alexa is running PID 1158
script done
script done
pi@FHEM-Jessie:~ $


Bestimmt wieder eine Kleinigkeit, aber ich komm nicht drauf...

cs-online

aha, das ist sehr schön anschaulich gemacht, prima !!! Aber wenn ich den Raspi starte, mit welchem User wird das ganze denn standardmäßig gestartet ? Oder anders gefragt, welche Dateirechte muss ich denn setzen, wenn das egal unter welchem User laufen soll ? (ich blick bei den Linux-Rechten offen gestanden nicht immer so ganz durch) Wenn ich mich über ssh einlogge, nehme ich immer den pi-User, damit läuft das von Hand alles soweit ganz gut...
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

Markus.

Hallo Zusammen,

nochmal bezüglich des schaltens einer Farbe, hier von z.b. rot was ja funktioniert zurück auf weiß.
Also weiß versteht alexa ja nicht mit dem custom skill.

Zitat von: Markus. am 23 Juli 2017, 18:54:17
ahh okay macht sinn. Aber kann ich z.b. licht dann mehrfach verwenden? also "room Wohnzimmer name licht" und "room Schlafzimmer name licht" ?
und noch ne blöde Frage.. mit welchem Befehl sage ich denn Alexa das die Lampe von rot wieder auf weiß schalten soll?... :-(

gruß

markus

Muss ich da das Alexamapping an folgender Stelle entsprechend dann anpassen? Und wahrscheinlich noch im Skill selber die Farbe eintragen?


Hue=verb=stelle,valuePrefix=auf,values=rot:0;grün:128;blau:200
Hue=verb=färbe,values=rot:0;grün:120;blau:220


Gruß

Markus

justme1968

weiß kannst du nicht über Hue steuern. dazu musst du Saturation verwenden.

d.h. du musst im alexaMapping ein mapping für Saturation einbauen und diese für weiß auf 0 setzen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Schlimbo

Hallo Andre,
wollte gerade die neue Türschloss Funktion testen und komme irgendwie nicht weiter.
Der status des Schlosses wird über ein MAX Fensterkontakt Sensor ermittelt.

List vom Sensor:

Internals:
   CHANGED
   DEF        ShutterContact 032d14
   IODev      cm
   LASTInputDev cm
   MSGCNT     2
   NAME       MAX_Tuerschloss
   NR         209
   RSSI       -42
   STATE      opened
   TYPE       MAX
   addr       032d14
   backend    cm
   cm_MSGCNT  2
   cm_TIME    2017-07-24 12:43:39
   rferror    0
   type       ShutterContact
   Helper:
     DBLOG:
       battery:
         logdb:
           TIME       1500889419.51696
           VALUE      ok
   READINGS:
     2017-07-24 12:43:39   RSSI            -42
     2017-07-24 12:43:39   battery         ok
     2016-02-14 12:56:23   firmware        1.3
     2016-02-14 12:56:23   groupid         0
     2017-07-24 12:43:39   lock            unlocked
     2017-07-24 09:11:14   msgcnt          3
     2017-07-24 12:43:39   onoff           1
     2017-07-24 12:43:39   state           opened
     2016-02-14 12:56:23   testresult      15
   internals:
     interfaces switch_active;battery
Attributes:
   DbLogInclude .*
   HomeContactType doorinside
   HomeModeAlarmActive 1
   IODev      cm
   alexaName  Wohnung
   alexaRoom  wohnzimmer
   alias      Wohnungsschloss
   devStateIcon .*closed:status_locked .*opened:status_open
   event-min-interval battery:604800
   event-on-change-reading battery,state,lock
   fp_Grundriss 511,545,0,
   genericDeviceType lock
   homebridgeMapping clear
LockCurrentState=state,values=closed:SECURED;opened:UNSECURED
   icon       fts_door_right_open
   room       MAX,alexa
   userReadings lock {(ReadingsVal($name,"state","closed") eq "closed")?"locked":"unlocked"}
   userattr   HomeContactType:doorinside,dooroutside,doormain,window HomeModeAlarmActive HomeOpenDontTriggerModes HomeOpenDontTriggerModesResidents HomeOpenMaxTrigger HomeOpenTimeDividers HomeOpenTimes HomeReadings HomeValues
 

Output auf der Console nach dem Start von alexa-fhem:
2017-07-24 12:55:37] [FHEM] homebridgeMapping: clear
LockCurrentState=state,values=closed:SECURED;opened:UNSECURED
[2017-07-24 12:55:37] [FHEM] mappings for MAX_Tuerschloss: { LockCurrentState:
   { reading: 'state',
     values: [ 'closed:SECURED', 'opened:UNSECURED' ] } }
[2017-07-24 12:55:37] [FHEM] MAX_Tuerschloss is lock
[2017-07-24 12:55:37] [FHEM] MAX_Tuerschloss has
[2017-07-24 12:55:37] [FHEM]   LockCurrentState [state]
[2017-07-24 12:55:37] [FHEM] value2homekit: { closed: 'SECURED', opened: 'UNSECURED' }
[2017-07-24 12:55:37] [FHEM] { reading: 'state',
  values: [ 'closed:SECURED', 'opened:UNSECURED' ],
  device: 'MAX_Tuerschloss',
  informId: 'MAX_Tuerschloss-state',
  characteristic_type: 'LockCurrentState',
  log:
   { [Function: bound ]
     debug: [Function],
     info: [Function],
     warn: [Function],
     error: [Function],
     log: [Function],
     prefix: 'FHEM' },
  value2homekit: { closed: 'SECURED', opened: 'UNSECURED' },
  value2homekit_re: [] }
  2017-07-24 12:55:37 caching: MAX_Tuerschloss-state: opened


Wenn ich Frage: "Alexa,  ist Wohnung abgeschlossen"
Bekomme ich als Antwort: "Wohnung unterstützt das nicht".

Kannst du mir einen Tipp geben was an meinem Mapping nicht stimmte?

Gruß Schlimbo

justme1968

schau mal welche antwort kommt wenn du das device tür nennst. ansonsten schau mal in der alexa app was genau erkannt wird.

wenn das nicht hilft zeig mal die ausgabe auf der console bei der geräte suche.

ansonsten muss das reading aktuell noch den wert locked haben. alles andere wird als aufgeschlossen erkannt. der values teil im mapping greift noch nicht.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Schlimbo

Okay, habe das homebridgeMapping dementsprechend abgeändert:
[code]clear
LockCurrentState=lock
[/code]
Und den AlexaNamen auf: "tür" gesetzt

Consolen Ausgabe bei der Suche:

,{"applianceId":"MAX_032d14","man
facturerName":"FHEMMAX","modelName":"FHEMShutterContact","version":"<unknown>","friendlyName":"tür","friendlyDescription":"n: MAX_Tu
rschloss, r: wohnzimmer","isReachable":true,"actions":["getLockState"],"applianceTypes":["SMARTLOCK"],"additionalApplianceDetails":{
device":"MAX_Tuerschloss"}},


Wenn ich sage: "Alexa, ist die Tür abgeschlossen"
Kommt wieder die Antwort "Tür unterstützt das nicht",
sage ich aber : "Alexa, wie ist die Tür abgeschlossen"
bekomme ich als Antwort: "Ich prüfe das, einen Moment."  "tür ist Geöffnet"
Ach mit der Frage: "Alexa, wie ist die Tür" funktioniert es.

Da muss Amazon wohl noch etwas nachbessern.

cc13

Zitat von: amenomade am 23 Juli 2017, 23:51:24
@cs13 = schein OK, aber ich würde doch die nodejs Installation prüfen. "commander" sollte nicht fehlen. Oder Du hast nodejs unter root installiert.

Ich werde wohl meinen Raspi (ist ein xbian System) neu aufsetzen, es sieht sehr verkorkst aus.

Als xbian eingeloggt und


node -v


geschrieben, kommt:


v6.9.4


mit einem


sudo npm -v


kommt:


5.3.0


Wenn ich nun als User xbian ein


npm install commander --save


eingebe, erhalte ich folgende Meldung:


npm WARN saveError ENOENT: no such file or directory, open '/home/xbian/package.json'
npm WARN enoent ENOENT: no such file or directory, open '/home/xbian/package.json'
npm WARN xbian No description
npm WARN xbian No repository field.
npm WARN xbian No README data
npm WARN xbian No license field.

+ commander@2.11.0
updated 1 package in 9.991s


Woraufhin der Start von Alexa wieder mit


module.js:471
    throw err;
    ^

Error: Cannot find module 'commander'
    at Function.Module._resolveFilename (module.js:469:15)
    at Function.Module._load (module.js:417:25)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/opt/fhem/alexa-fhem/lib/cli.js:1:77)
    at Module._compile (module.js:570:32)
    at Object.Module._extensions..js (module.js:579:10)
    at Module.load (module.js:487:32)
    at tryModuleLoad (module.js:446:12)
    at Function.Module._load (module.js:438:3)


abbricht.

justme1968

@Schlimbo: bei mir hat das 'alexa, ist die tür abgeschlossen' gestern bis auf ein mal immer funktioniert. wenn das nicht geht am besten in der app feedback geben.

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

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

Schlimbo


Markus.

Zitat von: justme1968 am 24 Juli 2017, 12:15:20
weiß kannst du nicht über Hue steuern. dazu musst du Saturation verwenden.

d.h. du musst im alexaMapping ein mapping für Saturation einbauen und diese für weiß auf 0 setzen.

Meinst Du so in etwa?


Saturation=verb=stelle,property=sättigung,valuePrefix=auf,values=weiss:0


gruß

markus

cs-online

Guten Morgen,

ich habe ein Dummy "Warmwasser", mit dem ich meine Warmwasserbereitung steuern kann, da gibt es stop , Wannenfüllung und Speicherladung. Auf die Frage "Alexa, frage FHEM, wie ist der Status von Warmwasser ?" kommt "Ich kann das Gerät Warmwasser nicht auslesen". Als GenericType habe ich Switch ausgewählt.

Wie bekomm ich das hin, daß ich über Alexa eine Option zu schalten und den Status abfragen zu lassen, so daß sie stop, Wannenfüllung oder Speicehrladung vorliest ?

Dann noch eine allgemeine Frage: Kann man Alexa bitten, zu erklären, wie man Fragen zu einem Device stellen muss ? Ich hab das in anderen Skills gehört und dachte, vielleicht ist das eine allgemeine Funktion ?

Grüße

Christian
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr

justme1968

@Markus.: ja. so in etwa. je nach dem was du genau sagen möchtest. probier es einfach aus.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Reinhart

Zitat von: cs-online am 25 Juli 2017, 09:12:58
Wie bekomm ich das hin, daß ich über Alexa eine Option zu schalten und den Status abfragen zu lassen, so daß sie stop, Wannenfüllung oder Speicehrladung vorliest ?

Hallo Christian!

Ich nehme an, du holst die Daten direkt über den eBus ab. Da du ja schon einen Customskill eingerichtet hast, kannst es ja bequem mit der MyUtils steuern. Ich habe da schon mal ein Beispiel gepostet (Heizung) das du leicht an deine Bedürfnisse anpassen kannst. Der Vorteil darin liegt, dass du die Antwort Texte frei definieren kannst oder auch gleich den gesamten Status ansagen lassen kannst wenn du willst (zB. noch Zustand der Pumpen etc. ) .

Wenn du es ohne der Myutils machen willst, darfst keinen Default "Switch" nehmen, der kann ja nur die beiden Zustände on/off, da musst du dann die neuen Zustände erst Mappen. Da gibt es auch schon mehre Beispiele hier.

LG
FHEM auf Raspy4 mit Bullseye + SSD, Homematic, ESP8266, ESP32, Sonoff, eBus, NanoCUL, MapleCUL, , MQTT2, Alexa

cs-online

Hallo Reinhard,

ja, die Daten kommen prinzipiell aus eBusd, aber in diesem Fall ist das einfach ein Dummy mit Notify nachgeschaltet, damit eben der Befehl an den eBusd geschickt wird, den ich gerade brauche, also wird entweder die WW-Bereitung gestoppt (stop), eine Wannenfüllung (da wird vorher der Sollwert hoch gesetzt und dann WW angefordert) oder eine Speicherladung mit "Normaltemperatur" angefordert. Funktioniert super und würde ich auch nicht ändern wollen. Das Dummy kann also drei Zustände haben. Nun würde ich den aktuellen Zustand gerne vorlesen lassen und natürlich auch sagen können "Alexa, sage FHEM, schalte Warmwasser auf Speicherladung" oder so. Nur blick ich nicht so richtig mit den Mappings und Co. durch.... Ich habe mehrere Dummys für verschiedene Dinge im Einsatz, da würde ich gerne immer mal den Status abfragen... Werde nacher mal in  Deinen anderen Beitrag reinschauen, vielleicht hilft das schon auf die Sprünge... Alexa fordert sehr viel Zeit und meine Frau ist schon gnaddelig, daß ich mit ihr mehr Zeit als mit meiner Frau verbringe (grins)
FHEM auf RPI 4 4GB, HM-WLAN-Gateway, einige HM-Aktoren,2x EBUSD an Heizung+Solar, ESP8266 am Strom-,Gas-,Wasserzähler, in WLAN-Steckdosen und Relaisleisten, Sonoff S20, Shelly1,2 und 2.5,Lacrosse-Gateway und Sensoren,Sduino,Alexa-Fhem,Huawei PV mit Speicher, alles auf einem RPI und da geht noch mehr