Datenbankzugriff......

Hallo,

Ich würde gerne die geloggten Daten meiner Tempfühler mit Open Flash anzeigen lassen.
Die Frage ist lediglich : Wie komme ich an die geloggten Werte ran?

Soweit ich weiß arbeitet einen SQLite DB im Hintergrund in die die Werte verbucht werden.
Wie kann ich sie auslesen?
Ich bräuchte Username, Passwort und den Namen der Datenbank?!

Ich habe schon im Forum gesucht…aber immer nur das Falsche gefunden…
Wenn mal jemand im Chat wäre könnte man sich Zeit und Forumsplatz sparen.
Andererseits können so alle davon profitieren…

Danke im Voraus.

Gruß
Michael

Hallo Michael,

Versuche es damit einmal


//Fügen Sie hier ihren Skriptquellcode ein
$time 	= time();
$date1 	= time()-86400;
$objekt      = 12345;
$archiveHandlerID = IPS_GetInstanceIDByName("Archive Handler", 0);

$starttime = $date1;//GetValueInteger("Zeit"); // 0 for epoch // time()-(n*60*60) for n hours ago
$endtime = time(); // time() for "now"
$aggregation = 2; // 0: Stunden, 1: Tage, 2: Wochen, 3: Monate, 4: Jahre
$limit = 400; //
print_r(AC_GetLoggedValues($archiveHandlerID, $objectID, $starttime, $endtime, $limit));

Danke schön (wiedermal :D)

Sehe ich das richtig, daß es keinen direkten Zugriff wie bei einer MySQL
Datenbank gibt und ich mir die Werte über den Handler rausholen muss?

Was sind das überhaupt für Zeitstempel? Werden die Werte nur in die Datenbank übernommen wenn sie sich geändert haben oder nach welchem Prinzip geschieht das?

Gruß
Michael

Hallo,

Ich würde gerne die IPS SQLite Datenbank anzapfen.
Dafür gibt es auch eine nette Funktion in PHP5 die sich „sqlite_open“ nennt.

Leider sieht es so aus, als kennt der IPS PHP Editor diese Funktion nicht und bringt die Meldung
„Fatal error: Call to undefined function sqlite_open() in [SQL Abfrage SQLite] on line 1“

Die Abfrage sieht so aus:

$sqliteDb='C:\IP-Symcon\db\logging.db';
if ($db = sqlite_open($sqliteDb, 0666, $err))

Die Doku besagt, das die SQLite Function ab PHP5 schon in PHP enthalten sein soll, sodaß man ein einbinden über eine .dll nicht mehr benötigt.

Was mache ich falsch?
Oder kann ich in IPS die Datenbank nicht öffnen? Wäre aber quatsch, da ich sie mit einem SQLite Manager ohne Probleme öffnen kann.
Hat das mal jemand ausprobiert?

Danke im Voraus !!!

Gruß,
Michael

Hallo,

du musst wie es aussieht die benötigte sql DLL in deinen IPS\ext Ordner kopieren.
Die DLL findest du im PHP Paket!

Gruß

Anzapfen = Du landest bald ganz schnell hier: Datenbankwiederherstellung: IP-Symcon :: Automatisierungssoftware

Nutz die Funktionen die IPS bietet.

paresy

Hallo Michael,

warum nimmst Du nicht das was Karlheinz gepostet hat, da steht alles drinn was Du brauchst.
Zumal Du anderst schnell die DB schrottest.

mit[‚Value‘] hast Du deine Werte.

$temp = AC_GetLoggedValues(28761 /*[Archive Handler]*/, 35017, time()-(5*24*60*60), time(), 0);
print_r($temp);

35017 ist die geloggte Variable.
time() - (Zeit) die abzurufenden Daten
time() aktuelle Zeit
0 Limit

Führ das mal aus und schau dir das print an.

Die eine Frage von Michael ist ja noch offen.
Nach welchem Schema werden die Daten gespeichert?
Wertänderung?

Bin mir nicht sicher, aber meine auf Änderung. paresy oder Horst sollten es aber wissen. :smiley:

Ich glaube es auch mal irgendwo gelesen zu haben.

Bei Update. Jedoch wird nur bei Änderung ein neuer Datensatz erstellt. Bei Update wird nur der LastTime Zeitstempel aktualisiert und der Counter erhöht.

paresy

Danke @Rainer + Meike.
Ist das Letzte Beispiel eine Abfrage der letzten 5 Tage?

@Paresy:
Diese Art der Datenspeicherung ist ja sehr Resourcenschonend…das ist gut.
Ich dachte nur ich könnte vielleicht „bessere“ Daten aus der SQLite Datenbank anzapfen und dabei gleich den Unixtimestamp etc umrechnen lassen.
Zum erstellen von Grafiken mit „Open Flash chart“ oder „amchart“ muss man diese Daten irgendwie aufbereiten.
Somit möchte ich die Daten auslesen, in ein vernünftiges Format umwandeln und dann den Charts übergeben können.
Nun mit den Werten „Lasttime“, „Timestamp“ und „Duration“ sehe ich ein großes Problem auf mich zukommen.

@Alle:
Nutzt überhaupt jemand die Webfront charts oder macht Ihr das alle mit Google, amchart oder mit jggraph?

War ja nur ein Versuch ordentliche Daten irgendwo her zu bekommen…
:frowning:

Hier isses. :slight_smile:

Ist das Letzte Beispiel eine Abfrage der letzten 5 Tage?

ja

Ui…da muss ich lesen und basteln…Danke schön !!!

Wäre Das nicht was für den Nidda-Stammtisch?
Sowas wie: „Charts erstellen leicht gemacht“
Fände ich total spannend…und nicht nur ich.

Och, ich denke da kann Bernd(icey) bestimmt was zu beitragen.

Versucht, wenn möglich, immer die GetAggregated Funktion zu nutzen. Die GetLogged Funktion gibt nämlich schnell mal 200000 Datensätze zurück. Und glaubt mir… das wollt ihr nicht. Das dauert dann ein paar Minuten… und so lange warten dann Teile von IPS und alles wirkt träge :wink:

paresy

Ich weiß es steht irgendwo in den Weiten des internet, aber könnt Ihr einem Anfänger in 3 Wörten beschreiben was der Unterschied ist? Unter „Aggregated“ versteh ich nämlich zusammengefasste Werte, mit denen ich zur Grapherzeugung nichts anfangen kann.

Bitte nicht meckern - Wenn ich keine Antwort bekomme mache ich mich heute Abend auf die Definitions-Suche

Hallo Michael,

das habe ich mich heute auch schon hier gefragt.