DLCD: Unterschied zwischen den Versionen
Epsrw1 (Diskussion | Beiträge) (→Spezielle Anzeigefunktionen: LCD-Abbild im Web-frontend) |
|||
(22 dazwischenliegende Versionen von 5 Benutzern werden nicht angezeigt) | |||
Zeile 1: | Zeile 1: | ||
{{Infobox Modul | {{Infobox Modul | ||
|ModPurpose=Daten sammeln und formatiert auf LCD ausgeben | |ModPurpose=Daten sammeln und formatiert auf LCD ausgeben | ||
|ModType=x | |ModType=x | ||
|ModCmdRef= ---- noch nicht Teil von FHEM ---- | |ModCmdRef= ---- noch nicht Teil von FHEM ---- | ||
|ModForumArea=Codeschnipsel | |ModForumArea=Codeschnipsel | ||
|ModTechName=39_DLCD.pm | |ModTechName=39_DLCD.pm | ||
|ModOwner=[http://forum.fhem.de/index.php?action=profile;u=6340 | |ModOwner=epsrw1 ([http://forum.fhem.de/index.php?action=profile;u=6340 Forum] / [[Benutzer Diskussion:Epsrw1|Wiki]])}} | ||
Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten. | Das [[DLCD]]-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten. | ||
== Features == | == Features == | ||
'''''Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.''''' | |||
Thread im Forum | Thread im {{Link2Forum|Topic=24519|LinkText=Fhem-Forum}} mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag. | ||
== Beschreibung == | == Beschreibung == | ||
Zeile 19: | Zeile 18: | ||
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen. | DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen. | ||
DLCD baut z.B. auf einer Instanz des Moduls [[I2C_LCD]] auf. | |||
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern ( | Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen. | ||
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices | Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices | ||
Zeile 27: | Zeile 27: | ||
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen). | Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen). | ||
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....) | |||
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren. | |||
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays. | |||
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden. | |||
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als ''reading'' ausgeben lassen. | |||
Mit stateFormat state<br>Line1<br>Line2<br>Line3<br>Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen. | |||
[[Datei:dlcd_stateformat.png|mini|Frontend-Beispiel]] | |||
== Define == | |||
:<code>define <name> DLCD </code> | |||
''In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.'' | |||
== Attribute == | |||
Alle Attribute sind auch in fhem durch das Kommando get attrHelp <varname> erklärt, für's "schnelle Nachschauen zwischendurch". | |||
* dlcdRows -> Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling) | |||
* dlcdCols -> Anzahl Spalten des LC-Displays | |||
* dlcdPollInterval -> Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren | |||
* dlcdLine1 -> Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2% | |||
* dlcdLine2 -> Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4% | |||
* dlcdLine3 -> Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6% | |||
* dlcdLine4 -> Formatvorlage für LCD-Zeile Text: %7% text: %8% | |||
* dlcdLine5 -> Formatvorlage für LCD-Zeile Text: %11% text: %12% | |||
* dlcdVal1 -> Quelle für den Wert %1% im Format: FhemDev:reading | * dlcdVal1 -> Quelle für den Wert %1% im Format: FhemDev:reading | ||
* dlcdVal2 -> Quelle für den Wert %2% im Format: FhemDev:reading | * dlcdVal2 -> Quelle für den Wert %2% im Format: FhemDev:reading | ||
* dlcdVal3 -> Quelle für den Wert %3% im Format: FhemDev:reading | * dlcdVal3 -> Quelle für den Wert %3% im Format: FhemDev:reading | ||
* ... | * ... | ||
* dlcdVal20 -> Quelle für den Wert %12% im Format: FhemDev:reading | |||
* dlcdTriggerCmd -> Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.: <code>set lcd_wand writeXY 0,%L%,20,1 %T%</code> | |||
* dlcdTriggerCmd -> Fhem- | |||
* dlcdVal1formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl | * dlcdVal1formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl | ||
* dlcdVal2formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl | * dlcdVal2formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl | ||
* dlcdVal3formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl | * dlcdVal3formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl | ||
* ... | * ... | ||
* dlcdVal20formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl | |||
* | |||
----- | ----- | ||
Zeile 83: | Zeile 74: | ||
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt: | dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt: | ||
erste | erste Ziffer: Gesamtzahl Ziffern in der Ausgabe. | ||
zweite | zweite Ziffer: Anzahl fester Dezimalstellen | ||
optional: +- an dritter | optional: +- an dritter Stelle | ||
Beispiele: | Beispiele: | ||
Zeile 92: | Zeile 83: | ||
4+0+- -> -0012 +0010 | 4+0+- -> -0012 +0010 | ||
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-). | |||
----- | ----- | ||
* dlcdBlankspaceReplace -> Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. zB: \ | * dlcdVal1formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f | ||
* dlcdVal2formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f | |||
* dlcdVal3formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f | |||
* ... | |||
* dlcdVal20formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f | |||
* dlcdBlankspaceReplace -> Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10} | |||
* dlcdReplaceRegex -> beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und \N{U+41} werden zu A und A | |||
* dlcdPhysicalRows -> Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay | |||
* dlcdScrolling -> Zeilen automatisch scrollen, 1=an 0=aus | |||
* dlcdDebugOutput -> zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion | |||
* dlcdClearLineCmd -> optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L% | |||
* dlcdClearAllCmd -> optional: command um lcd komplett zu leeren (nur bei scrolling) | |||
* dlcdLineAddrMap -> alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste. | |||
* disable -> keine neuen schreibvorgänge | |||
== Settings == | == Settings == | ||
Zeile 114: | Zeile 119: | ||
== Spezielle Anzeigefunktionen == | == Spezielle Anzeigefunktionen == | ||
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM- | Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden. | ||
=== Datum === | === Datum === | ||
* %date_Y% --> Jaheszahl 4-stellig | * %date_Y% --> Jaheszahl 4-stellig | ||
* %date_y% --> Jahreszahl 2-stellig | * %date_y% --> Jahreszahl 2-stellig | ||
Zeile 127: | Zeile 131: | ||
* %date_WD_eng% --> Wochentag, Abkürzung englisch | * %date_WD_eng% --> Wochentag, Abkürzung englisch | ||
* %date_WD_ger% --> Wochentag, Abkürzung deutsch | * %date_WD_ger% --> Wochentag, Abkürzung deutsch | ||
* %date_dmy% --> Datum im Format 25.08.2014 | |||
=== Zeit === | === Zeit === | ||
* %time_hms% --> HH:MM:SS Uhrzeit | * %time_hms% --> HH:MM:SS Uhrzeit | ||
* %time_h% --> Stunde | * %time_h% --> Stunde | ||
Zeile 137: | Zeile 141: | ||
=== LCD-Abbild im Web-frontend === | === LCD-Abbild im Web-frontend === | ||
attr <name> stateFormat state<br>Line1<br>Line2<br>Line3<br>Line4<br>Line5 | |||
attr | Soll der Text linksbündig dargestellt werden, so kann dies folgendermaßen definiert werden:<br> | ||
attr <name> stateFormat <div style="text-align: left">state<br>Line1<br>Line2<br>Line3<br>Line4<br>Line5</div> | |||
=== Mathematische Werteberechnung === | === Mathematische Werteberechnung === | ||
* Noch in Arbeit - Ideen sind willkommen ;) --> Forum | * Noch in Arbeit - Ideen sind willkommen ;) --> Forum | ||
* To be continued | * To be continued | ||
== Beziehung zu anderen Modulen == | |||
* [[DLCD]] -> [[I2C_LCD]] -> [[RPII2C]] | |||
* [[DLCD]] -> [[I2C_LCD]] -> weitere I2C Treiber | |||
== Weblinks == | == Weblinks == | ||
* | * {{Link2Forum|Topic=24519|LinkText=Thread}} im Forum, in dem dieses Modul vorgestellt wurde | ||
* [https://waschto.eu/statusdisplay-mit-esp-easy-dlcd-und-fhem/ Projekt: Statusdisplay mit ESP Easy und DLCD] | |||
* ... | * ... | ||
[[Kategorie:Other Components]] | [[Kategorie:Other Components]] |
Aktuelle Version vom 20. Oktober 2017, 16:16 Uhr
---- noch nicht Teil von FHEM ---- | |
---|---|
Zweck / Funktion | |
Daten sammeln und formatiert auf LCD ausgeben | |
Allgemein | |
Typ | Inoffiziell |
Details | |
Dokumentation | siehe Forum |
Support (Forum) | Codeschnipsel |
Modulname | 39_DLCD.pm |
Ersteller | epsrw1 (Forum / Wiki) |
Wichtig: sofern vorhanden, gilt im Zweifel immer die (englische) Beschreibung in der commandref! |
Das DLCD-Modul bietet eine einfache Möglichkeit, Daten zu sammeln und für die Anzeige auf einem seriellen LCD aufzubereiten.
Features
Diese Wiki-Seite beschreibt den Versionsstand 2.0 des DLCD-Moduls.
Thread im Fhem-Forum mit der jeweils aktuellen Version des Moduls als Anhang im ersten Beitrag.
Beschreibung
DLCD bietet als kleines Helferlein die Möglichkeit, Textzeilen eines LCD Displays als Readings vorzubereiten und mit Daten frei konfigurierbarer Readings zu befüllen. DLCD baut z.B. auf einer Instanz des Moduls I2C_LCD auf.
Jede Zeile wird als Attr vordefiniert, und mit Platzhaltern (z.B.: %1%) für die einzutragenden Werte versehen.
Die Liste aller einzulesenden Devices:Readings wird in einem attr eingestellt. Das Modul prüft dann regelmäßig (attr: poll interval) die Daten der Fhem-Devices und aktualisiert dann die Anzeige sobald sich einer der Werte geändert hat.
Zusätzlich können Zahlen einfach über attr formatiert werden (Kommastellen, Rundung, Anzeige von + und - Zeichen).
Eine Reihe von Platzhaltern ermöglicht das Einsetzen von Datum und Zeit-Werten in die Ausgabezeilen (zB Minute einzeln, Wochentag, Datum, ....)
Die über attr einschaltbare Rollierfunktion verschiebt die Zeilen bei jedem Update um eine Ziffer nach oben. So läßt sich zB eine wechselanzeige auf einem einzeiligen Display realisieren.
Die eigentliche Ausgabe auf das LCD erfolgt jeweils immer dann wenn eine Änderung der Daten festgestellt wird, auf beliebiges konfigurierbares Device. Zum beispiel I2C LCD über FHEM, oder auch über shell-command für nicht von FHEM unterstützte displays.
Manche Displays können Leerzeichen oder Umlaute nicht richtig wiedergeben. Daher kann DLCD über attr eingestellte Ersetzungen vornehmen, bevor die Daten an das LCD-device übergeben werden.
Um die Einrichtung zu erleichtern, kann man mit dem attr dlcdDebugOutput die jeweils an das Device abgesetzten Befehle als reading ausgeben lassen.
Mit stateFormat state<br>Line1<br>Line2<br>Line3<br>Line4 kann man sich ein Abbild des Displayinhaltes im Web-frontend anzeigen lassen.
Define
define <name> DLCD
In der Basisversion wurde Number::Format von cpan benötigt. Dies ist ab v. 1.1. nicht mehr der Fall.
Attribute
Alle Attribute sind auch in fhem durch das Kommando get attrHelp <varname> erklärt, für's "schnelle Nachschauen zwischendurch".
- dlcdRows -> Anzahl Datenzeilen (kann mehr als am Display sein mit eingeschaltetem Scrolling)
- dlcdCols -> Anzahl Spalten des LC-Displays
- dlcdPollInterval -> Zeitintervall, nach dem FHEM versucht, die Daten zu aktualisieren
- dlcdLine1 -> Formatvorlage für LCD-Zeile z.B.: text: %1% text: %2%
- dlcdLine2 -> Formatvorlage für LCD-Zeile z.B.: text: %3% text: %4%
- dlcdLine3 -> Formatvorlage für LCD-Zeile z.B.: text: %5% text: %6%
- dlcdLine4 -> Formatvorlage für LCD-Zeile Text: %7% text: %8%
- dlcdLine5 -> Formatvorlage für LCD-Zeile Text: %11% text: %12%
- dlcdVal1 -> Quelle für den Wert %1% im Format: FhemDev:reading
- dlcdVal2 -> Quelle für den Wert %2% im Format: FhemDev:reading
- dlcdVal3 -> Quelle für den Wert %3% im Format: FhemDev:reading
- ...
- dlcdVal20 -> Quelle für den Wert %12% im Format: FhemDev:reading
- dlcdTriggerCmd -> Fhem-Befehl zum Schreiben einer LCD-Zeile, z.B.:
set lcd_wand writeXY 0,%L%,20,1 %T%
- dlcdVal1formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl
- dlcdVal2formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl
- dlcdVal3formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl
- ...
- dlcdVal20formatnum -> Zahlenformatierung für Wert %1%, muss none sein bei Nicht-Zahl
dlcdVal .. formatnum setzen die Anzahl Dezimalstellen fest, sowie ob ein + bzw. - Zeichen vorangestellt wird. Es funktioniert wie folgt:
erste Ziffer: Gesamtzahl Ziffern in der Ausgabe. zweite Ziffer: Anzahl fester Dezimalstellen optional: +- an dritter Stelle
Beispiele: 2+1 -> 1.1 9.0 0.4 4+2+- -> -12.34 +10.50 4+0+- -> -0012 +0010
Die möglichen Optionen sind in einer Liste fest vorgegeben, um Fehleinstellungen zu vermeiden. Über manuellen Eintrag in der fhem-config können Eigenkreationen eingestellt werden, die nicht in der Liste enthalten sind (zB. 10+2+-).
- dlcdVal1formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f
- dlcdVal2formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f
- dlcdVal3formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f
- ...
- dlcdVal20formatstring -> benutzerdefinierter sprintf format pattern, setzt formatnum außer kraft. zB: %03f
- dlcdBlankspaceReplace -> Leerzeichen wird im dlcdTriggerCmd durch diesen attr-Wert ersetzt. z.B.: \\x20 oder \\x{10}
- dlcdReplaceRegex -> beliebige ersetzung von zeichen, kommagetrennte paare mit = zeichen, zB.: ä=\\xE1,ö=\\xEF,ü=\\xF5,Ä=\\xE1,Ö=\\xEF,Ü=\\xF5,ß=\\xE2,°=\\x{DF}, Unicode-Beispiel: \N{U+code}, zB \N{U+0041}und \N{U+41} werden zu A und A
- dlcdPhysicalRows -> Anzahl physikalisch vorhandener Zeilen am Ausgabedisplay
- dlcdScrolling -> Zeilen automatisch scrollen, 1=an 0=aus
- dlcdDebugOutput -> zusätzliche readings für aktuelle Display-ausgabe zum testen der Scroll-Funktion
- dlcdClearLineCmd -> optional: command um lcd-zeile zu leeren (%L%=line 0-n), zB. Set lcd42 clear %L%
- dlcdClearAllCmd -> optional: command um lcd komplett zu leeren (nur bei scrolling)
- dlcdLineAddrMap -> alternative Zeilenadressierung. Default ist 0,1,2,3,4,5,6,7,8,9. Beispiel: 1,2,3 verwendet nur 2. bis 4. LCD-zeile und überspringt die erste.
- disable -> keine neuen schreibvorgänge
Settings
reset ->alle Readings zurücksetzen
Readings
Line1 -> Aktuelle Anzeige der Zeile 1
Line2 -> Aktuelle Anzeige der Zeile 2
Line3 -> Aktuelle Anzeige der Zeile 3
Line4 -> Aktuelle Anzeige der Zeile 4
Line5 -> Aktuelle Anzeige der Zeile 5
Spezielle Anzeigefunktionen
Datum und Uhrzeit basieren aktuell auf der Systemzeit des FHEM-Servers. Eine Möglichkeit, als Zeitbasis den Timestamp eines FHEM-Readings zu verwenden, ist denkbar; wer das nutzen möchte, bitte im Forum melden.
Datum
- %date_Y% --> Jaheszahl 4-stellig
- %date_y% --> Jahreszahl 2-stellig
- %date_M% --> Monat als Zahl, 2-stellig
- %date_M_eng% --> Monat, Abkürzung englisch
- %date_M_ger% --> Monat, Abkürzung deutsch
- %date_D% --> Tag des Monats 2-stellig
- %date_WD% --> Wochentag 1-stellig im Format 0(So) ... 6(Sa)
- %date_WD_eng% --> Wochentag, Abkürzung englisch
- %date_WD_ger% --> Wochentag, Abkürzung deutsch
- %date_dmy% --> Datum im Format 25.08.2014
Zeit
- %time_hms% --> HH:MM:SS Uhrzeit
- %time_h% --> Stunde
- %time_m% --> Minute
- %time_s% --> Sekunde
LCD-Abbild im Web-frontend
attr <name> stateFormat state<br>Line1<br>Line2<br>Line3<br>Line4<br>Line5
Soll der Text linksbündig dargestellt werden, so kann dies folgendermaßen definiert werden:
attr <name> stateFormat <div style="text-align: left">state<br>Line1<br>Line2<br>Line3<br>Line4<br>Line5</div>
Mathematische Werteberechnung
- Noch in Arbeit - Ideen sind willkommen ;) --> Forum
- To be continued
Beziehung zu anderen Modulen
Weblinks
- Thread im Forum, in dem dieses Modul vorgestellt wurde
- Projekt: Statusdisplay mit ESP Easy und DLCD
- ...