[alexa-fhem | Generell] Alles zu Installation und damit verbundenen Problemen

Begonnen von prodigy7, 09 November 2016, 19:42:01

Vorheriges Thema - Nächstes Thema

amenomade

Grunsätzlich werden die Dienste immer von root gestartet. Aber dann die Befehle als "user" ausgeführt (spawn). Und das ist tatsächlich, was nicht funktioniert.

Was sagencat /etc/passwd | grep alexa
cat /etc/group |grep alexa



Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

MadMax-FHEM

Zitat von: Lucky2k12 am 27 August 2017, 11:47:45
Ups, peinlich. Der Alexa-prozess lief aus irgendeinem Grund nicht Da kann er natürlich nix erkennen.
mit folgendem Mapping wird auch was erkannt:
attr vacuum homebridgeMapping On=state;;values=Cleaning:valueOn,Docked:valueOff,cmdOn:start,cmdOff:charge

und Alexa antwortet brav mit "OK", wenn ich sage "Alexa, starte den Staubsauger" oder "schalte den Staubsauger ein"
nur leider startet da nichts.
alexa.log:

[2017-08-27 11:42:31] [FHEM] vacuum: executing set cmd for On with value 1
[2017-08-27 11:42:31] [FHEM]   executing: http://192.168.178.xx:8083/fhem?cmd=set%20cmdOff%20undefined%201&XHR=1
response :{"header":{"name":"TurnOnConfirmation","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"xxxxxx-yyyy-4e69-bd79-zzzzzzzz"},"payload":{}}


wieso kommt da kein device und cmdOff?? Ich steh auf dem Schlauch.  :P

Ich bin jetzt kein homeBridgemapping/alexaMapping Spezialist aber dein Mapping wirft beides durcheinander.

Beim homebridgeMapping gibt es (soweit ich weiß) nix mit verb oder so, das gehört (wenn) ins alexaMapping beim Alexa-Device.

Für on/off sollte da aber bereits was existieren


Du musst im homebridgeMapping beim jeweiligen Gerät "sagen" was bei on/off dann beim Gerät ausgeführt werden muss, also start/charging...

Musst mal schauen, es gibt bestimmt Beispiele für andere Geräte...

Es gibt sogar einen Thread mit Beispielen, mal im Forum suchen...

Bin leider grad nur mit dem Handy, da geht das nicht so leicht, sorry...

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)

pandabear_de

Zitat von: amenomade am 27 August 2017, 12:09:31
Was sagencat /etc/passwd | grep alexa
cat /etc/group |grep alexa


pi@raspi-home:/etc/systemd/system $ cat /etc/passwd | grep alexa
alexa:x:998:996::/home/alexa:/bin/bash
pi@raspi-home:/etc/systemd/system $ cat /etc/group |grep alexa
dialout:x:20:pi,alexa
alexa:x:996:

pandabear_de

#1698
Auf der Suche habe ich ein Slash hinten im WorkingDirectory hinzugefügt. Gefühlt bin ich auf dem richtigen Weg, da ich FHEM sehe, leider trotzdem noch nicht ganz erfolgreich...

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

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

[Install]
WantedBy=multi-user.target



pi@raspi-home:/etc/systemd/system $ sudo journalctl --since "2 minutes ago"

Aug 27 12:16:01 raspi-home sudo[3019]: pi : TTY=pts/1 ; PWD=/etc/systemd/system ; USER=root ; COMMAND=/usr/sbin/service alexa start
Aug 27 12:16:01 raspi-home sudo[3019]: pam_unix(sudo:session): session opened for user root by pi(uid=0)
Aug 27 12:16:02 raspi-home systemd[1]: Starting Node.js Alexa Server...
Aug 27 12:16:02 raspi-home systemd[1]: Started Node.js Alexa Server.
Aug 27 12:16:02 raspi-home sudo[3019]: pam_unix(sudo:session): session closed for user root
Aug 27 12:16:05 raspi-home alexa[3043]: [8/27/2017, 12:16:05 PM] using /home/alexa/.alexa/config.json
Aug 27 12:16:05 raspi-home alexa[3043]: [8/27/2017, 12:16:05 PM] ---
Aug 27 12:16:05 raspi-home alexa[3043]: [8/27/2017, 12:16:05 PM] this is alexa-fhem 0.3.4
Aug 27 12:16:05 raspi-home alexa[3043]: [8/27/2017, 12:16:05 PM] Fetching FHEM devices...
Aug 27 12:16:05 raspi-home alexa[3043]: [8/27/2017, 12:16:05 PM] [fhem] starting longpoll: http://127.0.0.1:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;si
Aug 27 12:16:05 raspi-home alexa[3043]: events.js:141
Aug 27 12:16:05 raspi-home alexa[3043]: throw er; // Unhandled 'error' event
Aug 27 12:16:05 raspi-home alexa[3043]: ^
Aug 27 12:16:05 raspi-home alexa[3043]: Error: listen EADDRINUSE :::3000
Aug 27 12:16:05 raspi-home alexa[3043]: at Object.exports._errnoException (util.js:907:11)
Aug 27 12:16:05 raspi-home alexa[3043]: at exports._exceptionWithHostPort (util.js:930:20)
Aug 27 12:16:05 raspi-home alexa[3043]: at Server._listen2 (net.js:1250:14)
Aug 27 12:16:05 raspi-home alexa[3043]: at listen (net.js:1286:10)
Aug 27 12:16:05 raspi-home alexa[3043]: at Server.listen (net.js:1382:5)
Aug 27 12:16:05 raspi-home alexa[3043]: at Server.startServer (/opt/fhem/alexa-fhem/lib/server.js:125:15)
Aug 27 12:16:05 raspi-home alexa[3043]: at Server.run (/opt/fhem/alexa-fhem/lib/server.js:240:8)
Aug 27 12:16:05 raspi-home alexa[3043]: at module.exports (/opt/fhem/alexa-fhem/lib/cli.js:30:10)
Aug 27 12:16:05 raspi-home alexa[3043]: at Object.<anonymous> (/opt/fhem/alexa-fhem/bin/alexa:17:22)
Aug 27 12:16:05 raspi-home alexa[3043]: at Module._compile (module.js:409:26)
Aug 27 12:16:05 raspi-home systemd[1]: alexa.service: main process exited, code=exited, status=1/FAILURE
Aug 27 12:16:05 raspi-home systemd[1]: Unit alexa.service entered failed state.

amenomade

Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

pandabear_de

Gelöst! ;D
Wichtig war der letzte Slash im WorkingDirectory

Der letzte Fehler wurde dadurch provoziert, dass ich eben in einer anderen Session (user alexa) bereits Alexa laufen hatte...

Meine finale alexa.service

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

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

[Install]
WantedBy=multi-user.target


pi@raspi-home:/etc/systemd/system $ sudo service alexa status
● alexa.service - Node.js Alexa Server
   Loaded: loaded (/etc/systemd/system/alexa.service; enabled)
   Active: active (running) since Sun 2017-08-27 12:20:57 CEST; 5s ago
Main PID: 3473 (alexa)
   CGroup: /system.slice/alexa.service
           └─3473 alexa

Aug 27 12:20:57 raspi-home systemd[1]: Started Node.js Alexa Server.


Danke für Eure Unterstützung!

amenomade

Komisch, bei mir läuft es ohne /
Deswegen vermute ich irgendwelches Berechtigungsproblem auf dem Verzeichnis WorkingDirectory selbst.

Das mit EADDR in use war schon klar ;)
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

pandabear_de

Zitat von: amenomade am 27 August 2017, 12:28:03
Komisch, bei mir läuft es ohne /
Deswegen vermute ich irgendwelches Berechtigungsproblem auf dem Verzeichnis WorkingDirectory selbst.
grrr... Du hast Recht... Sorry, dass ich Eure Zeit vergeudet habe...

Den Fehler konnte ich reproduzieren, in dem ich alexa manuell startete und dann den Service startete. Wenn ich dann wieder den manuellen Betrieb stoppte, konnte ich erfolgreich den Service starten.

SORRY

mindMaxi

Hallo zusammen,

nachdem ich jetzt seit 3 Tagen an der alexa-fhem Einrichtung sitze, das halbe Forum gelesen und alle Troubleshooting Anweisungen befolgt habe, wende ich mich an euch als meine letzte Hoffnung :(

Ich habe alexa-fhem auf meinem Raspberry Pi soweit ans Laufen gebracht, dass es automatische beim Neustart des Pi mitgestartet wird.
In den entsprechenden Logs sehe ich auch, dass Geräte aus FHEM (die dem entsprechenden Raum zugeordnet sind) auch geladen werden.

Allerdings tauchen diese in Alexa bei der Suche nach Geräten nicht auf.

Der Port 3000 ist von außen (Smartphone sowie Laptop außerhalb des WLANs) erreichbar, allerdings erscheint beim Aufruf von Host:3000 angehängte Meldung.

Den Hinweis, dass es sich um eine unsichere Verbindung handelt muss ich erst manuell bestätigen, bevor ich die erwartete Ergebniszeile sehen kann:

{"header":{"name":"UnsupportedOperationError","payloadVersion":"2","namespace":"Alexa.ConnectedHome.Control","messageId":"add36b92-8959-4e05-95b6-cb6c01ad6259"},"payload":{}}

Im Cloudwatch erhalte ich bei einer Geräte Suche in Alexa folgende zwei Fehlermeldungen:


11:58:59
START RequestId: 46ba56b7-8be8-11e7-a476-3de9345251d3 Version: $LATEST

11:58:59
2017-08-28T11:58:59.395Z 46ba56b7-8be8-11e7-a476-3de9345251d3 EVENT: [object Object]

11:58:59
2017-08-28T11:58:59.553Z 46ba56b7-8be8-11e7-a476-3de9345251d3 CONTEXT: [object Object]

11:59:14
END RequestId: 46ba56b7-8be8-11e7-a476-3de9345251d3

11:59:14
REPORT RequestId: 46ba56b7-8be8-11e7-a476-3de9345251d3 Duration: 15000.23 ms Billed Duration: 15000 ms Memory Size: 128 MB Max Memory Used: 19 MB

11:59:14
2017-08-28T11:59:14.369Z 46ba56b7-8be8-11e7-a476-3de9345251d3 Task timed out after 15.00 seconds



11:59:00
START RequestId: 470e9152-8be8-11e7-916c-c11659634219 Version: $LATEST

11:59:00
2017-08-28T11:59:00.115Z 470e9152-8be8-11e7-916c-c11659634219 EVENT: [object Object]

11:59:00
2017-08-28T11:59:00.115Z 470e9152-8be8-11e7-916c-c11659634219 CONTEXT: [object Object]

11:59:15
END RequestId: 470e9152-8be8-11e7-916c-c11659634219

11:59:15
REPORT RequestId: 470e9152-8be8-11e7-916c-c11659634219 Duration: 15003.58 ms Billed Duration: 15000 ms Memory Size: 128 MB Max Memory Used: 20 MB

11:59:15
2017-08-28T11:59:15.109Z 470e9152-8be8-11e7-916c-c11659634219 Task timed out after 15.00 seconds


Die Lambda.js sieht folgendermaßen aus:


const PORT=3000;
const HOST='fxxxxxx.ddnss.de';


// entry
exports.handler = function(event, context, callback) {

  console.log(`EVENT: ${event}`);
  console.log(`CONTEXT: ${context}`);

  var post_data = JSON.stringify(event);

  var options = {
    hostname: HOST,
    port: PORT,
    //family: 6,
    //path: '/',
    method: 'POST',
    rejectUnauthorized: false, // accept self-signed
    headers: {
      'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(post_data)
    }
  };

  var request = require('https').request(options, (result) => {
    console.log(`STATUS: ${result.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(result.headers)}`);
    result.setEncoding('utf8');
    var body = '';
    result.on('data', (chunk) => body += chunk);
    result.on('end', () => {
      console.log(`BODY: ${JSON.stringify(body)}`);
      callback(null, JSON.parse(body) );
      return;
    });
  });

  request.on('error', (e) => {
    console.log(`problem with request: ${e.message}`);
    callback(null, createError(ERROR_TARGET_OFFLINE) );
    return;
  });
}


Jemand eine Idee was ich hier noch versuchen kann?

Vielen Dank im Voraus und viele Grüße,

mindMaxi

Fixel2012

Zitat von: mindMaxi am 28 August 2017, 14:03:22
Hallo zusammen,

Der Port 3000 ist von außen (Smartphone sowie Laptop außerhalb des WLANs) erreichbar, allerdings erscheint beim Aufruf von Host:3000 angehängte Meldung.

Den Hinweis, dass es sich um eine unsichere Verbindung handelt muss ich erst manuell bestätigen, bevor ich die erwartete Ergebniszeile sehen kann

Dies ist völlig normal, da dein SSL Zertifikat selbst generiert ist. Darin sieht dein Browser eine Gefahr und versucht dich vor der vermeidlich Bösen Webseite zu schützen.
Fhem 5.8 auf Raspi 3, HMLAN und 868MHz CUL mit einigen Komponenten, Z-Wave Rollladenaktoren, Tablet UI, 433 MHz CUL mit Baumarktsteckdosen und Temp Sensoren, Amazon Echo, Echo Dot, 2x SONOS  play1, 1x SONOS Connect AMP,  presence, HUE, Lightify

mindMaxi

Vielen Dank für die schnelle Antwort!
Das heißt daran sollte es nicht liegen, dass die Geräte nicht angezeigt werden?
Was könnte hier denn sonst noch klemmen?

Wenn ich die Suche nach Geräten oder einen Test der Lambda Funktion ausführe, erscheint übrigens auch kein Eintrag im Alexa-Fhem Log...

MadMax-FHEM

Dann kommt Amazon bzw. die AWS Lambda-Funktion nicht auf alexa-fhem...

Spricht auch für die Meldung timeout nach 15sek...

Den Eintrag bzgl. Host etc. in AWS Lambda kontrolliert!?

EDIT: bzw. den Trigger überprüft!?

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)

mindMaxi

Der Host wie er in der AWS Lambda steht ist definitiv der richtige - wenn ich den da raus und in den Browser kopiere und mit Port 3000 aufrufe geht es.
Auch die ' sind drin.

Den Trigger habe ich schon überprüft und zur Sicherheit auch nochmal rausgeschmissen und neu angelegt - alles bisher ohne Ergebnis :(

MadMax-FHEM

Was passiert, wenn du den "Test-Knopf" in AWS klickst?
Kommt etwas in alexa-fhem an (Log-Datei)?

Was für einen Internetzugang hast du?

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)

TomLee

ZitatIn den entsprechenden Logs sehe ich auch, dass Geräte aus FHEM (die dem entsprechenden Raum zugeordnet sind) auch geladen werden.

Allerdings tauchen diese in Alexa bei der Suche nach Geräten nicht auf.

Das hatte ich vor kurzem bei einer Neuinstallation nachdem ich die falsche IP bei "Server" in der config.json eingetragen hatte.