Hallo Gemeinde,
ich habe mir den 1Wire-LCD-Controller von Fuchs besorgt und ein Display draufgesetzt.
Funktioniert tadellos.
Wo ich aber so meine Schwierigkeiten habe ist die Abfrage der 4 Buttons des Controllers.
Gibt es ein Modul dafür (irgendwo habe ich etwas von OWID gelesen)?
Muss ich das "händisch" programmieren (polling o.ä.)?
Kann mir jemand vielleicht sogar ein Codeschnipsel zur Verfügung stellen?
Danke im voraus,
Rainer
Mein Tipp: Commandref lesen.
Außerdem ist das Modul nicht von "Fuchs".
LG
pah
Hallo pah,
vielen Dank für den "Tipp".
Zitat von: Prof. Dr. Peter Henning am 21 Dezember 2014, 03:13:16
Mein Tipp: Commandref lesen.
Naja wenn die mal immer so stimmen würde ;-)
"get <name> gpio - Obtain state of all four input counters (4 x 16 Bit)"
Das sollte bestimmt "counter" heißen und nicht "gpio" ...
@ergerd: Beispiel: get az_OW_LCD1 counter
Da musst dann schauen ob die counter hochgezählt wurden, dann weiß du das eine Taste gerdrückt wurde. Sprich du musst pollen. (Wenn ich das richtig verstanden habe...)
Gruß
Daniel
@ext23: Na, ganz unlesbar scheint das nicht zu sein - dieser Tippfehler ist in den 23 Monaten des Bestehens dieses Moduls noch niemandem aufgefallen.
LG
pah
Vielen Dank für die Antwort Daniel.
Scheint als würde ich in die richtige Richtung laufen.
Ich habe folgendes definiert:
define owx_lcd OWLCD FF.F30900000100
define Taste notify owx_lcd:counter.* {\
my $Taste0 = ReadingsVal("owx_lcd", "counter.0", "0");;\
my $Taste1 = ReadingsVal("owx_lcd", "counter.1", "0");;\
my $Taste2 = ReadingsVal("owx_lcd", "counter.2", "0");;\
my $Taste3 = ReadingsVal("owx_lcd", "counter.3", "0");;\
if($Taste0 ne "0") {\
fhem("set owx_lcd backlight on;; define owx_lcd_off_at at +00:00:10 set owx_lcd backlight off");;\
}\
}
define owx_lcd_trigger_at at +*00:00:05 get owx_lcd counter
Funktioniert aber nicht. Vielleicht ist jemand so freundlich und gibt mir sachdienliche Hinweise.
Freundliche Grüße
Rainer
Also ich habe das nicht in Benutzung, ich hab das auch nur eben aus der command ref gelesen (Wo mir dann auch nach 23 Monaten der Fehler aufgefallen ist ;-) )
Du müsstest aber auch mal schreiben was genau nicht geht, sonst ist das immer etwas blöd zu analysieren. Funktioniert das mit dem at? Sprich hast du die Werte anschließend im reading?
counter.0 etc. das passt auch, kann man das so machen ja?
/Daniel
Natürlich nicht. Steht weder so in der commandref, noch sonstwo - hat er wahrscheinlich geraten. ::)
Noch liefert das Modul die Werte einzeln als readings. Es gibt nur EIN reading counter mit allen 4 Werten => etwas Perl ist nötig.
LG
pah
Geraten, natürlich.
Das hatte ich hier gefunden: http://forum.fhem.de/index.php?topic=11857.0 (http://forum.fhem.de/index.php?topic=11857.0)
Aber die Aussage "etwas Perl ist nötig" reicht mir doch schon, damit ist das Thema für mich erledigt, Perl kann ich buchstabieren, programmieren nicht.
Danke und Grüße
Rainer
So schnell gibst du auf? ;) Du hast doch schon irre komplizierte Sachen im Zus. mit FHEM eingerichtet. Und Perl ist kein Hexenwerk. In FHEM kannst du z.B. auch mit Value und OldValue einen Vergleicher aufbauen, der ganz einfach die Abfrage macht.
Prinzip in etwa: "if value von button1 größer oldvalue button1 -> mache irgendwas".
Das value / oldValue noch hübsch in lok. Variablen verpackt, dann macht es gleich mehr Spaß. Beispiele für solche einfachen Vergleichsroutinen findest du zu Hauf im Wiki oder Forum. Du müsstest vermutlich die Tasten recht häufig pollen, damit der Tastendruck zeitnah erkannt wird. Aber auch nicht zu häufig, denn die Änderung bleibt ja gespeichert und wird erst durch die nächste Abfrage erkannt und gleichzeitig verworfen.
Gruß
Frank