mirror of
https://github.com/fhem/fhem-mirror.git
synced 2025-04-28 05:01:57 +00:00
32_wifilight.pm: milight colorcast fixed, more robust tcp re-connect
git-svn-id: https://svn.fhem.de/fhem/trunk@14607 2b470e98-0d58-463d-a4d8-8e2adae1ed80
This commit is contained in:
parent
9fde97d61c
commit
3a9b4f5e56
@ -47,6 +47,7 @@
|
|||||||
# 88 readingFnAttributes
|
# 88 readingFnAttributes
|
||||||
# 89 add LD316A
|
# 89 add LD316A
|
||||||
# 90 Sunricher poc
|
# 90 Sunricher poc
|
||||||
|
# 91 milight colorcast fixed, more robust tcp re-connect
|
||||||
|
|
||||||
# verbose level
|
# verbose level
|
||||||
# 0: quit
|
# 0: quit
|
||||||
@ -1015,6 +1016,7 @@ WifiLight_Attr(@)
|
|||||||
WifiLight_RGB_ColorConverter($ledDevice, @a) if ($ledDevice->{CONNECTION} eq 'LW12');
|
WifiLight_RGB_ColorConverter($ledDevice, @a) if ($ledDevice->{CONNECTION} eq 'LW12');
|
||||||
WifiLight_RGB_ColorConverter($ledDevice, @a) if ($ledDevice->{CONNECTION} eq 'LW12HX');
|
WifiLight_RGB_ColorConverter($ledDevice, @a) if ($ledDevice->{CONNECTION} eq 'LW12HX');
|
||||||
WifiLight_RGB_ColorConverter($ledDevice, @a) if ($ledDevice->{CONNECTION} eq 'LW12FC');
|
WifiLight_RGB_ColorConverter($ledDevice, @a) if ($ledDevice->{CONNECTION} eq 'LW12FC');
|
||||||
|
WifiLight_Milight_ColorConverter($ledDevice, @a) if ($ledDevice->{CONNECTION} =~ 'bridge-V[2|3]');
|
||||||
WifiLight_RGB_ColorConverter($ledDevice, @a) if (($ledDevice->{LEDTYPE} =~ /^RGB.?$/) && ($ledDevice->{CONNECTION} =~ /^SUNRICHER.?$/));
|
WifiLight_RGB_ColorConverter($ledDevice, @a) if (($ledDevice->{LEDTYPE} =~ /^RGB.?$/) && ($ledDevice->{CONNECTION} =~ /^SUNRICHER.?$/));
|
||||||
if ($init_done && !(@{$ledDevice->{helper}->{hlCmdQueue}}))
|
if ($init_done && !(@{$ledDevice->{helper}->{hlCmdQueue}}))
|
||||||
{
|
{
|
||||||
@ -3345,9 +3347,9 @@ WifiLight_HSV_Transition(@)
|
|||||||
}
|
}
|
||||||
else
|
else
|
||||||
{
|
{
|
||||||
$hueFrom = $ledDevice->{READINGS}->{hue}->{VAL};
|
$hueFrom = $ledDevice->{READINGS}->{hue}->{VAL} || 0;
|
||||||
$satFrom = $ledDevice->{READINGS}->{saturation}->{VAL};
|
$satFrom = $ledDevice->{READINGS}->{saturation}->{VAL} || 0;
|
||||||
$valFrom = $ledDevice->{READINGS}->{brightness}->{VAL};
|
$valFrom = $ledDevice->{READINGS}->{brightness}->{VAL} || 0;
|
||||||
$timeFrom = gettimeofday();
|
$timeFrom = gettimeofday();
|
||||||
Log3 ($ledDevice, 5, "$ledDevice->{NAME} prepare start hsv transition (is actual) hsv $hueFrom, $satFrom, $valFrom, $timeFrom");
|
Log3 ($ledDevice, 5, "$ledDevice->{NAME} prepare start hsv transition (is actual) hsv $hueFrom, $satFrom, $valFrom, $timeFrom");
|
||||||
}
|
}
|
||||||
@ -3566,36 +3568,34 @@ WifiLight_HSV2fourChannel(@)
|
|||||||
sub
|
sub
|
||||||
WifiLight_Milight_ColorConverter(@)
|
WifiLight_Milight_ColorConverter(@)
|
||||||
{
|
{
|
||||||
my ($ledDevice) = @_;
|
my ($ledDevice, $cr, $cy, $cg, $cc, $cb, $cm) = @_;
|
||||||
|
#my ($ledDevice) = @_;
|
||||||
|
|
||||||
my @colorMap;
|
my @colorMap;
|
||||||
|
|
||||||
my $hueRed = 0;
|
#my $hueRed = 0;
|
||||||
my $adjRed = $hueRed;
|
my $adjRed = 0 - ($cr || 0);
|
||||||
|
#my $hueYellow = 60;
|
||||||
|
my $adjYellow = 60 - ($cy || 0);
|
||||||
|
#my $hueGreen = 120;
|
||||||
|
my $adjGreen = 120 - ($cg || 0);
|
||||||
|
#my $hueCyan = 180;
|
||||||
|
my $adjCyan = 180 - ($cc || 0);
|
||||||
|
#my $hueBlue = 240;
|
||||||
|
my $adjBlue = 240 - ($cb || 0);
|
||||||
|
#my $hueLilac = 300;
|
||||||
|
my $adjLilac = 300 - ($cm || 0);
|
||||||
|
|
||||||
my $hueYellow = 60;
|
#st34
|
||||||
my $adjYellow = $hueYellow;
|
my $devRed = 168;
|
||||||
|
#my $devRed = 176;
|
||||||
my $hueGreen = 120;
|
my $devYellow = 134;
|
||||||
my $adjGreen = $hueGreen;
|
#my $devYellow = 144;
|
||||||
|
my $devGreen = 88;
|
||||||
my $hueCyan = 180;
|
|
||||||
my $adjCyan = $hueCyan;
|
|
||||||
|
|
||||||
my $hueBlue = 240;
|
|
||||||
my $adjBlue = $hueBlue;
|
|
||||||
|
|
||||||
my $hueLilac = 300;
|
|
||||||
my $adjLilac = $hueLilac;
|
|
||||||
|
|
||||||
my $devRed = 176;
|
|
||||||
#my $devYellow = 128;
|
|
||||||
my $devYellow = 144;
|
|
||||||
my $devGreen = 96;
|
|
||||||
#my $devCyan = 48;
|
#my $devCyan = 48;
|
||||||
my $devCyan = 56;
|
my $devCyan = 56;
|
||||||
my $devBlue = 16;
|
my $devBlue = 8;
|
||||||
my $devLilac = 224;
|
my $devLilac = 208; #224
|
||||||
|
|
||||||
my $i= 360;
|
my $i= 360;
|
||||||
|
|
||||||
@ -3934,11 +3934,14 @@ WifiLight_LowLevelCmdQueue_Send(@)
|
|||||||
# TCP
|
# TCP
|
||||||
if ($ledDevice->{PROTO})
|
if ($ledDevice->{PROTO})
|
||||||
{
|
{
|
||||||
if (!$ledDevice->{helper}->{SOCKET} || ($ledDevice->{helper}->{SELECT}->can_read(0.0001) && !$ledDevice->{helper}->{SOCKET}->recv(my $data, 512)))
|
if (!$ledDevice->{helper}->{SOCKET} || ($ledDevice->{helper}->{SELECT}->can_read(0) && !$ledDevice->{helper}->{SOCKET}->recv(my $data, 512)))
|
||||||
{
|
{
|
||||||
Log3 ($ledDevice, 4, "$ledDevice->{NAME} low level cmd queue send $dbgStr, qlen ".@{$ledDevice->{helper}->{llCmdQueue}}." connection refused: trying to reconnect");
|
Log3 ($ledDevice, 4, "$ledDevice->{NAME} low level cmd queue send $dbgStr, qlen ".@{$ledDevice->{helper}->{llCmdQueue}}." connection refused: trying to reconnect");
|
||||||
|
|
||||||
$ledDevice->{helper}->{SOCKET}->close() if $ledDevice->{helper}->{SOCKET};
|
if ($ledDevice->{helper}->{SOCKET}) {
|
||||||
|
$ledDevice->{helper}->{SOCKET}->shutdown(2);
|
||||||
|
$ledDevice->{helper}->{SOCKET}->close();
|
||||||
|
}
|
||||||
|
|
||||||
$ledDevice->{helper}->{SOCKET} = IO::Socket::INET-> new (
|
$ledDevice->{helper}->{SOCKET} = IO::Socket::INET-> new (
|
||||||
PeerPort => $ledDevice->{PORT},
|
PeerPort => $ledDevice->{PORT},
|
||||||
@ -3964,6 +3967,10 @@ WifiLight_LowLevelCmdQueue_Send(@)
|
|||||||
|
|
||||||
1;
|
1;
|
||||||
|
|
||||||
|
=pod
|
||||||
|
=item device
|
||||||
|
=item summary controls a large number of different LED types
|
||||||
|
=item summary_DE steuert eine große Anzahl unterschiedlicher LED Typen
|
||||||
=begin html
|
=begin html
|
||||||
|
|
||||||
<a name="WifiLight"></a>
|
<a name="WifiLight"></a>
|
||||||
|
Loading…
x
Reference in New Issue
Block a user