Paso 5: Software
Este proyecto de iluminación no es diferente, aunque representan mis primeros intentos de utilizar servicios web.
Para los servicios web que he usado Apache 2.x y el módulo SOAP:: Lite para perl, para realmente hablar de serie al controlador DMX, he utilizado el módulo de perl Device::SerialPort.
Todo el lote funciona en Redhat Linux llamar los servicios web de mi aplicación domótica real como esto: (Nota Esto es una parte de un programa mucho más grande)
# Luces de apagado si no hay movimiento para diez minutos y movimiento más recientemente en el pasillo
#
Si ($epoch - $in11_lastmove > 600 & & $in11_lastmove < $in23_lastmove & & $kitchenlights == 1) {}
& send_lights_soap(1,0);
$kitchenlights = 0;
}
La subrutina actual se llama es aquí:
Sub send_lights_soap {}
$soap_response = SOAP:: Lite
-> uri ('http://192.168.101.172/Lights')
-> a proxy ('http://192.168.101.172/cgi-bin/lights')
-> Enviar ('$_ [0]', '$_ [1]');
$res = $soap_response -> resultado;
}
Y como este es un servicio web, el serial interfaz y web servicio código real Reside en otra maquina en mi red, el código de servicio web tiene este aspecto:
#! / usr/bin/perl - w
uso SOAP::Transport::HTTP;
SOAP::Transport::http::cgi
-> dispatch_to('Lights')
-> mango;
# Llamada como -> uri ('http://192.168.101.172/Lights')
# -> proxy ('http://192.168.101.172/cgi-bin/lights')
# -> send ("", "")
paquete de luces;
Sub enviar {}
Use Device::SerialPort;
mi $port = Device::SerialPort -> new("/dev/ttyS0");
$port -> baudrate(9600); $port -> parity("none");
$port -> handshake("none"); $port -> databits(8);
$port -> stopbits(1); $port -> read_char_time(0);
$port -> read_const_time(1);
mi ($class, $channel, $intensity) =
# enviar datos
$port -> write (paquete "C", $channel);
$port -> write (paquete "C", $intensity);
Sleep(1);
$port -> close();
retorno "hecho! He utilizado $class con chn $channel e i $intensity ";
}
Código bastante sencillo, estoy seguro que estarás de acuerdo, y lo mejor de todo, porque corre webservices, puedo repartidos estos nodos por red y llamarlos por fácilmente.
Además usted puede haber notado como la mayoría de las personas que he RFC1918 dirigido mi red, pero con una regla NAT adecuada, estos servicios pueden fácilmente llamar de cualquier parte con conexión a internet, lo que significa que puedo controlar mi iluminación, calefacción etc... desde cualquier lugar (incluso un GPRS o 3G teléfono!)