I2C-Sensoren abfragen und in DB eintragen, funktioniert eine Zeit lang, dann immer schlechter

  • Hallo Leute,

    ich bin am verzweifeln :@.

    Aktuelles Proj.:

    Hardware

    - Raspberry Pi 2

    - DS2482S-100+ (https://www.kiwi-electronics.nl/Raspberry-Pi-i…-Module?lang=en)

    - 20 x DS18B20 (sauber Verkabelt)

    Software:

    - aktuelles Raspian

    - mySQL (sehr stabil)

    - apache-webserver

    Das Programm wird per Crontab alle halbe Stunde aufgerufen, was am Anfang sehr gut funktionierte und die Tabelle fleisig befüllte.

    Nach ca. 1-2 Wochen wurde die Tabelle immer seltener mit werten befüllt, bis nun gar nix mehr funktioniert hat.

    Aktuelle Fehlermeldung:

    Code
    pi@raspberrypi:~ $ sudo python EGlogger.py
    Traceback (most recent call last):
      File "EGlogger.py", line 19, in <module>
        t_raw = temp.read()
    IOError: [Errno 22] Invalid argument

    Danke für eure Unterstützung

    Lounsome

  • I2C-Sensoren abfragen und in DB eintragen, funktioniert eine Zeit lang, dann immer schlechter? Schau mal ob du hier fündig wirst!

  • Hast Du in deinem Script Mess- / Verbindungsfehler abgefangen? Ich würde immer versuchen, Fehler selbst abzufangen. In meinen Scripten, egal ob Python oder PHP benutze ich immer eine Loggingfunktion, die in der Fehlerbearbeitungsroutine Meldungen ausgiebt.

  • - 20 x DS18B20 (sauber Verkabelt)

    Software:

    + (KIWI) OWFS Software ?

    20 Sensoren am 1-wire sind zwar stolz, aber durchaus machbar, wenn die Bustopologie und der Pull-Up passt.

    Was Du unter "sauber verkabelt" verstehst, weiss ich nicht.

    Eine sauber verkabelte Sterntopologie ist bei zunehmenden Leitungslängen ineffizienter, als ein normal verkabelter Einzelbus, an dem alle Sensoren hintereinander verschaltet sind. Eine Sterntopologie lässt sich auf eine Line auch umbauen, wenn noch eine Litze zum Sensor frei ist (z.B. bei CAT5).

    Es kommen öfters Messfehler am 1-wire Bus vor. Deshalb sollte jede Messtelle mehrmals abgefragt werden (min. max verwerfen und Mittelwert ziehen). Jedenfalls sollte Dein Script bei einem Messfehler nicht stehenbleiben, sondern einen eindeutigen Fehlerwert ( z.B. -99,9°) liefern. Ein Check, ob das OWFS überhaupt läuft, wäre auch nicht schlecht.


    Servus !

    RTFM = Read The Factory Manual, oder so

  • Die Sensoren hängen in Gruppen zusammen

    - Lüftung 4 x Sensor

    - Heizung 6 x Sensor

    - Keller 3 x Sensor

    - EG 5 x Sensor

    - OG 4 x Sensor

    Hintereinander + Stern verschaltet (Cat5-Kabel)

    Pullup habe ich keinen, da I2C-Konverter.

    Hast Du in deinem Script Mess- / Verbindungsfehler abgefangen? Ich würde immer versuchen, Fehler selbst abzufangen. In meinen Scripten, egal ob Python oder PHP benutze ich immer eine Loggingfunktion, die in der Fehlerbearbeitungsroutine Meldungen ausgiebt.

    Wie programmier ich hier eine Loggingfunktion?

Jetzt mitmachen!

Du hast noch kein Benutzerkonto auf unserer Seite? Registriere dich kostenlos und nimm an unserer Community teil!