Hallo Zusammen,
habt ihr eine Idee:
Ich habe mehrere ESP8266 im Haus verteilt. Alle verfügen über LED streifen. Diese sind per PWM angesprochen.
Aktuell steuere ich dies so.
GELB:
define GELBRGB dummy
attr GELBRGB alias Gelb Bett
attr GELBRGB devStateIcon an:on:off aus:off:on
attr GELBRGB eventMap on:an off:aus
attr GELBRGB genericDeviceType switch
attr GELBRGB group RGBBETT
attr GELBRGB icon rc_YELLOW
attr GELBRGB room Homekit
attr GELBRGB setList on off
attr GELBRGB webCmd state
define GELBRGB_AN notify GELBRGB:on { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,2,150,5") }
attr GELBRGB_AN group TEST
attr GELBRGB_AN room hidden
define GELBRGB_AN1 notify GELBRGB:on { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,5,500,5") }
attr GELBRGB_AN1 group TEST
attr GELBRGB_AN1 room hidden
define GELBRGB_AUS notify GELBRGB:off { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,2,0,5") }
attr GELBRGB_AUS group TEST
attr GELBRGB_AUS room hidden
define GELBRGB_AUS1 notify GELBRGB:off { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,5,0,5") }
attr GELBRGB_AUS1 group TEST
attr GELBRGB_AUS1 room hidden
define GELBRGB_AUS2 notify GELBRGB:off { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,4,0,5") }
attr GELBRGB_AUS2 group TEST
attr GELBRGB_AUS2 room hidden
oder die Helligkeit des Bettlichts mit fixen werten:
define BETTLICHTVOLL dummy
attr BETTLICHTVOLL alias Bettlicht
attr BETTLICHTVOLL devStateIcon an:on:off aus:off:on
attr BETTLICHTVOLL eventMap on:an off:aus
attr BETTLICHTVOLL genericDeviceType switch
attr BETTLICHTVOLL group Schlafzimmer
attr BETTLICHTVOLL icon remotecontrol/black_btn_STOP
attr BETTLICHTVOLL room Homekit
attr BETTLICHTVOLL setList on off
attr BETTLICHTVOLL webCmd state
define BETTLICHTVOLL_AN2 notify BETTLICHTVOLL:on { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,14,1000,5") }
attr BETTLICHTVOLL_AN2 group TEST
attr BETTLICHTVOLL_AN2 room hidden
define BETTLICHTVOLL_AUS2 notify BETTLICHTVOLL:off { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,14,0,5") }
attr BETTLICHTVOLL_AUS2 group TEST
attr BETTLICHTVOLL_AUS2 room hidden
define BETTLICHTLEICHT dummy
attr BETTLICHTLEICHT alias Bettlicht leicht
attr BETTLICHTLEICHT devStateIcon an:on:off aus:off:on
attr BETTLICHTLEICHT eventMap on:an off:aus
attr BETTLICHTLEICHT genericDeviceType switch
attr BETTLICHTLEICHT group Schlafzimmer
attr BETTLICHTLEICHT icon remotecontrol/black_btn_STOP
attr BETTLICHTLEICHT room Homekit
attr BETTLICHTLEICHT setList on off
attr BETTLICHTLEICHT webCmd state
define BETTLICHTLEICHT_AN2 notify BETTLICHTLEICHT:on { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,14,100,5") }
attr BETTLICHTLEICHT_AN2 group TEST
attr BETTLICHTLEICHT_AN2 room hidden
define BETTLICHTLEICHT_AUS2 notify BETTLICHTLEICHT:off { GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,14,0,5") }
attr BETTLICHTLEICHT_AUS2 group TEST
attr BETTLICHTLEICHT_AUS2 room hidden
Aufbau der HTTP (/control?cmd=pwm,14,0,5) PWM,GPIO(FARBE 14 ROT 17 GRÜN Z.b.),0-1000(HELLIGKEIT)
Könnt ihr mir evtl helfen das mit einem Fader bzw Colorpicker umzusetzen?.. Ich scheitere leider aufgrund der Http befehle die gesendet werden müssen.
Vielen Dank im Voraus
schau dir mal die readingsProxy beispiele zu farbigen lampen in fhem.cfg.demo an. die sollte man recht einfach um das senden der http kommandos erweitern können. dann hättest du pro lampe einen readingsProxy mit colorpicker.
gruss
andre
Danke dir, habe ich mir jetzt mal angeschaut...
Das schaut mir sehr komplex aus. Ich steige da nach 2 STunden nicht wirklich durch.
define RGB readingsProxy RGB
attr RGB userattr Light Light_map structexclude
attr RGB Light AllLights
attr RGB alias RGB Light
attr RGB comment light with the ability to change RGB color
attr RGB devStateIcon {Color::devStateIcon("RGB","rgb","rgb","state")}
attr RGB group Color Lights
attr RGB room Light
attr RGB setFn {if( $CMD =~ m/on|off/ ) { $ARGS=$CMD;;$CMD = "state" } else {fhem ("setreading $DEVICE state on");;} if( $CMD =~ m/hue/ ) {my ($r,$g,$b) = Color::hsv2rgb($ARGS/360,1,1);; my $rgb = Color::rgb2hex( $r*255, $g*255, $b*255 );; fhem ("setreading $DEVICE rgb $rgb");;} if( $CMD =~ m/rgb/ && $ARGS =~ m/^(..)(..)(..)/ ) {my( $r, $g, $b ) = (hex($1)/255.0, hex($2)/255.0, hex($3)/255.0);; my ($h,$s,$v) = Color::rgb2hsv($r,$g,$b);; my $hue = int($h*359);; fhem ("setreading $DEVICE hue $hue");;} fhem ("setreading $DEVICE $CMD $ARGS");;return undef;;}
attr RGB setList on:noArg off:noArg rgb:colorpicker,RGB hue:colorpicker,HUE,0,1,359
attr RGB webCmd hue:rgb:rgb ff0000:rgb 00ff00:rgb 0000ff:rgb ffffff:on:off
define colorInit notify global:INITIALIZED {use Color;;Color_Initialize()}
attr colorInit room hidden
Er teil ja in R, G, B. Aber wie kann ich ihm jeztt mitteilen, dass er
/control?cmd=pwm,14,0,5
die dicke Zahl als Farbe nimmt und die Unterstrichene zahl als Helligkeit nimmt?..
Ich würde mich echt freuen wenn das irgendwie klappen könnte
du musst nur die setFn am ende vor der return um den aufruf für deine lampe ergänzen.
an dieser stelle hat du $h, $s und $v als farbe, helligkeit und sättigung mit werten zwischen 0 und 1.
gruss
andre
Danke dir Andre,
ich komme nicht drauf wo.. ich verstehe es leider net :((
könntest du mir ein Beispiel geben?...
DANKE!!
etwas so:attr RGB setFn {if( $CMD =~ m/on|off/ ) { $ARGS=$CMD;;$CMD = "state" } else {fhem ("setreading $DEVICE state on");;} if( $CMD =~ m/hue/ ) {my ($r,$g,$b) = Color::hsv2rgb($ARGS/360,1,1);; my $rgb = Color::rgb2hex( $r*255, $g*255, $b*255 );; fhem ("setreading $DEVICE rgb $rgb");;} if( $CMD =~ m/rgb/ && $ARGS =~ m/^(..)(..)(..)/ ) {my( $r, $g, $b ) = (hex($1)/255.0, hex($2)/255.0, hex($3)/255.0);; my ($h,$s,$v) = Color::rgb2hsv($r,$g,$b);; my $hue = int($h*359);; fhem ("setreading $DEVICE hue $hue");;$h=int($h*20);;$v=int($v*1000);;GetHttpFile("192.168.2.207:80", "/control?cmd=pwm,$h,$v,5");;} fhem ("setreading $DEVICE $CMD $ARGS");;return undef;;}
die faktoren 20 und 1000 musst du anpassen.