Hauptmenü

Slider Wert umrechnen

Begonnen von jan4321, 14 April 2016, 21:32:53

Vorheriges Thema - Nächstes Thema

jan4321

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?

jan4321

Hat niemand eine Lösung?
Ich denke mal das geht mit Perl, aber wie, kann ich leider nicht herausfindenden

igami

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
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

jan4321

#3
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?



igami

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&");;}
Pi3 mit fhem.cfg + DbLog/logProxy
Komm vorbei zum FHEM Treffen im Kreis Gütersloh! Das nächste Mal im April 2020.

MAINTAINER: archetype, LuftdatenInfo, monitoring, msgDialog, Nmap, powerMap
ToDo: AVScene, FluxLED

jan4321

#5
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");;}