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

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

Vorheriges Thema - Nächstes Thema

MadMax-FHEM

Zitat von: Amenophis86 am 07 Januar 2019, 15:09:00
Kurze Zwischenfrage? Wieso

Weil's geht ;)

Nein: damit ich verschiedene Namen habe.

Also Wohnung, Jarvis (aktuelle Namen).
Aber eigentlich als Test wie das geht damit ich sprachlich etwas angenehmer agieren kann:

Plan wäre:
Alexa sage der Wohnung schalte und walte ;)
("der Wohnung" get noch nicht weil er aktuell "nur" Wohnung heißt. Umbenamung steht noch aus: keine Zeit / nicht so wichtig)
Alexa sage Multimedia mache dies und das...
usw.


Zitat von: Amenophis86 am 07 Januar 2019, 15:09:00
und laufen die alle auf den gleichen Amazon Nutzer? Der bei deiner Freundin auch?

Ja beide, bzw. alle (also alle Skills auch die 2 [mit dem heute 3] Smart Home Skills) laufen unter einem Account.

Bei meiner Freundin habe ich (auch aus anderen Gründen: offener Port) ha-bridge im Einsatz...
...wenn ich dort umstelle, dann unter einem anderen Account.

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)

Amenophis86

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...

Spezialtrick

#137
Hallo gvzdus,

gerade ist mir aufgefallen, dass mein alexaFHEM den Status "stopped" meldet. Im Fhem Log zeigt sich:

2019.01.07 20:43:30 3: MyAlexa: alexaFHEM starting
2019.01.07 20:43:30 3: MyAlexa: using logfile: ./log/alexa-2019-01-07.log
2019.01.07 20:43:30 2: MyAlexa: starting alexa-fhem: /opt/fhem/alexa-fhem/bin/alexa -c ./alexa-fhem.cfg -s
2019.01.07 20:43:30 3: MyAlexa: read: end of file reached while sysread
2019.01.07 20:43:30 3: MyAlexa: alexaFHEM stopped


Im AlexaLazy Logging zeigen sich folgende Einträge:

[server] Fetching FHEM devices...
[FHEM] starting longpoll: https://localhost:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1546889856837
[server] Server emitted error: {"errno":"EADDRINUSE","code":"EADDRINUSE","syscall":"listen","address":"127.0.0.1","port":3000}
[server] Terminating - starting the listener not possible (another instance running?)
[server] Killing SSH on event process.exit
[server] this is alexa-fhem 0.5.2p6-FHEMlazy


Hast du eine Idee?  ???

Interessanterweise kann man trotzdem sämtliche Geräte schalten und auch neue Geräte hinzufügen.
FHEM - Debmatic - Zigbee2MQTT - Homekit

gvzdus

Naja, das heisst, dass der Port 3000 schon von jemandem genutzt wird...
Wenn Du keinen Verdacht hast, sollte "lsof" Dir bei der Suche nach dem Schuldigen helfen.

[p.s.] Mutmaßlich läuft schon ein Alexa-Prozess, z.B., weil er klassisch für das FHEM.Alexa-gestartet wurde. Oder weil Du das Alexa-Device gelöscht hast und neu angelegt hast - beim Löschen wird der laufende Alexa-Prozess nicht beendet.

Spezialtrick

#139
Eigentlich wird der Port nur von Alexa benutzt.

Ich hatte das "\n" in Verdacht... Habe es aus der Config gelöscht und nach einem erfolglosem Test wieder eingefügt. Nun Meldet mir das Log, dass es nicht mehr auch FHEM zugreifen kann.  :(

[FHEM] Fetching FHEM devices...
[FHEM] fetching: https://localhost:8083/fhem?cmd=jsonlist2%20alexaName=..*&XHR=1
[FHEM] longpoll ended, reconnect in: 12200msec
[FHEM] There was a problem connecting to FHEM (https://localhost:8083/fhem?cmd=%7BAttrVal(%22global%22,%22userattr%22,%22%22)%7D&XHR=1).
[FHEM]   401: Authorization Required
[FHEM] There was a problem connecting to FHEM (https://localhost:8083/fhem?cmd=jsonlist2%20TYPE=alexa&XHR=1).
[FHEM]   401: Authorization Required
[FHEM] There was a problem connecting to FHEM
[FHEM]   401: Authorization Required


Komischerweise habe ich daran aber nichts verändert.
FHEM - Debmatic - Zigbee2MQTT - Homekit

gvzdus

Also:

  • ssh\n ist bedingungslos böse und schlecht, bitte \n entfernen.
  • Deine /opt/fhem/alexa-fhem.cfg enthält wohl keinen auth-Block (mit Username + PW), wohl aber die alte Config-Datei unter .alexa/config.json.
    Vorschlag: Rüberkopieren

Spezialtrick

Danke für den schnellen Fix.

Kannst du mir erklären, wieso bisher kein Username und Passwort in der Config standen? Ich hatte immer das Gefühl, dass diese nach einer Verwendung "raus" gelöscht wurden.
FHEM - Debmatic - Zigbee2MQTT - Homekit

gvzdus

Wahrscheinlich lief Dein alter alexa-Prozess ewig weiter. Oder standen in der alten .alexa/config.json auch keine Zugangsdaten?

39_alexa liest die Zugangsdaten aus, wenn über Basic-Auth gearbeitet wird - bei SHA-verhashten Passwörtern hat er dazu keine Chance.
Hingegen merkt mein "alexa -A", dass Zugangsdaten nötig sind und fragt sie ab.

Ich stelle jetzt mal meine Version auch auf "~/alexa-fhem.cfg" um, mittelfristig wird ja ohnehin da die Config liegen.

Spezialtrick

Zitat von: gvzdus am 07 Januar 2019, 21:17:35
Wahrscheinlich lief Dein alter alexa-Prozess ewig weiter. Oder standen in der alten .alexa/config.json auch keine Zugangsdaten?

39_alexa liest die Zugangsdaten aus, wenn über Basic-Auth gearbeitet wird - bei SHA-verhashten Passwörtern hat er dazu keine Chance.
Hingegen merkt mein "alexa -A", dass Zugangsdaten nötig sind und fragt sie ab.

Ich stelle jetzt mal meine Version auch auf "~/alexa-fhem.cfg" um, mittelfristig wird ja ohnehin da die Config liegen.

Ich habe die Credentials ehrlich gesagt nur bei der Installation angeben. In der mir bekannten Config standen diese nie drin.

Die Config unter .alexa/config.json kannte ich nicht.




Gesendet von iPhone mit Tapatalk Pro
FHEM - Debmatic - Zigbee2MQTT - Homekit

gvzdus

Wie angedroht, nun Version 0.5.3 auf Github und zum Download.

Änderungen gemäß CHANGELOG.md:


  • A ChangeLog
  • Default-Configuration moved from .alexa/config.json to ~/alexa-fhem.cfg
  • Process title is not changed, to see command line arguments in ps
  • alexaFHEM.ProxyConnection is set to the status of the SSH connection
  • some error cases handled in autoconfiguration (execution of SSH commands)
  • in the response, a header X-ProcTime is set to analyse the response time
      in the chain.
  • Compression on SSH connection turned on
  • winston-requirement removed from package.json

Upgrade:

  • alexa-fhem stoppen
  • Download / git update
  • bin/alexa -A laufen lassen als richtiger User
  • starten

Erläuterungen:

Dringend nötig ist das Update nicht, aber es zieht z.B. automatisch die config.json zu ~/alexa-fhem.cfg um, und das ist dann auch für den Start von alexa-fhem der Default-Ort ab 0.5.3, um weitere Probleme zu verhindern.

Bei "ps" nicht zu sehen, mit welchen Optionen ein Kommando aufgerufen wird, finde ich unethisch, deswegen die Änderung.

ProxyConnection: Einfach ins Alexa-Device gucken...

Antwortszeiten: Das ist nicht unwichtig: In einem Header "X-Proctime" wird jetzt zurückgemeldet, welche Antwortszeit das System hatte. Ich versuche die Kette von Lambda über SSH-Proxy bis zum lokalen Prozess zu analysieren, um zu gucken, wo man noch relevante Millisekunden rauskitzeln kann. Die Zahlen werde ich dann, wenn welche zusammengekommen sind, hier veröffentlichen: Ich habe dann 3 Messpunkte, nämlich Lambda, SSH-Proxy beim Verein und eben lokal.
Wer's partout nicht will: Zeile 92 in server.js auskommentieren.

Compression: SSH unterstützt von Haus aus Kompression. Und die ist bei einer mehrere Tage stehenden Verbindung natürlich viel schlauer als für den einzelnen Request. Das wird kein Speed bringen, aber weniger Daten, und mehr Entropie für bessere Verschlüsselung. Und vielleicht gibt es ja auch Leute, die ihre lokale Kiste über eine Mobilfunkanbindung oder Dorf-DSL angebunden haben. Falls es ssh-Versionen ohne Kompression geben sollte, muss sie halt wieder raus.

winston: Hatte ich vorübergehend für das Logging verwendet. Wer noch mal "npm install" eintippt, spart ein paar Bytes auf der SD-Karte.

MadMax-FHEM

#145
Hi Georg,

mache ich gleich mal!

Dafür ist mein neues Testsystem ja da ;)

Fehlt da nicht noch ein npm install?
Also zwischen "Download / git update" und "bin/alexa -A"!?

EDIT: ich hab's mal gemacht (also das npm install). Hat wohl geklappt :) Also zumindest läuft es wieder und der Dummy lässt sich (weiterhin) schalten :) Kann ich irgendwas liefern/testen?

EDIT2: hier dann noch die Ausgaben beim Update:

fhem@raspberrypi:~/alexa-fhem$ git pull
remote: Enumerating objects: 18, done.
remote: Counting objects: 100% (18/18), done.
remote: Compressing objects: 100% (4/4), done.
remote: Total 11 (delta 6), reused 11 (delta 6), pack-reused 0
Unpacking objects: 100% (11/11), done.
From https://github.com/gvzdus/alexa-fhem
   cb9b67f..8ac6136  master     -> origin/master
Updating cb9b67f..8ac6136
Fast-forward
CHANGELOG.md  | 15 +++++++++++++++
bin/alexa     |  2 +-
lib/server.js | 40 +++++++++++++++++++++++++++++-----------
lib/user.js   | 31 +++++++++++++++++++++++--------
package.json  |  5 ++---
5 files changed, 70 insertions(+), 23 deletions(-)
create mode 100644 CHANGELOG.md
fhem@raspberrypi:~/alexa-fhem$ npm install
(node:1412) [DEP0022] DeprecationWarning: os.tmpDir() is deprecated. Use os.tmpdir() instead.
fhem@raspberrypi:~/alexa-fhem$ bin/alexa -A
FHEM-Connectivity fine, CSRF-Token: csrf_649834378345030
alexa-fhem.cfg to write:
{
  "connections": [
    {
      "webname": "fhem",
      "port": "8083",
      "server": "localhost",
      "name": "FHEM",
      "filter": "alexaName=..*",
      "base_url": "http://localhost:8083/fhem"
    }
  ],
  "description": "alexa-fhem default config",
  "alexa": {
    "name": "alexa-fhem default",
    "bind-ip": "127.0.0.1",
    "publicSkill": true,
    "ssl": false,
    "ssh": "/usr/bin/ssh",
    "port": 3000,
    "disableCustomSkill": true
  }
}
Okay to write about file to /opt/fhem/alexa-fhem.cfg? [Hit Enter for okay, 'n' else]
SSH key seems to exist
Our SSH key is known at the reverse proxy, good!
[user]   executing: http://localhost:8083/fhem?cmd=jsonlist2%20TYPE%3Dalexa&fwcsrf=csrf_649834378345030&XHR=1


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)

gvzdus

Kannst Du machen, räumt Winston weg, siehe meine Erläuterungen. Musst Du aber nicht.

justme1968

der tunnel/proxy code ist jetzt auch in der 0.5.1 version die über sudo npm install -g alexa-fhem installierbar ist enthalten. wir sind also auf einem guten weg alles wieder zusammen zu führen.

wenn es keine probleme mit dem neuen alexa modul gibt werde ich auch das einchecken.

dank georg also demnächst wirklich für alle ganz einfach.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

gvzdus

> Konkret: Bald ist alles offiziell und es gibt nur noch eine Version: Die von Andre.

Wer Andres Modul einsetzt, kann von meiner Version auf Andres Version gehen. Wir arbeiten aber noch daran, dass "bin/alexa -A" auch in Andres Version ein Notnagel ist, wenn nicht alles per Startup durch 39_alexa.pm funktioniert.

Vorschlag: Nix tun, wenn man nicht leidensfähig oder selbsthilfefähgig ist: Bald ist lokal die Lösung fertig - auf Basis von Andres Weg und dem offiziellen alexa-fhem-Modull. Bald ist es wohl auch soweit, dass Ihr offiziell Andres Skill findet, den Skill verbindet, den Registrationkey (noch einmal) eingebt und alles auf der finalen Lösung ist. Bis dahin besser nix tun. Aber Mutige sind natürlich willkommen.

Mein alexa-fhem wird in der nächsten Version noch zusehen, diesen Übergang zu Andres offizieller und einziger Version möglichst smooth zu gestalten.

MadMax-FHEM

#149
Hi Georg,

ich frage mal hier (aber auch im anderen Thread bei André):

aktuell habe ich ja 3 fhem die von 2 alexa-fhem Installationen "bearbeitet" werden...

Also meine bisherige Umgebung:

alexa-fhem "legacy", manuell "installiert" und als Systemdienst eingerichtet bzgl. Start (noch initd aber systemd kein Problem, mir fehlte nur die Zeit und macht ja jetzt keinen Sinn mehr) und "kontrolliert" in fhem mittels serviced-Modul (statt Dummy/DOIF).

Smart Home Skill (V3) + 2x Custom Skill

Mein Haupt-fhem und mein Test-fhem.
Da einige "Devices" noch auf dem Testsystem weilen (keine Zeit für den Umzug) ich diese aber per Alexa steuern will/wollte habe ich einfach eine 2te Connection in die config.json eingetragen: läuft. :)


Dann habe ich ja für alexa-fhem lazy (und auch für die "Erweiterung" von André) ein weiteres Testsystem aufgesetzt (nur zum Testen).
Aber da wird ja die config.json (jedesmal? auch bei Update?) automatisch geschrieben!?
Wenn ich da nun eine 2te Connection eintrage wird das ja jedesmal? wieder "rausgeworfen" oder liege ich hier falsch?
Bzw. wie trage ich sowas ein damit es bleibt.

Gleiches gilt ja (aktuell noch) für den bzw. die Custom Skill(s), die muss man ja auch weiterhin manuell eintragen oder braucht man dafür sogar eine weitere alexa-fhem Installation (wie ich verstanden habe: nein).

Ich weiß evtl. hier an dieser Stelle und beim aktuellen Stand der Dinge "unpassend" aber irgendwann wird es (zumindest für mich) relevant...

Danke, 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)