ENDLICH: Formatierte Textausgabe mit homeputer!!!

Programmierung der FHZ-Zentralen mit contronics homeputer Standard / homeputer Studio & WEB-Server

Moderator: Co-Administratoren

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von tsa » 11.03.2009, 17:53

Hallo Forum,

hab mal wieder ein paar Zeilen programmiert - und möchte Euch das neue Feature gern zur Verfügung stellen.

Es störte ja schon lange, dass die homeputer-Textausgaben weder in Schriftart, Farbe und Größe, als auch für eine Spaltenanordnung hinreichend beeinflusst werden konnten. Um das Rad nicht neu erfinden zu müssen, habe ich ein gebräuchliches Syntaxformat gesucht.

Entschieden habe ich mich für HTML - aus drei Gründen:
1. viele kennen es - Beschreibungen gibt es im Internet unerschöpflich
2. man kann (fast) alles damit machen
3. ich brauchte nur ein paar Zeilen programmieren - und habe damit meiner natürlichen Faulheit Genüge getan :wink:


Wie sieht das Ergebnis aus? (Beispiele)
1. Mein geliebter Terminplaner hat etwas Farbe bekommen:

[Die Dateierweiterung bmp wurde deaktiviert und kann nicht länger angezeigt werden.]

2. Man kann noch viel mehr damit machen, als nur Texte formatieren:
- ein homeputer-Objekt, welches nur aufpoppt (sichtbar geschaltet wird), wenn eine Warnmeldung anliegt
- das entsprechende Icon neben dem Text gleich mit ausgeben ist ja mit HTML nur ein Kinderspiel

[Die Dateierweiterung bmp wurde deaktiviert und kann nicht länger angezeigt werden.]

[Die Dateierweiterung bmp wurde deaktiviert und kann nicht länger angezeigt werden.]

[Die Dateierweiterung bmp wurde deaktiviert und kann nicht länger angezeigt werden.]

[Die Dateierweiterung bmp wurde deaktiviert und kann nicht länger angezeigt werden.]

Wie ist das ganze gemacht?
Eine beliebige HTML-Datei (die von einem homeputer-Makro vorher zu erstellen ist) wird an ein kleines Browser-Programm übergeben, welches den Inhalt auf dem Bildschirm darstellt. Anschliessend wird der Fensterinhalt "abfotografiert", die Grafik als Datei gespeichert, welche wiederum von einem homeputer-Objekt mittels bekannter "Umschalt"-Technik eingelesen werden kann. Nun erscheint diese Grafik in Eurer homeputer-Visualisierung...

Ein Problem gibt es allerdings dabei: Der Browser muss unbedingt kurz auf dem sichtbaren Teil des Bildschirms geöffnet werden. Sonst wird nämlich das Foto immer unterbelichtet und wird schwarz... :cry:
Aus diesem Grund habe ich nach einer Möglichkeit gesucht, dieses Fenster so auf dem Bildschirm zu öffnen, dass man es eigentlich gar nicht bemerkt:
- Das Fenster hat (fast) keinen Rahmen (ganz habe ich ihn leider nicht wegbekommen).
- Das Fenster ist genau so gross, wie das homeputer-Objekt in der Visualisierung, und wird zudem auch noch an der gleichen Stelle geöffnet.

Den Minibrowser, der sich gleich noch selbst fotografiert und die Grafik abspeichert, habe ich mit AutoIt3 erstellt. Dieses Tool ist einfach genial. Ich habe (mit Kommentar) gerade mal 65 Zeilen benötigt! (Danke an Bümpi für seinen Tipp vor langer Zeit - AutoIt kannte ich vorher noch gar nicht!)


Was ist zu tun?
1. Ein Makro muss das HTML-File erzeugen (Beispiele für die oben vorgestellten Grafiken)

Beispiel 1 - Termine

Code: Alles auswählen

<body bgcolor="#ECE9D8" style="font-family:'Microsoft Sans Serif'" style="font-size:8pt">
<b>
<center>
Termine
</center>
<hr>
VERPASSTE TERMINE:<br>
<font color="#FF0000">
  10.03.2009 - 33. Geburtstag von A******** ****<br>
</font>
<br>
TERMINE HEUTE:<br>
<font color="#0101FF">
  11.03.2009 - 08:00 M*** fertig mit Symbioflor<br>
  11.03.2009 - 19:00 Elternabend<br>
<br>
</font>
TERMINE DEMN&Auml;CHST:<br>
<font color="#C0C000">
  15.03.2009 - 10:00 Landesliga [M********]<br>
</font>
<font color="#808000">
  17.03.2009 - 30. Geburtstag von R*** *******<br>
</font>
  18.03.2009 - 51. Geburtstag von S***** ****<br>

...

</b>
</body>
Beispiel 2 - Warnmeldungen

Code: Alles auswählen

<html>
  <body bgcolor="#6EE205" text="#000000" link="#0101FF" vlink="#800080" alink="#FF0000">
    <font face="VERDANA,ARIAL,HELVETICA">
      <table bgcolor="#BEBEC0" align="center" valign="center" cellspacing="20" width="420" height="150">
        <tr align="center" valign="center"> 
          <td>
            <IMG SRC="z:\fs20\BMP\x\grün.bmp">
          </td>  
          <td>
            <b><u>ENTWARNUNG:</u><br><br>Es ist kein Alarm mehr aktiv.</b>
          </td>  
        </tr> 
      </table>
    </font>
  </body>
</html>
2. In das homeputer-Verzeichnis muss der Minibrowser kopiert werden:
BrowseToFile.zip
MiniBrowser BrowseToFile.exe und der Quelltext des AutoIt-Scripts
(340.67 KiB) 208-mal heruntergeladen
Syntax:
BrowseToFile.exe HtmlFile GraphicFile Width Height X Y
HtmlFile: ...... Pfad und Dateiname des HTML-Files
GraphicFile: ... Pfad und Dateiname der zu erstellenden Grafikdatei
Width: ......... Breite der gewünschten Grafik (in Pixeln)
Height: ........ Höhe der gewünschten Grafik (in Pixeln)
X: .............. X-Position des homeputer-Objektes, welches die Grafik anzeigen soll
Y: .............. Y-Position des homeputer-Objektes, welches die Grafik anzeigen soll
Bemerkung: X und Y können mittels HOLEPOSITION innerhalb der Homputersoftware direkt erfragt werden!

3. Der Aufruf der EXE erfolgt aus homeputer dann folgendermassen:
(Beispiel)

Code: Alles auswählen

HOLEPOSITION(AnzeigeObjekt,x,y)

**Bitte die Pfadangaben anpassen
Kommandozeile := ",z:\fs20\,BrowseToFile.exe,z:\fs20\Temp\Textanzeige.html z:\fs20\Temp\Textanzeige.bmp 450 180 "+x+" "+y
StartWin(Kommandozeile)

WARTE("00:00:01")
AnzeigeObjekt umschalten
Benötigte Variablen:
Kommandozeile (Typ Zeichen)
x (Typ Zahl)
y (Typ Zahl)

Achtung:
Der Fotoapparat benötigt unbedingt GDIPLUS !!!
Ab Windows XP ist dies Teil des Betriebssystems - nutzt man frühere Versionen, muss man sich die GDIPLUS.DLL aus dem Internet besorgen (einfach die GDIPLUS.DLL in das selbe Verzeichnis wie BrowseToFile.exe kopieren).

Viel Spass beim Ausprobieren
Thomas

EDIT: HTML-Files der obigen Beispiele ergänzt
Zuletzt geändert von tsa am 20.03.2009, 22:28, insgesamt 4-mal geändert.

buempi
Ehrenmitglied
Beiträge: 12194
Registriert: 29.07.2006, 15:58
Wohnort: Schweiz
Danksagung erhalten: 5 Mal

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von buempi » 11.03.2009, 19:00

G E N I A L

Ich komme auch dem Staunen nicht heraus und bin sprachlos...

Teas1512
Beiträge: 9
Registriert: 14.01.2008, 18:59
Wohnort: NRW
Kontaktdaten:

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von Teas1512 » 14.03.2009, 22:29

Hallo Thomas

super Sache mir dem Minibrowser. Aber was mich mal interessieren würde ist wie du das hinbekommen hast das alle Termine zusammengefast werden. Bei mir ist das so dass über jeden einzelnen Termin steht wann der Termin ist.
Termin.jpg
Termin.jpg (17.7 KiB) 7465 mal betrachtet
Vieleicht kannst du ja mal deine Termin.php zum Download bereitstellen.

MFG
Stephan

Benutzeravatar
Sanys
Beiträge: 270
Registriert: 31.01.2007, 12:29
Wohnort: Wetterau

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von Sanys » 16.03.2009, 09:10

Hi Thomas,

großes Lob und Anerkennung. Wieder mal eine sinnvolle Erweiterung der Grafik-Ausgabe!

Hast Du eigentlich das mit Samurize weiterverfolgt?


Viele Grüße


sanys
FHZ 1350PC Prof. mit HomeputerStudio 100224 + Direktsendebefehle à la tsa (v 8.0)
WIN XP Pro SP3 (neuester Stand) + buempi's Minibrowser + etliche fs20+HMS+FHT Komponenten + nie genug Zeit, das alles fertig zu bekommen ;-)

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von tsa » 17.03.2009, 15:00

Teas1512 hat geschrieben:... wie du das hinbekommen hast das alle Termine zusammengefast werden
Also das wurde erstmalig in diesem Beitrag beschrieben: http://homematic-forum.de/forum/viewtop ... t=40#p8623
Dabei kommt es auf die Überprüfung an, ob die "Überschrift" bereits im Gesamt-Termin-Text enthalten ist oder nicht:

Code: Alles auswählen

if (... &&
   (strpos(" " .$Termine, "Verpasste Termine:") == 0)) $Termine .= "Verpasste Termine:<<";
-->Nur wenn noch nicht enthalten, wird die "Überschrift" erzeugt...


Hier auf Wunsch noch meine derzeitige Termine.php (mit Farbe) - allerdings arbeitet diese jetzt mit MS-Outlook!
termine.zip
termine.php
(2.28 KiB) 187-mal heruntergeladen
Auch die zugehörigen Makros möchte ich nicht vorenthalten:

"TermineAbrufen"

Code: Alles auswählen

...
LADEN("TermineBestaetigen.QuittierDatum")
WARTE ("00:00:00")
<?
  //echo date("d.m.Y H:i:s") . " -> " . $V_TermineBestaetigen_QuittierDatum;
  $Termine = "";
  $TermineAnsagen = "Heute keine Termine";
  include("Z:\\fs20\\php\\Termine.php");
  if ($Termine == "") $Termine = " ";
  if ($TermineAnsagen == "") $TermineAnsagen = " ";
?>
WARTE ("00:00:00")

WENN Termine = " "
DANN
  unsichtbar(TermineAnzeigen)
SONST
  Starte(TermineAnzeigen)
  sichtbar(TermineAnzeigen)
ENDEWENN
...
"TermineAnzeigen"

Code: Alles auswählen

HOLEPOSITION(TermineAnzeigen,x,y)

Kommandozeile := ",z:\fs20\,BrowseToFile.exe,z:\fs20\Temp\Termine.html z:\fs20\Temp\Termine.bmp 352 241 "+x+" "+y
StartWin(Kommandozeile)

WARTE("00:00:01")
TermineAnzeigen umschalten
Gruss
Thomas
Zuletzt geändert von tsa am 17.03.2009, 16:30, insgesamt 1-mal geändert.

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von tsa » 17.03.2009, 15:14

Sanys hat geschrieben:Hast Du eigentlich das mit Samurize weiterverfolgt?
Nö, nicht grossartig...
Die Visualisierung überarbeite ich erst, wenn ich meinen Touch im Flur hängen habe. Momentan ist alles mehr "funktionsgeprägt".

Ich habe nach wie vor zwei Samurize-Clients laufen, die NEBEN dem Homeputer-Fenster angezeigt werden:
Der erste gibt mir die nötigen Wetterinfos (Wettervorschau, Regenradar vom ZDF, Wetterbericht), der zweite die Posteingänge der Familie (POP3).
Später sollen die mal "TOPMOST" über dem Visualisierungsfenster "hängen".
In die homeputer-Visu werde ich das ganze wahrscheinlich nicht einfügen, da die Grafiken animiert sind (Regenradar, Briefkasten).
Das wäre dann wohl des Guten zu viel und nicht so einfach machbar... :lol:

Das Ganze sieht ungefähr so aus:
Samurize.png
Gruss
Thomas

Teas1512
Beiträge: 9
Registriert: 14.01.2008, 18:59
Wohnort: NRW
Kontaktdaten:

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von Teas1512 » 24.03.2009, 18:51

Hallo Thorsten

Vielen Dank für deine Termin-Datei. Es hat alles wunderbar geklappt. Das einstigste wo ich ein wenig gesucht habe ist bei dem BrowseToFile.exe.
Ich hatte das Problem das bei mir die Studio Software im Verzeichnis c:\Programme\Controntonic\Homeputer Studio\ liegt. BrowseToFile hat Probleme mit dem Leerzeichen im Verzeichnis "Homeputer Studio". Nach ändern des Verzeichnis Namens klappte dann aber alles Tadellos. Selbst die Einbindung in dem Selbst gebasteltem Webinterface war ohne Probleme.

Was ich dann noch versucht habe ist eine einfache html Seite mit einem Code von http://www.meteo24.de zu bauen.

Code: Alles auswählen

<table cellspacing="1" cellpadding="0" border="0" style="background-color: #FFFFFF" width="122"><tr><td align="center" style="background-color : #FFFFFF;"><a href="http://www.meteo24.de/wetter/49X2817.html" style="text-decoration: none;" target="_blank"><font face="Verdana" size="1" color="#000000" style="text-decoration: none; font-weight: bold;">Wetter Dortmund</font></a></td></tr><tr><td align="center"><iframe width="120" height="98" scrolling="no" frameborder="0" src="http://www.meteo24.de/hptool/v1?cid=49X2817&l=de&style=12&disableflash=1"> </iframe></td></tr><tr><td align="center" height="15" style="background-color : #FFFFFF;"><a href="http://www.meteo24.de/" style="text-decoration: none;" target="_blank"><font face="Verdana" size="1" color="#000000">&copy; meteo24.de</font></a></td></tr></table> 
Wenn ich die Seite normal mit dem IE öffne wird alles normal angezeigt nur BrowswToFile macht mir ein Schwarzes Bild draus.
Hast du eine Ahnung warum das nicht klappt?

Gruss
Stephan

tsa
Beiträge: 725
Registriert: 03.01.2008, 17:42
Hat sich bedankt: 3 Mal
Danksagung erhalten: 1 Mal

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von tsa » 25.03.2009, 04:10

Hallo Bierfan - äh... Stephan, (mein Sohnemann hatte vor einiger Zeit STEPHAN immer SO ausgesprochen :wink:)

Ich bin zwar kein Thorsten, antworte aber trotzdem mal...
Schwarz wird das Bild immer dann, wenn die von Dir angegebenen Koordinaten nicht im sichtbaren Bereich des Bildschirms liegen.

Dazu ist folgendes zur Arbeitsweise von BrowseToFile zu wissen:
1) Zunächst wird das Fenster Deiner aktuellen homeputer-Ansicht gesucht (Klassenname "TIntRunF").
2) Wird solch ein Fenster gefunden, dann werden die in der Kommandozeile übergebenen RELATIVEN FENSTERKOORDINATEN in ABSOLUTE BILDSCHIRMKOORDINATEN umgerechnet.
3) Wird kein homeputer-Ansicht-Fenster gefunden, dann werden die in der Kommandozeile übergebenen Koordinaten gleich als ABSOLUTE BILDSCHIRMKOORDINATEN interpretiert.

Als Fehlerursachen könnte ich mir folgendes vorstellen.
Das Ansichtenfenster (bzw. die Fensterposition, an welcher Dein Bild angezeigt werden soll) ist im Moment der Programmausführung nicht auf dem Bildschirm sichtbar:
- das Fenster wurde minimiert
- das Fenster ist über den Rand des Bildschirms "geschoben" worden
- das Fenster wurde nach einer dieser beiden Aktionen geschlossen (wenn homeputer noch läuft, ist das Fenster trotzden noch im System vorhanden)

Bei korrekt geöffneter Visualisierung bringt bei mir dein Beispiel-HTML mit folgendem Kommando ein zufriedenstellendes Ergebnis:

Code: Alles auswählen

z:\fs20\BrowseToFile.exe "z:\Test Pfad\test.html" "z:\Test Pfad\test.bmp" 140 150 0 0
Dabei ist auch zu erkennen, dass Leerzeichen in Pfadangaben - bei korrekter Anwendung der Kommandozeilen-Syntax - keine Rolle spielen.

Gruss
Thomas

Teas1512
Beiträge: 9
Registriert: 14.01.2008, 18:59
Wohnort: NRW
Kontaktdaten:

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von Teas1512 » 05.04.2009, 21:45

Hallo Thomas

sorry Thomas ich weis auch nicht an wenn ich da grade gedacht habe als ich den Beitrag geschrieben habe.
Aber trotzdem vielen Dank für deine Antwort.
Ich habe soweit alles hinbekommen. Das Wetter vom Onlineanbieter wird mir jetzt auch angezeigt.
Was nicht klappt ist mit den Verzeichnissen. Ich habe die Vermutung das meine Kommandozeile zu lang ist.
Selbst wenn ich die Zeile so von Han ausführe bekomme ich eine Fehlermeldung

Code: Alles auswählen

c:\Programme\contronics\homeputer Studio\,BrowseToFile.exe c:\Programme\contronics\homeputer Studio\SPG\Wetter.html c:\Programme\contronics\\homeputer Studio\SPG\Wetter.bmp 140 140 0 0 
Wenn ich die Zeile so Schreibe klappt das auch unter Dos

Code: Alles auswählen

"c:\Programme\contronics\homeputer Studio\,BrowseToFile.exe" "c:\Programme\contronics\homeputer Studio\SPG\Wetter.html" "c:\Programme\contronics\\homeputer Studio\SPG\Wetter.bmp" 140 140 0 0 
Gibt es eine Maximale länge für Kommandozeilen ??

Wenn du aber auch keine Lösung weist ist es auch nicht schlimm es Funktioniert auch so.

Code: Alles auswählen

c:\Programme\contronics\homeputer Studio\,BrowseToFile.exe c:\Programme\contronics\Wetter.html c:\Programme\contronics\Wetter.bmp 140 140 0 0 

MFG
Stephan

leknilk0815
Beiträge: 6693
Registriert: 19.03.2007, 08:21
Danksagung erhalten: 2 Mal

Re: ENDLICH: Formatierte Textausgabe mit homeputer!!!

Beitrag von leknilk0815 » 06.04.2009, 09:49

Servus,
so:
Studio\,BrowseToFile.exe
kann es nicht funktionieren. Das Komma hat da nichts verloren.
so:
Studio\BrowseToFile.exe
sollte es funktionieren.
Und - Du solltest wegen der Leerzeichen den String immer in Anführungszeichen setzen:

Code: Alles auswählen

"c:\Programme\contronics\homeputer Studio\BrowseToFile.exe" "c:\Programme\contronics\homeputer Studio\SPG\Wetter.html" 
Gruß - Toni

KS300 + Sonnendauer + Windrichtung, KS888, HM-CC-TC/HM-CC-VD, FHT80b, und etwas FS20-xx, Keymatic, EM1000, CCU2 und FHZ2000 sowie HP Studio, HPCL + Upgrade für FHZ

Antworten

Zurück zu „homeputer Studio / Standard: Programmierbeispiele“