Grafiken aktualisieren

Hallo
Ich rufe in Webfront eine externe Seite auf, in der meine Heizungsanlage visualisiert ist. Die Daten hole ich aus einer UVR1611. Die Temperaturen werden alle 5 Minuten aktualisiert. Die Aktualisierungszeit hab ich im Webfront-Configurator unter „Intervall“ eingestellt. Bis hier ist alles bestens.
Nun wollte ich noch die Schaltzustände der Ausgänge darstellen. Dazu habe ich für die Pumpen 2 Gif-Dateien erstellt. Je nach Schaltzustand wird das eine oder andere Gif-Bild angezeigt. Das funzt auch. Allerdings werden diese Schaltzustände im Webfront nicht direkt aktualisiert, sondern genau wie die Temperaturen erst nach 5 Minuten. Hab im Forum das hier gefunden, aber so richtig versteh ich das nicht. Gibts zum aktualisieren der Schaltzustände noch eine andere Möglichkeit?

MfG
computerpap

Der Intervall gilt für die ganze Seite und nicht für einzelne Elemente. Also wird nach 5 Minuten die ganze Seite aktualisiert egal wieviel mal sich dein Schaltzustand geändert hat!

Wenn Du das anderst haben möchtest, musst Du es so machen wie in deinem angegebenen Link, halt entsprechend für dich anpassen.

Das die Intervallzeit für die ganze Seite ist, wußte ich. Ich würd es ja so wie im Link machen, nur was muß ich da noch anpassen. Hab mit PHP noch jede Menge Probleme, mit JS hab ich gar keine Erfahrung.

MfG
computerpap

dojo auf 1.4 anpassen. Da du Grafiken anzeigen willst halt den Pfad zu deinen Grafiken und ausgeben mit z.B.

<?php if(GetValue(50599)==1)echo "<img src='./img/icons/png/GluehbirneAn.png'>"; else echo "<img src='./img/icons/png/Gluehbirne.png'>";?>

Dojo hab ich angepaßt, den Pfad zu den Grafiken ebenfalls. Für was ist die Datei „getIPSValue.php“? Muß da auch noch was angepaßt werden? Sobald ich die getIPSValue.php im Ordner /user abgelegt habe, verschwinden die Grafiken nach 1s und bei true wird eine 1 angezeigt und bei false wird gar nichts angezeigt. Rechts neben dem weißen Pfeil im Bild sollte eigentlich die Grafik für „Pumpe_Ein“ sein.

Gruß
computerpap

Hat keiner irgend eine Ahnung? Ich komm einfach nicht weiter.

Gruß
computerpap

Am einfachsten wird es für dich sein, wenn Du dein Interval auf 1sek stellst. Dann brauchst Du dich nicht mit nicht angepassten Pfaden usw… rumärgern.

Dann ist aber die Seite permanent am neuladen.
Die Pfade passen, denn wenn ich diese Seite im Webfront aktualisiere, sehe ich ja fü ca. 1s die entsprechende Grafik. Der Fehler liegt irgendwo anders.

Gruß
computerpap

Dann ist aber die Seite permanent am neuladen.

ist sie sowieso, weil er den Zustand abfragt.

Es werden aber doch nur die anzuzeigenden Variablen/Grafiken aktualisiert, wenn es so klappen würde wie im Link. Oder sehe ich das falsch?

Gruß
computerpap

ja sicher, in der von dir angegebenen Zeit. :slight_smile:

So möchte ich es ja auch haben. Die Variablen, die einen Schaltstatus anzeigen, sollen jede Sekunde abgefragt werden, aber die Variablen, wie z.B. die Temperaturen, sollen nur alle 5 Minuten aktualisiert werden.

Gruß
computerpap

Du könntest Deinen ganzen HTML-Code per Script in eine Variable schreiben lassen (Profil HTMLBox) und dann das Script bei den gewünschten Änderungen der Variabeln triggern lassen. So übernimmt das Webfront die Aktualisierung der Anzeige.

nicht getestet:


$html = '';
$html.= '<table>';
$html.= '    <tr>';
$html.= '       <td>';
$html.= '          eine GetValue Abfrage';
$html.= '       </td>';
$html.= '    </tr>';
$html.= '</table>';


SetValue(12345,$html);

Gruss

hightower

Hallo,

kann man auf dieser Grundlage auch IPS-Variablen ändern ?

Zum Beispiel ein Input-Button der dann über evtl. „Javascript“ und/oder evtl. „php“ der IPS-Variablen einen neuen Wert zuweist.

Gruß
zkra

Wenn im WebFront eine externe Seite angezeigt (eingebettet) wird, hat IPS/das WebFront keinerlei Einfluss auf den Inhalt der externen Seite. WebFront lädt nur in festen Intervallen die externe Seite nach. Das ist als wenn man F5 drückt.

Wenn Änderungen zeitnah angezeigt werden sollen, müssen diese Änderungen innerhalb der eingebetteten Seite verarbeitet und dargestellt werden - z.B. über Javascript. Die Seite muss sich selbst aktiv aktualisieren. Sie muss so gestaltet sein, dass sie auch schon dann, wenn sie allein angezeigt wird, genau das macht, was man erwartet.

Wenn sich dann der Inhalt der eingebetteten Seite ändert, sorgt allein der Browser dafür, dass diese Änderungen dargestellt werden.

Alle Ansätze, hier etwas über IPS/Webfront zu regeln, müssen fehlschlagen.

also der Weg IPS-Variable --> externe Webseite funktioniert ja nach der Anleitung hier

Ist es wirklich nicht möglich umgekehrt auch von der externen Webseite (z.B. Button) eine IPS-Variable zu ändern ?

Gruß
zkra

Das war nicht die Fragestellung dieses Threads und darauf bezog sich mein Titel - und nicht auf Deine Frage.

Was Du willst, ist eine der einfacheren Übungen.

Man nehme ein kleines PHP-Skript, das aufgrund übergebener Parameter Variablen ändern kann. Dieses ruft man dann von einer x-beliebigen Seite mit den gewünschten Parametern auf.

Im einfachsten Fall über statische Links:

<a href="http://mein.haus.de/webfront/aendere.php?varid=54321&wert=42">Sinn des Lebens auf 42 setzen</a>

Wie das im Detail aussieht, ist hier an anderen Stellen schon beschrieben worden.

Kleiner Hinweis: sicherheitstechnisch ist das natürlich Teufelszeug, da kann man seinen Server auch gleich mitten auf der Straße aufbauen. Aber für den Gebrauch im Privatbereich kann man da schon mal drüber wegsehen.

@jgdsm, besten Dank

Als Teilerfolg kann ich jetzt melden dass ich über den Link

<a href="setIPSValue.php?id=28505&wert=42">Sinn des Lebens auf 42 setzen</a>

die IPS-Variable ändern kann.

Ich habe jetzt jedoch noch das Problem dass nach dem „anklicken“ des Linkes sich zwar die IPS-Variable ändert im WebFront wird dann aber die externe Webseite nicht mehr angezeigt.
Ein erneuter Aufruf der externen Seite über das Webfront funktioniert dann wieder tadelos.

Das Problem ist also, dass nach dem Klick die externe Webseite die nach Muster dieses Linkes

aufgebaut ist, und sekündlich Online-Werte visualisiert, verschwindet.


<meta http-equiv="Pragma" content="no-cache">
<meta http-equiv="Expires" content="0">

<!-- <style type="text/css">@import "pelletkessel.css";</style> -->



<script type="text/javascript" src="../../dojo-release-1.4.1/dojo/dojo.js" djConfig=""></script>
<script type="text/javascript" src="AS_Heizung.js"></script>


<script type="text/javascript">

$TempPar = new Array ();
// Benennung; Left; Top; Id; Width; Heigh; MNr; Einheit
$TempPar[1] = "Neubau Speicher Entnahme Leistung;10;100;TempFeld_11;200;20;234;W";
$TempPar[2] = "Neubau Speicher Entnahme Temperaturdifferenz;10;50;TempFeld_12;200;20;237;K";
$TempPar[3] = "Test Uhrzeit;300;50;TempFeld_13;200;20;237;K";
$TempPar[4] = "Test Zaehler;500;50;TempFeld_14;200;20;237;K";

$TempFeldPar = new Array ();
$TempFeldAnzahl = 4;

for (var i = 1; i <= $TempFeldAnzahl; i++) {
  $TempFeldPar[i] = $TempPar[i].split(";");
  ErstelleTempFeld ($TempFeldPar[i][1], $TempFeldPar[i][2], $TempFeldPar[i][3], $TempFeldPar[i][4], $TempFeldPar[i][5], $TempFeldPar[i][0], $TempFeldPar[i][6]);
}


    var refreshPeriodically = function (node, url, interval) { dojo.addOnLoad( function () { var req = function () { dojo.xhrGet( { url: url, node: dojo.byId(node), load: function (data, xhr) { if (xhr.args.node) { xhr.args.node.innerHTML = data; } } } ); }; req(); window.setInterval(req, interval); }); };
    
    refreshPeriodically("TempFeld_11", "getIPSValue.php?id=21262", 1000);
    refreshPeriodically("TempFeld_12", "getIPSValue.php?id=14379", 1000);
    refreshPeriodically("TempFeld_13", "getIPSValue.php?id=58082", 1000);  
    refreshPeriodically("TempFeld_14", "getIPSValue.php?id=28505", 1000);      
    
function setTest(IpsId, Wert) {
	document.write('<script type="text/javascript" src="setIPSValue.php?id=' + IpsId + '&wert=' + Wert + ' "><\/script>');
}    
    
</script>

</head>
<body>
<form name="ZkForm" action="">

<div style="position:absolute; top:100px; left:500px; z-index:0; border:0px ">
  <img src="Pelletkessel.gif" width="854" height="728">
</div>

<a href="setIPSValue.php?id=28505&wert=42">Sinn des Lebens auf 42 setzen</a>

<input type="button" value="Test" onClick="setTest(28505,1223)" />

<!--
<span id="TempFeld_1"></span><br />
<span id="TempFeld_2"> </span><br />
-->
</form>
</body>
</html>


Gruß
zkra

Hat das einen besonderen Grund warum du das so schreibst.

<\/script>