Raspi nach Reboot per SSH nicht mehr erreichbar - FHEM aber schon

Begonnen von whirly85, 12 Juni 2018, 20:22:28

Vorheriges Thema - Nächstes Thema

whirly85

Hallo Leute,

ich habe mit FHEM auf einem Raspi 2 installiert, um meine Hausautomation damit zu machen.
Jetzt lasse ich den PI schon die Raumtemperaturen in meinem Haus auslesen und in eine CSV schreiben.
Leider hängt er sich dabei nach geraumer Zeit auf und ich muss ihn neustarten. Deswegen lasse ich ihn automatisch um 01:00 Uhr in der Nacht neustarten per Crontab.

Jetzt ist mir aufgefallen, dass FHEM damit nicht zurecht kommt. Nach dem Neustart des Raspi kann ich zwar noch auf FHEM zugreifen, aber nicht mehr auf den PI per SSH oder SFTP.

Wenn ich dann in FHEM den Befehl "shutdown restart" durchführe, kann ich danach wieder per SSH und SFTP auf den PI zugreifen.

Weiß einer von euch, woran das liege kann bzw. was ich da machen kann?

Vielen Dank schon mal

Grüße

amenomade

#1
Zitatwas ich da machen kann?
Logs schauen.

ZitatLeider hängt er sich dabei nach geraumer Zeit auf und ich muss ihn neustarten. Deswegen lasse ich ihn automatisch um 01:00 Uhr in der Nacht neustarten per Crontab.
Was startest Du neu? fhem oder den ganzen Pi?
Eigentlich ist es egal: sowas ist keine Lösung. Wenn dein Motor nach ne Weile spinnt, startest Du neu, und weiter geht's, oder fährst Du zum Werkstatt, um die Ursache beseitigen zu lassen?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

whirly85

Im Log steht dann immer das: wird dann immer wiederholt

Zitat2018.06.12 01:00:03 0: Server shutdown
2018.06.12 01:00:13 1: Including fhem.cfg
2018.06.12 01:00:13 3: telnetPort: port 7072 opened
2018.06.12 01:00:14 3: WEB: port 8083 opened
2018.06.12 01:00:14 3: WEBphone: port 8084 opened
2018.06.12 01:00:14 3: WEBtablet: port 8085 opened
2018.06.12 01:00:14 2: eventTypes: loaded 56 events from ./log/eventTypes.txt
2018.06.12 01:00:14 3: AP310: defined with id 1, interval 60, destination 192.168.188.35:502, protocol TCP
2018.06.12 01:00:15 1: Including ./log/fhem.save
2018.06.12 01:00:15 3: No I/O device found for Zirkulationspumpe
2018.06.12 01:00:15 3: AP310: trying to open connection to 192.168.188.35:502
2018.06.12 01:00:15 3: Opening AP310 device 192.168.188.35:502
2018.06.12 01:00:15 3: Can't connect to 192.168.188.35:502: Network is unreachable
2018.06.12 01:00:15 3: Can't connect to 192.168.188.35:502: connect to http://192.168.188.35:502: Network is unreachable
2018.06.12 01:00:15 0: Featurelevel: 5.8
2018.06.12 01:00:15 0: Server started with 41 defined entities (fhem.pl:13447/2017-02-19 perl:5.014002 os:linux user:fhem pid:2067)
2018.06.12 01:00:15 2: FritzBox error: cannot get SID, check connection/hostname/fritzbox-user/password
2018.06.12 01:01:17 3: 192.168.188.35:502 reappeared (AP310)
2018.06.12 01:02:17 3: 192.168.188.35:502 disconnected, waiting to reappear (AP310)
2018.06.12 01:02:18 3: 192.168.188.35:502 reappeared (AP310)
2018.06.12 01:02:19 3: AP310: timeout waiting for fc 3 from id 1, (h264), Request was 00d900000006010301080002, Buffer contains

Ich lasse den ganzen PI neustarten. Ich weiß schon, dass das nicht die sauberste Lösung ist, aber mit ist bis dato nichts besseres eingefallen.
Ich logge mich auf die Webseite der Heizungssteuerung auf per Python-Script. Dort wechsle ich die Seite und lese die Temperaturwerte aus.
Die schreibe ich dann in eine CSV weg. Der Code an sich hat nicht mal 30 Zeilen. Keine Ahnung warum er sich damit aufhängt, aber nach etwas mehr als einem Tag stürzt er ab. Als wenn irgendwas mit der Zeit voll läuft.

amenomade

Was ist AP310?
Wie sieht dein Script aus?
Gibt es etwas in der system-log?
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

whirly85

AP310 ist die Pluggit Lüftungsanlage. Wird per Modbus TCP/IP gelesen.

Mein Script zum Auslesen:
Zitatfrom selenium import webdriver
from pyvirtualdisplay import Display
from lxml import html
#import requests
import time
#import urllib2
#from bs4 import BeautifulSoup

#zeit und datum
zeit = time.strftime("%d.%m.%Y %H:%M:%S")
dzeit = time.strftime("%Y%m_")

#create virtual display
display = Display(visible=0, size=(800, 600))
display.start()

# make a firefox-instance
browser = webdriver.Firefox()

#open url
browser.get('http://192.168.188.26/accounts/m_login/')

#user und pw eingabe
browser.find_element_by_id("mail").send_keys('email')
browser.find_element_by_id("pw").send_keys('password')
browser.find_element_by_id("pw").submit()

#auf sensorenuebsicht wechseln
browser.get('http://192.168.188.26/sensorenuebersicht')

#daten auslesen
content = browser.page_source
#soup = BeautifulSoup(content)
tree = html.fromstring(content)
time.sleep(2)

room = tree.xpath('//span[@class="room_name"]/text()')
sensor = tree.xpath('//ul[@class="sensor-list"]/li/text()')
ist = tree.xpath('//small/text()')
soll = tree.xpath('//b/text()')

#werte anzeigen bzw. in datei schreiben
#print zeit
#print 'Raum: ', room
#print 'Sensor: ', sensor
#print 'Ist: ' , ist
#print 'Soll: ' , soll
fobj_out = open('templog_temp.csv','w')
fobj_out.write(zeit+";"+str(room)+str(ist)+str(soll)+"\n")
fobj_out.close()

fobj_out = open('einzel.txt','w')
fobj_out.write(str(ist))
fobj_out.close()

#ersetzt ' und schreib datei neu
f = open('templog_temp.csv','r')
filedata = f.read()
f.close()
newdata = filedata.replace("', '"," ").replace("['"," ").replace("']['"," ").replace("']"," ")
f = open(dzeit+'templog_2.csv','a')
f.write(newdata)
f.close()

#f = open(dzeit+'templog.csv','r')
#filedata = f.read()
#f.close
#newdata = filedata.replace("[", "%temp%").replace("]",';').replace("%temp%", "; ")
#f = open(dzeit+'templog_neu.csv','w')
#f.write(newdata)
#f.close

#browser beenden
browser.quit()


Ist das System-Log noch etwas anderes? Habe das Log von oben aus dem Log-File, das standardmäßig angelegt ist.

amenomade

Ich meine nicht die fhem log, sondern die raspi system log (dmesg) insb. beim "Hängen"
Jedes mal Firefox zu starten... wow. Wäre es nicht "leichter" mit curl?

Es ist schwierig zu sagen, was nach einem neuen Start passiert, aber ich vermute irgendwelche Überlastung. Wenn Du dich aber nicht per ssh anmelden kannst, wird es schwierig zu sehen.
Da fhem doch antwortet, könntest Du mit perfom probieren https://wiki.fhem.de/wiki/Perfmon
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

whirly85

#6
Ich hatte damals verschiedene Varianten probiert und damit ging es dann erst so richtig. Curl hatte ich mir auch angeschaut, aber da konnte ich mich nicht so richtig einloggen. Wenn er gehangen war, dann half nur noch Strom ziehen.

Ich habe grad mal weng gespielt und ich kann den Fehler reproduzieren:
- Alles läuft sauber
- Einloggen per SSH Putty und "sudo shutdown -r now"
- FHEM meldet kurz das die Verbindung weg ist (im Browser am Laptop)
- FHEM meldet wieder alles gut - muss aber kurz einen Refresh am Browser machen, damit wieder alles sauber läuft
- Einloggen per PUTTY SSH geht nicht mehr - "Connection refused"
- FHEM neustarten mit "shutdown restart"
- Einloggen per PUTTY wieder möglich

EDIT:
Was mir noch einfällt ist ,dass ich die Sache mit FHEM vorher auf einem Windows-Laptop ausprobiert hatte zum Spielen.
Als ich dann FHEM auf dem PI installiert habe, wollte ich nicht alles wieder neu einrichten und habe deshalb die FHEM.cfg vom Windows-PC zum PI kopiert.
Kann hier was schief gehen?

amenomade

#7
Zeig mal das Ergebnis von sudo journalctl -u ssh 2 Minuten vor bis 2 Minuten nachdem Du dich nicht anmelden konntest.

EDIT: bitte in Code Tags (# im Edit Menü), nicht in Quote Tags
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

whirly85


betateilchen

ich geh mal Popcorn holen...

Kümmer Dich doch mal um die Probleme, die im FHEM Log oben schon zu erkennen sind.


2018.06.12 01:00:14 3: AP310: defined with id 1, interval 60, destination 192.168.188.35:502, protocol TCP
2018.06.12 01:00:15 1: Including ./log/fhem.save
2018.06.12 01:00:15 3: No I/O device found for Zirkulationspumpe
2018.06.12 01:00:15 3: AP310: trying to open connection to 192.168.188.35:502
2018.06.12 01:00:15 3: Opening AP310 device 192.168.188.35:502
2018.06.12 01:00:15 3: Can't connect to 192.168.188.35:502: Network is unreachable
2018.06.12 01:00:15 3: Can't connect to 192.168.188.35:502: connect to http://192.168.188.35:502: Network is unreachable


Du versuchst, eine TCP Verbindung aufzubauen und tust das vermutlich, bevor Dein Netzwerk verfügbar ist. Und das blockiert alles Weitere.

Ist der Raspi per LAN oder WLAN im Netzwerk eingebunden?
-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

Benni

Zitat von: whirly85 am 12 Juni 2018, 21:34:58
Was mir noch einfällt ist ,dass ich die Sache mit FHEM vorher auf einem Windows-Laptop ausprobiert hatte zum Spielen.
Als ich dann FHEM auf dem PI installiert habe, wollte ich nicht alles wieder neu einrichten und habe deshalb die FHEM.cfg vom Windows-PC zum PI kopiert.
Kann hier was schief gehen?

Schau Mal ob bei dir noch am global-Device das Attribut nofork gesetzt ist.

Falls ja, dann das Attribut löschen (Speichern nicht vergessen)

Siehe dazu auch commandref: http://commandref.fhem.de/#nofork

Das Attribut wird bei FHEM unter Windows automatisch gesetzt. Wenn du deine alte cfg von Windows auf Linux übernommen hast, ist das noch gesetzt und kann dann für Probleme, u.a. beim Systemstart sorgen, je nachdem zu welchem Zeitpunkt dabei FHEM gestartet wird.

gb#

Wernieman

Was mich (wie betateilchen) stört:
2018.06.12 01:00:15 3: Opening AP310 device 192.168.188.35:502
2018.06.12 01:00:15 3: Can't connect to 192.168.188.35:502: Network is unreachable
2018.06.12 01:00:15 3: Can't connect to 192.168.188.35:502: connect to http://192.168.188.35:502: Network is unreachable


"Network is unreachable" hört sich nicht gut an!
- Wann/Wie startest Du FHEM?
- LAN/WLAN?
- bedienst Du FHEM per Netzwerk oder Desktop (also direkt)?
- Wenn per ssh nicht erreichbar, ist er pingbar?

Also jeden Tag den Pi (als Server) neu zu starten ist ... wie auf der Autobahn 200 Fahren, auf den Nächsten Parkplatz en Motor ausmachen, aussteigen, um den Wagen rumgehen, einsteigen, Motor anmachen und wieder auf 200 beschleunigen ... nur damit man nicht zur Werkstatt muß ...

Nur für die Hilfe ... was ist genau Dein Problem, warum Du den Pi restartest?
- 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

whirly85

@betateilchen:
Raspi ist per LAN angebunden.

@Benni:
Werd ich morgen mal noch nachschauen.

@Wernieman:
Ich habe FHEM einfach auf meinem Raspi per Befehl wie in der Anleitung installiert. Anbindung LAN. Bediene es per Netzwerk.
Pingbar ist er, wenn er nicht mehr per SSH ansprechbar ist. FHEM geht ja dann auch immer noch. Er hängt sich im Auslesen und Wegschreiben meiner Raumtemperaturen auf Dauer auf; deswegen der Neustart.


Ich habe heute mal weng gegoogelt und dabei gefunden, dass es zu Problemen kommen kann, wenn das Netzwerk noch nicht fertig ist, aber eine Anwendung schon darauf zugreifen möchte. War sogar hier im Forum mal ein Thema. Ich habe dann versucht den Start von FHEM mit "sleep 25" um 25 Sekunden zu verzögern, brachte aber keine Besserung. Ich denke fast, es ist ein Zusammenspiel von Raspi 2, Wheezy und FHEM. Irgendwie passt da was nicht zusammen.

Ich habe jetzt mal FHEM auf einem PI 3 ganz frisch neu installiert. Dazu das akutelle Stretch Lite drauf und dann wie in der Anleitung FHEM drauf. Dort kann ich per SSH einfach einen REBOOT durchführen und er ist danach wieder per SSH erreichbar. FHEM im Browser meldet kurz die verlorene Verbindung und funktioniert, nach dem der PI wieder oben ist, einwandfrei.

betateilchen

Erstens ist wheezy schon lange nicht mehr Stand der Dinge - Du solltest aktuelle Versionen verwenden, auch beim Betriebssystems.

Zweitens solltest Du das Netzwerkproblem auf Hardware-Ebene lösen. In raspi-config gibt es eine Option den raspi-Start zu verzögern, bis der Netzwerk-Link stabil ist.

Drittens solltest Du die URSACHE für das Aufhängen beseitigen - das dürfte daran liegen, wie Du das Auslesen der Daten umgesetzt hast.

-----------------------
Formuliere die Aufgabe möglichst einfach und
setze die Lösung richtig um - dann wird es auch funktionieren.
-----------------------
Lesen gefährdet die Unwissenheit!

whirly85

Bin jetzt für FHEM erstmal auf den PI 3 mit aktuellem System umgestiegen. Passt soweit auch alles.

Das mit dem verzögerten Start werde ich mal ausprobieren.

Hab ich das Auslesen denn so schlecht umgesetzt? Hab da lange dran gebastelt damit das funktionierte.
Das schlimmste war das Einloggen auf der Seite der Heizungssteuerung. Da war ich froh, als es endlich geklappt hatte.