FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: accloginsell am 11 November 2016, 11:02:07

Titel: ESP8266 LED streifen Color Picker Helligkeit
Beitrag von: accloginsell am 11 November 2016, 11:02:07
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
Titel: Antw:ESP8266 LED streifen Color Picker Helligkeit
Beitrag von: justme1968 am 11 November 2016, 12:21:45
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
Titel: Antw:ESP8266 LED streifen Color Picker Helligkeit
Beitrag von: accloginsell am 12 November 2016, 10:38:57
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
Titel: Antw:ESP8266 LED streifen Color Picker Helligkeit
Beitrag von: justme1968 am 12 November 2016, 10:46:58
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
Titel: Antw:ESP8266 LED streifen Color Picker Helligkeit
Beitrag von: accloginsell am 12 November 2016, 15:19:58
Danke dir Andre,

ich komme nicht drauf wo.. ich verstehe es leider net :((

könntest du mir ein Beispiel geben?...

DANKE!!
Titel: Antw:ESP8266 LED streifen Color Picker Helligkeit
Beitrag von: justme1968 am 12 November 2016, 18:08:09
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.