Realizar llamada de acuerdo al cambio de luminosidad en el ambiente por medio de Arduino, es decir cuando el nivel de luz cambie Arduino le dara la orden a Asterisk para realizar una llamada anunciando un movimiento.
(Utilizamos Arduino UNO con Ethernet Shield)
El video ilustrativo de como funciona:
Creamos el archivo arduino.php en /var/lib/asterisk/agi-bin/ :
#!/usr/bin/php -q
<?php
require("phpagi.php");
$agi = new AGI();
        $agi->answer();
        $return = $agi->get_data('beep', 30000, 1);
        $agi->text2wav("Hubo movimiento en la habitacion ");
        $agi->hangup();
?>
En /var/www/html (la ruta que tienen configurado en el server web) creamos el archivo call_sense.php :
<?php
$luz = $_GET['luz'];
echo $luz;
$asterisk_outgoing = "/var/spool/asterisk/outgoing/";
$asterisk_tmp = "/tmp/";
$asterisk_cid = "Sensor de Luz<7307>"; // the from caller id you'd like to display.
                $arduinocallfile = "/$asterisk_tmp/arduino_call.txt";
                $arduinocall = fopen($arduinocallfile, 'w') or die("can't open file");
$arduinocall_data="Channel:SIP/7306\nApplication:AGI\nData:arduino.php\nCallerID:$asterisk$
                fwrite($arduinocall, $arduinocall_data);
                fclose($arduinocall);
                // chmod, chown and chgrp the file to asterisk:asterisk
                 chmod ("/$asterisk_tmp/arduino_call.txt", 0666);
                 chown ("/$asterisk_tmp/arduino_call.txt", "asterisk");
                 chgrp ("/$asterisk_tmp/arduino_call.txt", "asterisk");
                rename("/$asterisk_tmp/arduino_call.txt","/$asterisk_outgoing/arduino_call.call");
?>
Y ahora el código de nuesto Arduino UNO :
Código:
#include <SPI.h>
#include <Ethernet.h>
int lightPin = 0; 
int threshold = 640;  //este valor lo modificamos de acuerdo el nivel de sensibilidad que tiene nuestra fotoresistencia dada por la resistencia que esta entre A0 y GND.
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED };
byte server[] = { xxx, xxx, xxx, x }; //IP del servidor web donde esta Asterisk y el archivo call_sense.php
int luz = 0;
EthernetClient client;
void setup()
{
  Ethernet.begin(mac);
  Serial.begin(9600);      
}
void loop () {
  Serial.println(Ethernet.localIP());
senddata();
delay(500);
}
void senddata()
{
  Serial.println(analogRead(lightPin)); 
    if(analogRead(lightPin) > threshold ){    
        Serial.println("high"); 
    }else{
        Serial.println("low"); 
         luz = 1;
          Serial.println();
          Serial.println("Iniciando conexion!");
          Serial.println("Conectando!");
          delay(1000); //This one keeps it from hanging
          if (client.connect(server,80)) {
          Serial.println("Connected!");
          client.print("GET http://XXX.XXX.XXX.X/call_sense.php?luz=");
          client.print(luz);
          client.println(" HTTP/1.1");
          client.println("User-Agent: Arduino 1.0");
          client.println("Host: xxx.xxx.xxx.x");
          client.println();
                                      }
           else 
           {
           Serial.println("Connection failed");
           client.stop();
           }
    }          
}
15:17
Anónimo

                                Posted in:  
                                




2 comentarios :
no entendi algunos comandos, puedes hacer un video por favor explicando paso a paso.. por favor..
Hola disculpa me puedes ayudar, no entiendo de donde sale el archivo arduino_call.txt , me puedes explicar q archivo es porfavor.. te agradezco mucho por la ayuda.
Publicar un comentario