DBLog erst nach Neustart von FHEM aktiv

Begonnen von Alex8508, 12 Januar 2014, 17:06:31

Vorheriges Thema - Nächstes Thema

Alex8508

Hallo,

ich nutze FHEM in der neuesten Version auf einem Raspberry Pi. Nun möchte ich gerne meine Logdaten in einem MySQL-Datenbank schreiben, statt ewig lange Logdateien zu generieren.

Das funktioniert auch soweit sehr gut. Nur leider startet DBLog nicht beim initialen Start von FHEM, sondern erst nach einem Neustart - zum Beispiel wenn man die fhem.cfg erneut speichert.

Folgendes habe ich in der fhem.cfg angegeben:

define myDbLog DbLog /etc/fhem/db.conf .*:.*

Die Daten werden - sofern DBLog einmal läuft - korrekt in die Datenbank geschrieben und ich kann diese auch als Plot darstellen lassen. Starte ich aber den Raspberry Pi neu, so ist DBLog wieder nicht aktiv. Dann muss die fhem.cfg wieder manuell gespeichert werden (FHEM startet neu) und dann funktioniert DBLog wieder. Aufgefallen ist mir das Problem, weil ich einen Plot parallel über FileLog und MySQL darstellen lasse. Bei letzterem sind die Daten irgendwann einfach "abgerissen", vorher absolut kongruent.

Das ist natürlich sehr unschön und DBLog sollte immer automatisch starten, wenn es in der Konfiguration eingetragen ist. Wie kann man diesen Fehler beheben?

maxritti

Hi,

ich kenne mich mit dem Rasperry jetzt nicht direkt aus.
Aber zuletzt hatte ich auf meinem Linuxrechner den Fall, dass der MySQL Server erst nach fhem gestartet wurde. Da sieht es schlecht aus mit einer dblog Verbindung :)

Was sagt denn das fhem log?

Mal so als Ansatz....

Alex8508

Du hast recht. FHEM hat folgende Fehlermeldung im FileLog:

ZitatCan't connect to mysql:database=fhem;host=localhost;port=3306: Can't connect to local MySQL server through socket '/var/run/mysqld/mysqld.sock' (2)

Wenn ich runlevel im SSH eingebe, erscheint N 2. Ein Blick in /etc/rc2.d zeigt, FHEM wird mit S01fhem vor S04mysql gestartet. Ich habe dies nun geändert über mv S01fhem S99fhem, aber DBLog startet auch nach poweroff/reboot nicht nach mysql.

Hast Du eine Idee, warum fhem noch immer nach mysql startet?

Johannes


Alex8508

Ich glaube hier stoße ich so langsam an meine Linux-Kenntnisse. Ich bekomme folgenden Fehler:

Zitatupdate-rc.d: warning:  start runlevel arguments (5 5 5) do not match fhem Default-Start values (2 3 4 5)

Was wäre eine sinnvolle update-rc.d fhem start, bzw. wie bekommt man das hin?

maxritti

Sorry, ich glaube, dass ich dich mit der Reihenfolge auf die falsche Spur geführt habe.
Bei mir war das gar nicht das Problem.
Auf meinem Server wird fhem (S17) auch jeweils vor dem mySQL Server (S19) gestartet und es funktioniert.

Ich hatte einen Fehler in der Configdatei.

Scheint also ein anderes Problem bei Dir zu sein.

Alex8508

Ich habe mal recherchiert. Scheinbar macht es keinen Unterschied, ob ich die Reihenfolge über update-rc.d setze oder die Links manuell entferne und erstelle.

update-rc.d ist nur ein Script, welches dies automatisiert.

Alex8508

#7
Es muss doch an der Startreihenfolge liegen.

Ich habe fhem mal komplett vom "autostart" entfernt und nach 5 Minuten Laufzeit des Pis manuell gestartet. Siehe da, FHEM läuft mit DBLog beim ersten Start.

Kann es sein dass der Startlevel bei fhem nicht funktioniert? DBLog startet nicht, egal ob S01, S06 oder S99. :'(

EDIT: Was ebenfalls funktioniert, aber unschön ist:
Zitatcrontab -
@reboot sleep 60 && /etc/init.d/fhem start

kurte72

Ich habe das gleiche Problem.
Das ändern der Startreihenfolge auf S99fhem hat nichts gebracht.
Vielleicht kann ja mal die Startreihenfolge posten, bei dem es funzt - das würde uns 'Armen' helfen ...

maxritti

Hallo zusammen,

ich krame das Thema hier noch mal vor, da mir augenscheinlich gerade die Lösung unter die Tastatur gekommen ist.
Bei mir läuft fhem zwar auf Linux und nicht auf einem Rasperry sollte aber vom Prinzip das gleiche sein.

Und zwar habe ich einfach mal in die Startdatei /etc/init.d/fhem
Bei Required-Start den Start von mysql hinzugefügt.

#!/bin/sh
# description: Start or stop the fhem server
# Added by Alex Peuchert

### BEGIN INIT INFO
# Provides:             fhem.pl
# Required-Start:       $local_fs $remote_fs mysql
# Required-Stop:        $local_fs $remote_fs
# Default-Start:        2 3 4 5
# Default-Stop:         0 1 6


Danach ein insserv -d auf der Linuxkonsole eingegeben und siehe da.
Der fhem Start wurde hinter mysql geschoben.

Eventuell hilft das ja auch hier.

Mitch

#10
Hallo,

ich habe auch das Problem, dass mysql nach fhem gestartet wird.

Allerdings habe ich keinen Startscript in init.de, sonder in init. Mein Ubuntusystem nutzt Upstart.
# FHEM Service

description     "fhem server"
author          "Rudolf Koenig <r.koenig@koeniglich.de>"

start on (net-device-up
          and local-filesystems
          and runlevel [2345])
stop on runlevel [016]

expect fork
respawn

chdir /opt/fhem
#exec perl fhem.pl fhem.cfg
exec perl fhem.pl configDB


Wie kann ich denn nun ändern, dass fhem später gestartet wird?

Ich dachte, ich packe einfach bei start on starting mysql rein, aber das geht nicht

EDIT: hab es hinbekommen, mann muss started mysql eintragen!!
FHEM im Proxmox Container