FHEM Connector für Amazon Alexa - alexaFHEM.ProxyConnection

Begonnen von aHome77, 24 Dezember 2021, 09:39:46

Vorheriges Thema - Nächstes Thema

passibe

#15
Du kannst diese Zeilen
Zitat von: mfeske am 28 Oktober 2025, 22:26:10Host fhem-va.fhem.de
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa
im Prinzip in alle config-Dateien auslagern, die vom SSH Client ausgelesen werden.

Wenn du mal von dem Rechner auf dem FHEM läuft ein ssh localhost -v ausführst (dann einfach wieder mit ctrl+c abbrechen), siehst du ganz oben Zeilen wie
debug1: Reading configuration data /home/<DEIN_BENUTZERNAME>/.ssh/config
[...]
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: Reading configuration data /etc/ssh/ssh_config.d/20-systemd-ssh-proxy.conf

Du siehst also, dass
  • die Datei <BENUTZERVERZEICHNIS>/.ssh/config ausgelesen wird, dann
  • /etc/ssh/ssh_config und
  • sämtliche Dateien auf die ssh_config verweist.

In ssh_config dürfte es bei dir auch die Zeile
Include /etc/ssh/ssh_config.d/*.confgeben. Aus dieser ergibt sich, dass alle Dateien, unter ssh_config.d, die in .conf enden, ausgelesen werden. Fehlt diese Zeile, wird auch nichts unter /etc/ssh/ssh_config.d ausgelesen (Dateien, die nicht in .conf enden, werden sowieso schon ignoriert).



Für FHEM (bzw. alexa-fhem) heißt das: Du kannst das entweder direkt in /etc/ssh/ssh_config eintragen oder unter /etc/ssh/ssh_config.d ablegen, z.B. als alexa.conf.
Du kannst es aber auch in /opt/fhem/.ssh/config eintragen – vielleicht war es da auch auf dem alten System eingetragen.

Letztlich ist es für deinen Anwendungsfall ein bisschen egal, wo es steht. Das entscheidet nämlich nur über die Reichweite der Konfiguration. Die Konfiguration aus /etc/ssh gilt für alle Benutzer des Systems, während die in <BENUTZERVERZEICHNIS>/.ssh/config nur für den jeweiligen Benutzer gilt. Über die Sicherheitsrisiken, die eine systemweite Eintragung zur Folge hat, kann man jetzt sicherlich philosophieren, das spielt meines Erachtens nach hier aber keine Rolle, weil wir dem Host fhem-va.fhem.de ohnehin vertrauen.

Aus Nachvollziehbarkeitsgründen ist es aber wohl am saubersten, den Eintrag in /opt/fhem/.ssh/config vorzunehmen.

EDIT/Wichtig: Nicht ssh und sshd verwechseln. Alles unter /etc/ssh, was mit sshd bezeichnet ist, betrifft den SSH Server, alles was mit ssh bezeichnet ist, den SSH Client. Hier geht es ja um eine Verbindung zu einem anderen SSH Server, weshalb wir hier als Client unterwegs sind; deshalb ist sshd uninteressant und es muss auch kein sudo service sshd restart o.ä. ausgeführt werden.

mfeske

#16
Hallo @passibe,

vielen Dank für die sehr verständliche Erklärung. Ich werde mal schauen wo in meinem Testsystem sich die Zeilen versteckt haben.
Ich meinem produktiv System steht in
/opt/fhem/.ssh/config die Datei hat folgende Rechte
Datei: /opt/fhem/.ssh/config
 Größe: 87            Blöcke: 8          EA Block: 4096  reguläre Datei
Gerät: 179/2    Inode: 524599      Verknüpfungen: 1
Zugriff: (0644/-rw-r--r--)  Uid: ( 1001/    fhem)  Gid: ( 1001/    fhem)
Zugriff: 2025-10-28 21:34:50.115518507 +0100
Modifiziert: 2025-01-19 13:46:28.000000000 +0100
Geändert: 2025-10-28 21:34:50.115518507 +0100
Geburt: 2025-10-28 21:34:50.115518507 +0100

Host fhem-va.fhem.de
  HostkeyAlgorithms +ssh-rsa
  PubkeyAcceptedAlgorithms +ssh-rsa

Ich dachte auch ich hätte alexa schon erfolgreich eingebunden und getestet sowie entsprechend die App mit dem Skill verbunden. Heute bekomme ich aber die Nachricht

alexaFHEM
stopped; failed to connect to fhem: 401: Authorization Required
2025-10-30 13:25:14
alexaFHEM.ProxyConnection
running; SSH connected
2025-10-29 00:55:40

in der App beim skill die Mitteilung ist nicht online :-(

Ich habe auch probiert den Inhalt der /opt/fhem/.ssh/config zu löschen und diesen in der /etc/ssh/sshd_config.d/alexa.conf abzulegen.
Das hat jetzt dazu geführt das ich mich per SSH nach einem Neustart nicht mehr einloggen kann :-(

ssh: connect to host 192.168.115.74 port 22: Connection refused

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

MadMax-FHEM

Zitat von: mfeske am 30 Oktober 2025, 13:54:27stopped; failed to connect to fhem: 401: Authorization Required
Die Meldung besagt aber, dass alexa-fhem nicht an fhem dran kommt.

Ähnliches sollte auch im alexa-fhem Log stehen.

Hast du für fhem User/PW also allowed etc. im Einsatz?
Entsprechend bei/für alexa-fhem eingerichtet, dass dabei eben die Credentials verwendet 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)

mfeske

Hallo Joachim,

Danke für die Antwort. Im Log steht:
[30.10.2025, 17:42:19] using config from ./alexa-fhem.cfg
*** CONFIG: parsed completely
[30.10.2025, 17:42:20] os.homedir()=/home/fhem
[30.10.2025, 17:42:20] this is alexa-fhem 0.5.65
[30.10.2025, 17:42:20] connecting to FHEM ...
[30.10.2025, 17:42:20] [FHEM] defaults to: will not send proactive events
[30.10.2025, 17:42:21] [FHEM] trying longpoll to listen for fhem events
[30.10.2025, 17:42:21] [FHEM] starting longpoll: http://127.0.0.1:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON×tamp=1761842541665
[30.10.2025, 17:42:21] [FHEM] got csrfToken: csrf_290388141743924
[30.10.2025, 17:42:21] [FHEM] Checking devices and attributes...
[30.10.2025, 17:42:21] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=%7BAttrVal(%22global%22%2C%22userattr%22%2C%22%22)%7D&fwcsrf=csrf_290388141743924&XHR=1
[30.10.2025, 17:42:21] [FHEM]   executing: http://127.0.0.1:8083/fhem?cmd=jsonlist2%20TYPE%3Dalexa&fwcsrf=csrf_290388141743924&XHR=1
[30.10.2025, 17:42:21] [FHEM] waiting for events ...
[30.10.2025, 17:42:21] [FHEM] Fetching FHEM devices...
[30.10.2025, 17:42:21] [FHEM] fetching: http://127.0.0.1:8083/fhem?cmd=jsonlist2%20alexaName%3D..*&fwcsrf=csrf_290388141743924&XHR=1
[30.10.2025, 17:42:21] [FHEM] longpoll ended, reconnect in: 200msec
[30.10.2025, 17:42:21] [FHEM] There was a problem connecting to FHEM (http://127.0.0.1:8083/fhem?cmd=%7BAttrVal(%22global%22%2C%22userattr%22%2C%22%22)%7D&fwcsrf=csrf_290388141743924&XHR=1).
[30.10.2025, 17:42:21] [FHEM]   401: Authorization Required
[30.10.2025, 17:42:21] [FHEM] There was a problem connecting to FHEM (http://127.0.0.1:8083/fhem?cmd=jsonlist2%20TYPE%3Dalexa&fwcsrf=csrf_290388141743924&XHR=1).
[30.10.2025, 17:42:21] [FHEM]   401: Authorization Required
[30.10.2025, 17:42:21] [FHEM] There was a problem connecting to FHEM (null)
[30.10.2025, 17:42:21] [FHEM]   401: Authorization Required
*** FHEM: connection failed: 401: Authorization Required
[30.10.2025, 17:42:21] Got SIGTERM, shutting down alexa-fhem...
[30.10.2025, 17:42:21] Reading alexaFHEM.ProxyConnection set to stopping;; alexa-fhem terminating

ZitatHast du für fhem User/PW also allowed etc. im Einsatz?
Entsprechend bei/für alexa-fhem eingerichtet, dass dabei eben die Credentials verwendet werden?[/qoute]

Mir dämmert etwas, ich habe FHEM über die Fritz!Box von aussen erreichbar gemacht und dafür natürlich einen User und Passwort angelegt. Ich muss jetzt vermutlich irgendwie auch einen für alexa mit den entsprechenden rechten anlegen ?
Ich muss nachher auch noch sehen warum ich mich jetzt per ssh ausgesperrt habe.

attr FEMWEB basicAuth {VerifyLogon($user,$password)} ? und dann die Infos an alexa geben ?

Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

MadMax-FHEM

Das Attribut bei FHEMWEB meine ich ist "veraltet", inzwischen macht man das wohl per allowed-Device.
Egal.

Ja, wenn du fhem per User/PW abgesichert hast, dann muss sich alexa-fhem nat. anmelden ;)
ZitatAttr

    alexaFHEM-auth
    the user:password combination to use to connect to fhem.
Alternativ ein nur lokales FHEMWEB für alexa-fhem...

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)

passibe

#20
Zitat von: mfeske am 30 Oktober 2025, 17:46:03Ich muss nachher auch noch sehen warum ich mich jetzt per ssh ausgesperrt habe.

Für die Zukunft bei Änderungen an der SSH-Konfiguration:
  • Ganz zur Sicherheit zweites Terminal mit ssh-Verbindung als fallback öffnen
  • Im ersten Terminal Änderung durchführen und sudo service sshd restart ausführen
  • Drittes Terminal öffnen und versuchen sich zu verbinden
Wenn es klappt: Super! Wenn nicht, die zwei funktionierenden Terminals auf keinen Fall schließen, sondern die Änderung rückgängig machen bzw. ins Log schauen und anpassen.

Nach einer Änderung niemals nur sshd neustarten, ausloggen und versuchen sich wieder neu einzuloggen, sondern immer mindestens eine SSH-Verbindung offenhalten ...


EDIT: Das gilt zwar schon, aber hier ist das irrelevant, weil es nicht um den SSH-Server geht. Hat mit diesem Thema nichts zu tun. Siehe Edit in #15

mfeske

#21
die config hätte er doch laden müssen ?
mfeske@fhem2025:~ $ ls -la /etc/ssh/sshd_config.d/
insgesamt 12
drwxr-xr-x 2 root root 4096 30. Okt 13:57 .
drwxr-xr-x 4 root root 4096 28. Okt 22:28 ..
-rw-r--r-- 1 root root  86 30. Okt 13:57 alexa.conf
mfeske@fhem2025:~ $ ssh localhost -v
OpenSSH_9.2p1 Debian-2+deb12u7, OpenSSL 3.0.17 1 Jul 2025
debug1: Reading configuration data /etc/ssh/ssh_config
debug1: /etc/ssh/ssh_config line 19: include /etc/ssh/ssh_config.d/*.conf matched no files
Ich habe die Datei entfernt und kann mich wieder einloggen.

@MadMax-FHEM jetzt mache ich gerade alles neu da will ich keine alten Sachen ;-) allowed-Device benötigt dann nicht die Zugangsdaten ?
muss ich das dann irgendwie in allowedWEB einbinden ?
define allowedWEB allowed
setuuid allowedWEB 69014ff8-f33f-be1a-4c9b-3e0cdf576c352930
attr allowedWEB basicAuth SHA256:6B76811E:qSuYXpKmfTHB2E9knCpyeTcfunp/h2SnqDq7kvtvc6w
attr allowedWEB validFor WEB,WEBhook
Gruß
Micha
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

passibe

#22
Zitat von: mfeske am 30 Oktober 2025, 20:42:39attr allowedWEB validFor WEB,WEBhook
Damit hast du es genügend eingebunden.

Für alexaFHEM kannst du die Zugangsdaten auch in der config.json eintragen.



Ansonsten:

Ich sehe grade, ich war komplett lost, als ich meinen Beitrag oben verfasst habe. Natürlich ist /etc/ssh/sshd_config.d der falsche Ordner und es muss – weil es um eine client config geht in /etc/ssh/ssh_config.d eingetragen werden! Also ssh und nicht sshd.

Sorry, da habe ich echt nicht ganz zuende gedacht :D Habe den Beitrag oben entsprechend angepasst.

Mit /etc/ssh/ssh_config.d/alexa.conf sollte es – ebenso wie mit /opt/fhem/.ssh/config – problemlos funktionieren.

sudo service sshd restart o.ä. brauchst du dann natürlich auch nicht, es geht ja hier nur um den Client. Siehe auch mein Edit oben.

mfeske

Hallo @passibe, kein Problem, so habe ich auch mal eine solche Situation durch ;-) ist jetzt in der /opt/fhem/.ssh/config drin, aber ich glaube das Verzeichnis wird beim Backup nicht mit gesichert, mach ich dann von Hand.
Also habe ich alles erforderliche schon getan ?
Du meinst die json /alexa-fhem.cfg ? Was muss ich da wie genau eintragen oder gibt es noch andere Wege ?
Hardware:
1 x Raspberry Pi Mod. B 512 MB
eq-3 2 x MAX! eTRV Heizungssteller, 1 x MAX! Fensterkontakt, 1 x MAX! Cube - LAN Gateway (ausser Betrieb)
Intertechno 1x ITZ-500, 3x ITT-1500, 9x ITR-1500, 3 x ITDL-1000, 2 x ITL-500
1 x CC1101-USB-Lite 433MHz (CUL433)  V3 1 x CC1101-USB-Lite 868MHz (CUL868)

MadMax-FHEM

#24
Andere Wege: habe ich doch gepostet..


Bzw. kann man auch in der Hilfe zu Alexa nachlesen...

EDIT: und es steht im alexa-fhem Connector Wiki. Sogar genau mit deiner Fehlermeldung...

Eintragen in der Config ist historisch wohl noch möglich.

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)