Serverneustart FHEM Connector für Amazon Alexa

Begonnen von paulbaumann, 22 Februar 2021, 21:05:17

Vorheriges Thema - Nächstes Thema

paulbaumann

Hallo Problem,

der FHEM Connector für Amazon Alexa funktioniert prima, bis...
ich den Server (also nicht FHEM sondern die Hardware wo u.a. FHEM läuft...) neu starte. Das mache ich häufig...
NAch dem Neustart kann ich zwar auf die FHEM Webseite zugreifen alles o.k.
ABER
Ich muss auf das Schalter-Symbol (usr/bin/alexa-fhem) drücken und ausschalten und dann einschalten.
Dann gehen alle meine schönen Dummys mit Alexa wieder. Kann ich das nicht automatisieren, das nervt.
Jedesmal wenn ich den Server (Ubuntu 18.04) neu starte muss ich in die FHEM-Oberfläche das mein Alexa geht und das bis zu 5x die Woche...
Helfen irgendwelche Einträge in crontab oder rc.local ??

MadMax-FHEM

Wenn du wirklich (nur) "Symptombekämpfung" willst:


define nAlexaRestart notify global:INITIALIZED set AlexaDevice restart


Aber eigentlich sollte das autom. gehen...
Und warum startest du so oft neu?

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)

paulbaumann

Ich teste das mal und melde morgen oder übermorgen zurück.
Habe alles Mögliche auf dem Server zu laufen und bin am basteln. Deswegen starte ich derzeit öfter. Hat nix mit fhem zu tun. Ich weiß ein Server sollte durchlaufen und ich komme hoffentlich wieder da hin...

Wernieman

Meistens reicht es doch, den Dienst zu rebooten, den mal "neugemacht" hat ....
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

paulbaumann

Da brauche ich jetzt wirklich mal Hilfe, also der Tip mit dem Notify für AlexaDevice (also bei mir schlicht alexa) bringt nix.
Bei Neustart funktioniert Alexa nicht, übrigens auch gassist dasselbe. Ich konnte das auch eingrenzen und unbefriedigend lösen, denn es gibt ja Logs von ALexa auf dem Server
Fehler ist also, mal als kurzer Ausschnitt:

[2021-2-23 4:41:38 PM] refreshing token
[2021-2-23 4:41:38 PM] failed to refresh token: Error: getaddrinfo ENOTFOUND va.fhem.de va.fhem.de:443
[2021-2-23 4:41:39 PM] Reading alexaFHEM.ProxyConnection set to error;; Reverse Proxy replied with neither registered nor unregistered status: out:  err:ssh: Could not resolve hostname fhem-va.fhem.de: Name or service not known

Ich kann den Service irgendwann stoppen und starten, restart geht warum auch immer generell nicht.
So kam ich drauf das es hier ein Timingproblem ist (vielleicht verursacht von meinem apache2?? den ich wegen der Port80-Problematik für Diverses brauche)
Wenn ich in der rc.local nämlich nicht nur stop und start reinfummele sondern 2 Pausen (vielleicht reicht auch eine der sleep-Zeilen) geht es zum Schluss, hier die Zeilen!

sleep 1
systemctl stop fhem.service
sleep 4
systemctl start fhem.service

und die letzte Zeile im Alexa-Log sieht auch wunschgemäß aus:

SSH: Welcome at the reverse proxy!  This pseudoshell does not react to any input - do not get irritated.

Es funktioniert also Alles wunschgemäß nach dem Reboot aber wenn man in die Logs schaut ist es trotzdem Mist!!
Denn da wird ersichtlich, Neustart, Fehler, dann dank des Codes oben mit dem sleep Anmeldung nochmals, nun fehlerfrei.
Hat den negativen Seiteneffekt das mich Amazon regelmäßig zwingt mein Passwort zu ändern 2x im Monat (jedenfalls denke ich das das der Grund ist...)
Jemand eine Idee zwecks Timing beim hochfahren von fhem mit apache2?


Wenn ich in die Logs von ALexa und Google schaue

MadMax-FHEM

#5
Leider habe ich bei der von dir genutzen Konstellation keine Idee/Ahnung...

Hmm, höchstenz beim fhem-Start eine Abhänhigkeit zu Apache einbauen, also in das Service-Start-Script von fhem...
Denn alexa-fhem (und auch gassistant) wird durch fhem bzw. das alexa-Modul (gassistant-Modul?) gestartet...
Wenn also fhem erst nach Apache gestartet wird (sofern das der Grund ist), sollte es doch gehen!?

Gib auch ein fhem Wiki wo "sowas" (halt nicht für Apache abet "generell") beschrieben ist...

https://wiki.fhem.de/wiki/Fhem.service_(systemd_unit_file)

https://forum.fhem.de/index.php?topic=54271.0

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

paulbaumann

ja gassistant modul
Aber der Lösung komme ich sicher näher wenn ich mal abseits von fhem schaue, es ist ja komisch wenn ich 5 Sekunden sleep fabriziere und der Fehler ist nicht da.
Hatte ja nur 2 Zeilen der Fehler oben als code gepostet, interessant ist vielleicht auch die

Reading alexaFHEM.ProxyConnection set to error;; Reverse Proxy replied with neither registered nor unregistered status: out:  err:ssh: Could not resolve hostname fhem-va.fhem.de: Name or service not known

Wenn man dann noch google nutzt landet man wieder im fhem forum unddann bei diesem:
https://forum.fhem.de/index.php?topic=101309.0
DNS Namensproblem hin oder her, offensichtlich muss ich irgendwo am apache2 reverse proxy drehen damit er kein timeout produziert, ich recherchiere mal weiter.

Wernieman

Hast Du denn schon den Tip gemacht, FHEM NACH dem Reverse Proxy zu starten?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

paulbaumann

@Wernieman
Ich versuche es besser
Klar es soll letztlich eine Antwort rauskommen. Und ich kommunizierte unklar, das möchte ich gerne hier verbessern, wie ich den Rat eben verstanden habe.
Mein Problem habe ich im Prinzip ja gelöst, aber unsauber.
Sachstand:
Beim normalen Start eines Ubuntu 18.04 wird unter anderem FHEM mit gestartet. Das passiert nicht fehlerfrei, die Konnektoren von Gassist und Alexa starten nicht.
Das kann man im Log nachvollziehen.
Die Lösung im rc.local beim hochfahren erst den fhem-Dienst zu beenden und dann neu zustarten brachte keine Besserung, jedoch wenn ich dazwischen/davor ein sleep einfüge geht es fehlerlos.
Jedoch fehlerlos in dem Sinne das der Server hochfährt mit fhem jedoch nicht fehlerfrei mit den Konnektoren, dann runterfährt und dann dank der sleeps fehlerfrei mit den Konnektoren hochfährt.
Funktional ist somit Alles dann i.O.
Ich vermute mein Apache2 Reverse Proxy als Grund, denn offensichtlich und nachweisbar ist der Fehler resultiert aus der Zeitfolge der Dienste beim hochfahren des Servers.
Man kann im Log nachschauen das des Startes der Konnektoren die DNS-Auflösung noch nicht geht.
Ich ann auch jederzeit nach Serverstart händisch auf dem Client mit dem Schalter den jeweiligen Konnektor ausschalten und dann wieder einschalten, dann geht auch alles, im Moment mache ich das mit rc.local, siehe oben.
Warum das Alles hier?
Ich habe nichts Ungewöhnliches, ein Standar Ubunt 18.04 mit Standard Apache2 reverse proxy, somit wäre es für die Allgemeinheit wichtig woran das liegt und da bin ich dran und will hier weiter berichten!

paulbaumann

So nächste Erkenntnis:
Es reicht nur eine sleep Zeile, die muss aber zwingend zwischen start und stop fhem stehen und dann eine mindestens eine 5 enthalten
Wenn zwischen Strat und Stop nichts steht haut es nicht hin, anbei die rc.local mal komplett obwohl die ersten beiden Zeilen schon immer so standen und hier nichts zu tun haben.
Aber vielleicht hat ja ein Ubuntu/Apache Freak eine zündende Idee:

sleep 4
systemctl restart habridge.service
systemctl stop fhem.service
sleep 5
systemctl start fhem.service
exit 0


Wernieman

Ich glaube, Du verstehst mich nicht richtig. Anstatt in der rc.local  es zu beheben, in der config von systemd für FHEM es so einstellen, das fhem nach anderen notwendigen Diensten gestartet wird. Im Grunde genommen machst Du es mit Deine rc-Zeile nicht anders.

Alternativ: FHEM aus dem autostart rausnehmen und nur in der rc-starten lassen, was aber etwas unsauber währe (aber besser als Deine Lösung)
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

paulbaumann

Richtig, das bin ich auch jetzt angegangen parallel zu dem was Du da gerade geschrieben hast bzw. sogar davor.
Also als ersten Schritt habe ich das von Joachim (Link weiter oben) mit dem systemd Start mal überflogen.
Zwei Erkenntnisse: Da wird auch öfter mal von 5 Sekunden Verzögerung geredet, und man weiß nicht wozu. Sollte mir das zu denken geben?
Aber systemd, kein Bock dazu das jetzt umzustellen, ja ich weiß ich muss sollte mich früher oder später damit beschäftigen und das ist der moderne Start.
Derzeit läuft fhem bei mir noch nicht über systemd. (gibt man bei google systemd verzögerter Dienststart ein landet man auch als 1.Treffer im Forum hier und bei Joachim...)
Also habe ich das angefasst wie es ist und hoffentlich gibt es jetzt keinen shitstorm weil ich eine Stelle änderte die nicht optimal ist, aber gerne sagt mir wie es eleganter geht!
/etc/rc1.d/K01fhem angefasst und frech in die Zeile vor "perl fhem.pl fhem.cfg" ein "sleep 10" reingeschrieben.
Damit ging der gassist konnektor aber nicht alexa. Daraus ein "sleep 20" gemacht und danach geht alles sofort.
Für mich ist das Problem damit gelöst und ich hoffe ich kann damit auch Anderen helfen die das Problem haben.
Vielleicht können die Developer da ja auch was mitnehmen...

Wernieman

Was hast Du für ein System, das es noch wie init.d läuft?
- Bitte um Input für Output
- When there is a Shell, there is a Way
- Wann war Dein letztes Backup?

Wie man Fragen stellt: https://tty1.net/smart-questions_de.html

paulbaumann

Mein System ist Ubuntu, Original ein Ubuntu 9 Alpha vor was weiß ich xx Jahren.
Habe immer nur aktualisiert, früher immer, dann nur noch LTS.
Die letzten Aktualisierungen waren auf 16.04 und dann auf 18.04. Aktuell 18.04.5 LTS.
FHEM hatte ich installiert entweder bei 16.04 oder noch bei 14.04

paulbaumann

Kleine Korrektur: Bei 16.04 hatte ich neu aufgesetzt da Umstellung auf 64Bit. FHEM hatte ich glaube erst damit installiert.