MultiGraph mit GoogleChart

Zeig einmal dein Konfig-Skript


$Vari 			= array (59270, 55471);
$Trans   		= array (10,00,60,60,00);
$Farben  		= array ("0000ff","ff0000","000022","00ff00","00008B");
$Text    		= array ("Luftfeuchtigkeit","Temperatur","Wert 3","Wert 4","Wert 5");
$YBeschriftung = array ("°C","%");
$YAchse			= array (1,0,0,0,0);
//$Hinter1 = "000000";
//$Hinter2 = "FFFFFF";
$Zeitspanne = 1;
$Pfad	= "C:/ip-symcon/media/";
$filename = "Vorratsraum";
$Size = "800x350";
$Endzeit = "";
$Ueberschrift= "Vorratsraum";
$BoolOffset = false;
$Schriftfarbe = "ffffff";
$Dynamisch = 0;
$Graphenart = "Line";
$TimeCompare = array(0,0,0,0,0);
$Faktor = array(0,0,0,0);

include("GoogleCharts.ips.php");

?>

Config sieht erst einmal gut aus.

Hab jetzt ein Update auf V1.03 gemacht, leider habe ich noch immer eine „Ausrufezeichen“ vor dem „GoogleCharts.ips.php“ Script. Wenn ich es öffne und starte bekomme ich die Meldung: Keine Variablen vorhanden

Du darfst nur das Konfig-Skript starten, nicht GoogleChart.ips.php:rolleyes:

Bekommst Du dann auch noch Meldungen?

Ja, starte nur das config script…

muss ich die vers 1 löschen? kann es sein das sich die in die Quere kommen?

Wenn ich übrigens bei „Dynamisch“ eine 1 setzte bekomme ich folgende Fehlermeldung:

Warning: Cannot modify header information - headers already sent by (output started at C:\IP-Symcon\scripts\Konfig.ips.php:1) in C:\IP-Symcon\scripts\GoogleCharts.ips.php on line 2

Warning: Variablenprofil # existiert nicht in C:\IP-Symcon\scripts\Funktionen_TimeCompare.ips.php on line 579

Warning: Variablenprofil # existiert nicht in C:\IP-Symcon\scripts\Funktionen_TimeCompare.ips.php on line 579

Und er scaliert die Y-Achse von 0-100 und zeigt dei Temperatur (eigentlich 13,1°C) bei ca. 95°C an…

Ja, versuche die alte Version zu löschen.
Vieleicht hilfts??

Die zweite Meldung kommt weil Du einer geloggten Variable kein Profil zugeordnet hast.

Bis auf die Fehlermeldung (Die auch nur kommt wenn ich mehr als 2 Graphen habe)

Warning: Cannot modify header information - headers already sent by (output started at C:\IP-Symcon\scripts\22188.ips.php:1) in C:\IP-Symcon\scripts\GoogleCharts.ips.php on line 2

hab ich das hinbekommen.
„GoogleCharts.ips.php“ habe ich gelöscht und neu installiert, danach war das „Ausrufezeichen“ weg. :confused:

Profile habe ich jetzt für alle Variabeln angelegt, nur für die Niederschlagsmenge und die Sonnenscheindauer der HomeMatic Wettersation scheint das nicht zu klappen. Da bekomme ich immer ein leeres Blatt (Diagrammtyp BAR) und ich kann auch keine passenden Variablen-Profile finden…

Profil für die 2 Variablen selbst anlegen.

Hallo,

wie war das mit dem Umschalten über Profil, ich krieg’s nicht hin…
Variable angelegt, Profil mit 4 Möglichkeiten und auf Konfigscript zurückverwiesen

$Zeitspanne = GetValueInteger(46235 /*[HomeMatic\Raum.Zeit]*/);

da gabs doch was mit einem Simulationshäckchen, damit man das als Switch benutzen kann?

Gruß Konny

Als Skript anlegen und als eigene Action zuordnen.

if ($_IPS['SENDER'] == "WebFront")
	SetValueInteger($_IPS['VARIABLE'], $_IPS['VALUE']);

Wenn Du ein Problem hast mit dem Variablen setzen.

Danke ,

ich hab es inzwischen auch gefunden

http://www.ip-symcon.de/forum/f52/auswahl-schalter-15446/
und so gelöst…
Script (Zeittändern)

switch($IPS_SENDER)
{
    case "WebFront":
        SetValue($IPS_VARIABLE, $IPS_VALUE);
}

Danke Konny

Verknüpfung.PNG

Alle Achtung und grosse Dankbarkeit an Meike. GoogleCharts ist sehr schön, und diese Scripts sind sehr nützlich.

Allerdings bekomme ich eine ganze Menge Probleme. Einerseits stimmen die Wochen- und Monatsgraphiken nicht. die Achsen springen dynamisch, obwohl das Profil eingestellt wurde. Ausserdem habe ich das Gefühl, dass der Graph irgendwie interpoliert indem er mehrere Werte mittelt. Das führt zu ziemlich absurden Konstellationen! Und schliesslich bekomme ich eine ganze Menge Fehermeldungen: derzeit hauptsächlich „Undefined variable: mini0 in C:\IP-Symcon\scripts\Funktionen_TimeCompare.ips.php on line 546“

Dafür funktioniert die Tagesgraphik ordentlich, und das ist schon mal sehr gut. Hier ist mein Config Script (eine Davis Wetterstation wird gepollt über serial port, die Daten werden enstprechend geloggt):


<?
$Vari 			= array (53428 /*[Wetterstation Dach\RegVarDavisTalkPacket\DavisTalkParsePacket\OutsideTemp]*/);
$Trans   		= array (60);
$Farben  		= array ("0000ff");
$Text    		= array ("Outside Temperature");
$YBeschriftung = array ("°C");
$YAchse			= array (0);
$Hinter1 = "000000";
$Hinter2 = "000000";
$Zeitspanne = 1;
$Pfad	= "C:/IP-Symcon/media/";
$filename = "DailyOutsideTemperature";
$Size = "800x350";
$Endzeit = "";
$Ueberschrift= "Davis Wetterstation";
$BoolOffset = 0;
$Schriftfarbe = "ffffff";
$Dynamisch = 1;
$Graphenart = "Line";
$TimeCompare = array(0);
$Faktor = array(1);

include("GoogleCharts.ips.php");

//weekly graph

$Zeitspanne = 2;
$filename = "WeeklyOutsideTemperature";
include("GoogleCharts.ips.php");

//monthly graph
$Zeitspanne = 3;
$filename = "MonthlyOutsideTemperature";
include("GoogleCharts.ips.php");

//yearly graph
$Zeitspanne = 4;
$filename = "YearlyOutsideTemperature";
include("GoogleCharts.ips.php");

//daily graph pressure
$Vari 			= array (29183 /*[Wetterstation Dach\RegVarDavisTalkPacket\DavisTalkParsePacket\Barometer]*/);
$Trans   		= array (60);
$Farben  		= array ("0000ff");
$Text    		= array ("Pressure");
$YBeschriftung = array ("mmHg");
$YAchse			= array (1);
$Zeitspanne = 1;
$Pfad	= "C:/IP-Symcon/media/";
$filename = "DailyPressure";
$Size = "800x350";
$Endzeit = "";
$Ueberschrift= "Davis Wetterstation";
$BoolOffset = 0;
$Schriftfarbe = "ffffff";
$Dynamisch = 1;
$Graphenart = "Line";
$TimeCompare = array(0);
$Faktor = array(1);

include("GoogleCharts.ips.php");

//weekly graph
$Zeitspanne = 2;
$filename = "WeeklyPressure";
include("GoogleCharts.ips.php");

//monthly graph
$Zeitspanne = 3;
$filename = "MonthlyPressure";
include("GoogleCharts.ips.php");

//yearly graph
$Zeitspanne = 4;
$filename = "YearlyPressure";
include("GoogleCharts.ips.php");

//daily graph outside humidity
$Vari 			= array (29232 /*[Wetterstation Dach\RegVarDavisTalkPacket\DavisTalkParsePacket\OutsideHumidity]*/ );
$Trans   		= array (60);
$Farben  		= array ("0000ff");
$Text    		= array ("Moisture");
$YBeschriftung = array ("percent");
$YAchse			= array (0);
$Zeitspanne = 1;
$Pfad	= "C:/IP-Symcon/media/";
$filename = "DailyMoisture";
$Size = "800x350";
$Endzeit = "";
$Ueberschrift= "Davis Wetterstation";
$BoolOffset = 0;
$Schriftfarbe = "ffffff";
$Dynamisch = 1;
$Graphenart = "Line";
$TimeCompare = array(0);
$Faktor = array(1);

include("GoogleCharts.ips.php");

//weekly graph
$Zeitspanne = 2;
$filename = "WeeklyMoisture";
include("GoogleCharts.ips.php");

//monthly graph
$Zeitspanne = 3;
$filename = "MonthlyMoisture";
include("GoogleCharts.ips.php");

//yearly graph
$Zeitspanne = 4;
$filename = "YearlyMoisture";
include("GoogleCharts.ips.php");

//daily graph windspeed
$Vari 			= array (18841 /*[Wetterstation Dach\RegVarDavisTalkPacket\DavisTalkParsePacket\WindSpeedTenMinAverage]*/ );
$Trans   		= array (60);
$Farben  		= array ("0000ff","ff0000","000022");
$Text    		= array ("Wind speed (10-min averages)");
$YBeschriftung = array ("m/s");
$YAchse			= array (0);
$Zeitspanne = 1;
$Pfad	= "C:/IP-Symcon/media/";
$filename = "DailyAverageWindSpeed";
$Size = "800x350";
$Endzeit = "";
$Ueberschrift= "Davis Wetterstation";
$BoolOffset = 0;
$Schriftfarbe = "ffffff";
$Dynamisch = 1;
$Graphenart = "Line";
$TimeCompare = array(0);
$Faktor = array(1);

include("GoogleCharts.ips.php");

//weekly graph

$Zeitspanne = 2;
$filename = "WeeklyAverageWindSpeed";
include("GoogleCharts.ips.php");

//monthly graph
$Zeitspanne = 3;
$filename = "MonthlyAverageWindSpeed";
include("GoogleCharts.ips.php");

//yearly graph
$Zeitspanne = 4;
$filename = "YearlyAverageWindSpeed";
include("GoogleCharts.ips.php");

?>

Und was passiert wenn Du

$Dynamisch = 0;

verwendest?

wird nicht viel besser! Irgendwie scheinen sich die Graphen nur dann an die Profile zu halten, wenn die Variable keine Aussreisser jenseits der Profilgrenzen zeigt. Falls letzteres eintrifft, wird das Profil ignoriert und dynamisch dargestellt.

Aber warum kriege ich die Fehlermeldungen „Undefined variable: mini0 in C:\IP-Symcon\scripts\Funktionen_TimeCompare.ips.php on line 546“? Das ist mir gänzlich unklar…

Bei Dym = 0 werden die min und max Werte selbst ermittelt.
Bei Dym = 1 werden die min und max Werte asu den Profil genommen.

Vieleviel Werte hast Du denn mit den Variablen geloggt.
Versuche doch einmal bei deiner Config herraus zu finden bei welchem Aufruf der Fehler kommt.

…tolle Sache: funktioniert auf Anhieb und bietet viele Möglichkeiten! Danke!

@Konny: Wie hast Du den Chart/Bilder-Wechsel entsprechend Deiner Variable hinbekommen? Bei meinem Ansatz mit IPS_SetMediaFile(…) (und natürlich IPS_SendMediaEvent) wird das Bild im Webfront nicht aktualisiert. Variable und Media-Link sind geändert (testbar in der IPS-Console) aber im Browser (IE oder Chrome) ändert sich nichts!

Ich hab auch das Problem, dass die media files (googel charts) nicht immer aktuell dargestellt werden. In IPS ist alles ok, auch die datei wird aktualisiert, nur im Browser (firefox und safari) wird die Grafik nicht immer aktualisiert, wenn die Datei sich ändert. Manchmal geht es komischerweise… aber meistens leider nicht, ist nervig auf Dauer, da ich die Berechnung nur nach erfolgter Auswahl erfolgt. siehe pic

Hallo Karlheinz,
kannst du evt. die automatische Beschriftung wenn man TimeCompare > 1 setzt weg lassen?

Wenn ich einen Graphen vergleiche würde ich Ihn mit „2012“ und „2011“ beschriften wollen. Bei dir steht aber dann „2011 – 1 Jahr“.

Gruß Uwe

Hallo thorsten76, Hallo Uwe,

ich schaue mir das nächste Woche an.

Hallo Karlheinz,

ist dieser Fehler bei der aktuellen Version schon behoben?

Leider noch nicht, werde mich aber bald damit beschäftigen.
Ich komme gerade aus dem Urlaub zurück.