Umstellung MySQLData auf V2

Hallo Oliver, hallo „MySQLDataAnwender“,

MySQLData ist für mich (und sicher für viele andere auch) eine hervorragende Möglichkeit zur schnellen Darstellung von Verläufen; Danke und Kompliment an Oliver (elektrofrak).

Wie viele andere Skripte die mit IPS_Variable arbeiten ist eine Anpassung der MySQLData-Skripte an die V2 notwendig. Hat schon jemand MySQLData an IPS-V2 angepasst? … wenn ja: die entsprechenden Skriptschnippsel wären sicher für viele nützlich, hilf- und lehrreich.

DANKE und viele Grüße
Otto

Hallo bauhaus,
hallo elektrofreak,

habe ihr schon eine Lösung für das Problem von mySQLdata unter V2.

Es funktioniert eigentlich alles soweit bis auf die Auswahl neuer Poller was ja in der Datei varconf.php geschieht.

Der Fehler liegt, wie bereits erkannt, in der nicht mehr vorhandenen Funktion IPS_GetVariables.

Kann einer der PHP-Gurus vielleicht einen kleine Workaround für folgende Abfrage machen.

$variables=Ips_GetVariables();
$i=0;
	while ($i < count($variables)){
		if ($variables[$i]['type'] == "String") { }
		else { ?>
		<option><?echo $variables[$i]['name'].", ".$variables[$i]['type'];?></option>

Wie bereits erwähnt vermute ich den Fehler in der ersten Zeile

$variables=IPS_GetVariables();

Schon mal einen riesen Dank, vielleicht kann sich Oliver auch dazu äußern.

Hallo!

Also ich habe mir das mal angesehen. So einfach ist das nicht, da in V2 die Variablen doch anders behandelt werden.
Mit dem folgenden Code müsste es aber eigentlich wieder funktionieren:


01: $variables = IPS_GetVariableList();                   // Liefert ein Array mit ID's aller Variablen
02:    foreach($variables as $varID) {                    // Jeden Eintrag des Arrays verarbeiten
03:    $varinfo = IPS_GetVariable($varID);                // Liefert Infos zur Variable mit der ID $varID
04:    if ($varinfo['VariableValue']['ValueType'] != 3) { // Es handelt sich nicht um eine Stringvariable
05:       $vartype = ($varinfo['VariableValue']['ValueType'] == 0 ? 'Boolean' : '').
06:                  ($varinfo['VariableValue']['ValueType'] == 1 ? 'Integer' : '').
07:                  ($varinfo['VariableValue']['ValueType'] == 2 ? 'Float' : '');
08:       $varinfo = IPS_GetObject($varID);               // Liefert allgemeine Infos zum Objekt $varID
09:       $varname = $varinfo['ObjectName'];              // Den Namen der Variable erfassen
10:       ?>
11:       <option><?echo $varname.", ".$vartype;?></option>

Wenn jedoch sehr viele gleichnamige Variablen vorhanden sind (was ja in V2 ohne Probleme möglich ist) könnte es etwas unübersichtlich werden. In diesem Fall wäre es evtl. besser sich nicht nur die Variablennamen sondern auch die übergeordnete Objekthierachie ausgeben zu lassen (also z.B. Erdgeschoss/Wohnzimmer/Temperatur anstatt Temperatur). Dazu müssten der Code wie folgt geändert werden:

Zeile 8 und ff durch folgenden Code ersetzen:


08:       $varname = IPS_GetLocation($varID);               // Name und Hierachie der Var. mit ID $varID
09:       ?>
10:       <option><?echo $varname.", ".$vartype;?></option>

Aber Achtung! Ich habe den Code nicht getestet, da ich für die Datensammlung eine eigene Lösung implementiert habe. Sollten noch fehler auftreten mit diesem Code bitte kurze Meldung, ich guck mir das dann gerne noch mal an…

MfG Thorsten


Rechtschreibfehler sind geistiges Eigentum des Authors. Wer einen findet und diesen
ohne Genehmigung kopiert wird mit Deutschkurs nicht unter 2 Stunden bestraft! :smiley:

IP-Symcon V2 + Homematic CCU

Hallo bruns8234.

Vielen Dank für deinen angepasstem Code, werde ihn heute Abend einmal einpflegen und berichten.

Hallo bruns8234,

super Arbeit, nochmals vielen Dank.

Habe den ersten Teil deines Codes in das Skript eingebaut da ich im Moment keine gleichnamigen Variablen habe und ich muss sagen, es funktioniert hervorragend.

da ich für die Datensammlung eine eigene Lösung implementiert habe

Könntest Du uns noch verraten welche Lösung Du benutzt oder gebaut hast.

Hi Thorsten,
habe jetzt das erste Mal eine mySQL Datenbank eingerichtet weil ich Meßwerte aufnehmen möchte. Wenn ich die „zweite Lösung“ nehme funktioniert es. Aber wenn ich die „erste Lösung“ nehme, bekomme ich im IPS-Skript „MySQLDataExport“ einen Fehler, das er die Variable „Gaszaehler\fGesamtGasVerbrauch“ nicht finden kann. Das Problem wird der zusätzliche Pfad bei der Variablen sein. Gibt es eine entsprechende Funktion ähnlich wie „IPS_GetVariableID“ die den Pfad auch berücksichtigt?

Grüße,
Jörg

Hallo Jörg,

sorry das ich erst jetzt reagieren kann, war leider die Zeit nicht in DE

Also, soweit ich mich entsinne gibt es keine Funktion die den Pfad direkt mit verarbeitet, aber eine Lösung gibt es mit Sicherheit. Kannst du bitte mal das entsprechende Skript posten, ich habe das nicht zur Hand. Am besten die entscheidene Stelle (so das ich auch evtl. vorhandene Schleifen sehen kann). Ich würde dann mal nach einer Lösung suchen…