Datenbank anbindung

Hallo,
besten Dank für die Anleitung.
Damit konnte ich scho etwas mehr anfangen.
Dabei habe ich gleich das Thema DB-Anbindung(mit PGSQL, bei Mysql ist nur die richtige PHP5-Extension Dll anzugeben) ausprobiert.

Folgende Vorgehensweise war nötig:
Da die im Handbuch angebene Methode mit dl() nicht mehr verwendet werden soll (gibt eine „depredicated warning“) und dann auch noch in c:\php5 sucht, habe ich ins IP-Symcon-Verzeichnis eine php.ini mit folgenden Inhalt gelegt:

>>php.ini


extension_dir=c:\Programme\IP-Symcon\modules
extension=php_pgsql.dll

<<

Dann aus einer aktuellen php5-distribution die entsprechende extension in das modules verzeichnis kopiert.
(Das IP-Symcon-Team kann sich ja mal überlegen, ob diese Standard-Extensions wirklich in „Ihren“ \modules Directory liegen soll oder ob sie z.B. ein separates \ext Verzeichnis bevorzugen. Man kann aber nur ein extension_dir in der Ini angeben.)
Anschliessend kann man die entsprechenden Funktionen benutzen.

Ich habe mal meinen Helligkeitssensor geloggt:


<?
/*
*******************************
 IP-SYNCOM Event Scripting
*******************************
*/

//File: write_to_db.ips.php
$lux=GetValueInteger("WS2000_Helligkeit");
$time=GetUpdateTime("WS2000_Helligkeit");
$dbh=pg_connect("host=dbserver dbname=wetter user=xxx password=yyy");
if (!$dbh) {
   echo "Connect error!";
   exit;
}

$result = pg_query ($dbh, "INSERT INTO FS10_Helligkeit(zeit,lux) values ($time,$lux)");
if (!$result) {
   echo "Insert Error!";
}
pg_close($dbh);

?>

Mit CTRL-T muss man jetzt nur den Triggereditor aufrufen und noch die entsprechende Variable mit „add“ hinzufügen. Fertig!

Dabei ist mir aufgefallen:
1.Ab und zu scheint die Engine beim Experimentieren mit den Scripten „hängen zu bleiben“, d.h. Man kann bei beliebigen Scripten auf Execute drücken und nichts passiert. Nach einem Neustart der Software ist alles wieder OK.

2.Die Functionsliste im Script-Editor funktioniert nur, wenn mindestens ein Leerzeichen vor dem Cursor ist. also ein

$variable=CTRL-SPACE

bringt nur eine leere Liste.
3.Das Fenster zum selektieren der Triggervariablen (mit CTRL-T) hätte im Script-Editor einen Eintrag im Kontextmenu verdient.
4. Wenn ich für jeden meiner 12 Wetter-Sensoren ein bis drei Scripte schreiben muss, um die geänderten Variablen zu loggen, wird es bald voll vom Verzeichnis. Wie wäre es mit einem „Master-Trigger“ auf Device-Ebene, der die geänderte Variable als Parameter übergibt?

Ich muss mir nun noch was überlegen, wie ich doppelte Einträge, die durch den Repeater verursacht werden, vorher wieder rauskriege.

Es bleibt spannend!
Tommi

Ich habe mir erlaubt deine gute Anleitung mal in ein eigenes Thema zu tun.

2.Die Functionsliste im Script-Editor funktioniert nur, wenn mindestens ein Leerzeichen vor dem Cursor ist. also ein PHP Code:
[left] $variable=CTRL-SPACE
[/left]

bringt nur eine leere Liste.

Behoben

3.Das Fenster zum selektieren der Triggervariablen (mit CTRL-T) hätte im Script-Editor einen Eintrag im Kontextmenu verdient.

Geändert

  1. Wenn ich für jeden meiner 12 Wetter-Sensoren ein bis drei Scripte schreiben muss, um die geänderten Variablen zu loggen, wird es bald voll vom Verzeichnis. Wie wäre es mit einem „Master-Trigger“ auf Device-Ebene, der die geänderte Variable als Parameter übergibt?

Auf die ToDo Liste getan. (Morgen)

Grüße, paresy