39_DLCD.pm - kleines Hilfsmodul um Datenzeilen für serial LCD vorzubereiten v2.0

Begonnen von epsrw1, 12 Juni 2014, 20:04:31

Vorheriges Thema - Nächstes Thema

epsrw1

update:


# $Id: 39_DLCD.pm 1126 2015-05-03 11:31:00Z Florian Duesterwald $


-> bis zu 20 datenquellen
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Spezialtrick

Ist es eigentlich auch möglich innerhalb von Zeilen scrollen zu lassen?

Gerade bei Musik Titel wirds mit 20 Zeichen schnell eng.  ::)
FHEM - Debmatic - Zigbee2MQTT - Homekit

Spezialtrick

FHEM - Debmatic - Zigbee2MQTT - Homekit

epsrw1

Zitat von: Spezialtrick am 15 Juni 2015, 12:50:21
Ist es eigentlich auch möglich innerhalb von Zeilen scrollen zu lassen?
Gerade bei Musik Titel wirds mit 20 Zeichen schnell eng.  ::)

ich habe darüber nachgedacht, die idee aber dann verworfen. zB bei musik, wenn sich der titel ändert weil der nächste kommt, ist die länge des zu scrollenden textes anders. dann hakt es regelmäßig irgendwie.
zweites contra-argument ist die erhebliche rechenlast durch die jeweils komplette neubeschreibung aller zeiches des displays.

gerne lasse ich mich vom gegenteil überzeugen, sehe aber im augenblick nicht wirklich pro-argumente um das umzusetzen....

LG, florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Spezialtrick

Zitat von: epsrw1 am 29 Juni 2015, 23:24:42
ich habe darüber nachgedacht, die idee aber dann verworfen. zB bei musik, wenn sich der titel ändert weil der nächste kommt, ist die länge des zu scrollenden textes anders. dann hakt es regelmäßig irgendwie.

Kommt es hier wirklich auf die Länge des Textes an? Reicht es nicht einfach aus, dass das Display weiß, dass es mehr als 20 Zeichen sind, die dargestellt werden sollen?

Zitatzweites contra-argument ist die erhebliche rechenlast durch die jeweils komplette neubeschreibung aller zeiches des displays.

Ist die Belastung nicht die selbe, wenn man horizontal scrollt? Dies würde sich doch eingrenzen lassen, indem man für jede einzelne Zeile bestimmt, ob gescrollt werden soll oder nicht. Ein Cubietruck sollte damit doch nicht überfordert sein oder? Außerdem könnte man es ja auch als Option zur Verfügung stellen, sodass jeder die Wahl hat ob er es nutzt oder nicht.
FHEM - Debmatic - Zigbee2MQTT - Homekit

danieljo

Tolles Modul hätte nie gedacht das ich nochmal Dot-Matrix LCD einsetze aber für einfache Aufgaben wie das Anzeigen von Werten erstklassik.

Denoch habe ich ein paar Probleme. Und zwar mit den Leerzeichen. Aus Optischen Gründen wollte ich ein weiteres Leerzeichen zwischen 2 Werten einfügen damit das Display von Links nach rechts komplett ausgefüllt ist. Aber DLCD nimmt dies nicht dann habe ich die Option mit \\x20 gesehen aber mein LCD-Display zeigt dann nur merkwürdige Zeichen an da wo das Leerzeichen hinsoll. Hast du eine Idee dazu woran es liegen könnte.

und gibt es eine Möglichkeit Zeichen oder Symbole anzeigen zu lassen. z.B. ein vollausgefühltes Zeichen oder sowas. Es gibt ja je nach LCD eingespeicherte Zeichen-Tabellen.

danieljo

z.B. hier der HD44780 Zeichensatz.

(https://upload.wikimedia.org/wikipedia/commons/5/5d/Charset.gif)

EDIT: Ich habs selber herausgefunden ich muss statt \\x20 es so \x{10} schreiben. Um ein Sonderzeichen einzufügen muss man sich nur den binären wert in der Zeichentabelle raussuchen diesen dann in Hex umwandeln und in zwischn die { } schreiben.

danieljo

Wäre es möglich statt jede einzelne Zeile zu scrollen 2 Screnns zu erzeugen die abwechseln angezeigt werden?

Screen 1 -> dlcdLine1 bis dlcdLine4
Screen 2 -> dlcdLine5 bis dlcdLine8
usw...


epsrw1

Zitat von: danieljo am 14 Dezember 2015, 20:08:18
Wäre es möglich statt jede einzelne Zeile zu scrollen 2 Screnns zu erzeugen die abwechseln angezeigt werden?
Screen 1 -> dlcdLine1 bis dlcdLine4
Screen 2 -> dlcdLine5 bis dlcdLine8
usw...

ist so nicht vorgesehen. evtl kannst Du aber mit AT zeitgesteuert einfach die parameter für die einzelnen zeilen automatisch ändern lassen
Ich habe keine Ahnung, aber davon wenigstens ganz viel

ckaytwo

Hallo,

tolles Modul.... vielen Dank dafür.

kurze zwischenfrage. Ich möchte Dein Modul in Verbindung mit dem Squeezebox Modul nutzen und je nach dem ob Radio oder eine MP3 abgespielt wird muss ich auf ein anderes Reading zurückgreifen. (es wird zusammen mit dem Firmata-Modul ein RadioBedienteil in UP-Einsatz ;-))

Wenn ich den Thread richtig verfolgt habe ist eine If/Then Abfrage innerhalb des Moduls nicht möglich?
Oder feht mir nur die richtige Syntax?
   
attr display dlcdLine 4 {if (%2% eq "-") (%3%) else (%3%)}

Ich muss aktuell vermutlich mit einem notify von aussen das Attribut neu setzen. Korrekt?

Danke und weiterhin viel Erfolg..

The-Holgi

Hallo,
hat vielleicht jemand eine Anleitung oder einen Link, wie man ein 16x2 Display an einen RPI 2 anschließt.

Gruß Holgi
HP T610 Thin Client; Docker Fhem 5.9; 2X CUL V3 868mhz; Max Heizungssteuerung; FS20kse; FS20UWS; FS20S8-3; 2 FS20DI; HM-CFG-LAN,HM-LC-SW1-PL,HM-SEC-SD, HM-SE1PBU-FM;
Harmony Hub;Hue-Bridge mit Iris, E27 Bulb & FLS-PP


Kermit20

Hi,

danke für das Modul. Ich habe es erfolgreich einsetzen können. Leider gestaltet sich der Betrieb schwierig. Ich habe über das Modul das LCD gestaltet. Durch meine Systemüberwachung ist dann aufgefallen, dass meine CPU dauerhaft immer auf 97 - 100 % steigt. Disable ich das Modul, geht die CPU Last runter und FHEM läuft wieder flüssig.

Das ganze läuft auf einem Raspberry B (single Core 700Mhz). Ist das Gerät für die Anforderungen einfach zu langsam / schwach oder gibt es hier einen Trick ?

Danke und Gruß

Jan
RPi1: FHEM mit HMLAN und CUL Eigenbau: diverse Homematic Geräte; Technoline Temp/Feuchte 868 MHz // Schalsteckdosen 433 MHz
RPi2: FHEM mit Viessmann(optolink) mit VControl und 1W Sensoren
RPi3: Apache / Owncloud 9

epsrw1

Zitat von: Kermit20 am 22 Februar 2016, 13:35:41
Hi,

danke für das Modul. Ich habe es erfolgreich einsetzen können. Leider gestaltet sich der Betrieb schwierig. Ich habe über das Modul das LCD gestaltet. Durch meine Systemüberwachung ist dann aufgefallen, dass meine CPU dauerhaft immer auf 97 - 100 % steigt. Disable ich das Modul, geht die CPU Last runter und FHEM läuft wieder flüssig.

Das ganze läuft auf einem Raspberry B (single Core 700Mhz). Ist das Gerät für die Anforderungen einfach zu langsam / schwach oder gibt es hier einen Trick ?

Danke und Gruß

Jan

Das Übertragen der Daten zum Display blockiert gerne mal (das liegt allerdings im dortigen Modul). Der einfachste Weg ist das Aktualisierungsintervall länger einzustellen.
Mit etwas mehr Details (Display, Anschlussart, Modulconfig) könnte man Dir auch etwas detaillierter antworten ;)
LG florian
Ich habe keine Ahnung, aber davon wenigstens ganz viel

Kermit20

#89
Hi,

also ich habe wirklich etwas mit Infos gespart, daher hier mal von vorne:

- System RPI B Singelcore 700MHz
- zwei 20x4 LCD über I2C Angebunden
- Debian und FHEM up to date
- DLCD aus deinem ersten Post

1. I2C Bus

Internals:
   DEF        1
   DeviceName /dev/i2c-1
   NAME       SYS_I2C_BUS
   NOTIFYDEV  global
   NR         71
   NTFY_ORDER 50-SYS_I2C_BUS
   STATE      Ok
   TYPE       RPII2C
   ioctl_ph_exists 1
Attributes:
   DbLogExclude .*
   room       9.2_LCD


2. I2C LCD

Internals:
   DEF        20 4 63
   I2C_Address 63
   IODev      SYS_I2C_BUS
   NAME       SYS_I2C_LCD_1
   NR         72
   STATE      defined
   TYPE       I2C_LCD
   sizex      20
   sizey      4
   Readings:
     2016-02-22 13:39:39   backlight       on
     2016-02-22 13:39:39   text            defined
     2016-02-23 11:29:03   writeXY         0,0,20,1 Di 23.02.2016 11:29
   Mapping:
     P0         RS
     P1         RW
     P2         E
     P3         LED
     P4         D4
     P5         D5
     P6         D6
     P7         D7
Attributes:
   DbLogExclude .*
   IODev      SYS_I2C_BUS
   pinMapping P0=RS,P1=RW,P2=E,P3=LED,P4=D4,P5=D5,P6=D6,P7=D7
   room       9.2_LCD
   stateFormat text


3. DLCD Definition

Internals:
   NAME       SYS_LCD_1
   NR         73
   NTFY_ORDER 50-SYS_LCD_1
   STATE      11:30:05<br>Di 23.02.2016 11:30<br>Lstg.63% St:5/3/853<br>Bet:on Stö:off Fr:on<br>Au:+7.0° G:16° Ab:54°<br>K.IST R.IST W.IST<br>K.IST R.IST W.IST<br>56°C 23°C 52.9°C<br>K.SOL R.SOL W.SOL<br>+70°C 23°C 53°C
   TYPE       DLCD
   Readings:
     2016-02-23 11:30:05   Line1           Di 23.02.2016 11:30
     2016-02-23 10:45:14   Line2           Lstg.63% St:5/3/853
     2016-02-23 10:00:04   Line3           Bet:on Stö:off Fr:on
     2016-02-23 11:29:39   Line4           Au:+7.0° G:16° Ab:54°
     2016-02-19 15:52:01   Line5           K.IST R.IST W.IST
     2016-02-23 11:29:55   Line6           56°C 23°C 52.9°C
     2016-02-19 15:53:08   Line7           K.SOL R.SOL W.SOL
     2016-02-23 10:44:59   Line8           +70°C 23°C 53°C
     2016-02-22 14:32:03   scrollingState  0
     2016-02-23 11:30:05   state           11:30:05
Attributes:
   DbLogExclude .*
   disable    0
   dlcdCols   20
   dlcdLine1  %date_WD_ger% %date_dmy% %time_h%:%time_m%
   dlcdLine2  Lstg.%1%% St:%2%/%3%/%4%
   dlcdLine3  Bet:%5% Stö:%6% Fr:%7%
   dlcdLine4  Au:%8%° G:%9%° Ab:%10%°
   dlcdLine5  K.IST R.IST W.IST
   dlcdLine6  %11%°C %12%°C %13%°C
   dlcdLine7  K.SOL R.SOL W.SOL
   dlcdLine8  %14%°C %15%°C %16%°C
   dlcdPollInterval 5
   dlcdReplaceRegex °=\x{DF}
   dlcdRows   8
   dlcdScrolling 0
   dlcdTriggerCmd set SYS_I2C_LCD_1 writeXY 0,%L%,20,1 %T%
   dlcdVal1   Vitodens200:BrennerLeistung
   dlcdVal10  Vitodens200:Temp-Abgas
   dlcdVal11  Vitodens200:Temp-Kessel-Ist
   dlcdVal12  Vitodens200:Temp-Raum-Ist
   dlcdVal13  Vitodens200:Temp-WarmWasser-Ist
   dlcdVal14  Vitodens200:Temp-Kessel-Soll
   dlcdVal14formatnum 2+0+-
   dlcdVal15  Vitodens200:Temp-Raum-Soll
   dlcdVal16  Vitodens200:Temp-WarmWasser-Soll
   dlcdVal2   Vitodens200:BrennerStartsToday
   dlcdVal2formatnum 1+0
   dlcdVal3   Vitodens200:BrennerStartsLastDay
   dlcdVal3formatnum 1+0
   dlcdVal4   Vitodens200:BrennerStarts
   dlcdVal5   Vitodens200:Brenner
   dlcdVal5formatnum none
   dlcdVal6   Vitodens200:Stoerung
   dlcdVal6formatnum none
   dlcdVal7   Vitodens200:Frost
   dlcdVal8   Vitodens200:Temp-Aussen
   dlcdVal8formatnum 3+1+-
   dlcdVal9   Vitodens200:Temp-Raum-Abgesenkt
   room       9.2_LCD
   stateFormat state<br>Line1<br>Line2<br>Line3<br>Line4<br>Line5<br>Line5<br>Line6<br>Line7<br>Line8



Ergänzung: Sysmon mit den obenstehenden Einstellungen der letzten 24 H

Internals:
   DEF        1 1 1 10
   INTERVAL_BASE 60
   INTERVAL_MULTIPLIERS 1 1 1 10
   MODE       local
   NAME       sysmonRPiSlave
   NR         67
   STATE      Active
   TYPE       SYSMON
   Readings:
     2016-02-23 14:07:07   cpu0_freq       700
     2016-02-23 14:07:07   cpu0_freq_stat  700.00 700.00 700.00
     2016-02-22 13:40:20   cpu_bogomips    2.00
     2016-02-23 14:07:07   cpu_core_count  1
     2016-02-23 14:07:07   cpu_freq        700
     2016-02-23 14:07:07   cpu_freq_stat   700.00 700.00 700.00
     2016-02-23 14:07:07   cpu_idle_stat   -829.97 96.30 86.48
     2016-02-22 13:40:20   cpu_model_name  ARMv6-compatible processor rev 7 (v6l)
     2016-02-23 14:07:07   cpu_temp        44.92
     2016-02-23 14:07:07   cpu_temp_avg    45.2
     2016-02-23 14:07:07   cpu_temp_stat   34.70 49.23 45.20
     2016-02-23 14:07:07   eth0            RX: 10.44 MB, TX: 80.12 MB, Total: 90.56 MB
     2016-02-23 14:07:07   fhemstarttime_text 22.02.2016 13:39:54
     2016-02-23 14:07:07   fhemuptime_text 1 days, 00 hours, 27 minutes
     2016-02-23 13:50:53   fs_boot         Total: 56 MB, Used: 20 MB, 36 %, Available: 37 MB at /boot
     2016-02-23 13:50:53   fs_root         Total: 29836 MB, Used: 3633 MB, 13 %, Available: 24942 MB at /
     2016-02-23 14:07:07   idletime        87208 59.57 %
     2016-02-23 14:07:07   idletime_text   1 days, 00 hours, 13 minutes (59.57 %)
     2016-02-23 14:07:07   loadavg         0.19 0.24 0.23
     2016-02-22 13:40:20   perl_version    v5.14.2
     2016-02-23 14:07:07   ram             Total: 434.60 MB, Used: 62.93 MB, 14.48 %, Free: 371.67 MB
     2016-02-23 14:07:07   ram_used_stat   49.61 115.84 63.01
     2016-02-23 14:07:07   starttime_text  21.02.2016 21:26:59
     2016-02-23 14:07:07   stat_cpu        4728285 0 816820 7543427 10526 504 365051
     2016-02-23 14:07:07   stat_cpu_diff   265 0 170 4916 2 2 28
     2016-02-23 14:07:07   stat_cpu_percent 4.92 0.00 3.16 91.32 0.04 0.04 0.52
     2016-02-23 14:07:07   stat_cpu_text   user: 4.92 %, nice: 0.00 %, sys: 3.16 %, idle: 91.32 %, io: 0.04 %, irq: 0.04 %, sirq: 0.52 %
   


Ohne Scrollen und einem Intervall von 5 Sek, hat sich das System nun etwas beruhigt. Ich schalte das scrollen mal wieder ein, um einen Sysmon unter "Last" zu erhalten.

Was kann ich noch zur Verfügung stellen ?

Kann man die Scroll Geschwindigkeit einstellen ?
RPi1: FHEM mit HMLAN und CUL Eigenbau: diverse Homematic Geräte; Technoline Temp/Feuchte 868 MHz // Schalsteckdosen 433 MHz
RPi2: FHEM mit Viessmann(optolink) mit VControl und 1W Sensoren
RPi3: Apache / Owncloud 9