Hallo,
wie man im Code sehen kann, will ich einen Wert von 21000 bis 21500 mit einem Slider auswählen.
Dann wird diese Zahl für ein script benutzt.
Allerdings würde ich den Slider lieber von 0 bis 255 auswählen.
Wie geht das? irgendwo muss die Berechnung (+21000) stattfinden. Nur wo, und wie?
define Kaltweiss dummy
attr Kaltweiss room Wohnzimmer
attr Kaltweiss setList state:slider,21000,1,21255
attr Kaltweiss webCmd state
define Schreibtischlampe notify Kaltweiss.* {system("sudo ./codesend $EVENT&");;}
Ich hatte an sowas wie $($EVENT + 21000) gedacht, aber leider ohne Erfolg.
Ist es einfach nur die falsche Syntax?
Hat niemand eine Lösung?
Ich denke mal das geht mit Perl, aber wie, kann ich leider nicht herausfindenden
Man könnte das mit einem userReading lösen.
define Kaltweiss dummy
attr Kaltweiss readingList normal
attr Kaltweiss setList normal:slider,0,1,255
attr userReadings state:normal {ReadingsVal($name, "normal", 0) + 21000}
attr Kaltweiss webCmd normal
Grüße
igami
Zitat von: igami am 15 April 2016, 15:24:31
Man könnte das mit einem userReading lösen.
define Kaltweiss dummy
attr Kaltweiss readingList normal
attr Kaltweiss setList normal:slider,0,1,255
attr userReadings state:normal {ReadingsVal($name, "normal", 0) + 21000}
attr Kaltweiss webCmd normal
in der vierten zeile fehlt noch attr
Kalteiss userReadings
danach funktioniert es. Leider habe ich durch die Berechnung ca. 1 Sekunde Verzögerungszeit.
jetzt muss ich nurnoch rausfinden, dass neben dem slider nicht immernoch die 21000 steht, sondern die unberechnete Zahl.
kann man neben dem slider anstatt von state, normal ausgeben lassen?
stateFormat dürfte das Attribut sein, was du suchst.
Das mit der einen Sekunde verzögerung kann ich bei mir nicht feststellen.
Du kannst aber auch im notify rechnen, ist mir grad erst eingefallen
... {my $set = $EVENT + 21000;; system("sudo ./codesend $EVENT&");;}
Zitat von: igami am 15 April 2016, 17:22:46
stateFormat dürfte das Attribut sein, was du suchst.
Das mit der einen Sekunde verzögerung kann ich bei mir nicht feststellen.
Du kannst aber auch im notify rechnen, ist mir grad erst eingefallen
... {my $set = $EVENT + 21000;; system("sudo ./codesend $EVENT&");;}
Danke! danach habe ich gesucht.
allerdings muss es so heißen:
... {my $set = $EVENT + 21000;; system("sudo ./codesend $set&");;}
Jetzt gibt es auch keine Verzögerungszeit mehr.
Hier mein fertiger code. Vielleicht hilft es ja jemandem:
### Schreibtischlampe ###
define Kaltweiss dummy
attr Kaltweiss room Wohnzimmer
attr Kaltweiss setList state:slider,0,5,100
attr Kaltweiss webCmd state
define Schreibtischlampecw notify Kaltweiss.* {my $set = POSIX::floor($EVENT * 2.55 + 21000);; system("sudo ./codesend $set");;}
#Wert wird umgrerechnet und bei Bedarf abgerundet#
define Warmweiss dummy
attr Warmweiss room Wohnzimmer
attr Warmweiss setList state:slider,0,5,100
attr Warmweiss webCmd state
define Schreibtischlampeww notify Warmweiss.* {my $set = POSIX::floor($EVENT * 2.55 + 20000);; system("sudo ./codesend $set");;}