Go Down

Topic: [Help] Domotica con WebServer Arduino (Read 11 times) previous topic - next topic

pablos

#5
Nov 25, 2011, 10:51 pm Last Edit: Nov 26, 2011, 09:16 am by pablos71 Reason: 1
Quote
Potresti fare un sempice esempio di codice che, premendo un button, mi spedisce una stringa "BaBBuino" a più indirizzi IP contemporaneamente?


no l'esempio tinywebserver è un server e client, finisce li ... si collega con un ip solo invia richieste e riceve risposte. Per inviare dati ad altri ip probabilmente devi specificare  tramite href a chi vuoi mandarlo, però a questo punto tu chiedi un sistema P2P (peer to peer, ciascuna delle parti ha le stesse funzionalità e ognuna di esse puo' iniziare la sessione di comunicazione autonomamente con dei nodi) cosa che non ho mai toccato e direi piuttosto complicato. Sarebbe più semplice utilizzare un dispositivo master e comunicare con gli altri tramite bus. Solo uno deve comandare e gli slave devono controllare e riferire/obbedire al master. Non è impossibile il tuo sistema, ma mooooolto complicato se non hai grandi esperienze informatiche.

ciao
no comment

BaBBuino

Non ci credo! Ma è possibile che non esista un comando o funzione in qualsiasi struttura di linguaggio, JavaScript, HTML, Ajax, ASP o chemminkia ne so, che invia una stringa a più IP?

Una roba del genere:

<html>
<head>Mando stringhe a tutti</head>
<body>

<script language="LinguaggioMiracoloso"></script>

<OnClick.clikkoPulsantone = SpediscString:"BaBBuino" to 192.168.1.1, 192.168.1.2, 192.168.1.3, 192.168.1.4 ecc.  >

</body></html>

pitusso

#7
Nov 26, 2011, 12:50 am Last Edit: Nov 26, 2011, 01:20 am by pitusso Reason: 1
:smiley-roll:
è sufficiente usare un array, e con un ciclo for scorrere tutti gli elementi.
Per poter eseguire le GET (le chiamate) ai nodi in backend, puoi utilizzare ajax.

Ti posto un esempio, grezzo ma funzionante, che alla pressione di un bottone invia agli indirizzi nell'array la url specificata.

Code: [Select]
<!DOCTYPE html>
<html>
<head>
  <script type="text/javascript" src="http://code.jquery.com/jquery-latest.js"></script>
</head>
<body>
<script type="text/javascript">
var babbuini = [ "192.168.0.3", "192.168.0.4", "192.168.0.5", "192.168.0.6"];
$(document).ready(function(){
$("#cmd01").click(
function() {
$.each(babbuini, function() {
$.ajax({
type: "GET",
// url chiamata: http://192.168.0.X/baBBuino?params
url: "http://" + this + "/baBBuino",
data:  "params"
  });
});
});
});
</script>
<input type="button" id="cmd01" value="Invia baBBuino" /><br />
</body>
</html>


Puoi partire da qui.

Risorse utili:
http://api.jquery.com/ (in generale)
http://api.jquery.com/jQuery.get/

BaBBuino

Ottimo! Domani lo implemento in una pagina che sto cominciando a costruire. Se funziona ti regalo una Banana! :D

Mi viene in mente una cosa: il tuo esempio spara le stringhe alla matrice di IP, ma per far si che i BaBBuini leggano la stringa devo aggiornare le singole pagine Web?  :smiley-roll: 

Esempio per capire meglio:

Se io apro la pagina HTML dentro un BaBBuino digitando http:\\192.168.0.1\?Luce_1ON si apre con già il comando della luce1 accesa, e non devo clikkare il relativo pulsante. E così via per altri comandi.

Anche quando premo un pulsante "interno" alla pagina, per accendere una luce, il pulsante mi autospara la stringa Luce_2ON e per far si che ci sia la cattura della stringa c'è un autoaggiornamento della pagina.

In questo caso, quello del tuo esempio, manda la stringa, ok, ma per leggerla deve aggiornarsi la pagina oppure in qualche modo, il WebServer dentro il BaBBuino, la intercetta lo stesso?

pitusso

Quote
In questo caso, quello del tuo esempio, manda la stringa, ok, ma per leggerla deve aggiornarsi la pagina oppure in qualche modo, il WebServer dentro il BaBBuino, la intercetta lo stesso?

..detto semplicisticamente, ajax effettua una chiamata in backend, e il risultato è lo stesso che si otterrebbe digitando quell'indirizzo a manina su un web browser.
Quindi sì, il WebServer riceve cmq la chiamata.
Chiaramente per accendere la luce1, la url che "spari" avrà come params Luce_1ON.
Riporto parte del codice aggiornato su url specifica ( http:\\192.168.0.X\?Luce_1ON)
Code: [Select]
$.ajax({
    type: "GET",
    // url chiamata: http://192.168.0.X/?Luce_1ON
    url: "http://" + this,
    data:  "Luce_1ON"
});

Go Up