1-Wire Sensor mit Datenbank

  • Noch besser wird es mit dem zusätzlichen Einfügen (zwischen function und container) von:


    Highcharts.setOptions({
    global: {
    useUTC: false
    }
    });

  • Die highcharts wurden nun komplett überarbeitet.
    Basis bildet hier ein Script von http://fluuux.de/ - Vielen Dank für die Genehmigung dies hier zu veröffentlichen.


    Die Dateien wurde bei github hinterlegt:
    https://github.com/ThomasH-W/avrio/tree/master/www/js


    /var/www/js/scripts/highcharts.js
    /var/www/js/scripts/jquery.min.js
    /var/www/js/modules/exporting.js
    /var/www/js/includes/common.inc.php
    /var/www/js/includes/functions.inc.php



    Man kann nun relativ flexibel die Sensor-Namen /DB-Felder in der Datei common.inc.php anpassen.

    while (!sleep()) {sheep++};

  • Neue Version der highcharts auf github und ein Bild dazu:


    Unter der Grafik gibt es die Möglichkeit, den Zeitraum für Diagramm zu bestimmen.
    Wenn man auf den Sensornamen in der Legende klickt, kann man auch Sensoren an- und abwählen.


    Man kann dies auch beim Aufruf der Seite übergeben:


    Code
    http://192.168.178.61/js/avr-highchart.php?scope=hour&scopeval=3



    [Blocked Image: http://www.hoeser-medien.de/pictures/avr-highchart-1.jpg]

    while (!sleep()) {sheep++};

    Edited once, last by ThomasH ().

  • Hallo Thomas,


    ich habe eine Frage zu der Zeile:
    pointStart: Date.UTC(2006, 0, 01),


    Wie passt das zu den aufgezeichneten Daten im Jahr 2014 zusammen? Werden die aufgezeichneten Zeiten für die Y-Achse dann überhaupt ausgewertet?

  • Hallo!


    Ich habe 20 Sensoren am Raspberry Pi angeschlossen.
    Wenn ich die Anwendung so starte, dann funktioniert alle.
    [font="Menlo"]pi@sps-92 ~/avrio $ sudo python /home/pi/avrio/avrio.py[/font]
    [font="Menlo"]Sensor ID | Temperature[/font]


    [font="Menlo"]-----------------------------[/font]


    [font="Menlo"]28-0000053c7970 | 25.625 ?C[/font]


    [font="Menlo"]28-0000053c7198 | 9.937 ?C[/font]


    [font="Menlo"]28-0000053c83b4 | 25.187 ?C[/font]


    [font="Menlo"]28-0000053c904c | 16.750 ?C[/font]


    [font="Menlo"]28-0000053c809c | 24.375 ?C[/font]


    [font="Menlo"]28-0000053c893c | 19.187 ?C[/font]


    [font="Menlo"]28-0000053c8bc6 | 16.875 ?C[/font]


    [font="Menlo"]28-0000053c8a16 | 20.437 ?C[/font]


    [font="Menlo"]28-0000053c8ff6 | 16.187 ?C[/font]


    [font="Menlo"]28-0000053c8d71 | 24.375 ?C[/font]


    [font="Menlo"]28-0000053c7109 | 4.875 ?C[/font]


    [font="Menlo"]28-0000053c6f69 | 18.687 ?C[/font]


    [font="Menlo"]28-0000053c738d | 19.062 ?C[/font]


    [font="Menlo"]28-0000053c827d | 23.812 ?C[/font]


    [font="Menlo"]28-0000053c870b | 21.625 ?C[/font]


    [font="Menlo"]28-0000053c83cb | 25.312 ?C[/font]


    [font="Menlo"]28-0000053c76ab | 23.125 ?C[/font]


    [font="Menlo"]28-0000053c9017 | 22.812 ?C[/font]


    [font="Menlo"]28-0000053c6dcf | 24.937 ?C[/font]
    [font="Menlo"][font="Menlo"]28-0000053c8a9f | 12.875 ?C[/font][/font]


    [font="Menlo"]Wenn ich die Anwendung mit dem selben Befehl aus einer anderen Verzeichnisebene starte bekomme ich die nachstehende Meldung - Warum?[/font]
    [font="Menlo"]pi@sps-92 / $ sudo python /home/pi/avrio/avrio.py[/font]
    [font="Menlo"]Cannot find file: avrio-config.txt[/font]


    [font="Menlo"]Error: cannot find config file avrio-config.txt[/font]
    [font="Menlo"][font="Menlo"]Please run >avrio.py --setup[/font]
    [/font]


    [font="Menlo"]In der crontab -e habe ich diese Zeile eingetragen - funktioniert natürlich auch nicht - Warum?[/font]
    [font="Menlo"][font="Menlo"]*/5 * * * * sudo python /home/pi/avrio/avrio.py[/font]
    [font="Menlo"]*/5 * * * * sudo python /home/pi/avrio/avrio.py -w[/font]
    [/font]

    • Official Post

    Wie bindest du denn deine avio-config.txt im script ein? bestimmt mit relativen anstelle von absoluten Pfadangaben. Ich denke wenn du den kompletten Pfad angibst, hat sich das Problem auch erledigt.

  • Man kann die Daten aus einer MySQL-Datenbank direkt in Excel einlesen, ohne eine ODBC-Verbindung in der Systemsteuerung definieren zu müssen.


    MySQL-Treiber installieren
    Man braucht einen ODBC connector, als “Datenbank-Treiber”.
    Bei mir läuft Windows 8 64 bit. Daher hatte ich zuerst den 64-Bit Treiber installiert.
    Später habe ich herausgefunden, dass die benötigte Variante abhängig von der Excel-Version ist.
    Da mein Excel eine 32-bit Version ist, musste ich den 32-bit connector installieren:
    http://dev.mysql.com/downloads/connector/odbc/


    Excel-Datei
    [Blocked Image: http://www.hoeser-medien.de/pictures/avrio-excel.jpg]


    Es gibt noch ein kleines Problem:
    Obowhl ich ClearContents verwende, wird auch die Formatierung gelöscht.
    Daher habe ich in Zeile 9 die Formatierung gesichert, um diese auf die Daten zu übertragen.
    Für Hinweise, wie man dies korregiert, bin ich dankbar.



    VBA-Code

  • Guten Morgen,


    tolles Projekt. Danke vorab hierfür. :danke_ATDE:
    Werde mich heute Abend daransetzen, nachdem ich gestern meine 13 Sensoren am 90m/Bus/Baum endlich ans fliegen bekommen habe.


    Mal folgende Idee:


    Macht es nicht Sinn, die Datenbank auf einen USB-Speicherstick am Raspi zu installieren und von da zu lesen ? :s
    IMO haben SD-Karten nur begrenzte Zahl von Lese/Schreibzugriffen. Somit könnte man die SD-Karte entlasten, und falls diese die Grätsche machst, ist nicht auch noch die Datenbank hinüber.


    Habe am Wochenende erst nen Raspi vom Kumpel bekommen, dort war nämlich genau das passiert...



    LG
    B.

  • Die beste Lösung wäre, die Datenbank ganz woanders zu halten, da auch USB-Sticks eine begrenzte Lebensdauer haben...
    Ich habe noch ein Cubieboard2 am Laufen. Dort ist ein MySQL installiert und die Datenbank liegt auf einer direkt angeschlossenen SATA-SSD.
    Alternativ geht es auch, wenn man einen Webhoster hat, der Datenbankzugriffe auch von aussen zulässt.

  • Dann halt zum Internet-Hoster...
    Und der Cubie frisst auch mit SSD unter 10Watt :D

  • Nabend,


    ich bräuchte mal Eure Hilfe. Ich hab alles gem. Anleitung auf erster Seite installiert.
    Die config.txt habe ich erstellt und alle 13 Sensoren eingefügt/benamst. Danach starte ich die python.py und die läuft auch sauber durch.


    Dann starte ich den Befehl: python avrio.py -w und bekomme folgenden Fehlerhinweis:



    Quote


    Error: can't opem file /var/www/avrweb/avr-single.html for writing.
    Please check if directory is existing


    Verzeichnis existierte nicht, also habe ich es angelegt und den Befehl neu gestartet, bekomme aber denselben Fehlerhinweis.


    Any ideas ?


    Die Datenbank wird bei mir erstellt, sobald ich python avrio.py starte, soweit ok.
    Auch habe ich mit crontab -e einen cronjob erstellt, der auch gespeichert wurde /tmp ****, allerdings startet dieser Job nicht. Muss der in einem bestimmten Verzeichnis liegen ?


    EDIT: Es läuft, Juuuunge was für ne Frickelei.....

  • Mist, einen Sensor hinzugefügt, und schon läuft nichts mehr. Systemseitig wird er erkannt und ausgelesen, nur das neuerliche durchlaufen von avrio.py --setup scheitert.


    Ich fände es nett, wenn der Autor sich hierzu nochmal äussern könnte......

  • Bartimaus,


    Bitte gebe mir die Fehlermeldungen, die Du erhälst.
    "Nichts geht mehr" ist für eine Fehlersuche kein guter Startpunkt.


    Bitte starte das Script hierfür mit der option -v 2 oder -v 3.
    Dann zeigt das Programm, was es gerade macht.


    Gruß,
    Thomas

    while (!sleep()) {sheep++};

  • Hallo Thomas,


    sorry für die unpräzise Fehlermeldung.


    ich habe alles nochmal neu aufgesetzt.
    Die Sonsoren werden ausgelesen, und die Werte stündlich in die SQL-Db geschrieben. Soweit so gut.
    Was auch funktioniert, ist das avr-panel.


    Wo es noch hakt ist avr-google.
    Du hast in den Skripten Deine Sensoren in LUFT und WASSER getrennt. Ich habe analog auch meine Sensoren so aufgeteilt, jedoch wird mir im GooglePanel nur unter "Luft" was angezeigt, aber auch da stimmen die Zuordnungen der Graphen zu den Werten nicht. Da muss ich nochmal ran.
    Aber im Panel "WASSER" habe ich garkeinen Graphen. Auch bewirkt das setzten der Radiobuttons oben links nichts.


    Welche Infos brauchst Du noch ?


    LG

  • Hallo,


    erst einmal muss ich wirklich sagen das dieses Projekt mit den Temperatursensoren in der Datenbank wirklich toll gelungen ist. Hab es aufgesetzt, angepasst und innerhalb kurzer Zeit lief es auch ohne Fehler, und läuft und läuft und läuft....


    Ich möchte das gern etwas weiter verfeinern. Die Weboberfläche mittels einem kleinen Admin Bereich für jeden etwas individueller gestalten..... Alles kein Problem wenn nicht das für mich sehr schwierig zu lesende Pyhton script wäre.



    zur Zeit läuft es bei neuen Sensoren ja so, mit sudo python avrio.py --get werden neue (und auch alte) sensoren in die config geschrieben, ich passe diese dann an mit Datenbankfeld und alles passt.


    wäre es machbar.... meine Idee, das das Python Script nicht die Werte in die (durch die Config-txt file) vorgegebene Spalte schreibt sondern das das Datenbank wie folgt anssieht:


    id // Timestamp // HardwareID // Messwert


    also:
    1 // 06.02.2014 14:03:02 //28-0000059d9c01 // 29,4
    2 // 06.02.2014 14:03:02 //28-0000059d9s02 // 15,2
    3 // 06.02.2014 14:03:02 //28-0000059d9s03 // 7,5
    4 // 06.02.2014 14:04:02 //28-0000059d9c01 // 29,3
    5 // 06.02.2014 14:04:02 //28-0000059d9s02 // 15,5
    6 // 06.02.2014 14:04:02 //28-0000059d9s03 // 7,2


    und so weiter....


    so wäre es schöner eine beliebige Anzahl von Sensoren anzuschließen und diese mittels einem kleinem Adminpanel der Weboberfläche zuzuordnen.


    Wie gesagt, meine Stärken liegen nicht im Python aber ich denke mit ein bisschen von Eurer Hilfe könnte das klappen.


    LG


    Flori

    Edited once, last by Flori66 ().

  • Hallo zusammen,


    ich bin am verzweifeln - kann mir bitte jemand helfen? Ich habe einen Temperatursensor "Innen", der im Panel angezeigt wird, jedoch wird in avr-google kein Graph angezeigt.



    Danke im Voraus und viele Grüße!


    Edit: Hat sich erledigt - habe die avr-google.php auf ein Minimum heruntergestrickt und alles andere kategorisch entfernt...