#!/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