1-Wire LCD Display

Begonnen von Mathias007, 02 September 2014, 19:35:30

Vorheriges Thema - Nächstes Thema

Mathias007

Ich hab mir eine Dispalykontroller für ein 4x20 Display gekauft ist auch über IP:2121 Aufrufbar. Nur finde ich im Internet leider keine Anwendungsbeispiele z.B die Temperatur von DS19B20 Sensoren Anzuzeigen. Wäre toll wenn mir jeman zeigen könnte wie ich das Löse ;)

Hier  der Link zum Controller: http://www.fuchs-shop.com/de/shop/6/1/13372316/

lg. Mathias

ext23

Wie, was ist denn da jetzt dein genaues Problem?

Beispiel:
ba_Temperatur_868:T.* {
  my $value1 = "%EVTPART1";
  my $value2 = "%EVTPART3";
  fhem "set az_OW_LCD1 line 0 Aussen: $value1°C $value2%";
undef
}


Gruß
Daniel

HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

Mathias007

Geht leider nicht.
2014.09.02 21:55:59 3: ntf_LCD_Start return value: Bareword "prg_Display_Start" not allowed while "strict subs" in use at (eval 12) line 1.

ext23

#3
Wie hast du denn das LCD definiert?

Bei mir sieht das so aus, ich habs mit OWX gemacht:
define MP00202 OWX /dev/MP00202

define az_OW_LCD1 OWLCD DB0700000100
attr az_OW_LCD1 IODev MP00202
HM, KNX, FS20, 1-Wire, PanStamp, AVR-NET-IO, EM1000EM, PCA301, EC3000, HM-LAN, CUL868, RFXtrx433, LGW, DMX @Ubuntu-Server (Hauptsystem) & Raspberry Pi (Satellit)

ntruchsess

Wenn Du den 1-Wire-Bus über owfs (bzw. OWServer) ansteuerst (Darauf läßt IP:2121 jedenfalls schließen): Das wird von OWLCD nicht unterstützt, das geht bisher ausschließlich mit OWX und OWX_ASYNC.

Den Post von Uwe musst Du Dir auch noch mal genau durchlesen, das erwähnte define reicht nicht, da fehlt noch die sub prg_Display_Start in der 99_myUtils.pm.

Gruß,

Norbert
while (!asleep()) {sheep++};

Mathias007

Das es da kein ToDo dazu gibt. Warum muss das so kompliziert sein  :-\ Ich will als erstes einfach nur Datum und Uhrzeit anzeigen. In der Zweiten Zeile die Temperatur.

ntruchsess

Sorry, dass ich Dir mit dem OWLCD nicht wirklich helfen kann. Ich habe das Modul zwar für OWX_ASYNC angepasst, das war aber mehr oder weniger blind, weil es mit meinem eigenen Display auch nicht wirklich wollte und ich mich rein auf das Userfeedback verlassen habe.

Vieleicht könnten mal alle, die das Modul erfolgreich einsetzen angeben, ob bzw. was sie darin ändern mussten und für welche Hardware genau sie es einsetzen, dann wüsste ich, ob man noch was per Attribut konfigurierbar machen müsste damit es universeller einsetzbar wäre.
while (!asleep()) {sheep++};

det.

Zitat von: Mathias007 am 03 September 2014, 21:27:42
Das es da kein ToDo dazu gibt. Warum muss das so kompliziert sein  :-\ Ich will als erstes einfach nur Datum und Uhrzeit anzeigen. In der Zweiten Zeile die Temperatur.
Hallo Mathias,


Dass mit Uhrzeit und Datum hab ich auf einem meiner Test Systeme. Kann ich Dir morgen hier reinstellen oder DAU suchst mal nach DLCD im Forum...
LG
det.

UweH

Hier mal ein Beispiel für eine Anzeige mit 4 Zeilen...läuft so auf meiner Testmaschine. Die Readings musst Du durch Deine ersetzen...

fhem.cfg:

define LCDup at +*00:01:00 {prg_LCDup()}


99_myUtils:

sub
prg_LCDup()
{

my $LCD_text_1 = sprintf("%.1f",ReadingsVal("Temp.AZ","temperature",0))." C";
my $LCD_text_2 = Value("iButton");
my $LCD_text_3 = Value("Lichtsensor");
my $LCD_text_4 = Value("star");

my ($Sekunden, $Minuten, $Stunden, $Monatstag, $Monat, $Jahr, $Wochentag, $Jahrestag, $Sommerzeit) = localtime(time);
my $CTIME_String = localtime(time);
$Monat+=1;
$Jahrestag+=1;
$Monat = $Monat < 10 ? $Monat = "0".$Monat : $Monat;
$Monatstag = $Monatstag < 10 ? $Monatstag = "0".$Monatstag : $Monatstag;
$Stunden = $Stunden < 10 ? $Stunden = "0".$Stunden : $Stunden;
$Minuten = $Minuten < 10 ? $Minuten = "0".$Minuten : $Minuten;
$Sekunden = $Sekunden < 10 ? $Sekunden = "0".$Sekunden : $Sekunden;
$Jahr+=1900;
my @Wochentage = ("Sonntag","Montag","Dienstag","Mittwoch","Donnerstag","Freitag","Samstag");
my @Monatsnamen = ("","Januar","Februar","März","April","Mai","Juni",
           "Juli","August","September","Oktober","November","Dezember");




fhem ("set LCD line 0 Temp AZ: $LCD_text_1");
fhem ("set LCD line 1 iButton: $LCD_text_2");
fhem ("set LCD line 2 Sonne: $LCD_text_3");
fhem ("set LCD line 3 $Stunden:$Minuten Diesel:$LCD_text_4");


}

Mathias007

Das Problem ist ich kann zwar in FHEM über set OWX_LCD screen 16 z.B Hello World anzeigen lassen aber mit der Config funktioniert es nicht  :-\

Hier mal ein Auszug aus fhem.cfg:

#1-Wire Bus


define myOWServer OWServer localhost:4304

define temp1 OWDevice 28.4B7714050000 30
attr temp1 icon icoKLIMA
attr temp1 model DS18B20
attr temp1 room Beispielraum
define FileLog_temp1 FileLog ./log/temp1-%Y.log temp9
attr FileLog_temp1 Beispielraum

define OWX_LCD OWDevice FF8A0800000100D9


define LCDup at +*00:01:00 {prg_LCDup()}


In die 99_Utils.pm hab ich schon etliches eingefügt.

Ach ich nutze diesen 1-Wire-Busmaster:
http://mathias-biedert.de/2014/09/01/raspberry-pi-fhem-modul/

Tobias

ich habe denselben LCD-controller. Mit OWX und OWLCD habe ich es nicht vernünftig initialisiert bekommen. Mit OWServer und OWDevice läuft es seit monaten stabil :)
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

UweH

Zitat von: Tobias am 04 September 2014, 18:34:52
ich habe denselben LCD-controller. Mit OWX und OWLCD habe ich es nicht vernünftig initialisiert bekommen. Mit OWServer und OWDevice läuft es seit monaten stabil :)
Kann ich nicht bestätigen, ich habe ein Display am "Produktiv"-FHEM-Server mit OWServer und auf dem Testsystem mit OWX/OWLCD laufen und beide sind problemlos zu handhaben. Aber das war nicht das Thema, wir müssen Mathias007 nicht mit Grundsatz- und Glaubensfragen quälen.

@Mathias007: Interessant ist vielmehr (für mich...) der Befehl set OWX_LCD screen 16...
Aus welcher Doku stammt das denn?
Was hast Du "etliches" in die 99_myUtils eingefügt? Klingt irgendwie planlos.
Hat OWX das Display so angelegt oder Du? Was passiert bei set OWX_LCD test

det.

#12
Zitat von: ntruchsess am 03 September 2014, 21:45:51
Sorry, dass ich Dir mit dem OWLCD nicht wirklich helfen kann. Ich habe das Modul zwar für OWX_ASYNC angepasst, das war aber mehr oder weniger blind, weil es mit meinem eigenen Display auch nicht wirklich wollte und ich mich rein auf das Userfeedback verlassen habe.

Vieleicht könnten mal alle, die das Modul erfolgreich einsetzen angeben, ob bzw. was sie darin ändern mussten und für welche Hardware genau sie es einsetzen, dann wüsste ich, ob man noch was per Attribut konfigurierbar machen müsste damit es universeller einsetzbar wäre.
my $owx_version="5.3";
#-- controller may be HD44780 or KS0073
#   these values have to be changed for different display
#   geometries or memory maps
my $lcdcontroller = "KS0073";
my $lcdlines      = 4;
my $lcdchars      = 20;
#my @lcdpage       = (0,32,64,96);
my @lcdpage       = (0,64,20,84);

die 4  Zeilen oben müssen im Code von 21_OWLCD.pm nach jedem Update bisher auf den vorhandenen LCD Typ angepasst werden, sonst zeigts nur Müll an. Wenn Du das in der Definition konfigurierbar hinbekommst, wäre das ein großer Schritt nach vorn.
Bei mir funktionieren 2 Displays mit OWX seit Monaten produktiv ohne Probleme
LG
det.

Tobias

Also mit "nicht hinbekommen" meinte ich, das die @lcdpage Parameter nicht passten bzw ich nicht passend hinbekommen hatte.
Abgesehen davon ist es ziemlich umständlich den code zu ändern, insbesondere nach jedem update. Jedenfalls mit OWDevice läuft es super...
Maintainer: Text2Speech, TrashCal, MediaList

Meine Projekte: https://github.com/tobiasfaust
* PumpControl v2: allround Bewässerungssteuerung mit ESP und FHEM
* Ein Modbus RS485 zu MQTT Gateway für SolarWechselrichter

Prof. Dr. Peter Henning

Es steht jedem frei, die Software zu verwenden, mit der er seine Ziele erreicht.

Allerdings sollte man wissen, wie die eigenen Werkzeuge funktionieren - und dann eben mal das Datenblatt seines LCD-Controllers anschauen und die Parameter anpassen.

LG

pah