fhem auf Raspi startet nicht mehr richtig

Begonnen von Haus-Andi, 18 Februar 2017, 10:27:17

Vorheriges Thema - Nächstes Thema

Haus-Andi

Hallo zusammen

Ich weiss zu diesem Thema gibt es sicher tausende Einträge, aber irgendwie habe ich den richtigen noch nicht gefunden, da ich davon ausgehe, dass ich nicht der einzige mit einem solchen Problem bin frage ich mal nach:

Ich hatte diese Woche einen Stromausfall im Keller (Sicherung fiel raus), hier habe ich einen Raspi 2 mit fhem und GPIO installiert der mir die Status meiner Oel-Heizungsanlage registriert. Als "Haupt-fhem" läuft im Wohnzimmer ein Asus eeePC der auf den "Heizungs-Raspi" mit fhem2fhem zugreift und die Daten übernimmt und in die mySQL eintragen sollte. Seit dem Stromausfall an Donnerstag bekomme ich aber keine Daten mehr, auch ist der Heizungs-fhem nicht mehr über den http Port erreichbar. (Telnet fällt auch aus, weil das Hauptfhem den ja braucht)

Folgendes habe ich bereits gemacht/getestet:
- Raspian läuft einwandfrei, mit putty ist die Konsole erreichbar und auch das Filesystem ist vorhanden, auch das "Log" vom fhem ist mit aktuellem Datum versehen
- ps aux | grep [f]hem habe ich gemacht und folgendes erhalten
-> fhem 488 99.1 1.4 18020 13664 ? R 08:42 10:47 perl fhem.pl fh
soweit ich das beurteilen kann heisst dass doch fhem ist am laufen?
- im "Hauptfhem" steht beim fhem2fhem auch "connect"
- mit etc/init.d/fhem status habe ich es auch kontrolliert und da steht "running"

Jetzt stehe ich an, kann mir jemand den vieleicht entscheidenden Typ geben, wie ich mein "Heizungsfhem" wieder zum "kommunikativen leben" erwecken kann?

das andere Problem ist die Sache mit der mySQl auf dem Hauptfhem, aber ich denke nicht das es am Raspi liegen sollte:
im Abschnitt DBLog steht folgendes:
-> DBD::mysql::st execute_array failed: The table 'history' is full [err was 1114 now 2000000000] executing 3 generated 3 errors at ./FHEM/93_DbLog.pm line 951.
nur verstehe ich am Inhalt in der Zeile 951 nicht ganz was falsch sein soll.

Aber ich glaube kaum das die Probleme zusammen hängen?

Gruss Andi
Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Wernieman

Wegen Fehlersuche hatte ich mal etwas geschrieben:
https://forum.fhem.de/index.php/topic,54271.msg467373.html#msg467373

Du sagst, das der "Heizungspi" im Netzwerk komplett erreichbar ist, nur FHEM macht Dir Probleme?

Wegen mySQL:
The table 'history' is full
Wie sieht der Speicherplatz auf Deinem Pi aus? Hast DU mal Probiert, Dich per Konsole auf mySQL einzuloggen und mysql geprüft?
- 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

KölnSolar

ich wette fast, dass da mal wieder ein usb check problem ist. Mal ohne USB-Geräte booten und http-Zugang von fhem  prüfen. Was steht im fhem-Log ?
Mal mit top die CPU-Last des Rpi prüfen. Ich vermute die geht Richtung 100%

Grüße Markus
RPi3/2 buster/stretch-SamsungAV_E/N-RFXTRX-IT-RSL-NC5462-Oregon-CUL433-GT-TMBBQ-01e-CUL868-FS20-EMGZ-1W(GPIO)-DS18B20-CO2-USBRS232-USBRS422-Betty_Boop-EchoDot-OBIS(Easymeter-Q3/EMH-KW8)-PCA301(S'duino)-Deebot(mqtt2)-zigbee2mqtt

Haus-Andi

Hallo Markus

Volltreffer, mit "top" erscheint fhem mit 100% zuoberst auf der Liste und geht nicht mehr weg.
Es ist mir im Moment nicht klar welche USB Geräte ich noch wegnehmen könnte denn es ist gar nichts eingesteckt.

Unterdessen habe ich den Raspi bereits 3x neu aufgesetzt und das fhem jedes mal neu heruntergezogen mit "wget". Interessanterweise funktioniert alles einwandfrei bis zu einem reboot von fhem, danach produziert er 100% CPU Last und macht trotzdem nichts. Auch als "Neuinstallation" ohne irgendwelche Einträge oder Anpassungen. Dabei ist es völlig egal ob man nur fhem oder das Linux auch gleich neu startet, es reicht sogar mit /etc/init.d/fhem stop ..start. Danach ist die Webseite nicht mehr erreichbar.
Auch in die Log wird nicht mehr geschrieben.

Zum Glück bin ich nicht alleine mit dem Problem, gibt es da abhilfe?
Gruss Andi
Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Wernieman

- 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

Haus-Andi

Kleine Rückmeldung:

also das mit dem initialUSBCheck habe ich gemacht, da dieser Raspi wirklich nur für die Erfassung der Betriebszustände der Heizung über die GPIO dient braucht es eigentlich gar keinen Support für USB.
Nach dem x kompletten neu installieren des ganze Raspi und ausschalten von allem was es nicht braucht in der Raspi-Config geht es plötzlich wieder richtig. Auch nach dem Update und restart geht es immer noch und die http-Seite ist immer noch erreichbar.
-> Ich habe absolut keine Ahnung was da gewesen ist, vermutlich woltle mich das System einfach etwas ärgern.

Mein mySQL-Problem muss ich aber noch lösen, beim "DbLog" steht folgendes:

state <pre>DBD::mysql::st execute_array failed: The table 'history' is full [err was 1114 now 2000000000] executing 3 generated 3 errors at ./FHEM/93_DbLog.pm line 951. </pre>
2017-02-23 19:57:58


Gemäss dem Zugriff auf die Db mit HeidiSQL sind da ca 2'692'915 Zeilen drin, das ganze ist angeblich 380MB gross. Wenn ich da von Hand ein paar Einträge lösche geht es wieder ein paar Minuten und er steht wieder an. Ist das wirklich so, dass die Datenbank irgendwann zu gross wird?

Gruss Andi
Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Wernieman

- 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

Haus-Andi

Guten Abend Wernieman

Da scheint es doch etwas voll zu werden auf dem /dev/sda1 das aus "/" (root) verwendet wird, es sollen anscheinend 99% verwendet sein. Beim /var ist die verwendung sogar 100%, wenn ich das my.cnf richtig verstehe steht dort das er die datadir hier drin macht /var/lib/mysql
Ich habe in der Tabelle History mal ca 100'000 Zeilen gelöscht, jetzt geht alles wieder richtig und auch die Fehlermeldung ist weg.

Fazit: also muss ich zuerst schauen, dass ich eine grössere Festplatte in meinen Server verbauen kann.

Danke für den Tip
Gruss Andi



Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Wernieman

- Was hast DU für eine Festplatte
- Wie sieht das log-dir aus? (du -sh /var/log)
- Wo sind die größten Speicherfresser (df -sh /*)

Hinweis:
Wenn Du unter mysql den Inhalt einer Tabelle löscht, wird nicht automatisch die zugehörige Datei kleiner (ist bei praktisch allen DB-Systemen so).

Hinweis2:
Bei einem Unix-System (Linux ist Unix), sollte mindestens c.a. 10% des Platzes für einen sauberen Lauf frei sein. 99% (oder 100%) sind wirklich "zu viel" und jederzeit kann Dein System deshalb "stehen bleiben, wenn die root-reserve weg ist.
- 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

Haus-Andi

Also, ich versuche da mal rasch zusammen zufassen

Hardware ist ein alter Asus eeePC 900 mit einer 5G SSD drin (sda), darauf läuft ein Debian 3.16.36-+deb8u2 (Debian 8.6 Jessie).
Am USB steckt ein Enocean USB Stick.

habe gerade mit fdisk -l /dev/sd.. festgestellt, das der ja eigentlich 2stk SSD drin hat, es gibt da noch eine dev/sdb und die ist 15G gross und ist leer.
Leider habe ich bei der Debian-Installation natrüclich nicht darauf geachtet wie es installiert wird, weil es so schnell ging. Eigentlich könnte man doch das ganze fhem resp das Verzeichnis /opt/ auf eine neue Partition auf der sdb erstellen und mittels "symlink" wieder einbinden.

Mit der MySQL DB wird das wohl etwas schwieriger werden, da man die ja nicht einfach kopieren kann. Wenn ich das richtig verstehe im my.cnf kann ich doch einfach beim "Datadir" einen anderen Pfad angeben der dann auf die Resourcen auf sdb zeigt? Logischerweise muss ich natürlich zuerst die Datenbank dorthin verschieben (wie man das dann auch immer macht).

Mein ganzes /var ist 625MB gross und füllt die Partition gleich. Eigentlich ja ein sehr gutes Zeichen für Linux, das es auch mit einer HDD die zu 99.5% gefüllt ist noch stabil läuft, weil mir wäre das nicht mal aufgefallen wend der DBLog nicht Fehler produzieren würde.

Dann mache ich mich mal ans verschieben.
Danke für die Tips.
Gruss Andi

Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire

Haus-Andi

#10
Statusbericht für interessierte.

- Ich habe nun die sdb (15G) aufgeteilt und 2 Patitionen gemacht, danach fhem und MySQL gestoppt.
- den Inhalt von /opt in die /dev/sdb1 verschoben
- den Inhalt von /var in die /dev/sdb2 verschoben
- die /etc/fstab entsprechen angepasst, jetzt werden die beiden Partitionen wieder am jeweiligen Ort eingebunden
- Mysql und fehm von hand wieder gestartet

-> alles läuft wieder ohne irgendwelche Problem, auch die Fehlermeldung beim DBLog ist weg und es wird wieder aktiv Daten gesammelt.
mit dem "df -h" kontrolliert, jetzt habe ich keine mehr über 40% -> Ziel erfüllt.

Jetzt muss ich nur noch die Konfig im DbLog anpassen, das er mir nicht alles schreibt, denn die Enocean Lichtschalter und Schaltaktoren der Lichtgruppen interessieren mich eigentlich gar nicht. Ich begreife das mit dem DbLogExclude/Include noch nicht ganz, aber ich hoffe das kommt auch noch.

Vielen Dank an alle die mir mit Tips und Tricks geholfen haben.
Gruss Andi

Edit 26.02.2017:
Jetzt habe ich das mit dem DbLogExclude auch noch begriffen, ist eigentlich nicht schwer, wenn man alles unterdrücken will muss man einen "*" machen und nicht einfach nichts.

Raspberry Pi+Enocen Pi
Thermokon SR04
Micropelt
USB to 1-Wire