Hallo zusammen,
Nachdem ich hier viele interessante Diskussionen gelesen habe, war mein Displaymodul erst einmal in der Versenkung verschwunden. Nun habe ich mich aber doch mal ran getraut und was soll ich sagen - eigentlich lief es auf Anhieb (ok, nachdem ich das Anschlusskabel endlich korrekt gecrimpt hatte). Mit OWServer und OWDevice.
Nun stelle ich meine Messwerte über ein at dar und komme an die Feinheiten, wo ich Eure Hilfe in Anspruch nehmen möchte:
define at_Terra_Display at +*00:01:00 set 1Wire_Terra_Display line20.0 Luftfeuchte: [1Wire_TerraLF:Luftfeuchte]% ; set 1Wire_Terra_Display line20.1 Hotspot [1Wire_TerraTemp_HS:Temperatur]°C
So weit fast schick, aber:
- Das Grad-Symbol wird (erwartungsgemäß) nicht korrekt dargestellt. Bekommt man das hin?
- Ich möchte die Werte natürlich untereinander haben, bräuchte also ein paar Leerzeichen zur Formatierung. Die stehen zwar in der Definition drin, werden aber nicht angezeigt. Gut, da könnte ich mir noch mit Punkten helfen, aber schöner wären ja Leerzeichen.
visualisierte Grüße
Niels
Ein Blick in das Datenblatt vom Display (http://www.fuchs-shop.com/download/LCD205.pdf) zeigt übrigens, dass das Grad-Symbol geht (1111 1101). Also habe ich mal mit einem Hex-Editor FD in eine textdatei geschrieben - raus kommt ý. Das Einfügen des Zeichens anstelle vom Grad-Zeichen brachte aber nichts (das Zeichen kommt ja auch bei allen undefinierten Zeichen raus).
Wie sende ich jetzt also Binär- oder Hex-Werte an das Display bzw. baue die in den String ein? Auf gleichem Wege müsste ich ja auch Leerzeichen einbauen können.
hexadezimale Grüße
Niels
Wenn Du nicht auf OWServer limitiert wärst, könnte ich Dir mit Beispielcode per pm für OWX helfen.
I think that datasheet may be showing a different ROM set, see https://www.sparkfun.com/datasheets/LCD/HD44780.pdf (https://www.sparkfun.com/datasheets/LCD/HD44780.pdf)
Zitat von: det. am 22 April 2016, 20:46:05
Wenn Du nicht auf OWServer limitiert wärst, könnte ich Dir mit Beispielcode per pm für OWX helfen.
Tja, leider raten mir meine limitierten Fähigkeiten in der Bewertung von internen Abläufen in den Modulen und grundsätzlichen Programmierphilosophien mich aus diesem Glaubens-/Philosophiekrieg raus zu halten.
Es wäre jetzt auch etwas unglücklich, das produktive System zu zerlegen und grundlegend umzubauen. Vorher lebe ich ohne das Grad-Zeichen. Aber hier habe ich noch nicht kapituliert!
Zitat von: fruit am 22 April 2016, 22:11:20
I think that datasheet may be showing a different ROM set, see https://www.sparkfun.com/datasheets/LCD/HD44780.pdf (https://www.sparkfun.com/datasheets/LCD/HD44780.pdf)
Oh thank you. But it's the same, I have confused the mapping of columns and rows. But DF ist not a printable sign at Windows :-\
limitierte Grüße
Niels
Zitat von: Muschelpuster am 23 April 2016, 11:35:41
Tja, leider raten mir meine limitierten Fähigkeiten in der Bewertung von internen Abläufen in den Modulen und grundsätzlichen Programmierphilosophien mich aus diesem Glaubens-/Philosophiekrieg raus zu halten.
limitierte Grüße
Niels
OK 1:0 für Dich, das ist sehr klug, da gab es hier in den letzten 5 Jahren schon wilde Schlachten und es ist auch unerheblich, da beide Wege definitiv zum Ziel führen.
Ugly but...
define DS18B20_59AA62060000 OWDevice 28.59AA62060000 60
attr DS18B20_59AA62060000 IODev myOWServer
attr DS18B20_59AA62060000 model DS18B20
attr DS18B20_59AA62060000 userReadings Td {sprintf("%0.3f", ReadingsVal("DS18B20_59AA62060000","temperature","0")).chr(223)."C"}
define LCD_test at +*00:01:00 set LCD_870900000100 line20.0 Temp [DS18B20_59AA62060000:Td]
Zitat von: fruit am 23 April 2016, 19:01:40
Ugly but...
...but it works! Thanks a lot!
On this way I can get the missing spaces too. Here my definition with rounding the temperature:
attr 1Wire_TerraTemp_HS userReadings tempDisplay { " ".int ( 10 * ReadingsVal("1Wire_TerraTemp_HS","temperature",0) + 0.5 ) / 10 .chr(223)."C"}
I tried it directly via perl in the job, but this works not:
set 1Wire_Terra_Display line20.1 Hotspot:[1Wire_TerraTemp_HS:tempDisplay]{chr(223)}C
Niels
I am sure it can be refined in many ways
At least we have a solution :)
I could not see a way to add to the 'set LCD' command string either
Apparently this is a problem (or the idea) of the module, that it does not accept perl-commands.
Niels