edit: migliorato e (oltre al cambio automatico dell'IP) aggiunto l'invio automatico di una mail quando cambia l'IP.
sperando di fare cosa gradita spiego un modo di come fare ricevere ed inviare valori da un sito esterno come altervista senza no-ip ma usando tipo "mioip", è solo una base su cui lavorarci...senza password
arduino mega
shield wifi
connessione internet tramite router, shield wifi con ip statico e porta 80 aperta
attualmente funziona, gli sketch comunque necessitano di miglioramenti
sul sito altervista si crea una cartella ad esempio
altervistaWifi
che contiene
3 file
- .html/js
- .php per ricevere valori
- .php per ricevere il nuovo ip
base da salvare in html:
<!DOCTYPE html>
<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=UTF-8" />
<title> Values Wifi With Processing js and Php </title>
<script src=" processing.js" type="text/javascript"></script>
</head>
<script>
function FileHelper()
{}
{
FileHelper.readStringFromFileAtPath = function(pathOfFileToReadFrom)
{
var request = new XMLHttpRequest();
request.open("GET", pathOfFileToReadFrom, false);
request.send(null);
var returnValue = request.responseText;
return returnValue;
}
}
var text = FileHelper.readStringFromFileAtPath ( "newIp.txt" );
(function attiva() {
setTimeout(attiva, 4000);
server = "http://"+text+"/arduino/stato/99";
//alert(text);
richiesta = new XMLHttpRequest();
richiesta.onreadystatechange = aggiornaValori;
richiesta.open("GET", server, true);
richiesta.send(null);
})();
function aggiornaValori() {
}
</script>
<body>
<!-----------------------inizio sketch Processing ------------------------->
in realtà così non si vede nulla perchè poi inserisco lo sketch Processing,
però decommentando //alert(text) se funziona appare una finestra con il numero ip pubblico che è arrivato.
file php ricezione valori da salvare in .php (getdata):
<?php
$localtemp = $_GET['TEMP'];
$prova = $localtemp;
//echo $prova;
if( $localtemp != null ){
$File = "templog.txt";
$Handle = fopen($File, 'w');
fwrite($Handle, $localtemp);
fclose($Handle);
}
/* Read logged templog.txt to display*/
$strFileName = "templog.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$file = fgets($objFopen, 4096);
echo $file;
}
fclose($objFopen);
}
//print("℃");
?>
file php ricezione nuovo IP da salvare in .php (newIp): :
è lo stesso del precedente cambiano i nomi del file.txt e la chiave di ricezione,
praticamente riceve il valore di 'newIp' e lo fa vedere nel file creato "newIp.txt"
<?php
$localtemp = $_GET['newIp'];
$prova = $localtemp;
if( $localtemp != null ){
$File = "newIp.txt";
$Handle = fopen($File, 'w');
fwrite($Handle, $localtemp);
fclose($Handle);
}
/* Read logged templog.txt to disply*/
$strFileName = "newIp.txt";
$objFopen = fopen($strFileName, 'r');
if ($objFopen) {
while (!feof($objFopen)) {
$file = fgets($objFopen, 4096);
echo $file;
}
fclose($objFopen);
}
///////
if ($vecchioIp != $localtemp){
if(mail('a me...@gmail.com','oggetto', $localtemp,'From: ..x..@hotmai.com'))
echo 'email inviata correttamente';
else echo 'Errore!';
$vecchioIp = $localtemp;
}
//print("℃");
?>
se tutto funziona vengono creati i 2 file.txt
nota, i file php e la parte function FileHelper del html sono stati fatti su base di sketch presi dalla rete anzi..sono quasi pari pari
diciamo che ogni ora arduino manda su altervista il mio IP pubblico,
quando vado ad aprire la pagina web viene viene memorizzato nel file html il nuovo IP, ed inviato un comando ad arduino: ilMioIp/arduino/stato/99 , ma potrebbe essere/ciaociaomiciomicio
arduino quando riceve questo fa partire varie cose.
(sono un paio di giorni che provo e continua a funzionare)
passo 2 sketch arduino
Pablos, tu che stai sveglio sino a tarda notte come Einstein..
posso proseguire? :