Autor Thema: Alexa-fhem als Dienst  (Gelesen 7006 mal)

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 3835
Antw:Alexa-fhem als Dienst
« Antwort #15 am: 30 Juli 2017, 22:07:35 »
EDIT 05.08: Link gelöscht, da das Bild falsch war. Korrektur ein bisschen weiter in diesem Thread
« Letzte Änderung: 05 August 2017, 02:11:31 von amenomade »
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline juemuc

  • Full Member
  • ***
  • Beiträge: 454
Antw:Alexa-fhem als Dienst
« Antwort #16 am: 31 Juli 2017, 21:54:46 »
Hallo,

habe alle Rechte, wie im Schaubild beschrieben, gesetzt. Leider ohne Erfolg. Ich befürchte,  das Problem beginnt schon vorher, da ich alle Befehle aus dem Wiki (z.B. npm install) nur als root-User (also mit sudo) ausführen kann. Damit haben wahrscheinlich viele Dateien die falschen Rechte.

Hat bei dir die Installation von nodejs ohne Root-Rechte funktioniert?

VG
Jürgen
3x Sonos Play 1, 1x Sonos Playbar + Sub, 1 Sonos-One
Fritzbox 7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM Fensterkontakte und  Amazon Echo Dot, raspberry3B+ mit RPI-RF-MOD und piVCCU, Raspbian Stretch Lite

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 3835
Antw:Alexa-fhem als Dienst
« Antwort #17 am: 01 August 2017, 00:27:35 »
Zitat
Hat bei dir die Installation von nodejs ohne Root-Rechte funktioniert?
Nein. Wie im Wiki beschrieben, sprich mit "sudo".
Aber alexa-fhem ja ohne root (npm).

Was hast Du im config.json (ohne deine Credentials)?
Was hast Du in alexa.service?
Mach mal ein "ls -la" von den entspr. Verzeichnisse.
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline juemuc

  • Full Member
  • ***
  • Beiträge: 454
Antw:Alexa-fhem als Dienst
« Antwort #18 am: 04 August 2017, 22:24:25 »
Hallo,

hier die gewünschte Info
pi@raspberrypi:~/.alexa $ ls -la
insgesamt 20
drwxr-xr-x 2 root root 4096 Aug  4 22:08 .
drwxr-xr-x 4 pi   pi   4096 Aug  4 21:49 ..
-rw-r--r-- 1 pi   pi   1367 Aug  4 21:47 cert.pem
-rw-r--r-- 1 pi   pi    674 Aug  4 21:52 config.json
-rw-r--r-- 1 pi   pi   1675 Aug  4 21:48 key.pem

pi@raspberrypi:/opt/fhem/alexa-fhem $ ls -la
insgesamt 48
drwxr-xr-x  5 pi   pi   4096 Aug  4 22:08 .
drwxr-xr-x 12 root root 4096 Aug  4 21:44 ..
drwxr-xr-x  2 pi   pi   4096 Aug  4 21:41 bin
-rw-r--r--  1 pi   pi    573 Feb 19 19:24 config-sample.json
-rwxrwxr-x  1 pi   pi    150 Nov  5  2016 createKey.sh
-rw-rw-r--  1 pi   pi   1183 Dez 23  2016 lambda.js
drwxr-xr-x  2 pi   pi   4096 Aug  4 21:41 lib
drwxr-xr-x 70 pi   pi   4096 Aug  4 21:46 node_modules
-rw-rw-r--  1 pi   pi     33 Nov  5  2016 .npmignore
-rw-rw-r--  1 pi   pi    373 Apr 26 08:39 package.json
-rw-rw-r--  1 pi   pi   2830 Nov  8  2016 README.md
-rw-rw-r--  1 pi   pi   1597 Mär 13 08:38 TODO

alexa.service
[Unit]
Description=Node.js Alexa Server
After=syslog.target network-online.target

[Service]
Type=simple
User=pi #oder ein anderer Benutzer wie fhem
# oder wo auch immer eure alexa-fhem liegt
WorkingDirectory=/opt/fhem/alexa-fhem
ExecStart=/opt/fhem/alexa-fhem/bin/alexa -U /home/pi/.alexa
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

config.json
{
    "alexa": {
        "port": 3000,
        "name": "Alexa FHEM",
        "keyFile": "./key.pem",
        "certFile": "./cert.pem",
        "nat-pmp": "",
        "nat-upnp": false,
        "applicationId": "amzn1.ask.skill.xxxxxx",
        "oauthClientID": "amzn1.application-oa2-client.xxxxxxxx"
    },

    "connections": [
        {
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "webname": "fhem",
            "auth": {
             "user": "user",
             "pass": "password"
             },
            "filter": "room=Alexa"
        }
    ]
}


Ich bin ratlos.

VG
Jürgen
3x Sonos Play 1, 1x Sonos Playbar + Sub, 1 Sonos-One
Fritzbox 7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM Fensterkontakte und  Amazon Echo Dot, raspberry3B+ mit RPI-RF-MOD und piVCCU, Raspbian Stretch Lite

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 3835
Antw:Alexa-fhem als Dienst
« Antwort #19 am: 05 August 2017, 01:59:11 »
sudo chown pi:pi /home/pi/.alexa
Und wenn das nicht reicht, dann:
cp /home/pi/.alexa/*.pem /opt/fhem/alexa-fhem/(Ich bin jetzt nicht mehr sicher, ob die Zertifikate im home Verzeichnis des Benutzers, oder in WorkingDirectory sein müssen. Ich sehe gerade bei mir, dass die in beiden sind. Sag bitte Bescheid nach welcher Massnahme, es gelöst wird.

EDIT: hab ein paar Tests gemacht. Tatsächlich müssen die Zertifikate in /opt/fhem/alexa-fhem
« Letzte Änderung: 05 August 2017, 02:09:10 von amenomade »
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 3835
Antw:Alexa-fhem als Dienst
« Antwort #20 am: 05 August 2017, 03:05:05 »
Korrigiertes Bild und Erklärungen
« Letzte Änderung: 05 August 2017, 03:08:08 von amenomade »
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline juemuc

  • Full Member
  • ***
  • Beiträge: 454
Antw:Alexa-fhem als Dienst
« Antwort #21 am: 05 August 2017, 19:24:20 »
Danke.

Nun funktioniert es  ;D

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Playbar + Sub, 1 Sonos-One
Fritzbox 7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM Fensterkontakte und  Amazon Echo Dot, raspberry3B+ mit RPI-RF-MOD und piVCCU, Raspbian Stretch Lite
Gefällt mir Gefällt mir x 1 Liste anzeigen

Offline steffen83

  • Full Member
  • ***
  • Beiträge: 249
Antw:Alexa-fhem als Dienst
« Antwort #22 am: 01 Januar 2018, 23:26:50 »
Hallo,

nach mehr als 5 Stunden probieren und lesen komme ich nicht weiter und hoffe auf eure Hilfe!

/home/alexa/.alexa/config.json
        "keyFile": "./key.pem",
        "certFile": "./cert.pem",

/home/alexa/.alexa $ ls -l
insgesamt 20
-rw-r--r-- 1 alexa alexa 1354 Jan  1 22:50 cert.pem
-rw-r--r-- 1 alexa alexa  666 Dez 30 00:10 config.backup
-rw-r--r-- 1 alexa alexa  590 Jan  1 23:05 config.json
-rw-r--r-- 1 alexa alexa  573 Dez 29 21:36 config-sample.json
-rw-r--r-- 1 alexa alexa 1679 Jan  1 22:50 key.pem

/opt/fhem/alexa-fhem $ ls -l
insgesamt 44
drwxr-xr-x  2 alexa alexa 4096 Jan  1 22:51 bin
-rw-r--r--  1 alexa alexa 1354 Jan  1 22:53 cert.pem
-rw-r--r--  1 alexa alexa  573 Dez 29 21:20 config-sample.json
-rwxr-xr-x  1 alexa alexa  150 Dez 29 21:20 createKey.sh
-rw-r--r--  1 alexa alexa 1679 Jan  1 22:53 key.pem
-rw-r--r--  1 alexa alexa 1183 Dez 29 21:20 lambda.js
drwxr-xr-x  2 alexa alexa 4096 Dez 29 22:24 lib
drwxr-xr-x 71 alexa alexa 4096 Dez 29 21:15 node_modules
-rw-r--r--  1 alexa alexa  373 Dez 29 21:20 package.json
-rw-r--r--  1 alexa alexa 2830 Dez 29 21:20 README.md
-rw-r--r--  1 alexa alexa 1597 Dez 29 21:20 TODO

/etc/systemd/system/alexa service
[Unit]
Description=Node.js Alexa Server
After=syslog.target network-online.target

[Service]
Type=simple
User=alexa
WorkingDirectory=/opt/alexa/alexa-fhem
ExecStart=/opt/fhem/alexa-fhem/bin/alexa -U /home/alexa/.alexa
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

Mit
/opt/fhem/alexa-fhem/bin/alexa -U /home/alexa/.alexaBekannte Fehlermeldung:
Error: ENOENT: no such file or directory, open './key.pem'

Ohne -U /home.... startet er zwar, aber das Autostart Script läuft nicht.
Ich hoffe ihr seht den Fehler  :'(
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

Offline Tuxi70

  • Jr. Member
  • **
  • Beiträge: 74
Antw:Alexa-fhem als Dienst
« Antwort #23 am: 02 Januar 2018, 11:21:48 »
FHEM und Alexa-FHEM werden bei mir mit systemctl gestartet.

Alexa-FHEM:
[Unit]
Description=Node.js Alexa Server
After=syslog.target network-online.target

[Service]
Type=simple
User=fhem
Group=dialout
WorkingDirectory=/srv/usb-hdd/raspberry/fhem/alexa-fhem
ExecStart=/srv/usb-hdd/raspberry/fhem/alexa-fhem/bin/alexa -U /srv/usb-hdd/raspberry/fhem/alexa-fhem/.alexa
Restart=on-failure
RestartSec=10
KillMode=process

[Install]
WantedBy=multi-user.target

und FHEM:
[Unit]
Description=FHEM Home Automation

[Service]
Type=forking
#WorkingDirectory=/opt/fhem
WorkingDirectory=/srv/usb-hdd/raspberry/fhem
ExecStart=/usr/bin/perl fhem.pl fhem.cfg
Restart=always
RestartSec=5
User=fhem
Group=dialout

[Install]
WantedBy=multi-user.target

Da ich die Vermutung habe, dass die SD-Karte eine Macke hat, habe ich FHEM & Co. auf eine externe Platte gepackt.
FRITZ!Box: Fon WLAN 7560, FW: 7.0
James: Raspberry Pi 3 Alexa-Fhem 0.4.4 & FHEM 5.8 Latest Revision: 16799 & SVG-DBLog MySQL 3.10.8
Netz : VDSL 1&1 50.000 3x FRITZ!Powerline 530E FW: 1.4.0-00
Smarthome: 4x Comet DECT Thermostat Firmware: 3.68 8x FritzDECT200 Firmware: 4.08
Steuerung: Alexa

Offline amenomade

  • Hero Member
  • *****
  • Beiträge: 3835
Antw:Alexa-fhem als Dienst
« Antwort #24 am: 08 Januar 2018, 15:15:24 »
@Steffen83: das ist m.A. falsch:WorkingDirectory=/opt/alexa/alexa-fhem
FHEM 5.8 Pi 3, EchoDot, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, und HM Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten

Offline PingPong

  • Full Member
  • ***
  • Beiträge: 183
Antw:Alexa-fhem als Dienst
« Antwort #25 am: 23 Februar 2018, 06:10:54 »
Hallo zusammen,

ich hänge mich hier mal an und hoffe, dass mich hier jemand an die Hand nehmen kann. Komme aufgrund fehlender Linux Kenntnisse einfach nicht weiter.
Folgende Herausforderung:
Grundsätzlich läuft bei mir alexa-fhem. Ich kann den Dienst manuell via ./bin/alexa im Verzeichnis /opt/fhem/alexa-fhem stehend starten.
Allerdings schaffe ich es nicht, diesen Dienst per initd automatisiert starten zu lassen.

#!/bin/sh
### BEGIN INIT INFO
# Provides: alexa
# Required-Start: $network $remote_fs $syslog
# Required-Stop: $remote_fs $syslog
# Default-Start: 2 3 4 5
# Default-Stop: 0 1 6
# Short-Description: Start daemon at boot time for alexa
# Description: Enable service provided by daemon.
### END INIT INFO
export PATH=$PATH:/usr/local/bin
export NODE_PATH=$NODE_PATH:/usr/local/lib/node_modules
PID=`pidof alexa`
export ALEXAPATH="/opt/fhem/alexa-fhem"
export LOGPATH="/opt/fhem/log"
case "$1" in
start)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is already running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is already running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status on"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        su - "pi" -c "cd $ALEXAPATH;./bin/alexa > $LOGPATH/alexa-`date +%Y-%m`.log 2>&1 &"
        echo "Alexa starting"
        sleep 2
$0 status
fi
;;
stop)
if ! ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        kill $PID
        echo "Alexa closed"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa closed"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
fi
;;
restart)
if ! ps -p $PID > /dev/null 2>&1; then
        $0 start
else
        $0 stop
        $0 start
fi
;;
status)
if ps -p $PID > /dev/null 2>&1; then
        echo "Alexa is running PID $PID"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa running as PID $PID"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status on"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
else
        echo "Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "setreading FHEM.Alexa.Status info Alexa is not running"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa.Status off"
        perl /opt/fhem/fhem.pl 7072 "set FHEM.Alexa off"
fi
;;
*)
echo "Usage: $0 {start|stop|status|restart}"
exit 1
;;
esac
echo "script done"
exit 0


Wenn ich das richtig interpretiere liegt es (auch) an fehlenden Rechten
-su: /opt/fhem/log/alexa-2018-02.log: Permission denied
Könnte hier mal jemand mit mir bei 0 einsteigen?

Offline steffen83

  • Full Member
  • ***
  • Beiträge: 249
Antw:Alexa-fhem als Dienst
« Antwort #26 am: 23 Februar 2018, 08:46:54 »
Hallo Ping Pong,

schau dir mal meinen Code oben an und korrigiere nur noch das WorkingDirectory=/opt/alexa/alexa-fhem
Dann hättest du ein Beispiel wo es funktioniert

Gruß
Steffen
Raspberry Pi 3 (Noobs, aktuelle Fhem und Pilight) | FHEMduino | HM-OCCU-SDK | HM-Sec-SCo | HM-Sec-SD-2 | HM-CC-RT-DN | HM-LC-Bl1PBU-FM

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 5555
  • NIVEAu ist keine Creme...
Antw:Alexa-fhem als Dienst
« Antwort #27 am: 23 Februar 2018, 09:04:59 »
Hallo Ping Pong,

schau dir mal meinen Code oben an und korrigiere nur noch das WorkingDirectory=/opt/alexa/alexa-fhem
Dann hättest du ein Beispiel wo es funktioniert

Gruß
Steffen

PingPong nutzt initd nicht systemd!

@PingPong:

ja Rechteproblem.

User pi hat keine Schreibrechte in /opt/fhem/log

Entweder dem User pi dort berechtigen (aufnehmen in die Gruppe[n] die auch fhem hat / Rechte des Verzeichnisses anpassen / ...) oder die Logdatei an einen anderen Ort legen, also wo pi schreiben darf (/home/pi/...) oder mit dem User fhem starten...

Gruß, Joachim
FHEM 5.9 PI3: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 3x EnOcean, HUE, CO2, ESP-Multisensor, FireTV, KODI, alexa-fhem, ...
FHEM 5.9 PI2: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM 5.9 PI3 (Test): HM-MOD-PCB, Snips, Google Home, ...

Offline PingPong

  • Full Member
  • ***
  • Beiträge: 183
Antw:Alexa-fhem als Dienst
« Antwort #28 am: 23 Februar 2018, 10:52:46 »
Hallo,

vielen Dank für Eure schnellen Antworten.

jaja die Rechte :-) Hmm... Hast du vielleicht noch nen Tipp für mich, wie ich die Rechte anpassen muss?
so: sudo chown -R pi:pi /opt/fhem/alexa-fhem/  ??

LG
Marc

Offline MadMax-FHEM

  • Hero Member
  • *****
  • Beiträge: 5555
  • NIVEAu ist keine Creme...
Antw:Alexa-fhem als Dienst
« Antwort #29 am: 23 Februar 2018, 11:06:53 »
Das Verzeichnis das du genannt hast ist NICHT das Problem!

EDIT1: und den geposteten Befehl KEINESFALLS ausführen!!!! Sonst wird (vermutlich) fhem nicht mehr laufen!!!!!

Es geht um /opt/fhem/log

Was du wahrscheinlich tun kannst: den LOGPATH nach /opt/fhem/alexa-fhem/log verlagern. Nicht vergessen: /opt/fhem/alexa-fhem/log anlegen! ;)

Oder wie geschrieben den User pi in die Gruppe(n) des Users fhem aufnehmen...

Oder die Rechte des Pfades /opt/fhem/log anpassen ABER: das nur der Vollständigkeithalber genannnt. NICHT TUN!! Denn sonst stimmt es evtl./wahrschinlich nicht mehr für fhem!!!

EDIT2: oder eben mit dem User 'fhem' statt 'pi' starten...

EDIT3: und ich werde dir sicher hier keinen Befehl posten! Ich werde dir nicht raten wie du dein System "verbiegen" sollst damit es (evtl.) läuft! Bitte die Möglichkeiten versuchen zu verstehen. Nachlesen was wie geht und was was (genau) macht. Und dann selbst die gewählte Variante umsetzen. Sorry.

Gruß, Joachim
« Letzte Änderung: 23 Februar 2018, 11:11:30 von MadMax-FHEM »
FHEM 5.9 PI3: HM-CFG-USB, 40x HM, ZWave-USB, 6x ZWave, EnOcean-PI, 3x EnOcean, HUE, CO2, ESP-Multisensor, FireTV, KODI, alexa-fhem, ...
FHEM 5.9 PI2: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, KODI, ha-bridge, ...
FHEM 5.9 PI3 (Test): HM-MOD-PCB, Snips, Google Home, ...

 

decade-submarginal