IPS Daten in HTML - wie?

Hallo Gemeinde,

ich habe mal wieder ein wenig Zeit aufgewendet um mein Webfront aufzuhübschen.
Habe jetzt eine HTML-Seite im /webfront/user Ordner liegen auf der ich einiges aus dem Internet darstelle.

Jetzt möchte ich aber auch z.B. Temperatur und Luftfeuchte aus IPS auf dieser HTML Seite darstellen. Dazu habe ich schon mal gesucht hier, aber nix gefunden, was mich schlau macht.

Kann mir jemand mal ein beispiel geben, wie mah den Code in HTML schreibt, um eine IPS Variable auszulesen (nur auslesen, nicht schalten)?

Danke und Gruß
Dirk

Einfach ein GetValue. Code gibt es in Forum dazu genug.

Hm, so?:


<html>

<body>

<div id="temp" style="position:fixed; left:20px; top:10px; color:#bababa; font-size:28px">
<h2>Aussen: <? $status=GetValueBoolean(16369); print ($status) ?> °C</h2>
</div>

.
.
.
.

Geht nicht. Kann mal jemand korrigieren? Danach komm ich dann selbst weiter…

Danke!

Gruß
Dirk

z.B. so.

<?php echo GetValue(16369);?>

Hm, geht nicht.

warum weiß ich jetzt auch nich…

Gruß
Dirk

Aaaah, das kenne ich… schon so oft gehört und gelesen… suchen, fragen, probieren… aber das, ist definitiv die falsche Antwort!

Nee, ich war/bin selbst kein HTML-Experte und stellte ähnliche Fragen… aber meine erste eigene „HTML-Verwirklichung“ sah so aus… http://www.ip-symcon.de/forum/f56/stundenplan-webfront-9844/… und da gibs zwischen den Zeilen noch mehr zu lesen (Tipps), als nur das „langweilige“ Thema Stundenplan.
Evtl kannst du daraus schon etwas schöpfen und kreativ weiter verfolgen;)

Das Forum ist voll von anderen praktizierten Beispielen…

nee, ich bekomms nich hin.

Hab aber noch tausend andere Baustellen… deshalb nich so schlimm.

Danke
Gruß
Dirk

Dann schlaf mal drüber und fang bei der Wichtigsten an :slight_smile: g8

Hab geschlafen und nachgedacht…

Meine gestrigen Versuche haben mich zum Wahnsinn getrieben! Scheinbar war alles korrekt, hab mich durch Forum gewühlt und das Internet fast leer gegoogelt…
…bis ich heute gemerkt habe, daß die Datei noch immer die Endung .html hatte! :frowning:

Danke und Gruß
Dirk

Habe jetzt noch eine Frage:

Das Script liegt ja nun im webfront/user/ Ordner
Da komm ich ja nicht im Konfigurator ran, um ihm z.B. Ereignise zuzufügen.

Im Webfront komm ich aber auch nicht an den Script-Ordner von IPS ran.

Wie habt ihr das gemacht, um Scripte, die in HTML-Dateien eingebunden sind auch von der Konsole aus zu bearbeiten, bzw. Ereignisse hinzuzufügen?

Gruß
Dirk

zum bearbeiten, gibt es z.B. Notepad++.

Was willst Du mit Ereignissen bezwecken. Um die Daten auf der Seite aktuell zu halten, musst Du mit Javascript arbeiten.

Beispiele, wär hätte es gedacht, findet man im Forum. :wink:

Hat jemand mal so ein Beispiel??

Ich hab´s so versucht:


<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="Content-Type" content="text/html; charset=iso-8859-1" />
<title>Uhrzeit</title>
<script type="text/javascript" src="http://ajax.googleapis.com/ajax/libs/jquery/1.3.2/jquery.min.js"></script>
</head>

<body>



<script type="text/javascript">


$(document).ready(function(){


  var updateDiv = function ()
{
  $('#ausgabeDiv').load('aussentemp.php', function () {
    deinTimer = window.setTimeout(updateDiv, 3000);
  });
}
var deinTimer = window.setTimeout(updateDiv, 3000);

  });
</script>



<div id="ausgabeDiv"><p>Lese Temperatur.....</p></div>

</body>
</html>

undhier die aussentemp.php im user Ordner:


<? 
echo number_format(GetValue(37805), 1, ',', '');
?>

Das funktioniert aber nicht. Kann da ein Profi mal bitte drüberschauen?

Danke
Gruß
Dirk

Hallo Leute,

ich habe jetzt 2 Tage versucht die Abfrage wie oben im Code zu realisieren.
Bekomme es aber nicht hin.

Kann mir jemand sagen, was im oben geposteten Code falsch ist? Es steht nur „Lese Temperatur…“, aber er liest das aussentemp.php nicht ein und aktualisiert es. Ich weiß da nicht mehr weiter.

Kann mir jemand helfen?

Danke und Gruß
Dirk

Hallo Profis,

oben genanntes Script läuft jetzt. Da wird ja alle 3 Sekunden abgefragt. Aber das belastet den Client so sehr, das ich nach wenigen minuten 100% CPU-Auslastung habe.
Es muss doch noch einen besseren Weg geben.

Wäre toll, wenn man einem Dummy mal ein einfaches Beispiel geben könnte wie sowas gescheit gemacht wird. Eine Beispiel-HTML und das nötige Script wären sehr schön. Alleine bekomme ich das nicht hin. Oder gibt es eine Beschreibung für Einsteiger? Nur Stichworte wie Ajax, JSon bringen mich leider nicht weiter. Damit ist es mir zwar gelungen die Variable aus IPS in einer html-Seite auszulesen, aber eben nicht aktuell zu halten ohne die seite ständig neu laden zu müssen.

Wäre sehr dankbar für ein einfaches Beispiel Script / HTML.

Danke und Gruß
Dirk

Ich habe hier im Forum einen Vorschlag gefunden, wie man IPS Werte über eine Grafik positionieren kann. Das Script sieht im meinem Fall so aus:

<?
	// Variablen aus IPS holen
	$aEingang=Array();
	$aAusgang=Array();

	$aEingang[1]=GetValueFloat(20360 /*[Scripte\Resol\Kollektortemperatur in °C]*/);	// Kollektortemp
	$aEingang[2]=GetValueFloat(39041 /*[Scripte\Resol\untere Speichertemperatur in °C]*/);	// Speicher unten
	$aEingang[3]=GetValueFloat(40944 /*[Scripte\Resol\obere Speichertemperatur in °C]*/);	// Speicher oben
	$aEingang[4]=GetValueFloat(52428 /*[Scripte\Resol\Betriebsstunden in h]*/);	// Betriebsstunden
	$aEingang[5]=GetValueFloat(29329 /*[Garten\Außenthermometer\Temperatur]*/);	// Aussentemp
	$aEingang[6]=GetValueFloat(12431 /*[Scripte\Resol\Einstrahlung in W/m²]*/);	// Einstrahlung
	$aEingang[7]=round(GetValueFloat(21925 /*[Scripte\Resol\Wärmemenge in kWh]*/),1);	// Wärmemenge
	$aEingang[8]=round(GetValueFloat(19406 /*[Scripte\Resol\Anlagenleistung in kW/h gesamt]*/),1);	// Anlagenleistung
	$aEingang[9]=GetValueFloat(46000 /*[Scripte\Resol\Pumpendrehzahl in %]*/);	// Pumpendrehzahl
	$aEingang[10]=GetValueFloat(49469 /*[Scripte\Resol\Volumenstrom in l/h]*/);	// Volumenstrom
	$aEingang[11]=GetValueFloat(57987 /*[Scripte\Resol\Vorlauftemperatur in °C]*/);	// Vorlauftemperatur
	$aEingang[12]=GetValueFloat(25845 /*[Scripte\Resol\Rücklauftemperatur in °C]*/);	// Rücklauftemperatur
?>

<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Onlineschema Landsturmstrasse 18</title>
<style type="text/css">

	body 	 {font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; background-repeat: no-repeat; margin: 0px;}
	#graphic {text-align: left; vertical-align: top; position: relative; width: 438px; height: 663px; margin-right: auto; margin-left: auto;}

/*########## CSS-ID: Positionen der Anzeigeparameter ##########*/
#posE1 {top:  70px; left: 230px;}
#posE2 {top: 625px; right: 270px;}
#posE3 {top: 430px; right: 270px;}
#posE4 {top:  24px; left:  10px;}
#posE5 {top: 24px; right: 10px;}
#posE6 {top: 37px; right: 10px;}
#posE7 {top:  37px; left: 10px;}
#posE8 {top:  50px; left: 10px;}
#posE9 {top: 450px; right: 100px;}
#posE10 {top: 463px; right: 100px;}
#posE11 {top: 542px; left: 230px;}
#posE12 {top: 600px; left: 230px;}

/*########## CSS-Klasse: Darstellung der Anzeigeparameter ##########*/
	.styleIN 	{font-family: Tahoma; font-size: 14px; text-align: left; font-style: normal; font-weight: bold; color: #000000; position: absolute;}
	.styleOUT 	{font-family: Tahoma; font-size: 12px; text-align: left; font-style: normal; font-weight: bold; color: #0000FF; position: absolute;}

</style>
</head>
<body>

<div id="graphic">
<img src="user/solar_therm.jpg" alt="solar_therm.jpg" border="0"/>

<!--########## Definitionen der Anzeigeparameter ##########-->
<div class="styleIN" id="posE1"><?= $aEingang[1] ?>°C</div>
<div class="styleIN" id="posE2"><?= $aEingang[2] ?>°C</div>
<div class="styleIN" id="posE3"><?= $aEingang[3] ?>°C</div>
<div class="styleIN" id="posE4"><?= $aEingang[4] ?> h</div>
<div class="styleIN" id="posE5"><?= $aEingang[5] ?>°C</div>
<div class="styleIN" id="posE6"><?= $aEingang[6] ?> W/m²</div>
<div class="styleIN" id="posE7"><?= $aEingang[7] ?> kWh</div>
<div class="styleIN" id="posE8"><?= $aEingang[8] ?> kW/h</div>
<div class="styleIN" id="posE9"><?= $aEingang[9] ?> %</div>
<div class="styleIN" id="posE10"><?= $aEingang[10] ?> l/h</div>
<div class="styleIN" id="posE11"><?= $aEingang[11] ?>°C</div>
<div class="styleIN" id="posE12"><?= $aEingang[12] ?>°C</div>

</div>
</body>
</html>

Wenn ich das Script nun im WF starte, dann wird alles korrekt in einem Popup-Fenster „gemalt“. Wie bekomme ich es aber in eine StringVar Typ ~HTMLBox?

entweder schreibst du den gesamten HTML-String direkt in die String-Var(SetValueString($ID, $String)), oder (und ressourcenschonender): du legst den HTML-Content als .html-File auf die HDD und holst ihn als iFrame in die String-Var:


// in HTML-Box schreiben
SetValue($content_var_id,
						'<iframe src="./User/Highcharts/Wetterdaten_12Monate_'.$Script_ID.'.html"
						frameborder="0" scrolling="no" width="100%" height="450" "></iframe>');

Ich möchte mich dann für die ressourcenschonendere Variante entscheiden.
Ich habe nun also den HTML-Teil in eine Datei (solaranlage.html) unter user abgelegt. Ich habe eine String-Var angelegt mit dem Typ ~HTMLBox.
Nun komme ich nicht weiter. :confused:
Du sagst ich muss das Script teilen. Den HTML Anteil in eine Datei. Und den PHP-Teil?

besser nicht, vielleicht so (aber die Pfade noch prüfen!):


<?
    // Variablen aus IPS holen
    $aEingang=Array();
    $aAusgang=Array();

    $aEingang[1]=GetValueFloat(20360 /*[Scripte\Resol\Kollektortemperatur in °C]*/);    // Kollektortemp
    $aEingang[2]=GetValueFloat(39041 /*[Scripte\Resol\untere Speichertemperatur in °C]*/);    // Speicher unten
    $aEingang[3]=GetValueFloat(40944 /*[Scripte\Resol\obere Speichertemperatur in °C]*/);    // Speicher oben
    $aEingang[4]=GetValueFloat(52428 /*[Scripte\Resol\Betriebsstunden in h]*/);    // Betriebsstunden
    $aEingang[5]=GetValueFloat(29329 /*[Garten\Außenthermometer\Temperatur]*/);    // Aussentemp
    $aEingang[6]=GetValueFloat(12431 /*[Scripte\Resol\Einstrahlung in W/m²]*/);    // Einstrahlung
    $aEingang[7]=round(GetValueFloat(21925 /*[Scripte\Resol\Wärmemenge in kWh]*/),1);    // Wärmemenge
    $aEingang[8]=round(GetValueFloat(19406 /*[Scripte\Resol\Anlagenleistung in kW/h gesamt]*/),1);    // Anlagenleistung
    $aEingang[9]=GetValueFloat(46000 /*[Scripte\Resol\Pumpendrehzahl in %]*/);    // Pumpendrehzahl
    $aEingang[10]=GetValueFloat(49469 /*[Scripte\Resol\Volumenstrom in l/h]*/);    // Volumenstrom
    $aEingang[11]=GetValueFloat(57987 /*[Scripte\Resol\Vorlauftemperatur in °C]*/);    // Vorlauftemperatur
    $aEingang[12]=GetValueFloat(25845 /*[Scripte\Resol\Rücklauftemperatur in °C]*/);    // Rücklauftemperatur

$content = '
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<meta http-equiv="content-type" content="text/html;charset=utf-8" />
<title>Onlineschema Landsturmstrasse 18</title>
<style type="text/css">

    body      {font-size: 12px; font-family: Verdana, Arial, Helvetica, sans-serif; background-repeat: no-repeat; margin: 0px;}
    #graphic {text-align: left; vertical-align: top; position: relative; width: 438px; height: 663px; margin-right: auto; margin-left: auto;}

/*########## CSS-ID: Positionen der Anzeigeparameter ##########*/
#posE1 {top:  70px; left: 230px;}
#posE2 {top: 625px; right: 270px;}
#posE3 {top: 430px; right: 270px;}
#posE4 {top:  24px; left:  10px;}
#posE5 {top: 24px; right: 10px;}
#posE6 {top: 37px; right: 10px;}
#posE7 {top:  37px; left: 10px;}
#posE8 {top:  50px; left: 10px;}
#posE9 {top: 450px; right: 100px;}
#posE10 {top: 463px; right: 100px;}
#posE11 {top: 542px; left: 230px;}
#posE12 {top: 600px; left: 230px;}

/*########## CSS-Klasse: Darstellung der Anzeigeparameter ##########*/
    .styleIN     {font-family: Tahoma; font-size: 14px; text-align: left; font-style: normal; font-weight: bold; color: #000000; position: absolute;}
    .styleOUT     {font-family: Tahoma; font-size: 12px; text-align: left; font-style: normal; font-weight: bold; color: #0000FF; position: absolute;}

</style>
</head>
<body>

<div id="graphic">
<img src="user/solar_therm.jpg" alt="solar_therm.jpg" border="0"/>

<!--########## Definitionen der Anzeigeparameter ##########-->
<div class="styleIN" id="posE1"><?= $aEingang[1] ?>°C</div>
<div class="styleIN" id="posE2"><?= $aEingang[2] ?>°C</div>
<div class="styleIN" id="posE3"><?= $aEingang[3] ?>°C</div>
<div class="styleIN" id="posE4"><?= $aEingang[4] ?> h</div>
<div class="styleIN" id="posE5"><?= $aEingang[5] ?>°C</div>
<div class="styleIN" id="posE6"><?= $aEingang[6] ?> W/m²</div>
<div class="styleIN" id="posE7"><?= $aEingang[7] ?> kWh</div>
<div class="styleIN" id="posE8"><?= $aEingang[8] ?> kW/h</div>
<div class="styleIN" id="posE9"><?= $aEingang[9] ?> %</div>
<div class="styleIN" id="posE10"><?= $aEingang[10] ?> l/h</div>
<div class="styleIN" id="posE11"><?= $aEingang[11] ?>°C</div>
<div class="styleIN" id="posE12"><?= $aEingang[12] ?>°C</div>

</div>
</body>
</html>
';

// Archiv-Ordner und Filename vorgeben
		$path 				= "webfront/user/Data/";
		$filename 			= "SolarData".$_IPS['SELF'].".html";

		// Ordner anlegen, wenn nicht vorhanden
		$path 				= IPS_GetKernelDir().$path ;
		if (!is_dir($path))
		mkdir ($path, 0777, true);

		// schreiben der htm-Datei
		$filename   		= $path.$filename;
		$handle = fopen($filename,"w");
		fwrite($handle, $content);
		fclose($handle);
?>

Das sieht alles schon gar nicht schlecht aus.
Ich richte diese html-Datei dann als externe Seite im WFC ein und sehe sie auch im WF. Jedoch ohne die Werte. Die Variablen dazu wurden auch nicht in die htlm-Datei reingeschrieben.
Habe ich etwas vergessen auszuführen, oder stimmt das Script so noch nicht?

nein, ich hab was übersehen:

änder mal die entsprechenden Zeilen so um:


<div class="styleIN" id="posE1">'.$aEingang[1].'°C</div>