MultiGraph mit GoogleChart

Hi U.d.O,

kannst Du mir verraten, wie du den Hintergrund schwarz (oder transparent?) bekommen hast?

Hi,

also mein Skript wird zyklisch jede Stunde gestartet !

In der Beschreibung von Google Charts steht die Hintergrundfarbe ist durch den Parameter ‚chf‘ veränderbar.
https://code.google.com/apis/chart/docs/chart_params.html

Ich hab also einfach in den Funktionen die Zeile

'chf'=>'c,s,2D343D|bg,s,232527',

in der Funktion „Graphpost“ eingefügt um WebFront Farben zu verwenden.

Nicht vergessen die Schriftfarbe zu verändern!

LG

yeah, jetzt sieht das auch aus !:smiley:

Danke für den Tipp;)

Ich habe ab Zeile 551 in der Funktionen PHP mal folgende Variante zum Leben erweckt:

$url = ‚http://chart.googleapis.com/chart?chid=‘ . md5(uniqid(rand(), true));
$chart = array(
‚chs‘=>’’.$Size,
‚cht‘=>‚lxy‘,
‚chxl‘=>’’.$yachse[0],
‚chxt‘=>’’.$yachse[1],
‚chxp‘=>’’.$yachse[2],
‚chxr‘=>’’.$yachse[3],
‚chg‘=>’’.$yachse[4],
‚chdl‘=>’’.utf8_encode($Texte),
‚chdlp‘=>‚t‘,
‚chdls‘=>‚FFFFF0,10‘,
‚chtt‘=>’’.utf8_encode($Ueberschrift),
‚chts‘=>‚FFFFF0,15‘,
‚chco‘=>’’.$Farbe,
‚chm‘=>’’.$fill,
‚chd‘=>‚e:‘.$Datengesamt,
‚chls‘=>‚1|1|1|1‘,
‚chf‘=>‚c,s,BEBEBE|bg,s,36648B‘,
‚chxs‘=>‚0,000000,10,0,l,000000|1,000000,10,0,l,000000|2,000000,10,0,l,000000|3,000000,10,0,l,000000|4,000000,10,0,l,000000|5,000000,10,0,l,000000‘);

Für diejenigen die das mal in einem Webfront ähnlichen blau mit weisser Schrift der Wertebezeichnungen haben mögen.
Die relevanten Änderungen sind im Bereich CHTS (Farbe der Überschrift des Graphen), CHDLS (Farbe der Wertebezeichnungen) und CHF (Hintergrund und Rahmenfarbe).

Gruss
B71

Hi,

erstmal super Arbeit :wink:

Habe ein wenig mit dem Script rumgespielt, die geloggten Temperaturen werden perfekt dargestellt. Jetzt wollte ich mir meinen Stromverbrauch darstellen lassen, nur Google macht nur Grütze aus den Daten. Im IPS-Webfrontchart sieht alles perfekt aus, und der Chart wird auch mit Struktur angezeigt. Bei dem Googlechart, ist es nur eine durchgehende Linie mit einem Peak nach oben. Interpoliert Google da Werte, so dass kleine Veränderungen nicht sichtbar werden??? So ist das Leider nicht brauchbar.

@DeejayT
Die Auswertung von Zähler funktioniert noch nicht.
Es muß ja eine Differenz zwischen Anfangstand und Endstand gebildet werden.
Das ist das gleiche Problem wie ich mit den Bargraghen habe.
Ich habe es mir einfacher vorgestellt. Es wird kommen.

@Matthias
Ich würde das Skript zyklisch laufen lassen, bei
Tagesansicht alle 6 min.
1 Woche alle 60min
4 Woche alle 240min
1 Jahr alle 48 Stunden
Die Rechenleistung stellt ja Goolge zu Verfühung
Das sind so die Richtwerte, für die Datenpunkte .

Also Differenzen müssen nicht gebildet werden, das macht schon ein Skript, das rechnet die Werte fertig aus. Es sollte also funktionieren :confused:

Welches Skript soll den das berechnen?
Zeig doch mal Deinen Zähler-Graph.
Ich nehme an dein Graph sieht aus wie der Bad-Graph,
richtig wäre aber 30h-Verlauf:rolleyes:

Genau, so sieht das bei mir auch aus. Bei dir ist das Problem auch vorhanden!

Hier das Skript:


$counter = (GetValueInteger  (28067 /*[Verbräuche Strom u. Gas\Stromzähler\Stromzähler Zählerstand\Value]*/)   ) ;
$delta = $counter - GetValueInteger(28537 /*[Verbräuche Strom u. Gas\Stromzähler\Stromzähler Zählerstand\Zählerstand alt]*/) ;   // Zähler-Differenz berechnen
SetValueInteger (28537 /*[Verbräuche Strom u. Gas\Stromzähler\Stromzähler Zählerstand\Zählerstand alt]*/, $counter );            // und "merken"
$delta_UM = $delta /800   ; // Differenz /800   da 800imp = 1kWh
SetValueFloat(37443 /*[Aktuelle Verbräuche\Stromverbrauch]*/ ,($delta_UM));

Im Anhang, einmal die Auswertung aus dem Webfront-Graph und einmal was GoogleChart daraus macht. Übrigens, mit dem DUG-Tool funzte das sonst auch.

Wie gesagt Multigraph kann noch keine Zähler auswerten.
Ich nehme an Deine Variable 37443 loggst Du als Zähler, stell doch einmal um auf Standart dann siehst man den Unterschied.

Die Variable logge ich als Standard. Das Skript rechnet mir die Differenz zwischen alten und neuen Zählerstand aus, das schreibe ich in die Variable 37443. Im Prinzip ist das nichts anderes als meine geloggten Temperaturen.

Kannst Du mir mal, den Bereich aus dem Archiv-Handler zeigen,
gestern zwischen 10 Uhr und 13 Uhr.

Wie komm ich an die Daten?

Versuche es hiermit

<?
$ID = 57460;
$archiveHandlerID = IPS_GetInstanceIDByName("Archive Handler", 0);
$end	   = strtotime("05.04.2011 13:00:00");
$start   = strtotime("05.04.2011 11:00:00");

$a = AC_GetLoggedValues($archiveHandlerID,$ID,$start,$end,0);

//print_r($a);
for ($i=0;$i<count($a);$i++)
	{
	echo date("H:i:s",$a[$i]['TimeStamp'])." ".$a[$i]['Value']."\r";
	}

?>

OK, hat gefunzt. Hier die Werte von 10-13Uhr.


12:58:00 0.01
12:56:00 0.015
12:55:00 0.01125
12:54:01 0.0125
12:53:01 0.01375
12:51:01 0.015
12:50:00 0.01375
12:45:01 0.0125
12:44:00 0.01125
12:43:00 0.00875
12:42:00 0.0125
12:39:00 0.01125
12:37:00 0.0125
12:36:01 0.01375
12:35:01 0.0125
12:34:01 0.01375
12:33:01 0.01125
12:32:01 0.01
12:30:01 0.0125
12:29:01 0.01375
12:28:00 0.01
12:27:01 0.00875
12:26:00 0.01
12:24:00 0.00875
12:23:00 0.0075
12:22:01 0.01
12:21:01 0.00625
12:20:01 0.01
12:18:00 0.00875
12:16:01 0.01125
12:15:00 0.01375
12:13:00 0.0125
12:12:00 0.02875
12:11:00 0.03375
12:10:00 0.05375
12:09:01 0.0525
12:08:01 0.0475
12:07:01 0.05
12:06:01 0.0525
12:05:00 0.05125
12:04:01 0.04125
12:03:01 0.05375
12:02:00 0.05375
12:01:01 0.04625
12:00:01 0.0475
11:58:00 0.09
11:57:00 0.08875
11:56:00 0.075
11:55:01 0.12125
11:54:00 0.1225
11:53:01 0.12125
11:52:00 0.1
11:51:01 0.10625
11:50:01 0.1225
11:49:01 0.115
11:48:01 0.09
11:47:01 0.07875
11:45:01 0.09375
11:44:01 0.07875
11:43:00 0.03125
11:42:01 0.01125
11:39:00 0.01
11:38:00 0.01375
11:37:01 0.015
11:36:01 0.01625
11:35:01 0.015
11:34:01 0.0325
11:33:00 0.03375
11:32:01 0.0575
11:31:01 0.05625
11:30:00 0.055
11:29:01 0.0625
11:28:00 0.07875
11:27:00 0.09125
11:26:00 0.09375
11:25:00 0.0775
11:24:01 0.0925
11:23:01 0.0625
11:22:01 0.0575
11:21:01 0.0425
11:20:00 0.0575
11:19:01 0.0875
11:18:01 0.0925
11:17:00 0.0675
11:16:01 0.0875
11:15:01 0.09125
11:14:00 0.0925
11:13:00 0.09875
11:12:00 0.0775
11:11:00 0.0925
11:10:01 0.09125
11:09:00 0.0925
11:08:01 0.0775
11:07:00 0.0925
11:06:01 0.09
11:05:01 0.0675
11:04:01 0.04125
11:03:01 0.0475
11:00:01 0.0575
10:59:01 0.045
10:58:00 0.05875
10:57:01 0.05875
10:56:00 0.06625
10:55:01 0.0775
10:54:00 0.11375
10:53:00 0.105
10:52:01 0.0875
10:51:01 0.075
10:50:01 0.0875
10:49:01 0.08875
10:48:00 0.08875
10:47:01 0.06
10:46:01 0.04875
10:45:00 0.05625
10:43:00 0.055
10:42:00 0.01625
10:41:00 0.01
10:40:00 0.00875
10:36:01 0.01
10:35:00 0.00875
10:34:01 0.01
10:33:01 0.01125
10:32:00 0.01375
10:31:01 0.01625
10:28:00 0.0125
10:27:00 0.015
10:26:00 0.01375
10:25:01 0.0125
10:24:00 0.01125
10:22:00 0.0125
10:21:01 0.01375
10:20:01 0.0125
10:18:01 0.01125
10:16:00 0.0125
10:15:01 0.00875
10:14:01 0.0125
10:13:00 0.01125
10:12:01 0.0125
10:09:00 0.01125
10:08:00 0.00875
10:07:01 0.01
10:05:01 0.01125
10:04:01 0.0125
10:03:00 0.01125
10:00:01 0.0125
09:59:01 0.01125

Sieh eingentlich ganz gut aus.
Verändere doch einmal im Skript Funktionen die Zeile 95 und 96.

	
 $Daten[$i] = round($Durch/$l,1)*1000;
 $Durch_Alt = round($Durch/$l,1)*1000;

Ich hoffe meine Vermutung stimmt und die Werte sind nur zu klein.
funktioniert aber nur beim Tagesgraph.

Hi, bringt auch nichts. Die kleinen „Verbräuche“ werden nicht angezeigt :frowning:

Ich bekomme diese Fehlermeldung : undefined offset - 1
Funktionen line 20;

und manchmal auch : undefined variable Daten line 112 in funktionen

Meine Konfiguration ist wie folgt :


<?


include "IPSLogger.ips.php";
define( "c_LogId", "Chart" );

IPSLogger_Inf( c_LogId, " Chart Luftklappen " );


// Multigraph mit GoogleChart V1.0
// Vari[] 				= geloggte Variablen-ID einsetzen  		"Vari[0]=>12345
// YAchse[]          = Zuordnung Graph Y-Achse 0 oder 1     "YAchse[0]"=>0
// YBeschriftung[]   = Y-Achsen Beschriftung z.B.°C oder %  "YBeschriftung[0]"=>"°C"
// Zeitspanne     	= 1 = Tage, 2 = Wochen, 3 = Monate, 4 = Jahr    "Zeitspanne"=>3
// Pfad              = Zielordner für Graphen   "Pfad"=>"C:/ip-symcon/media/"
// filename       	= Filename wird im Zielordner gespeichert "filename"=>"Test 2"
// Farben[]        	= Farben der Graphlinien 	"Farben[0]"=>"00008B"
// Size           	= Bildgrösse max. 30000 Bildpunkte  800x350  "Size"=>"800x350"
// Text[]          	= Beschreibung Graphen  keine Eingabe = Variablename   z.B. "Text[0]"=>"Wert 1"
// Ueberschrift   	= TitelGraph      "Ueberschrift"=>"ÄÖÜßäöü"
// Endzeit           = Endzeit Graph z.B. 06-03-2011 22:12  ""=jetzt  "Endzeit"=>"06-03-2011 22:12"
// BoolOffset        = Wert für Boolean-Variable = True
// Trans[]           = Transparenz bei Grpahenfüllung z.B. 0 = keine Füllung    1..FF = Transparenzgrad

$Daten = array(
   "Vari[0]"=>40234, "Trans[0]"=>60,	"YAchse[0]"=>0, "Farben[0]"=>"FF0000","Text[0]"=>"Kitchen, Blue + Store Room",
   "Vari[1]"=>56002, "Trans[1]"=>60,	"YAchse[1]"=>0, "Farben[1]"=>"00FF00","Text[1]"=>"Living Room",
   "Vari[2]"=>45751, "Trans[2]"=>60,	"YAchse[2]"=>1, "Farben[2]"=>"0000FF","Text[2]"=>"Guest Room",
   "Vari[3]"=>49971, "Trans[3]"=>60, 	"YAchse[3]"=>1, "Farben[3]"=>"000000","Text[3]"=>"Ausblasluft",
  /* "Vari[4]"=>33881, "Trans[4]"=>60,	"YAchse[4]"=>0, "Farben[4]"=>"00007B","Text[4]"=>"Helligkeit",*/
	"Zeitspanne"=>1,
	"YBeschriftung[0]"=>"°C","YBeschriftung[1]"=>"%",
	"Pfad"=>"C:\Users\AF\Dropbox\IPsymcon\Charts\Stundencharts\ ","filename"=>"Luftklappen",
	"Size"=>"800x350",
	"Endzeit"=>"",
	"Ueberschrift"=>"Luftklappen",
	"BoolOffset"=>15
	);

IPS_RunScriptEx(18481 /*[Scripte\Charts\Common Code\Google Chart]*/ , $Daten);  //ID Skript GoogleChart

?>





Hat jemand eine Idee was das sein könnte ???

Ich kann Dir nicht sagen was die Ursache ist aber ich hab jetzt das selbe Problem.
Eine Zeit lang gelaufen und seit gestern jedes Mal nur „undefined variable Daten line 117 in funktionen“. Vorher ging alles Problemlos.
Die „undefined offset“ hatte ich auch, kam immer wenn die URL nicht abrufbar war…