Einladung zum Beta-Test: "FHEMlazy" zur einfacheren Alexa-Integration

Begonnen von gvzdus, 23 Dezember 2018, 15:30:36

Vorheriges Thema - Nächstes Thema

gvzdus

Nunja, minimal anders sollte die Meldung:
[cli] Server failed with Error: ENOENT: no such file or directory, open '/opt/fhem/.alexa/alexa.pid'
jetzt schon sein, wenn Du das Verzeichnis richtig (= für den FHEM-User beschreibbar) angelegt hast.


Spezialtrick

Ich habe den angegebenen Befehl kopiert "mkdir /opt/fhem/.alexa". Sieht doch auch alles richtig aus:

fhem@Fhem:~$ ls -la /opt/fhem/.alexa
total 12
drwxr-xr-x  2 fhem fhem    4096 Jan  6 17:41 .
drwxr-xr-x 18 fhem dialout 4096 Jan  6 18:00 ..
-rw-r--r--  1 fhem fhem       2 Jan  6 18:02 alexa.pid


Das Logging in Fhem hat sich nicht geändert. Und soweit ich das sehe, die anderen beiden auch nicht:

fhem@Fhem:~$ ps -ef | egrep '(alexa|ssh)'
root       154     1  0 17:42 ?        00:00:00 /usr/sbin/sshd -D
root       380   154  0 17:42 ?        00:00:00 sshd: fhem [priv]
fhem       395   380  0 17:42 ?        00:00:00 sshd: fhem@pts/2
root      1122   154  0 17:50 ?        00:00:00 sshd: fhem [priv]
fhem      1128  1122  0 17:50 ?        00:00:00 sshd: fhem@notty
fhem      1129  1128  0 17:50 ?        00:00:00 /usr/lib/openssh/sftp-server
fhem      2525   396  0 18:04 pts/2    00:00:00 grep -E (alexa|ssh)


Bis auf die von Dir kopierte Zeile:

Error: spawn /usr/bin/ssh
ENOENT
    at Process.ChildProcess._handle.onexit (internal/child_process.js:190:19)
    at onErrorNT (internal/child_process.js:362:16)
    at _combinedTickCallback (internal/process/next_tick.js:139:11)
    at process._tickCallback (internal/process/next_tick.js:181:9)
    at Function.Module.runMain (module.js:696:11)
    at startup (bootstrap_node.js:204:16)
    at bootstrap_node.js:625:3
[server] this is alexa-fhem 0.5.2p4-FHEMlazy
[server] Fetching FHEM devices...
[FHEM] starting longpoll: https://localhost:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1546794468063
[server] Killing SSH on event process.exit
events.js:183
      throw er; // Unhandled 'error' event
      ^
FHEM - Debmatic - Zigbee2MQTT - Homekit

gvzdus

Oh ja, Andre schreibt in die alexa-fhem.cfg den Pfad zu ssh mit einem "\n" rein. Das ist Unix ein kleines Zeichen zu viel..
Moment. Ich baue eine Version, die damit klarkommt.

Oder Du gehst doch mal eben mit dem Editor in die alexa-fhem.cfg rein und korrigierst das. Dann idealerweise auch gleich die Konfiguration mit allen Werten anpassen, also siehe Kommentare:

{
   "connections" : [
      {
         "server" : "localhost",
         "filter" : "alexaName=..*",
         "name" : "FHEM",
         "port" : "8083",
// "ssl": true,
// "auth" : { "user": "fhem", "pass": "fhem", "sendImmediately": false }
         "webname" : "fhem"
      }
   ],
   "alexa" : {
// Pfui:
      "ssh" : "/usr/bin/ssh\n",
      "ssl" : false,
      "bind-ip" : "127.0.0.1",
      "name" : "alexa-fhem default",
      "publicSkill" : true
   },
   "description" : "alexa-fhem default config"
}

Spezialtrick

FHEM - Debmatic - Zigbee2MQTT - Homekit

gvzdus

Die "Komm mit ssh\n klar"-Version ist jetzt auch oben. Heisst "p5" am Ende...

Spezialtrick

So habe nun das "\n" korrigiert und die Konfiguration entsprechend aktualisiert. Nun klappt es. :)

Herzlichen Dank!  :)

Eine Frage habe ich aber noch: Was genau ist mit dem Anmeldenamen bei Amazon gemeint?
FHEM - Debmatic - Zigbee2MQTT - Homekit

gvzdus

Ein paar Leute haben mir geschrieben: "Bitte lade mich ein". Und wenn ich die Absender-Email-Adresse nahm, wurden sie nicht glücklich, weil sie für das Login bei Amazon eine andere Email-Adresse verwenden.

Also ich brauche quasi Deinen Amazon-Alexa-Benutzernamen.

Spezialtrick

Alles klar. Also handelt es sich um die "Anmeldeemailadresse" von Amazon.

Meine Email ist unterwegs.  :D
FHEM - Debmatic - Zigbee2MQTT - Homekit

justme1968

den bug mit dem \n ist in der aktuellen modul version aus dem anderen thread repariert.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Amenophis86

Ist geplant das hier auch für den Coustum Skill anzubieten? Ich habe aktuell beide am laufen und laut Wiki geht bisher nur der SmartHome Skill. Daher würde ich mit der Umstellung noch warten bis beides funktioniert :)
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...

justme1968

es wird auch weiterhin beides gehen.

in diesem einem ersten schritt wird erst mal 'nur' der smart home skill auf den proxy migriert und einen offiziellen skill migriert. dafür ist dann kein portforwarding mehr nötig.

wer möchte kann gleichzeitig seinen custom skill wie bisher mit portforwarding nutzen. alexa-fhem muss dafür nur ein mal laufen.

wenn das so weit stabil läuft ist die idee auch die custom skills über den proxy laufen zu lassen. wie genau das dann implementiert wird wissen wir noch nicht :). vor allem müssen wir uns überlegen/rausfinden wie wir es hin bekommen das jemand den proxy nutzen kann ohne das er uns private informationen zu seinem skill geben muss.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Amenophis86

Ok danke für die Info.

Mein Problem ist im Moment eh erst Mal bei zwei Amazon Accounts beide Skills unterzubringen, dass Alexa bei beiden Profilen die Geräte schalten kann.
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...

gvzdus

Mein heutiges Tagewerk war, eine Minimal-Version des SSH-Proxies in Andres Original auf GitHub zu mergen.

Deswegen sollte ich vielleicht mal einen Ausblick geben:

  • Der offizielle Skill wird von Andre kommen. Das ist immerhin eine große Ehre, und die gebührt nach meinen Werten dem Originalautor, von dem auch weiterhin 90% des Code kommt
  • Wie von Andre angedeutet: Ich kümmere mich mittelfristig um den Proxy, also die SSH-Gegenseite.
  • Etwas Schmerzen gab es ja für den einen oder anderen, der auf das neue Modul umzog. Aber die Zielsetzung ist, den Setup noch einfacher zu machen. Und Andres Skill wird den gleichen Registrierungskey verwenden wie "FHEMlazy"

An dieser Stelle möchte ich fragen, ob jemand etwas mehr HTML-lastig als ich bin.


  • Wir bräuchten ein Logo, und zwar in dem Maßen 108x108px und 512x512px. Für Rudi ist die Verwendung des Logos okay, es soll aber einen Schriftzug mit dem Namen des Skills dabei sein. Wäre also "FHEMlazy" bei mir, und "alexa-fhem" bei Andre. Wichtiger ist Andre.
  • Mich wurmt auf der Registrierungsseite, dass der Activate-Button ganz rechts ist. Und außerdem immer aktiv ist, auch wenn der Registrierungscode falsch ist.

Wenn jemand eine der beiden Aufgaben angehen könnte, wäre das großartig. Ich habe als Anhang mal das statische HTML angehängt - ich kriege allerdings vom Filesystem aus das Ganze nicht zum Laufen.

MadMax-FHEM

#118
Hallo gvzdus,

vielen Dank für den Einsatz!!

Ich habe grad mal Zeit und gehe gerade die Schritte im Wiki durch.

Ausgangsbasis SW:

ein fhem-SD-card Backup von März letzten Jahres (jaja, schon etwas betagt ;)  ).
Dann nat. update/upgrade
Dann nat. fhem update

fhem: leer!

Dann einen Dummy angelegt:


Internals:
   NAME       Test
   NR         18
   STATE      ???
   TYPE       dummy
Attributes:
   room       alexa
   setList    on off


Mehr Attribute (z.B. genericDeviceType, alexaName) gibt es ja noch nicht... ;)

HW: PI3 (noch der "alte")


Dann die Schritte im Wiki.


pi@raspberrypi:~ $ node --version
v8.11.1


Sollte also passen...

Anmerkung für's Wiki:

Zitat
jetzt erfolgreich eine solche auf. Wechsele mit "cd" ins Home-Verzeichnis:

cd
-> cd ~

Zitat
cp fhem.cfg fhem.cfg_vor_fhemlazy

fertigst Du ein letztes Backup Deiner Konfiguration an.
-> fhem Backup? (ist wahrscheinlich übertrieben an der Stelle)

Wenn ich mich dann als fhem einlogge und "npm install" ausführe kam bei mir:


bash npm: command not found


Ich musste daher folgendes ausführen (ob das -f notwendig gewesen wäre weiß ich jetzt nicht):

sudo apt-get -f install npm


Danach ging "npm install" mit folgender Ausgabe:


fhem@raspberrypi:~/alexa-fhem$ npm install
(node:3420) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
readline-sync@1.4.9 node_modules/readline-sync

commander@2.8.1 node_modules/commander
└── graceful-readlink@1.0.1

request@2.88.0 node_modules/request
├── aws-sign2@0.7.0
├── forever-agent@0.6.1
├── oauth-sign@0.9.0
├── tunnel-agent@0.6.0
├── caseless@0.12.0
├── is-typedarray@1.0.0
├── safe-buffer@5.1.2
├── aws4@1.8.0
├── isstream@0.1.2
├── json-stringify-safe@5.0.1
├── extend@3.0.2
├── performance-now@2.1.0
├── qs@6.5.2
├── uuid@3.3.2
├── combined-stream@1.0.7 (delayed-stream@1.0.0)
├── mime-types@2.1.21 (mime-db@1.37.0)
├── form-data@2.3.3 (asynckit@0.4.0)
├── tough-cookie@2.4.3 (punycode@1.4.1, psl@1.1.31)
├── http-signature@1.2.0 (assert-plus@1.0.0, jsprim@1.4.1, sshpk@1.16.0)
└── har-validator@5.1.3 (har-schema@2.0.0, ajv@6.6.2)

winston@3.1.0 node_modules/winston
├── is-stream@1.1.0
├── stack-trace@0.0.10
├── one-time@0.0.4
├── triple-beam@1.3.0
├── winston-transport@4.3.0
├── readable-stream@2.3.6 (process-nextick-args@2.0.0, safe-buffer@5.1.2, inherits@2.0.3, string_decoder@1.1.1, util-deprecate@1.0.2, core-util-is@1.0.2, isarray@1.0.0)
├── logform@1.10.0 (ms@2.1.1, fecha@2.3.3, fast-safe-stringify@2.0.6, colors@1.3.3)
├── diagnostics@1.1.1 (enabled@1.0.2, kuler@1.0.1, colorspace@1.1.1)
└── async@2.6.1 (lodash@4.17.11)


Also (irgendwie) kein Fehler!?

Wenn ich dann "bin/alexa -A" ausführe kommt:


fhem@raspberrypi:~/alexa-fhem$ bin/alexa -A
config.json not existing, creating from the scratch
(node:549) UnhandledPromiseRejectionWarning: TypeError: config.alexa.ssl.trim is not a function
    at runAutoconfig (/opt/fhem/alexa-fhem/lib/user.js:154:44)
    at /opt/fhem/alexa-fhem/lib/user.js:73:34
    at /opt/fhem/alexa-fhem/lib/user.js:77:7
    at new Promise (<anonymous>)
    at Function.User.autoConfig (/opt/fhem/alexa-fhem/lib/user.js:68:10)
    at /opt/fhem/alexa-fhem/lib/cli.js:31:42
    at Command.<anonymous> (/opt/fhem/alexa-fhem/node_modules/commander/index.js:395:35)
    at emitNone (events.js:106:13)
    at Command.emit (events.js:208:7)
    at Command.parseOptions (/opt/fhem/alexa-fhem/node_modules/commander/index.js:697:14)
(node:549) UnhandledPromiseRejectionWarning: Unhandled promise rejection. This error originated either by throwing inside of an async function without a catch block, or by rejecting a promise which was not handled with .catch(). (rejection id: 3)
(node:549) [DEP0018] DeprecationWarning: Unhandled promise rejections are deprecated. In the future, promise rejections that are not handled will terminate the Node.js process with a non-zero exit code.


Da stehe ich jetzt und warte mal was du sagst damit ich nicht einfach "wild rumprobiere", sondern evtl./hoffentlich was finde um zu helfen...

EDIT: alexa-fhem (Lazy) hab ich praktisch vor ca. 30min aus git geholt. Ansonsten bin ich exakt (denke ich) die Schritte laut Wiki durch. Software-Voraussetung war (wie schon geschrieben): fhem aktuell, OS aktuell (per update) ansonsten nichts in fhem angelegt, also auch kein Alexa-Device etc. (stand ja auch nix im Wiki bis dahin)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

#119
Ich hab mal ein wenig weitergelesen und bin über folgendes "gestolpert":

Zitat
Sofern Du die Forumsversion von 39_alexa.pm benutzt, an der justme1968 gerade entwickelt, findest Du nur das MyAlexa-Device. Bitte suche dann im Folgenden bei MyAlexa statt Alexa.FHEM. Sobald der aktuellste FHEM diese Version verwendet, wird die Anleitung umgestellt.

Welche Alternative gibt es denn?
Ich konnte im Wiki nix finden... ;)

Bzw. ich nutze die alexa.pm die eben ganz normal mit fhem mitkommt (zumindest kann ich mich nicht erinnern irgendwas diesbezüglich "installiert" zu haben in meiner "nackten" fhem-Basis)...
...ist das dann so zu verstehen: wenn die aktuelle "in Entwicklung-Version" genommen wird statt der "Standard fhem Version"?

EDIT: oder sollte besser die (also die "in Entwicklung Version") genommen werden!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)