FHZ Anzeigen verbessern

Hiermit lassen sich die Anzeigen in der Homeputer Studio Version verbessern.

Zum Beispiel eine andere Anzeige der Heizung.

 

Es können alle möglichen Werte zusammengefasst und in einer Anzeige ausgegeben werden. Ebenso können Bilder, Diagramme und vieles mehr in der Visualisierung angezeigt werden.

Hierfür ist zwingend die Studioversion der FHZ nötig, zusätzlich muß php installiert sein (siehe dazu im Studioprogramm in die Hilfe). Um die Grafik-funktionen mit php nutzen zu können muß die php_gd2.dll eingebunden sein (in der php.ini).

Beispiel einer php.ini

[PHP]

extension_dir = "C:\Programme\PFAD ZU Deinen DLL Dateien";
extension = php_gd2.dll
Sollten Teile der Grafik Durchsichtig sein dann muß zwingend dafür das BMP-Format benutzt werden. Dazu muß die Grafik mit der Funktion bmp.php als bmp gespeichert werden.

Als Beispiel wird hier eine Heizungsanzeige erstellt.

Erstelle ein neues Objekt: Name: vobjAnzeigeHeizungAZ Typ: EAGerät

Makro

warte 00:02:00
<?
  $Objectname = "vobjAnzeigeHeizungAZ";
  $HeadLine = "Heizung AZ";
  $Value1 = $V_RRArbeitszimmer_Ventilpos;
  $Value2 = $V_RRArbeitszimmer_Temperatur;
  $Value3 = $V_RRArbeitszimmer_Modus;
  $Value4 = $RRArbeitszimmer;


  //Dieser Pfad muss angepasst werden!!!
  include("c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\PHP-Zubehoer\\Heizung.php");
?>

vobjAnzeigeHeizungAZ umschalten
Der Pfad zur Heizung.php muß angepast werden
Zusätzlich wird nur vorläufig die Option "Ausführen bei Änderung" aktiviert.

In das Objekt des Raumregelers wir im Makro folgendes eingetragen:

Makro

STARTE(vobjAnzeigeHeizungAZ)

Zusätzlich noch Ausführung bei Änderung aktivieren.

Als nächstes wird eine Heizung.php Datei mit einem Editor in dem oben genannten Verzeichnis erstellt mit folgendem Inhalt.

Heizung.php

<?
    //Diese Pfade sind noch anzupassen.
    $filejpg = "c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\FHZ-Bilder\\".$Objectname.".jpg";
    $fontdir = "c:\\Dokumente und Einstellungen\\Stephan\\Eigene Dateien\\FHZ\\PHP-Zubehoer\\Fonts\\";
    
    //Variablen festlegen
    $HeaderSize = 18;
    $SizeX = 100;
    $SizeY = 56+$HeaderSize;
    $HeadFont = $fontdir."arialbd.ttf"; //arialbd.ttf
    $HeadFontSize = 8;
    $TextFont = $fontdir."arial.ttf"; //arial.ttf
    $TextFontSize = 7;
    $WertFont = $fontdir."DS-DIGIB.ttf"; //DS-DIGIB.ttf
    $WertFontSize = 9;
    
    $Text1 ="Ventil";
    $Text2 ="Ist Temp.";
    $Text3 ="Modus";
    $Text4 ="Soll Temp.";
    
    //Übergabewerte prüfen und in Text umwandeln
    
    /*
    $Test1 = $Value1; //= 50; //Ventilstellung
    $Test2 = $Value2; // = 30.0; //Gemessene Temperatur
    $Test3 = $Value3; // = 1; //Modus
    $Test4 = $Value4; // = 25.0; //Gewünschte Temperatur
    
    echo "Ventil(1)=" .$Test1. " Ist(2)=" .$Test2. " Modus(3)=" .$Test3. " Soll(4)=" .$Test4; 
    */
    
    //Ventilstellung
    $Value1 = sprintf("%d", $Value1);
    if ($Value1 < 0) $Value1 = "--";
    $Wert1 = $Value1 . "&nbsp;%";
    
    //Gemessene Temperatur
    $Value2 = sprintf("%0.1f", str_replace(",",".",$Value2));
    if ($Value2 == 0.0) $Value2 = "--";
    $Wert2 = $Value2. " 'C";
    
    //Modus
    // Dauer_lang und Dauer_kurz werden noch nicht abgefragt, Anzeige bleibt leer.
    if ($Value3 == "---") $Wert3 = "--";
    if ($Value3 == "Manuell") $Wert3 = "Manu";
    if ($Value3 == "Automatik") $Wert3 = "Auto";
    
    //Gewünschte Temperatur
    $Value4 = sprintf("%0.1f", $Value4);    
    if ($Value4 == 0.0) $Value4 = "--";
    if ($Value4 == 30.5) $Value4 = "ON";
    if ($Value4 == 5.5) $Value4 = "OFF";
    $Wert4 = str_replace(".", ",", $Value4) . " 'C";
    
    //Farben festlegen
    $im = imagecreatetruecolor ($SizeX, $SizeY);
    $gray = ImageColorAllocate ($im, 214, 211, 206);
    $darkgray = ImageColorAllocate ($im, 128, 128, 128);
    $black = ImageColorAllocate ($im, 0, 0, 0);
    $white = ImageColorAllocate ($im, 255, 255, 255);
    $blue = ImageColorAllocate ($im, 0, 0, 255);

    $hintergrund = $gray;
    $vordergrund = $blue;
   
    // Wegen Fehler in Homeputer-PHP, zunächst Pseudoschrift laden
    ImageTTFText ($im, 18, 0, 0, 0, $black, $fontdir."wingding.ttf", "");       

    // Den Hintergrund "ausmalen"
    imagefill($im, 0, 0, $hintergrund);
    
    //Die Rahmen zeichnen
    imagerectangle ($im, 0, 0, $SizeX-1, $SizeY-1, $darkgray);
    imagerectangle ($im, 1, 1, $SizeX-2, $SizeY-2, $darkgray);
    imagerectangle ($im, 3, 3, $SizeX-2, $SizeY-2, $darkgray);
    imagerectangle ($im, 1, 1, $SizeX-4, $SizeY-4, $white);
    imagerectangle ($im, 2, 2, $SizeX-1, $SizeY-1, $darkgray);
    imagerectangle ($im, 0, 0, $SizeX-3, $SizeY-3, $white);

    //Zwischenlinien zeichnen
    //Horizontal 1 (Unter der Kopfzeile)
    imageline($im, 2, $HeaderSize+0, $SizeX-4, $HeaderSize+0, $white);
    imageline($im, 2, $HeaderSize+1, $SizeX-4, $HeaderSize+1, $darkgray);
    //Horizontal 2 (Zwischen den Werten)
    imageline($im, 2, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+0, $SizeX-3, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+0, $white);
    imageline($im, 2, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+1, $SizeX-3, ceil((($SizeY-$HeaderSize)/2+$HeaderSize))+1, $darkgray);
    //Vertikal
    imageline($im , ceil($SizeX/2)-5, $HeaderSize+1, ceil($SizeX/2)-5, $SizeY-4 , $white);
    imageline($im , ceil($SizeX/2)-4, $HeaderSize+1, ceil($SizeX/2)-4, $SizeY-4 , $darkgray);

    /*
    Info:
    array imagettftext ( resource $im, int $size, int $angle, int $x, int $y, int $col, string $fontfile, string $text )
    array imagettftext (Bild,Schriftgröße,Winkel,x-anfang,y-anfang,Farbe,Schrifttyp,Text)
    */
    
    //Überschrift einfügen
    $tb = imagettfbbox($HeadFontSize, 0, $HeadFont, $HeadLine);
    ImageTTFText ($im, $HeadFontSize, 0, ceil($SizeX/2 - ($tb[2]/2)) , $HeadFontSize+7, $black, $HeadFont, $HeadLine);       

    //Überschrift1 einfügen (Ventilstellung)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text1);
    ImageTTFText ($im, $TextFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-16, $darkgray, $TextFont, $Text1);       
    //Wert 1 einfügen (Ventilstellung)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert1);
    ImageTTFText ($im, $WertFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-6, $vordergrund, $WertFont, $Wert1);       

    //Überschrift2 einfügen (Gemessene Temperatur)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text2);
    ImageTTFText ($im, $TextFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-16, $darkgray, $TextFont, $Text2);    
    //Wert2 einfügen(Gemessene Temperatur)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert2);
    ImageTTFText ($im, $WertFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), $SizeY-6, $vordergrund, $WertFont, $Wert2);

    //Überschrift3 einfügen (Modus)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, Text3);
    ImageTTFText ($im, $TextFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2)-5, (($SizeY+$HeaderSize)/2)-16, $darkgray, $TextFont, $Text3);
    //Wert3 einfügen (Modus)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert3);
    ImageTTFText ($im, $WertFontSize, 0, ceil(($SizeX/2 - $tb[2]) / 2)+0, (($SizeY+$HeaderSize)/2)-3, $vordergrund, $WertFont, $Wert3);
    
    //Überschrift4 einfügen (Gewünschte Temperatur)
    $tb = imagettfbbox($TextFontSize, 0, $TextFont, $Text4);
    ImageTTFText ($im, $TextFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), (($SizeY+$HeaderSize)/2)-16, $darkgray, $TextFont, $Text4);
    //Wert4 einfügen (Gewünschte Temperatur)
    $tb = imagettfbbox($WertFontSize, 0, $WertFont, $Wert4);
    ImageTTFText ($im, $WertFontSize, 0, ceil($SizeX/2)-2+ceil(($SizeX/2 - $tb[2]) / 2), (($SizeY+$HeaderSize)/2)-3, $vordergrund, $WertFont, $Wert4);
    
    //Das Bild im Speicher erzeugen und abspeichern
    Imagejpeg ($im, $filejpg , 99);
    //Das Bild im Speicher zerstören
    ImageDestroy ($im);
?>
Die Variable $filejpg zeigt auf das Verzeichnis in den die Bilder gespeicher werden.
Die benutzten Schriften müssen im $fondsdir liegen.
Die Schriften arial.ttf und arial.ttf sind im Windows Fontsordner und können heraus kopiert werden.
Die Schrift DS-DIGIB.ttf gibt es bei www.dafont.com.

Das Grundgerüst ist nun gesetzt.

Das Bild in die FHZ einfügen

Öffne die „Einstellungen“ und „Ansichten“ füge das Objekt „vobjAnzeigeHeizungAZ“ in die entsprechende Ansicht ein.

  • Starte die FHZ-Anwendung
  • Klicke auf das neue Objekt, in der Regel ist dies zu beginn der Ventilator.
    • Der Ventilator sollte nun permanent ein und wieder ausgeschaltet werden.
  • Lasse die FHZ-Anwendung sollange laufe, bis im Bilderordner (in der In der Heizung.php angegeben) ein Bild mit dem Namen „vobjAnzeigeHeizungAZ.jpg“ zu sehen ist.
  • Beende die FHZ-Anwendung.
  • Wenn das Bild vorhanden ist, dann wird in der FHZ-Anwendung das Objekt „vobjAnzeigeHeizungAZ“ geöffnet und beiden zuständen (aus und an) wird das neue Bild zugewiese.
Die Option „Ausführen bei Änderung“ muss wieder Deaktiviert werden.
  • Nun nurnoch die Ansicht anpassen.
  • Fertig
Was nicht funktioniert, ist eine änderung der Schrift in der Heizung.php, während die Anwendung läuft.

Im FHZ-Forum gefunden und für meine Zwecke modifiziert.

Dieser Beitrag wurde unter Heimsteuerung abgelegt und mit verschlagwortet. Setze ein Lesezeichen auf den Permalink.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert