Ciao a tutti, ragazzi!
Sto continuando con questo progetto ma, come al solito, i problemi non sembrano abbandonarmi... Ora, quello che stavo cercando di fare è acquisire il value di una checkbox presente su una pagina php che genera di volta in volta, dinamicamente una pagina html contenente una tabella con dei dati. Allego di seguito uno screen per far meglio comprendere la questione:
Ora, quello che fa questa pagina è caricare dei dati da un db mysql per poi inizializzare una tabella con essi; il db è così strutturato:
code floor type device status date time
1115473 second light luce camera ON 2014-04-26 13:26:14
1118545 second light luce notturna OFF 2014-04-23 12:32:46
Nel mio programma php, quello che faccio è semplicemente far assegnare alle checkbox a lato di ogni riga come name il nome del piano selezionato (in questo caso il secondo) e come value il codice della rispettiva luce da controllare (ad esempio, se mi trovo nella riga della luce della luce notturna, i dati della checkbox saranno name=secondo value=1118545).
Quello che sto cercando di fare, mediante javascript, è, una volta rimossa o inserita la spunta sulla checkbox, inviare il codice di essa ad Arduino, in modo da inserirlo poi all'interno dello sketch in una variabile e utilizzare la funzione per inviarlo via radio.
Inserisco di seguito le porzioni di codice, in modo da consentirvi di comprendere meglio il tutto:
//pagina php che genera la tabella, recuperando prima da una form i dati relativi alla scelta effettuata, ovvero in questo caso "controllo luci" e "piano secondo"
<html>
<head>
<script type="text/javascript" src="/sd/scripts/zepto.min.js"></script>
<script type="text/javascript">
var value;
var piano;
function sendVal() {
//bind the slider value to the URL
$.get('/arduino/luci/' + value, function(){
}
);
}
function invia(val) {
value = val;
//get pin from <select>
piano = $('#piano').val();
//send value
sendVal();
}
</script>
</head>
<body>
Seleziona un apparecchio da controllare.
<?php
$piano=$_POST['floor'];
$scelta=$_POST['scelta'];
echo("<title>Controllo $scelta piano $piano</title>");
echo("
<B> Gestione $scelta piano $piano:
</B><table border=1>");
switch ($scelta) {
case luci:
$user=$_SESSION['user'];
$off='http://www.psdgraphics.com/file/light-bulb-icon.jpg';
$on='http://www.psdgraphics.com/file/glossy-light-bulb.jpg';
mysql_connect("server", "user", "pwd") or die ("Connessione fallita");
mysql_select_db("db") or die ("Connessione al db fallita");
$sql="SELECT dispositivo, stato, codice FROM am_prese WHERE piano='$piano' AND tipo='luci' ORDER BY dispositivo ASC";
$ris=mysql_query($sql) or die ("Query fallita");
//echo("<form action=comanda.php method=post>");
echo("<tr><th>Descrizione</th><th>Stato</th><th>Cambia</th></tr>");
while($x=mysql_fetch_array($ris)){
echo("<tr>");
if($x[1]=='ON')
echo ("<td>$x[0]</td><td><img src='$on' width=150 height=120></td><td><center><input type=checkbox name=$piano id=piano value='$x[2]' checked onchange=invia(this.value)></center></td>");
else
{
$spento=$x[2]+3;
echo ("<td>$x[0]</td><td><img src='$off' width=150 height=120></td><td><center><input type=checkbox name=$piano id=piano value=$spento onchange=invia(this.value)></center></td>");
}
echo("</tr>");
}
echo ("</table>");
mysql_close();
break;
?>
//a partire dall'esempio ledPin di Matteo Loglio, lo sketch che dovrebbe -ma che non lo fa- recuperare i valori delle checkbox e inviare il codice via radio...
#include <Bridge.h>
#include <YunServer.h>
#include <YunClient.h>
#include <RCSwitch.h>
// Listen on default port 5555, the webserver on the Yun
// will forward there all the HTTP requests for us.
YunServer server;
String startString;
RCSwitch mySwitch = RCSwitch();
void setup() {
Bridge.begin();
server.listenOnLocalhost();
server.begin();
Serial.begin(9600);
mySwitch.enableTransmit(10);
}
void loop() {
// Get clients coming from server
YunClient client = server.accept();
// There is a new client?
if(client) {
//readStringUntil() "consumes" the string.
//this means that if command was led/20, now
//it's just 20.
String command = client.readStringUntil('/');
if (command == "luci") {
//also parseInt "consumes" the string
int value = client.parseInt();
mySwitch.send(value, 24); //funzione che invia il codice della checkbox cliccata via radio
}
client.stop();
}
}
Il problema è che tutto ciò non va... Arduino riceve sì, ma riceve numeri folli =( Se clicco sulla prima checkbox, che di default è checked perchè sul database lo stato di quella luce è ON, sul serial monitor di Arduino leggo il valore 1361, che non sembra avere apparentemente alcuna relazione con i valori presenti in db...
Insomma, sono abbastanza disperato con sta funzione Javascript... Qualcuno mi può dare una mano, per favore?
Grazie in anticipo a tutti.