Suche Programmierer. Datenbank auslesen und visualisieren per Highcharts.

  • Er hat gestern um 16Uhr bereites einen eigenen Thread erstellt und dort werden seine Probleme bereits behandelt: http://www.forum-raspberrypi.de/Thread-temperatur-logger


    Allerdings versteh ich nicht wieso Er 2 Stunden später dann eine andere Fehlerbeschreibung hier postet :s Ich hatte in seinem Thread keine 5 Minuten später geantwortet


    Wenn man der README auf Github folgt dann funktioniert es so wie dort beschrieben. Läd man sich davon abweichend aber eine Zip herunter, passt die README natürlich nicht mehr, da im Zip ein Verzeichnis enthalten ist. Entpackt man die Zip in /var/www/charts/ muss man dann also in den Unterordner wechseln. Folgt man der README werden die Dateien mithilfe von 'git clone' direkt in /var/www/charts/ geladen, ohne zusätzlichem Unterverzeichnis.

  • Hi,


    ok, hab ich nun auch gesehen. Bin etwas in Zeitnot und komme grad nicht wirklich hinterher. Scheint nun ja bei ihm nun zu klappen.



    Hättest du eigentlich Lust und Muse dir mal das einbinden der DHTs an zu sehen?
    Hab meinen ersten "Projektlauf" jetzt doch ohne gemacht.
    Wäre nur schön wenn alles fertig wäre :^^: . Sonst hängt da die eine Anzeige so einsam und alleine da :D

  • Ich hatte bisher keine Möglichkeit das zu testen - zumindest Theoretisch sollte folgendes Vorgehen sowie Script funktionieren, bitte mal testen und Feedback geben ;)


    Script speichern als: /usr/local/sbin/dht.py



    Ausführen:

    Code
    /usr/local/sbin/dht.py
  • Wenn das mal keine flotte Antwort war.
    Am Freitag Nacht kann ich erst testen. Dann kommt Rückmeldung!
    Bis dahin schonmal ein Danke :thumbs1:
    Jetzt bin ich schon ganz aufs WE gespannt!

  • Endlich konnte ich testen!


    - Skript ist am richtigen Ort und Rechte sind gegeben
    - Configpfad angepasst
    - Sensorname vergeben
    - Typ und Pin angegeben
    - Python3 dev war schon installiert
    - Adafruit installation erfolgreich laut Ausgabe.


    Leider kommt noch diese Fehlermeldung:



    Die 2 DHT22 Sensoren kann ich "manuell" erfolgreich auslesen:

    Quote

    pi@raspberrypi / $ sudo /home/pi/lol_dht22/loldht 3
    Raspberry Pi wiringPi DHT22 reader
    http://www.lolware.net
    Humidity = 56.00 % Temperature = 20.20 *C


    Hab ich einen Fehler gemacht und was vergessen?
    Gibt es noch etwas zum Einstellen bei dem Adafuit-Skript?



    EDIT:
    OK, ich hatte die anderen (wiringPI) Pin-Bezeichnungen noch im Kopf. WiringPI und GPIO sind ja unterschiedlich :blush:
    Hab ich eben bemerkt und korrigiert.


    Hier noch die Config:

    Raspi 3 mit Kodi 18 + Netflix & Amazon

    Raspi2 B+ als Datenlogger                            

    Edited once, last by Ruco ().

  • Na das sieht doch schon ganz anders aus als gestern ;)


    Füg mal noch folgendes oberhalb von "class DhtSensorController():" ein:


    [code=php]
    class Temperature():
    def __init__(self, rawTempData):
    self.rawTempData = rawTempData

    @property
    def C(self):
    return self.rawTempData


    @property
    def F(self):
    return self.C * 9.0 / 5.0 + 32.0


    class Humidity():
    def __init__(self, rawHumidityData):
    self.rawHumidityData = rawHumidityData

    @property
    def Pourcent(self):
    return float(self.rawHumidityData)
    [/php]

  • Es gäiiid was! :D :D :D


    In der Datenbank steht schon mal was drin.
    Werde es jetzt mal laufen lassen und dann weiter berichten :thumbs1:


    Quote


    pi@raspberrypi ~ $ sudo /usr/local/sbin/dht.py
    Innen -> 21.399999618530273C , 49.79999923706055%
    Aussen -> 21.200000762939453C , 99.30000305175781%


    PS
    Nicht geizig nach dem Komma .

  • Änder mal diese Zeile:

    Code
    # Try to grab a sensor reading. Use the read_retry method which will retry up
    # to 15 times to get a sensor reading (waiting 2 seconds between each retry).
    humidity, temperature = Adafruit_DHT.read_retry(sensor, self.gpioPin)
    if humidity is not None and temperature is not None:
    self.temperature = Temperature(temperature)
    self.humidity = Humidity(humidity)


    In:

    Code
    # Try to grab a sensor reading. Use the read_retry method which will retry up
    # to 15 times to get a sensor reading (waiting 2 seconds between each retry).
    humidity, temperature = Adafruit_DHT.read_retry(sensor, self.gpioPin)
    if humidity is not None and temperature is not None:
    self.temperature = "%.3f" % Temperature(temperature)
    self.humidity = "%.3f" % Humidity(humidity)


    ..Dann sollten nur noch 3 Stellen nach dem Komma angezeigt werden ;)



    Ich veröffentliche dann nachher auf Github auch das andere Script in der neuen Version, wo die MySQL Daten aus der config.php ausgelesen werden - in der config.php müssen dann aber noch 2 Einstellungen hinzugefügt werden ($dbhost und $dbport). Evtl. mach ich es später auch noch das auch noch die anderen Einstellungen in die config.php wandern, mal gucken ;)

  • Ok, du meinst Zeile 102-107, richtig?
    Da geht leider nix.


    Das Ergebnis:



    __________Edit____________


    Ich hab eben mal in die Datenbank gesehen.
    Dort sehen die Einträge anders aus. Also nicht wie die Ausgabe vom Terminal.
    Eine Stelle nach dem Komma. ;)




    Bis jetzt läuft es ganz gut und ich hab noch keine Fehler gehabt/entdeckt.
    Im Anhang sind die Bilder von der Datenbank und der Chart.

  • Ich hab das Script noch mal überarbeitet - kann es aber weiterhin nicht selbst testen... Probier das bitte mal mit folgendem aus:


    [code=php]
    #!/usr/bin/python3
    # coding: utf-8
    #
    # Read DHT Sensors and write into MySQL Database for HighCharts
    # 19.01.2016 Copyright (C) by meigrafd (meiraspi@gmail.com) published under the MIT License
    #
    # NOTE:
    # Im using CyMySQL which is a fork of pymysql with speedups. See http://stackoverflow.com/a/25724855
    #
    #------------------------------------------------------------------------
    import sys, time, os, re
    #from decimal import Decimal, ROUND_HALF_UP
    sensor_dict={}
    #------------------------------------------------------------------------
    #
    #### CONFIG - START


    # Specify Path to config.php File
    phpConfigFile = '/var/www/charts/include/config.php'


    # DHT Sensor Type, GPIO pin and Place.
    # Format: sensor_dict["<Place>"] = "<Type>;<GPIO>"
    # E.g.: sensor_dict["Bath"] = "22;4"
    # Types: 11 = DHT11 , 22 = DHT22 , 23 = AM2302
    sensor_dict["Badezimmer"] = "22;4"
    sensor_dict["Terrasse"] = "22;17"


    #### CONFIG - END
    #
    #------------------------------------------------------------------------
    try:
    import cymysql
    except ImportError:
    print("ERROR: You must install cymysql Module: sudo apt-get install python3-pip && sudo pip-3.2 install cymysql")
    exit()
    try:
    import Adafruit_DHT
    except ImportError:
    print("ERROR: You must install Adafruit_DHT Python3 Module!")
    exit()


    # Try to read config.php to get mysql settings
    # http://stackoverflow.com/quest…iables-from-python-script
    try:
    pattern = re.compile(r"""(^)\$([a-z]*)\s*=\s*(.*?);$""")
    php_config={}
    with open(phpConfigFile) as fileObject:
    for line in fileObject.readlines():
    for match in pattern.finditer(line):
    php_config[match.group(2)] = match.group(3).replace('"', '')
    if php_config['dbhost']:
    mysqlHost = php_config['dbhost']
    else:
    mysqlHost = "127.0.0.1"
    if php_config['dbport']:
    mysqlPort = php_config['dbport']
    else:
    mysqlPort = 3306
    mysqlLogin = php_config['dbuser']
    mysqlPass = php_config['dbpass']
    mysqlDatabase = php_config['database']
    except Exception as error:
    print("Error reading config.php: %s" % str(error))


    # This handles console colors used for print's
    #http://misc.flogisoft.com/bash/tip_colors_and_formatting
    class c:
    ENDC='\33[0m'
    DEFAULT='\33[39m'; BOLD='\33[1m'; DIM='\33[2m'
    RESBOLD='\33[21m'; RESDIM='\33[22m'
    RED='\33[31m'; GREEN='\33[32m'; YELLOW='\33[33m'; CYAN='\33[36m'


    #https://github.com/liftoff/Gat…terminal/terminal.py#L358
    def strtranslate(from_str):
    translations = (
    (u'\N{LATIN SMALL LETTER U WITH DIAERESIS}', u'ue'),
    (u'\N{LATIN SMALL LETTER O WITH DIAERESIS}', u'oe'),
    (u'\N{LATIN SMALL LETTER A WITH DIAERESIS}', u'ae'),
    (u'\N{LATIN CAPITAL LETTER A WITH DIAERESIS}', u'Ae'),
    (u'\N{LATIN CAPITAL LETTER O WITH DIAERESIS}', u'Oe'),
    (u'\N{LATIN CAPITAL LETTER U WITH DIAERESIS}', u'Ue'),
    (u'\N{LATIN SMALL LETTER SHARP S}', u'ss'),
    # et cetera
    )
    out = from_str
    for from_str, to_str in translations:
    out = out.replace(from_str, to_str)
    return out


    class DhtSensorController():
    def __init__(self, sensorType, gpioPin):
    self.sensorType = sensorType
    self.gpioPin = gpioPin

    def readData(self):
    if self.sensorType == 11:
    sensor = Adafruit_DHT.DHT11
    elif self.sensorType == 22:
    sensor = Adafruit_DHT.DHT22
    elif self.sensorType == 23:
    sensor = Adafruit_DHT.AM2302
    else:
    self.readSuccess = False
    raise Exception("Unknown sensor type. Use 11 for DHT11, 22 for DHT22 and 23 for AM2302")


    # Try to grab a sensor reading. Use the read_retry method which will retry up
    # to 15 times to get a sensor reading (waiting 2 seconds between each retry).
    humidity, temperature = Adafruit_DHT.read_retry(sensor, self.gpioPin, retries=15, delay_seconds=2)
    if humidity is not None and temperature is not None:
    #temp = Decimal(temperature)
    #hum = Decimal(humidity)
    #self.temperature = Decimal(temp.quantize(Decimal('.01'), rounding=ROUND_HALF_UP))
    #self.humidity = Decimal(hum.quantize(Decimal('.01'), rounding=ROUND_HALF_UP))
    self.temperature = format(temperature, '.2f')
    self.humidity = format(humidity, '.2f')
    self.readSuccess = True
    else:
    self.readSuccess = False
    print('Failed to get reading. Try again!')


    def get_data():
    for sensorPlace in sensor_dict:
    sensorPlace = strtranslate(sensorPlace)
    sensorType, sensorGPIO = sensor_dict.get(sensorPlace).split(';')
    DHT = DhtSensorController(int(sensorType), int(sensorGPIO))
    DHT.readData()
    if DHT.readSuccess:
    print('{0} -> {1}C , {2}%'.format(sensorPlace, DHT.temperature, DHT.humidity))
    add_data(sensorPlace, DHT.temperature, DHT.humidity)
    else:
    print('{} -> None'.format(sensorPlace))


    def add_data(Place, Temp, Hum):
    Timestamp = int(time.time())
    con = None
    try:
    con = cymysql.connect(host=mysqlHost, port=int(mysqlPort), user=mysqlLogin, passwd=mysqlPass)
    cur = con.cursor()
    cur.execute("CREATE DATABASE IF NOT EXISTS %s;" % mysqlDatabase)
    cur.execute("USE %s;" % mysqlDatabase)
    con.commit()
    cur.execute("CREATE TABLE IF NOT EXISTS data (id INT(11) UNSIGNED AUTO_INCREMENT PRIMARY KEY,location VARCHAR(255),timestamp INT(11),temp FLOAT(11),hum FLOAT(11),KEY location (location)) ENGINE=InnoDB DEFAULT CHARSET=utf8;")
    con.commit()
    cur.execute("INSERT INTO data (timestamp, location, temp, hum) VALUES (%s,%s,%s,%s);", (Timestamp, Place, Temp, Hum))
    con.commit()
    except Exception as err:
    print(c.BOLD+c.RED+"MySQL Error: "+str(err)+c.ENDC)
    except (KeyboardInterrupt, SystemExit):
    sys.exit()
    finally:
    if con:
    con.close()


    if __name__ == '__main__':
    try:
    get_data()
    except (KeyboardInterrupt, SystemExit):
    print("\nSchliesse Programm..")
    [/php]

  • Ok.
    Auf was besonderes achten?


    EDIT:
    Das ist die Ausgabe im Terminal:

    Quote


    pi@raspberrypi ~ $ sudo /usr/local/sbin/dht.py
    File "/usr/local/sbin/dht.py", line 76
    (u'\N{LATIN SMALL LETTER U WITH DIAERESIS}', u'ue'),
    ^
    SyntaxError: invalid syntax

    Raspi 3 mit Kodi 18 + Netflix & Amazon

    Raspi2 B+ als Datenlogger                            

    Edited once, last by Ruco ().

  • Es läuft und läuft und läuft.... sehr schön.
    Das war die Kurzfassung. Mehr brauchts eigentlich nicht :thumbs1: :danke_ATDE:
    Großes, ganz großes Lob an dich, Meigrafd!



    Etwas länger.
    Was mir bis jetzt "aufgefallen" ist und deine tolle Arbeit abrunden würde:
    (Ist keine Kritik oder Genörgel! :cool: )


    # Schaut man sich den Datensatz ab 4 Wochen und mehr an (Auflösung war hier 10 Minuten), dann haut das im Browser ganz schön rein. Ok, bei der Datenmenge :D
    Kein Wunder das man bei solch einer Ansicht "normal" einen Mittelwert nimmt. Das war aber hier ja bewusst nicht gewollt. Es sollen ja die Originaldaten eingesehen werden können. Und das geht dann mit der Zoomfunktion recht gut. Ein Schieberegler (slider) wäre hier doch wirklich sinnvoll. Dann können gezoomte Werte einfach verschoben werden.



    # Einträge in der Datenbank korrigieren ist, wegen der "timestamp", etwas umständlich. Hin und wieder gibts doch mal Ausreißer oder eine Fehlmessung. Muß dazusagen das es nur die DHTs betrifft. Die Messung der DS18B20 waren bis jetzt immer OK.
    Also erst das angezeigte Datum in timestamp umrechnen und es dann in der Datenbank suchen.
    Hier wäre eine weitere Spalte mit dem/der umgerechneten timestamp hilfreich. Sollte jetzt nicht so häufig vorkommen, die Feuchtesensoren halten sich aber noch nicht ganz dran. Es spart halt das umrechnen.


    # Die Ausgabe der dht.py. Ob die 14 Nachkommastellen jetzt eine Auswirkung auf die Einträge hat weiß ich nicht. Wenn nicht, dann ist es eh unwichtig. Wird ja per Cron ausgeführt und nicht händisch im Terminal. Von daher,pffffffffff

    Quote

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]pi@raspberrypi[/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"] [/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]~ $[/font][font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"] sudo /usr/local/sbin/dht.py[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Innen -> 21.399999618530273C , 49.79999923706055%[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Aussen -> 21.200000762939453C , 99.30000305175781%[/font]


    # Wo fängt der Tag an und wo ist das Ende?
    Da muss ich öfters nachsehen. Das springt nicht so ins Auge. Liegt aber an den Charts selbst. Hier wäre ein alternierender Hintergrund besser. Tag/Nacht. (06bis18 & 18bis06Uhr)
    Noch besser: Sunset/Sunrise :D ala Tafkas.



    Der letzte Punkt ist immernoch ein Wunschpunkt. Wäre echt super wenn das klappen würde.
    Ich selbst bekomme das einfach nicht hin. Wie du selbst sagtest, echt kniffelig.
    Evtl hier ein extra Thema dafür?


    Im Anhang 2 Beispiele.
    - Eine Fehlmessung von den DHT22er
    - Einmal Feuchteverlauf in der Schlafphase. Hier sieht man schön wie die Feuchtigkeit ansteigt und wie es nach dem Lüften ist.
    (Uhrzeit ist korrekt. War Nachtschicht)

  • Ich überlege wie man eine Auswahl von mehreren Datenbanken mit in die Index bekommt.
    Hab jetzt 3 Datenbanken und 3 einzelne Ordner mit der Index drin. Eine Seite wäre mir aber lieber.


    Die config.php wird ja zusammen mit der funktions.php eingelesen.
    Versuche grad verschiedene Datenbanken aus einer config zu wählen.
    Vielleicht wäre es einfacher je Datenbank eine eigene config.php zu wählen. So als Auswahlmenü bzw Auswahlliste.


    Haste einen Tip für mich das zu realisieren?
    Hab da eben einen hänger beim Denken.


    Mein Ansatz:
    Die funktions.php und die config.php doch einzeln in die die index.php einbinden.
    Also ohne der global.php


    [code=php]<?php
    //------------------------------------------------------
    require_once('include/global.php');
    //------------------------------------------------------
    ?>[/php]


    Und dann nur die config.php Auswählen. In etwa so >>> https://jsfiddle.net/k7r3xcn1/2/
    Würde das gehen?
    Da hängt es grad etwas bei mir.

    Raspi 3 mit Kodi 18 + Netflix & Amazon

    Raspi2 B+ als Datenlogger                            

    Edited once, last by Ruco ().

  • In der functions.php stehen ja nur Funktionen drin die aufgerufen werden. Das einzige was man anpassen bräuchte wäre mysql_con() zum Beispiel in dem man die benötigten Variablen bei Aufruf daran übergibt.
    Mehrere config.php Dateien machen eigentlich keinen Sinn, man brauch doch nur andere Variablen einsetzen.


    Eine andere Möglichkeit wäre einfach die ausgewählte Datenbank dann für die Standard-Variablen einzusetzen: $dbhost, $dbport, $dbuser, $dbpass, $database ... Das wäre weniger Aufwand.


    Also mein Vorschlag wäre:


    config.php
    [code=php]
    $DBhost["Testlauf"] = "localhost";
    $DBport["Testlauf"] = 3306;
    $DBuser["Testlauf"] = "root";
    $DBpass["Testlauf"] = "passw0rd";


    $DBhost["Schlafzimmer"] = "localhost";
    $DBport["Schlafzimmer"] = 3306;
    $DBuser["Schlafzimmer"] = "root";
    $DBpass["Schlafzimmer"] = "passw0rd";


    $DBhost["Wand/Schrank"] = "localhost";
    $DBport["Wand/Schrank"] = 3306;
    $DBuser["Wand/Schrank"] = "root";
    $DBpass["Wand/Schrank"] = "passw0rd";
    [/php]


    index.php
    [code=php]<?php
    //... irgendwo einfuegen, zur Auswahl der Datenbank
    if (isset($_POST['db'])) { $Database = $_POST['db']; } else { $Database=""; }


    echo "<form action='' method='POST'>\n";
    echo " <select name='db' size='1' onChange='this.form.submit();'>\n";
    foreach($DBhost AS $db => $data) {
    if ($Database == $db) { $Selected=" selected"; } else { $Selected=""; }
    echo " <option value='".$db."'".$Selected.">".$db."</option>\n";
    }
    echo " </select>\n";
    echo "</form>\n";
    ?>


    # Beide Zeilen zur Generierung der Charts anpassen:
    // Chart: Temperatures
    $.getJSON("data.php?type=temp&period=<?php echo $Period; ?>&db=<?php echo $Database; ?>", function(json) {


    // Chart: Humidity
    $.getJSON("data.php?type=hum&period=<?php echo $_GET['period']; ?>&db=<?php echo $Database; ?>", function(json) {
    [/php]


    data.php
    [code=php]
    if (isset($_GET['type'])) {


    if (isset($_GET['db']) AND !empty($_GET['db'])) { $database = $_GET['db']; } else { end($dbhost); $database = key($dbhost); }
    $dbhost = $DBhost[$database];
    $dbport = $DBport[$database];
    $dbuser = $DBuser[$database];
    $dbpass = $DBpass[$database];


    [/php]


    Wenn keine Datenbank ausgewählt wurde wird automatisch die LETZTE angezeigt, also die letzte welche in config.php eingefügt wurde, in diesem Beispiel wäre das: Wand/Schrank

  • Ja super! Soweit klappt das aufs erste mal. :thumbs1:
    Hatte endlich Zeit das zu testen. Hat leider etwas gedauert, tschuldige.


    Allerdings springt die ausgewählte Datenbank immer zurück auf die erste, wenn man den Anzeigezeitraum ändert. Zum Beispiel von 12 auf 24 Stunden geht.
    Ein einfaches "Neu laden" der Seite geht auch nicht mehr.


    Was mir jetzt aber erst einmal richtig aufgefallen und ein Problem ist, ist folgendes.
    Wenn die Datenbank schon etwas älter ist (als Beispiel mal 3 Wochen) und man die letzten 24 Stunden oder 7 Tage ansehen möchte, dann wird nix angezeigt.
    Es wird also von der aktuellen Zeit ausgegangen. Es werden leider nicht die letzten 24 Stunden oder 7 Tage der gewählten Datenbank angezeigt.
    Lässt sich das ändern??

  • Hallo zusammmen,


    auch von mir vielen Dank für die bisherige Arbeit von meigrafd :danke_ATDE: .


    Habe das Datenbank-Menü auch mal in mein Highcharts-Projekt eingebunden, da ich genau das für meine 15x DS18B20 gesucht hatte - PRIMA!!!


    Bei mir funktioniert es vielleicht auch wie bei Ruco beschrieben. Hier mal detailiert:


    Wenn ich Highcharts öffne, wird zuerst die oberste Datenbank, welche im config.php eingetragen ist, angezeigt - allerdings ohne Charts:


    Danach wird eine andere ausgewählte DB richtig angezeigt:


    Wenn dann die oberste DB ausgewählt wir, wird diese ebenfalls korrekt angezeigt:


    Wenn ein anderes Zeitfenster gewählt wird, wird wieder die oberste DB ohne Charts angezeigt.


    Soweit mal mein Feedback dazu - towi

  • Der Zeitpunkt der Anzeige wird doch ich der data.php geregelt, oder?
    Möchte hier nochmal auf dies eingehen und hab einen Satz ergänzt:

    Quote

    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Was mir jetzt aber erst einmal richtig aufgefallen und ein Problem ist, ist folgendes.[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Wenn die Datenbank schon etwas älter ist (als Beispiel: der letzte Eintrag 3 Wochen her ist) und man die letzten 24 Stunden oder 7 Tage ansehen möchte, dann wird nix angezeigt.[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Es wird also von der aktuellen Zeit ausgegangen. Es werden leider nicht die letzten 24 Stunden oder 7 Tage der gewählten Datenbank angezeigt.[/font]
    [font="Source Sans Pro, Tahoma, Helvetica Neue, Arial, sans-serif"]Lässt sich das ändern??[/font]


    Müsste da viel ergänzt oder geändert werden?
    Ist doch ab Zeile 45 In der data.php, oder?



    Zur Datenbankauswahl ist mir noch etwas eingefallen.
    Werde das heute Nacht mal testen. Das sollte dann klappen :)

  • Ok, das Umschalten klappt. Nur das einbinden der richtigen Datenbank nicht .
    Mal sehen ob ich das noch hinbekomme.


    Quote

    [font="monospace"]<form action='' method='POST'>[/font]


    Oder ich guck doch noch mal nach deinem Vorschlag und teste ihn durch. Dann auch mal mit Get statt mit Post.
    Falls das denn geht.


    Aber das Auswahlmenü ist jetzt erst mal zweitrangig.

  • Damit die ausgewählte Datenbank weiterhin ausgewählt bleibt obwohl man _nicht_ das <form verwendet hat, also auf einen anderen Link klickt und somit die Seite neu geladen wird - muss man mit $_SESSION arbeiten, um diese Information über die PHP Dateien hinaus auch reload-save zwischenzuspeichern. Die Session muss dann in jeder PHP Datei gestartet werden sodass man diesen "Speicherbereich" verwenden kann.
    Am besten macht man das mithilfe der global.php die von beiden PHP Dateien inkludiert wird, also einfach ganz oben das einfügen:
    [code=php]if (!isset($_SESSION)) { session_start(); }[/php]


    Dann bedarf es aber natürlich noch weiteren Anpassungen...

  • Danke dir!


    Das ist dann doch etwas zu heftig mit den Sessions.
    Ich hab es jetzt recht einfach gelöst und es klappt so wie ichs mir vorgestellt hatte :D
    Fehlt jetzt nur noch der letzte Zeitpunkt der Datenbank und nicht der realen Zeit als Ausgangspunkt. :daumendreh2:
    Falls es wen interessiert:



    • Die data.php habe ich nach "include" verschoben und alle Pfade entsprechend angepasst.
    • Den "include"-Ordner hab ich 3x kopiert und umbenannt. (include-testlauf, include-schrank, usw....)
    • Die Datenbanknamen in der config.php in jedem "include-xy"-Ordner eingetragen
    • In der index.php die 3. Zeile angepasst. Zum Beispiel: require_once('include-schrank/global.php');
    • Den Pfad der "data.php im Abschnitt der Charts angepasst $.getJSON("include-schrank/data.php?type=temp&period=........
    • Das erstellte Auswahlmenü an einem passenden Platz eingefügt. Code siehe unten.
    • Die index.php mehrmals kopiert, umbenannt (In meinem Fall fürs erste 2x) und wieder alle 3 Pfade angepasst.



    auswahl.php
    [code=php]<form name="jump">
    <select name="menu">
    <option value="#">Datenbank wählen</option>
    <option value="temperaturen.php?period=12h">Temperaturen</option>
    <option value="testlauf.php?period=12h">Testlauf</option>
    <option value="index.php?period=12h">Schrank</option>
    </select>
    <input type="button" onClick="location=document.jump.menu.options[document.jump.menu.selectedIndex].value;" value="OK">
    </form>
    <?php
    echo "<p class='text'> Die ausgewählte Datenbank ist: <b> $database </b></p>\n";
    ?>[/php]


    Das Auswahlmenü habe ich zwischen die div der tempchart und der humchart gelegt.
    [code=php]echo "<div id='content'>\n";
    echo " <div id='tempchart'> </div>\n";
    include "auswahl.php";
    echo " <div id='humchart'> </div>\n";
    [/php]


    Die auswahl.php liegt bei den anderen Seiten. Also nicht in einem Ordner.