#!/usr/bin/perl
use strict;
use warnings;
use 5.014;
my $host = "10.42.0.74";
use IO::Socket;
my $s = IO::Socket::INET->new(
Proto => 'udp',
PeerAddr => $host,
PeerPort => 1337,
Timeout => 1,
) or die "socket";
if ($ENV{QUERY_STRING} =~ /o(n|ff)/) {
$s->send(pack("C*", 1, ($1 eq 'n')));
} elsif ($ENV{QUERY_STRING} =~ /[0-9a-f]+/i) {
my ($r,$g,$b) = unpack("C*", pack("H*",$ENV{QUERY_STRING}));
$s->send(pack("C*", 2, $r, $g/2, $b/2));
}
if ($ENV{QUERY_STRING}) {
print "status: 204 no content\r\n\r\n";
exit 0;
}
my $buf = "";
$s->send("\x00");
$s->recv($buf,5);
my ($ok, $power, $r, $g, $b) = unpack("C*", $buf);
my $color = sprintf("%02x%02x%02x", $r, 2*$g, 2*$b);
print "content-type: text/html\r\n\r\n";
print "";
print ;
__DATA__
ESP8266 Ledberg