Dauer von Status speichern in V2

Hallo,
diese frage wurde bestimmt schon oft gestellt. Aber mit der suche finde ich nichts passendes. Ich suche Leute die mir Tipps geben wie ich es anstelle, in einer Variable die Dauer eines Schaltzustandes zu speichern. Dafür gibt es bestimmt mehrere Möglichkeiten, wäre deshalb auch für verschiedene Tipps dankbar.

PS: Ich möchte eine Statusvariable vom Typ Boolean speichern. Also jedesmal wenn sie auf TRUE geht, möchte ich dann speichern wie lange es dauert bis sie wieder auf FALSE geht. Und den Wert dann in Sekunden speichern (vermutlich in integer), obwohl mir 4 byte (also type LONG) lieber wäre!

danke für alle tipps.

Hi Hinti,

also ich leg das mit Hilfe eines Scriptes als Datei ab, allerdings nicht mit den Sekundenwerten.
Es wird auf Änderung der auszuwählenden Variable getriggert und schreibt dann den Status mit weg.
Das Original stammt natürlich nicht von mir (wie immer :rolleyes:).

Hier mal der Code, kannst ja ´nen Timer mit einbauen.

<?
$separator = ";";  // separate fiels by ; - good for Excel ;-)
$leerzeichen = " ";  // ein Leerzeichen
{
$IPS_Value = GetValueBoolean($IPS_VARIABLE)? "1" : "0";

   $handle = fopen("../logs_var/" .$IPS_VARIABLE. ".txt", "a");
   fwrite( $handle,  date("d.m.y").
                     $leerzeichen.
                     date("H:i:s").
                     $separator.
                     $IPS_Value.
                     "
");
   fclose($handle);
} ?>

Ist mal schön zu sehen, von wann bis wann z.B. das Badezimmerfenster offen stand, ein Blick in die Datei mit dem Namen ObjectID.txt genügt.

Mit MYSQL von Bruns8234 sollte das sogar noch eleganter möglich sein.

mfg

BerndJ

PS: Dein Thread steht hier in Fragen zur V1??, sollte vermutlich bei der 2er landen.

Hi Bernd,
ich habe nur V2 dazugeschrieben um einen Script-Tipp, der nicht V2 kompatibel ist, vorab zu vermeiden.

Ich möchte einen schnellen script. Ich versuche ja MySql einzubinden. Ist mir zwar noch nicht gelungen, aber darauf ziele ich glaube ich ab.

Habe früher mal selber SQL-Datenbanken geschrieben. Sybase. Von da her kenne ich noch die Grundbegriffe und Aufbau einer relationalen Datenbank. Wenn es mir also gelingt MySql zum laufen zu bringen und via PHP script befehle wie: "INSERT … INTO …db " oder „SELECT * FROM … WHERE …“ dann wäre das für mich eine extrem saugute Erweiterung von IPS.

Grenzenlose Möglicheiten würden sich auftun…
:cool::):rolleyes::smiley:

PS: bezüglich deinem tipp, der ist gut, aber jeder einzelne filehandle den ich vermeiden kann, vermeide ich natürlich. (resourcen)

Hallo Hinti,

mit diesem einfachen Skript kannst Du die Einschaltdauer ermitteln.

Der Trigger erfolgt OnChange.

$id1 = 12345;                       // ID der Schaltvariablen (boolean)
$id2 = 54321;                       // ID der Zeitmerkers (float)
$id3 = 11223;                       // ID der Variablen für die Einschaltdauer (float)

$array = IPS_GetVariable($id1);     // Info über Variable holen
$time = $array['VariableChanged'];  // Zeitpunkt der letzten Änderung holen
if (GetValue($id1))                 // Variable ging auf TRUE
{
	SetValue($id2, $time);     	 // Zeitpunkt des Einschaltens abspeichern
}
else                                // Variable ging auf FALSE
{
	$time -= GetValue($id2);        // Einschaltdauer berechnen
	SetValue($id3, $time);     	 // Einschaltdauer abspeichern
}

Gruß
HJH

danke HJH, gefällt mir :slight_smile:

Mal schnell was zusammengeschrieben…

$ID1 = 14970; //IntegerVariable zum Abspeichern der "Startzeit"
$ID2 = 47818; // IntegerVariable zum Abspeichern der Gesamtzeit
if ($IPS_VALUE == true){
 SetValue($ID1,time());
 }
 else{
 $Zwischenzeit = time() - GetValue($ID1);
 $Gesamtzeit = $Zwischenzeit + GetValue($ID2);
 SetValue($ID2,$Gesamtzeit);
 }

?>

Edit: … HJH war mal wieder schneller…

Hallo,

MySQL bekommst folgendermaßen zum Laufen:



```php

extension_dir = "C:\IP-Symcon\"
extension = "php_mysql.dll"

Horst

Hi Horst,
das habe ich gestern schon gemacht, also fast, ich meine ich habe dieses packet schon runtergeladen usw. wenn ich
nun info.php aufrufe steht GD sowie MySql zur Verfügung, aber ich bekomme auch andauernd dann einen Fehler.

Also ich muss MySQL selber nochmal installieren. Da feigelts ein wenig. Angenommen ich habe 2 webserver eingerichtet. webfront auf :82 SSL, und wiips auf :443 SSL. wiips auf 443 weil ich diesen port weitergeleitet habe um von extern zufgreifen zu können.

Beeinflusst dies nun irgendwie die MySQL Installation? Ich meine wenn ich Mysql Administrator (programm) starte, steht da port 3303. Irgendwo hab ich da einen Knopf drin.

>>Ich weiß dieser Post muss eigentlich dort hin<<, aber weils grade so gut paßte.

Der Post muss da nicht unbedingt hin, der gilt allgemein für alle Fälle, in denen man MySQL über IP-Symcon ansprechen möchte. Ich benutze z.B. gar kein MySQL-Data. Habe da eine wesentlich aufwändigere Eigenentwicklung am Laufen. Wenn Du selber was entwickeln willst einfach xampp per Installer installieren. Den Apache Webserver von xampp hast Du dann hinterher auf Port 80 laufen, den man, da Standard-Webserver-Port, in der URL nicht mit angeben muss. MySQL läuft standardmäßig auf Port 3306. Auf dem Port gibt es natürlich keine Webseite zu sehen, sondern nur Protokolldaten auszutauschen.

Hallo Horst, ich müßte das noch ein klein wenig besser verstehen. Also diesen 3303 port lasse ich dann also unverändert in MySql, weil dies nur MySql intern nutzt? Also ich selber arbeite dann nicht mit port 3303!?

Den Apache Server brauche ich unbedingt?? MySql und IPS/PHP alleine geht nicht??
Schön Grüß, Jürgen

Naja über 3306 redet dann z.B. PHP mit MySQL. Den Apache empfehle ich, da Du ja selber was basteln willst. Dort ist phpMyAdmin halt das Werkzeug meiner Wahl. Und ich weiß nicht, ob das mit dem Webserver von IP-Symcon ohne weitere PHP-Module läuft. Andere Tools zur Datenbankverwaltung haben mir früher nie gefallen und dank Webzugriff muss man sich auch nicht auf jedem Rechner einzeln ein Programm installieren. Wenn man xampp benutzt ist gleich alles fertig konfiguriert dabei und man kann den Apache und MySQL mit einem einzelnen Klick getrennt starten, stoppen, als Dienst installieren oder den Dienst löschen.

okay Horst, ich fasse mal zusammen. Bitte nicht schimpfen wenn ich daneben liege.

Ich brauche folgendes:

  1. mySQLData2.0.2“ zusammengestellt von bruns8234
  2. natürlich was lt. bruns8234 dazu gehört…
    2a) php_mysql.dll und libmysql.dll und die php.ini einträge
    2b) und daraus ergibt sich dann GD und MYSQL fähigkeit => wie man lt. „info.php“ sehen kann.
  3. und dann noch das was du geschrieben hast:
  • MySQL-Server installieren. Entweder die Originalversion (MySQL :: MySQL 5.1 Downloads ? Generally Available (GA) release for production use) oder gleich xampp (apache friends - xampp für windows) nehmen. Empfehle xampp, da es portabler ist und man zum Rumbasteln an der Datenbank gleich phpMyAdmin fertig dabei hat.

hierbei muss ich nohcmal nachfrage: du meinst mit selbst basteln bestimmt: die datenbanken erstellen usw. oder? weil zugreifen will ich ja nur via PHP aus IPS heraus, oder hab ichs immer noch nicht gerafft? (sorry in diesem fall, ich werde mich später bestrafen :rolleyes:)

Hi Hinti,

lies Dir die bei Bruns8234 im .ZIP File beigefügte Hilfedatei durch, da steht´s halbweg´s beschrieben.

Für das Installieren der Datensätze und der zugehörigen -struktur brauchst Du nur einmal die Install aufrufen, läuft alles von selbst, diese Routine nimmt Dir das alles ab.

Vorher selbstverständlich die MYSQL Datenbank installieren und Info.php laufen lassen, um zu checken ob alles benötigte vorhanden ist. Was steht in der Hilfe.

mfg

Bernd

hi Bernd, ich muß an dieser Stelle bruns sowieso danken, wie schon so viele vor mir. Ich habe ja lt. seinem install.txt installiert und mit info.php alles gecheckt. Die entsprechenden DLL’s und php- einträge, Das alles hat gut gefunzt dank brun’s Anleitung.

install.php muss ich halt erst zum laufen bringen, aber vorher muß ich MySql noch installieren, ich melde mich dann, nachdem ich erfolg oder keinen hatte :cool:

Hallo Horst,
ich habe jetzt den Apache installiert. Es hat soweit alles geklappt. Jedoch kam nach erfolgreichem Installationsabschluß folgende Fehlermeldung… siehe Bild.

Aber ich denke das ist weiter nicht schlimm. Habe ich am anfang der Installation ausgewählt. Denke es war wohl nicht nötig.
Jedoch würde ich diese Meldung gerne verstehen, kannst du sie mir erklären? Vielen lieben Dank…

btw: Meine liebe Frau sagte als ich ihr erzählte das sie grade nicht surfen kann, weil ich gerade Apache installiere… „Das sind ja Indianer…“ :):slight_smile:

appa1.gif

ach so… und dieses bild bekam ich nach abschluß der installation auf den bildschirm… (bild 1)

/und rechts im infobereich ist diese ampel dazugekommen… was ist denn das für ein dienst, der scheint mein betriebssystem in die knie zu zwingen, zumindest ein wenig. ist der nötig? siehe bild 2

appa2.gif

appa3.gif

Die Ampel ist son Tool von der Windows-Version von MySQL, das von der Funktionalität allerdings recht beschränkt ist. Das kann man einfach beenden.
Die Meldung sagt, dass Port 80 schon in Benutzung ist. Falls Du WIIPS installiert hast, macht sich das standardmäßig darauf breit. Da müsstest Du bei einem von beiden den Port ändern, wenn Du auf beides Zugriff haben willst. Beim Apache macht man das in der httpd.conf, bei WIIPS einfach in der Webserver-Instanz. Den Apache brauchst Du auch wie gesagt nur, wenn Du phpMyAdmin verwenden willst. Reicht dir MySQLData brauchst Du dich da gar nicht drum kümmern. Für das Schreiben eigener Datenbankbasierter Skripte solltest Du Dirs allerdings mal ansehen.

hi horst, ich habe probleme mit der performance und nur um einmal zu einem ergebnis zu kommen wieder alles deinstalliert, um anschliessend mal testweise die original Mysql software zu installieren (dein subvorschlag).

die installallation lief gut bis zu jenem zeitpunkt des einrichtens… siehe bitte wieder auf den bildern… da wo man ein pw vergibt für den root-access und dann auf der nächsten seite gelingt der start-service nicht, und folglich komm ich in der installation nicht weiter.

langsam zweifle ich an mir ein klein wenig… ich glaub ich mach mir jetzt mal ein kühles weißbier auf und überleg mir, wie man einen bewerbungsbrief für einen zuckerbäcker aufsetzt, - könnte ja sein das mir das besser liegt :frowning:
PS: das kleine x im bild 2, ist in wirklichkeit knalle-rot, hab die farbe beim konvertieren zum gif verloren!

mysql1.gif

mysql2.gif

Hast Du vorher den Dienst per xampp-control deinstalliert?
Was hast Du eigentlich für nen Rechner? MySQL verbraucht standardmäßig eigentlich gar nichts, tut ja auch nichts. So um 2000 rum hatte ich ne Seite am laufen mit durchschnittlich 50 Besuchern gleichzeitig auf nem 233er Celeron als Server, der mit dem Apache, PHP und MySQL permanent gequält worden ist und trotzdem nicht überbelastet war.

ja

500Mhz

Also vielleicht war das nur die Ampel die das so langsam machte. egal. ich habe apache mal deinstalliert und die mysql standard-inst gestartet. und da läßt sich der service nicht starten, siehe bild oben!