39_alexa.pm und alexa-fhem test version

Begonnen von justme1968, 03 Januar 2019, 22:43:10

Vorheriges Thema - Nächstes Thema

dora71

Hallo zusammen,

ich hoffe, ich bin hier im richtigen Thread.

Ich wollte heute ein Update machen, und zwar von alexa-fhem 0.4.4 auf die jetzt aktuelle Version auf github (0.5.40). Ich arbeite mit "dem alten Weg".
Soweit, so gut, allerdings startet jetzt alexa-fhem nicht mehr.

Es erscheint folgende Fehlermeldung:

/opt/alexa-fhem/lib/user.js:92
    (async () => {
           ^

SyntaxError: Unexpected token (
    at createScript (vm.js:56:10)
    at Object.runInThisContext (vm.js:97:10)
    at Module._compile (module.js:542:28)
    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)
    at Module.require (module.js:497:17)
    at require (internal/module.js:20:19)
    at Object.<anonymous> (/opt/alexa-fhem/lib/server.js:11:29)


In einem Beitrag hatte ich gelesen, dass die verwendete nodejs Version zu alt sei. Aber der Fehler tritt bei mir auf mit nodejs 8.x 10.x und 12.x (alles probiert, immer wieder die neuen Abhängigkeiten erzeugt mit npm install gemäß Wiki).

Was mache ich noch falsch? Ich arbeite mit Debian stretch.

Gruß Rainer

justme1968

kann es sein das du mehrere node versionen installiert hast und die falsche genommen wird?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

dora71

#917
Zitat von: justme1968 am 01 Februar 2020, 14:30:48
kann es sein das du mehrere node versionen installiert hast und die falsche genommen wird?

Wenn ich als Benutzer, der auch alexa aufruft nodejs -v eingebe erscheint:
v12.14.1

Der Befehl npm -v liefert:
6.13.7

Das sollte doch ok sein, oder habe ich einen Denkfehler?

... habe noch mal recherchiert, ich finde noch eine Datei /usr/local/bin/node, wenn ich die aufrufe mit /usr/local/bin/node -v erscheint:
v6.11.4  :'(

justme1968

#918
was gibt /usr/bin/env which node und ist es das gleiche wie bei which node
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

dora71

/usr/bin/env which node gibt leider, genauso wie
which node
als Ergebnis:
/usr/local/bin/node

... ok, und das ist die alte Version v6.11.4
Ich war davon ausgegangen, dass die Installation mit apt-get install ... das geradebiegt.

Wie bekomme ich das denn jetzt geradegezogen? Ich weiß, dass hat nichts mehr mit alexa-fhem zu tun, würde mir aber echt weiterhelfen.

justme1968

ich sag doch du hast zwei versionen installiert.

einfach die alte löschen
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

dora71

#921
Nochmal hallo zusammen,

soweit habe ich (hoffentlich) alles bereinigt.

Starte ich alexa-fhem mit
/opt/alexa-fhem/bin/alexa
startet das Script auch erfolgreich. So weit so prima. Kommandos absetzen geht auch.

Aber ich bekomme es nicht in den Hintergrund geschoben. Habe nach Wiki-Anleitung mir den systemd Dienst eingerichtet. Folgendes erscheint im Logbuch nach der Eingabe von systemctl status alexa
alexa.service - Node.js Alexa Server
   Loaded: loaded (/etc/systemd/system/alexa.service; enabled; vendor preset: enabled)
   Active: inactive (dead) since Sun 2020-02-02 09:47:25 CET; 55s ago
  Process: 2738 ExecStart=/opt/alexa-fhem/bin/alexa -U /home/alexa/.alexa (code=exited, status=0/SUCCESS)
Main PID: 2738 (code=exited, status=0/SUCCESS)
      CPU: 273ms

Feb 02 09:47:25 inet systemd[1]: Started Node.js Alexa Server.
Feb 02 09:47:25 inet alexa[2738]: [2020-2-2 9:47:25] using config from /home/alexa/.alexa/config.json
Feb 02 09:47:25 inet alexa[2738]: *** CONFIG: parsed completely
Feb 02 09:47:25 inet alexa[2738]: [2020-2-2 9:47:25] this is alexa-fhem 0.5.40
Feb 02 09:47:25 inet alexa[2738]: [2020-2-2 9:47:25] connecting to FHEM ...
Feb 02 09:47:25 inet alexa[2738]: [2020-2-2 9:47:25] [FHEM] trying longpoll to listen for fhem events
Feb 02 09:47:25 inet alexa[2738]: [2020-2-2 9:47:25] [FHEM] starting longpoll: http://192.168.23.202:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=nul
Feb 02 09:47:25 inet alexa[2738]: [2020-2-2 9:47:25] Server listening on: https://:::3000 for direct connections
Feb 02 09:47:25 inet alexa[2738]: STDIN EOF


Ich stehe gerade (mal wieder) ziemlich auf dem Schlauch ... zu meiner Config: alexa-fhem läuft auf einer anderen Maschine als FHEM.

Nach ein wenig Recherche gab es hier: https://forum.fhem.de/index.php?topic=106623.0 genau das gleiche Problem.

Noch irgendwelche Ideen?

justme1968

entweder --dockerDetached setzen (das schaltet die stdin Überwachung ab) oder viel besser: den autostart aus dem fhem modul nutzen und nicht von hand starten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

dora71

Oh ja, das war es. Vielen Dank für die Eingabe. Da wäre ich alleine nicht drauf gekommen.

Mit dem --dockerDetached Parameter funktioniert es jetzt einwandfrei  8)

Ich würde, wenn es ok ist, das noch im Wiki ergänzen. Das erspart anderen, die das gleiche Problem haben, viel Sucherei und den "Wissenden" mehrfache gleiche Antworten.

Zitat von: justme1968 am 02 Februar 2020, 11:27:02
oder viel besser: den autostart aus dem fhem modul nutzen und nicht von hand starten.

Da muss aber, wenn es überhaupt geht, doch bestimmt noch etwas angepasst werden, wie ich ja schrieb, läuft alexa-fhem auf einem komplett anderen Rechner als FHEM.

justme1968

das würde per ssh auch gehen.

wenn du es im wiki schreibst: die bevorzugte variante ist der autostart aus fhem. alles andere ist nur für die die auch wissen was sie tun.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

dora71

Zitat von: justme1968 am 02 Februar 2020, 12:03:31
das würde per ssh auch gehen.

... hmmmm, das hört sich interessant an. Meinst Du das Alexa-Modul? Gib mir/uns mal einen Gedankenschubser in die richtige Richtung. Zur Zeit bekomme ich bei dem Alexa Modul (logischerweise) nur gesagt, dass alexa-fhem nicht installiert ist (da auf anderer Maschine). Gebe ich den Host der Maschine an, auf dem alexa-fhem läuft, bekomme ich die Aussage, dass der Dienst gestoppt ist.

Ich finde bei den Attributen schon einige, die in die Richtung ssh gehen, auch so etwas wie host, sshUser, etc. aber leider keine dazugehörige Dokumentation. Im Wiki sehe ich auch nichts, worauf ich aufbauen könnte.

Oder funktioniert das so nicht, wenn alexa-fhem auf einer separaten Maschine läuft?

MadMax-FHEM

Was du auf jeden Fall (erst mal) brauchst ist, dass sich der User fhem (unter dem läuft ja vermutlich alexa-fhem bzw. das Alexa-Modul) auf der Maschine wo eben alexa-fhem tatsächlich läuft OHNE Passwort (also mit Zertifikat) per ssh einloggen kann...

Siehe z.B.: http://heinz-otto.blogspot.com/2017/01/per-ssh-remote-befehle-direkt-ausfuhren.html?_sm_au_=iVVSln6WMFB2sWf6t2tQvK032Hv7C

Bevor das nicht geht, wird es auch mit dem Modul (falls das wirklich geht) nicht funktionieren können.

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)

dora71

#927
Hallo Forum, hallo Joachim,

konnte noch ein bisschen Zeit investieren zum Thema alexa-fhem auf anderer Maschine und ssh.

Hier meine Erkenntnisse:

  • Ich bekomme es hin, den Service zu starten. Dazu muß ich ihn natürlich in den Hintergrund schieben. Sonst wird nach Beenden des SSH-Kommandos auch der Prozess gekillt. Logisch.
  • Die Meldungen werden auch schön ins Logbuch auf dem FHEM-Server geschrieben, geht auch.
  • Was nicht geht, ist, den Service anzuhalten. Eigentlich auch logisch, wo soll der FHEM-Rechner die Prozessnummer auf der fremden Maschine kennen?
  • Den Pfad zum Config-File erkennt er nicht, da er ihn offensichtlich auf der lokalen Maschine sucht.
  • Was mir im Logbuch auffällt, ist der Aufruf mit dem Parameter -c /tmp/alexa-fhem.cfg, den bekomme ich nirgendwo abgestellt, trotz attr myAlexa /home/alexa/.alexa/config.json

Ich denke, das alexa-Modul ist dafür optimiert, dass FHEM und alexa-fhem auf der gleichen Maschine laufen.
Toll wäre die komplette Integration, für den Fall, dass alexa-fhem wie bei mir halt auf einer anderen Maschine läuft.

Soweit so gut. Falls ich noch etwas testen soll, gerne Bescheid geben.

Hier noch meine derzeitige Config:
attr myAlexa alexaFHEM-cmd /opt/alexa-fhem/bin/alexa --dockerDetached &
attr myAlexa alexaFHEM-config /home/alexa/.alexa/config.json
attr myAlexa alexaFHEM-host 192.168.x.y (IP der alexa-fhem-Maschine)
attr myAlexa alexaFHEM-log ./log/alexa-%Y-%m-%d.log
attr myAlexa alexaFHEM-sshUser alexa


Gruß Rainer

justme1968

#928
das modul kann auch per ssh remote starten und stoppen und das config file von lokal nach remote kopieren.

du musst dafür sorgen das fhem ohne password und sonstigem prompt per ssh auf den remote rechnet kommt j d das alexaFHEM-host und eventuell alexaFHEM-sshUser attribut setzten.

alles andere geht automatisch.

du solltest weder alexaFHEM-cod setzen noch irgendetwas in den hintergrund schicken. wenn du fhem so dazwischen funkst ist klar das nichts mehr geht.

das ssh samt gestarteten alexa-fhem muss natürlich im vordergrund weiter laufen. sonst erkennt das modul das nicht. und verliert die kontrolle und versucht andauernd einen neustart.

das gleiche gilt für die docker detached option. damit kann alexa-fhem nicht mehr feststellen das der parent weg ist und sich nicht mehr automatisch beenden. was dann den restart verhindert.

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

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

Xsantos

Hallo, ich habe eine Verständnisfrage, ich habe meine Alexa über ein Skill mit einer Wifi Lampe verbunden. Dieser Skill ermöglicht mir, dass ich die Lampe als Smartgerät in meiner Alexa-App finde. Ist es möglich dieses Gerät über Fhem anzusteuern?
Ich wünsche einen entspannten Tag,
Marco