Grafiken statt Text-Variablen im Webfront anzeigen

Hallo Zusammen,

ich möchte gerne auf einer eigenen Webfront-Seite meinen Grundriss inklusive Status Grafiken (Licht An / Aus) darstellen.

Wie ich „getvalue(12345)“ einbinde, habe ich hinbekommen. Ich möchte statt String oder Float gerne Grafiken anzeigen lassen. Je nach Zustand, Licht an, Licht aus. Ähnlich dem Button True / False bei den Aktoren, nur halt mit eigenen Grafiken. Die aktuelle Grafik wird ja in der Konsole durch triggern eingestellt, nur wie bekomme ich die Ausgabe ins Webfront ? Gibt es hier einen ähnlichen „get“ Befehl ?

Vielen Dank für die Hilfe
Stephan

Du musst alles in Handarbeit erstellen und zuweisen.

<img src="images/<?php echo (GetValueBoolean(12345) ? "an" : "aus"); ?>.png" />

Würde z.B. für eine Boolean-Variable an.png oder aus.png anzeigen.
Da Du bestimmt automatisch aktualisierte Bilder haben willst solltest Du Dir http://www.ip-symcon.de/forum/f3/problem-sajax-3422/index2.html#post61594 mal ansehen. Wenn Du die Datei, die die Werte holt, so umbaust, dass sie HTML-Code für ein Bild wie im Beispiel oben zurückgibt, hast Du Deine Lösung.

Hallo Horst,

super. Hab eben den erste Part schnell ausprobiert und klappt. Das Aktualisieren ist Thema für heute Abend :slight_smile:

Danke
Stephan

@Horst,
ist es gewollt wenn man im Webfront eine „externe Seite“ mit deinem „AJAX-Ersatz“ (Link zu „Problem mit Sajax“) einbindet und diese dann wieder verlässt das diese immer noch im Hintergrund weiter Daten nachladen

Gibst dazu eine Möglichkeit das externe Seiten beim verlassen, quasi geschlossen werden ??

tgusi74

P.S.: es werden bei Widget die konfigurierten ICONs nicht in Webfront angezeigt !!

weiters_nachladen_beim_verlassen_der_externen_seite.jpg

Auf Icon wird nur zurückgegriffen, wenn keine Variable zugewiesen worden ist. Ansonsten wird das Icon aus dem Variablenprofil geholt.

Die Seiten bleiben geladen, damit sie nicht neu geladen werden müssen, wenn man durch die Tabs wechselt. Laden dauert schließlich und führt zu einem weißen Aufflackern des iFrames. Zudem ist so z.B. auch die Einbindung eines Applets zum Musik abspielen am Client möglich. Falls Du auf Experimente mit JavaScript Lust hast, solltest Du mit window.parent.webfront.controller.getApplication().currentPage.getName() die ID der aktuellen Seite herausfinden können. Per Timer alle paar Sekunden solltest Du dann herausfinden können, ob die Seite noch angewählt ist.

Habe nun den Vorschlag von Horst umgesetzt !!

Es laufen jetzt 2 Timer, der erste ist für das „Refresh der Elemente“ (alle 750ms) zuständig und der zweite Timer schaut ob die „Seite noch aktiv im Webfront“ angewählt ist (alle 2 Sekunden), wird nur die Seite verlassen stoppen die Timer und das nachladen im Hintergrund hat ein Ende ==> wird die Seite wieder angeklickt starten die Timer wieder !!


<script type="text/javascript">
 var TIMER_PERIODICALLY  = window.setInterval("PERIODICALLY_TIMEREVENT()"    ,  750); //Pollinginterval !!
 var TIMER_IS_PAGE_ACTIV = window.setInterval("CheckIsActivPage('USERSEITE')", 2000); //hier SeitenName eintragen !!

 var WriteValueToIPS  = function (url) { dojo.xhrGet({ url: url, timeout:5000 }) };
 var ReadValueFromIPS = function (node, url) { 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(); }); };

 function PERIODICALLY_TIMEREVENT()
    {
     ReadValueFromIPS("Rauchmelder1", "getIPSValue.php?name=AAA/BBB/TEST_AAA_SCRIPT/TESTVAR_BOOL1&style=grafik&file0=png/rauchmelder.png&file1=gif/LED_red_blink.gif");
     ReadValueFromIPS("Beleuchtung1", "getIPSValue.php?name=AAA/BBB/TEST_AAA_SCRIPT/TESTVAR_BOOL3&style=grafik&file0=gif/lamp_off.gif&file1=gif/lamp_on.gif");
     ReadValueFromIPS("text51", "getIPSValue.php?name=AAA/BBB/TEST_AAA_SCRIPT/TESTVAR_BOOL1&style=light");
    }


 function CheckIsActivPage(pagename)
    {
     if (window.parent.webfront.controller.getApplication().currentPage.getName() != pagename)
        {
         window.clearInterval(TIMER_PERIODICALLY);
         window.clearInterval(TIMER_IS_PAGE_ACTIV);
        }
    }
</script>

Danke Horst :slight_smile:
tgusi74

MUSTERSCRIPT.zip (10.5 KB)

Hallo Zusammen,

die vorgeschlagene Umsetzung von Horst mit

<img src=„images/<?php echo (GetValueBoolean(12345) ? „an“ : „aus“); ?>.png“ />

für Boolean-Werte hat schon geklappt.

Gibt es zusätzlich eine Möglichkeit, mit „getvalue“ auch einzelnen „String-Werten“ ein .png zuzuordnen ?

Hintergrund: Je nach Rolladen-Zustand (und String-Variable) 0%, 50%, Sonnenstellung und 100%, soll die jeweilige Balkengrafik mit (grün mit zunehmenden rot für geschlossen) geladen werden.

0% = Grafik komplett grün
50% = Grafik grün / rot
100% = Grafik komplett rot etc.

Danke und Gruß
Stephan

Hallo Stephan,
nimm dazu am besten gleich das Musterscript von oben und erweitere die „STYLE-Case“ im „getIPSValue.php“

z.B.:


case 'rollo':
               if ((int)GetValueByName($_GET['name']) >= 75)
                 {
                   $styletext =  "<img src=\"../img/icons/gif/rollo100.gif\" border=\"0\" alt=\"\"></img>";
                 }
               else if ((int)GetValueByName($_GET['name']) >= 25)
                 {
                   $styletext =  "<img src=\"../img/icons/gif/rollo050.gif\" border=\"0\" alt=\"\"></img>";
                 }
               else
                 {
                   $styletext =  "<img src=\"../img/icons/gif/rollo000.gif\" border=\"0\" alt=\"\"></img>";
                 }
               break;

… die Position des Rollo’s in der Grafik (z.B.: page.php ==> externe Seite welche in WebFront eingebunden wird)

<div id="rollo1" style="z-index: 400; left: 500px; top:100px; position: absolute"</div>

… in deiner „Externen Seite“ bindest Du dann im Refresh das Rollo folgendermassen ein

ReadValueFromIPS("rollo1", "getIPSValue.php?name=AAA/BBB/ROLLOPOSITION1&style=rollo");

Viel Spass
tgusi74