[Help2] Domotica con WebServer Arduino

Ho un altro piccolo problema con l’interfaccia che mi richiama ogni singolo web-BaBBuino.

L’interfaccia è questa:

Ora succede che se la chiamo dalla rete interna, ovvero premo un pulsante (che non è altro che un link) che mi chima, chessò, l’IP 192.168.1.4, la pagina mi si apre e funziona.

Se faccio lo stesso da “fuori” ovvero da internet (tramite un servizio di DNS dinamico) arrivo all’interfaccia correttamente, ma quando premo un pulsante di questa, non mi apre il mio IP della mia rete, ma mi apre il 192.168.1.4 di Internet (che ovviamente non esiste).

Il codice di un pulsante è semplicissimo: (in questo caso c’è anche la porta)

Come lo modifico per richiamare l’IP della mia rete invece di quella Internet?

Hai due soluzioni, una che va sicuramente, l'altra che è teoricamente possibile ma dubito esista.

La prima: sul router inoltri la porta 8000 sul server interno, in modo che sulla pagina che hai non ci sia il link a 192.168... ma il link al tuahome.dyndns.org:8000 Così facendo anche da casa usi il router come ponte (non tutti i router, specialmente quelli da pochi soldi, lo permettono. Inoltre a tutti gli effetti la porta 8000 della tua adsl porta al dispositivo interno in modo diretto).

La seconda: teoricamente dicevo possibile perché non conoscendo le ultime news in fatto di java, php, ajax è altre amenità web-related, magari è possibile fare fare al server web una sorta di collegamento interno verso il 192.168.x.x:8000 e mandarti l'output video attraverso la pagina web. E' solo teoria. Fai una ricerca...

Ah! Io ho dato per scontato che quella pagina che visualizzi sia su un pc interno alle rete, il quale POI gestisce (gl)i arduino/i. Se invece la pagina che visualizzi da fuori è SULL'arduino web server, basta che nel link metti solo il link alla pagina, non comprensivo di IP :P

Alura...

Quella pagina HTML sta dentro un PC Touch screen, che è visto da fuori con un Port Forwarding.

Quindi è sempre dentro la rete interna, anche se non risiede in un arduino. Da quella poi mi richiamo gli arduino.

Il problema è quando arrivo da "fuori". Giustamente il Web Browser mi va a cercare il 192.xxx da qualche parte per il mondo, non dentro la mia rete locale.

aventrax: Hai due soluzioni, una che va sicuramente, l'altra che è teoricamente possibile ma dubito esista.

La prima: sul router inoltri la porta 8000 sul server interno, in modo che sulla pagina che hai non ci sia il link a 192.168... ma il link al tuahome.dyndns.org:8000 Così facendo anche da casa usi il router come ponte (non tutti i router, specialmente quelli da pochi soldi, lo permettono. Inoltre a tutti gli effetti la porta 8000 della tua adsl porta al dispositivo interno in modo diretto).

La seconda: teoricamente dicevo possibile perché non conoscendo le ultime news in fatto di java, php, ajax è altre amenità web-related, magari è possibile fare fare al server web una sorta di collegamento interno verso il 192.168.x.x:8000 e mandarti l'output video attraverso la pagina web. E' solo teoria. Fai una ricerca...

Mi era sfuggita questa risposta.

Non ho capito bene la prima, mentre per la seconda è proprio quello che immaginavo esistesse, ma non so con che termini cercare!

Probabilmente ci sarebbe da fare qualche magheggio con le porte.

Non so neanche io, ma farti un desktop remoto col touch screen? Soluzione da lamer ma non me ne intendo di accrocchi web-related =P

Con il lampo di genio delle porte forse ho risolto:

il pulsante, invece che linkare al 192.168.1.xxx, (che ovviamente mi cercherebbe tale indirizzo su internet) mi linka un aporta in questo modo:

onclick="window.location='http://BaBBuino.dyndns.org:8000 per il BaBBuino della (esempio) sala

onclick="window.location='http://BaBBuino.dyndns.org:8001 per il BaBBuino della cucina, e così via.

Ora provo a riprogrammarmi 2 o 3 baBBuini e poi vi dico se funziona.

Funziona!

Ho dovuto modificare così il codice del pulsante:

così per il 2° baBBuino:

e :8002, :8003… e a seguire per tutti i BaBBuini della rete di Casa.

Devo solo riprogrammare tutti i babbuino con porte diverse.

Eh certo che funziona, bene che il tuo router lo gestisca… non tutti forwardano per dentro una connessione che viene da …dentro :o
Occhio che da fuori chiunque li vede… e pensa anche alla sicurezza.

Si, ho dovuto mettere momentaneamente il Pc Touch screen in DMZ, e adesso lo vede tutto il mondo. Il Pc è vuoto, nel senso che serve solo per l'automazione della casa. Al massimo mi possono accendere e spegnere le luci... :D

Domani con calma provo a configurare porta per porta.

A proposito, devo mettere l'indirizzo del PC o dell'arduino per il port forward?

In realtà ho il Pc messo come Server attraverso un software per WebServer chiamato Abyss, che mi gestisce il LogIn. Devo solo sbattermi a configurarlo.

lato router:

apri 8000 forward a 192.168.1.1:8000 apri 8001 forward a 192.168.1.2:8000 apri 8002 forward a 192.168.1.3:8000

in altre parole non serve che gli arduini abbiano una porta diversa.

Ciao

Azz! Grazie! Provo subito prima di andare a dormire!

:-D tutto giusto quello detto fin'ora, ma non è molto pulito, aprire N porte per ogni arduino sul router

La seconda: teoricamente dicevo possibile perché non conoscendo le ultime news in fatto di java, php, ajax è altre amenità web-related, magari è possibile fare fare al server web una sorta di collegamento interno verso il 192.168.x.x:8000 e mandarti l'output video attraverso la pagina web. E' solo teoria. Fai una ricerca...

la soluzione più pulita è questa, io l'ho adottata proprio per gestire connessioni esterne. Richiede però un webserver locale (nella tua rete), il quale raccoglie la richiesta GET/POST, e la riprocessa per inviarla ai nodi locali. Utilizzando fsockopen puoi infatti effettuare la chiamata agli arduino in rete direttamente dalla macchina in cui gira il web server locale: http://php.net/manual/en/function.fsockopen.php

Il Web Server c'è. E' il PC Touch screen che mi controlla tutto.

Ho installato un Software che si chiama Abyss che fa da WebServer, con numero macchina 192.160.1.2 (ho escluso il DHCP) e con cartella Web con Index.html, che è proprio ilfile di ingresso al sistema (quello con i pulsantoni che mi richiamano i BaBBuini.

Quindi, quando digito http://babbuino.dyndns.org/index.html, mi si apre una finestra di LogIn (data dal software Abyss) e poi mi si apre la index.html, con i pulsantoni che dovrebbero rimandarmi alla sottorete.

Probabilmente per rimandare i pulsanti ai 192.168.1.XXX locali, invece che quelli sparsi per il mondo, sarebbe sufficiente configurare questo WebServer software, reindirizzando le chiamate-link.

Cmq mi studio il tuo link, anche se sfruttando le porte (soluzione che non mi piace perchè non ho più i BaBBuini sulla 80 di default) ho risolto.

BaBBuino: Cmq mi studio il tuo link, anche se sfruttando le porte (soluzione che non mi piace perchè non ho più i BaBBuini sulla 80 di default) ho risolto.

Ottima la soluzione di Leo, ad ogni modo i babbuini puoi tenerli sull'80 di default, solo sul router devi usare porte diverse...

aventrax: Ottima la soluzione di Leo

Eh? :sweat_smile:

leo72:

aventrax: Ottima la soluzione di Leo

Eh? :sweat_smile:

pitusso! Sorry :P