Ciao a tutti, sto usando la formidabile coppia arduinoUNO-WiFi shield per connettermi al mio computer attraverso la rete internet;
Uso le librerie WiFI.h per ottenere un ip , e poi uso la socketIOClient per connettermi al pc con le socket.io...
Sul computer ho un server che ascolta la porta 3000..
Ma purtroppo non riesce a connettersi al server, questo è lo sketch:
#include "SocketIOClient.h"
#include "Ethernet.h"
#include "SPI.h"
#include "WiFi.h"
SocketIOClient client;
char ssid[] = "MIA RETE"; // your network SSID (name)
char pass[] = ''MIA PASS"
char hostname[] = "MIO_IP";
int port = 3000;
int status= WL_IDLE_STATUS;
void setup()
{
Serial.begin(9600)
status = WiFi.begin(ssid, pass);
if ( status != WL_CONNECTED) {
Serial.println("Couldn't get a wifi connection");
// don't do anything else:
while(true);
}
else if(status == WL_CONNECTED){
Serial.println("Connected to wifi");
IPAddress ip;
ip = WiFi.localIP();
Serial.println(ip);
Serial.println("\nConnessione al server ..\n"); /*ok fino a qui*/
// client.setDataArrivedDelegate(ondata);
client.connect(hostname,3000);
// if (!client.connect(hostname,3000)) Serial.println(F("Not connected."));
if (client.connected()) {
client.send("Client here!"); }
else if(!client.connected()){
Serial.println("errore connessione"); }
}
}
void loop()
{
client.monitor();
}
// websocket message handler: do something with command from server
void ondata(SocketIOClient client, char *data) {
Serial.print(data);
}
cosa puo essere?
edit by mod: per favore includere il codice usando gli appositi tag
urca.. allora se fai ipconfig (windows) o ifconfig (linux) avrai l'elenco delle tue schede di rete. Il tuo ip LOCALE sarà PROBABILMENTE del tipo 192.168.1.X
il tuo ip REMOTO lo vedi da siti come www.mioip.com e normalmente è unico per tutti i PC (in pratica l'ip remoto è del router, che "nasconde" i vari PC dietro la NAT, che devi impostare per far vedere i PC all'esterno, in pratica quello che si fa per i server o programmi p2p come emule e company).
se hai fastweb dillo subiuto che è molto differente.
@Lesto : non sto usando l'ip globale, no no... sto usando l'ip locale che leggo ogni volta facendo ''ifconfig'' su ubuntu... Voglio semplicemente restare nella rete locale e mandare dei maledetti pacchetti Json ad un server che gira sul mio pc.... un server in javascript con node.js......
@Pitusso: si, sto usando la 1.05 e non ho mai aggiornato il firmware; domani mattina ho a disposizione la shield quindi provo ad utilizzare la 1.04 oppure ad aggiornare il firmware....
No, non credo sia problema di firewall, perchè all'interno della rete riesco a raggiungere il mio computer facendo un ping da un altro pc...
Il problema secondo me è nella libreria, ovvero SocketIOClient.h ; sono andato a vedere la definizione della funzione "connect(hostname,port) ",
ed è fatta cosi :
bool SocketIOClient::connect(char thehostname[], int theport) {
if (!client.connect(thehostname, theport)) return false;
hostname = thehostname;
port = theport;
sendHandshake(hostname);
return readHandshake();
}
il problema è quell' realHandshake() che non so che cosa faccia; e mi risulta FALSE..
il fatto che tu PINGHI non vuol dire che le porte siano aperte.
Il ping spesso NON è filtrato dai firewall, mentre, al contrario, i firewall bloccano le porte. Win 7 (ma forse anche vista) in poi hanno un fw intgrato.
Qundi:
pinga da remoto, se KO c'è un problema di connessione;
telnetta da remoto, se KO c'è un problmea di firewall/nat/configurazione del server
Ho capito, sei stato chiaro..
comunque, facendo le ultime prove adesso, vedo che il mio arduino si connette alla rete locale;
mi stampa l'ip dell'arduino;
ma quando va a fare la connect ovviamente si blocca, e il server non stampa niente sulla console...
Non so neanche dove cercare l'errore, se nel server, anche se credo di no, oppure nella definizione della connect, nel SocketIOCLient.cpp
zio90: @Pitusso: si, sto usando la 1.05 e non ho mai aggiornato il firmware; domani mattina ho a disposizione la shield quindi provo ad utilizzare la 1.04 oppure ad aggiornare il firmware....
hai fatto? anche io avevo quel problema sul connect ma dopo che ho aggiornato ho risolto
Adesso aggiorno il firmware poi vi dico...
Comunque sono CERTO che nella lan non ci siano problemi, da un altro pc funziona tutto.. il server è raggiungibile e non ci sono intoppi...