Go Down

Topic: Arduino nano, Web server e Wake on lan (Read 2 times) previous topic - next topic

Smicuz96

Dec 22, 2012, 09:36 pm Last Edit: Dec 22, 2012, 09:43 pm by Smicuz96 Reason: 1
Ciao a tutti, è il mio primo post su questo forum quindi perdonatemi se ho sbagliato qualcosa.
Da un po' di tempo sono rimasto affascinato dalle potenzialità di Arduino. Tuttavia, non mi sono ancora apprestato a comprare una scheda Arduino, in quanto nella mia mente non si è ancora prefigurato un preciso progetto.
Da qualche giorno, però, sto sistemando la rete informatica di casa per sfruttare la funzionalità Wake on Lan presente sui PC (2 portatili e un fisso). Tutti i PC sono connessi via cavo ad un router Netgear DG834Gv4 (con firmware modificato, ma questo non c'entra niente). Il suddetto router, tuttavia, dopo un po' svuola la ARP cache e non mi è più concesso svegliare i pc da remoto.
Premesso che ho già fatto tutti i possibili tentativi possibili e immaginabili per creare un valore statico nella ARP table, ma ho constatato che tutto ciò non mi è possibile e mi è inoltre vietato fare un port forward sull'indirizzo di broadcast (192.168.0.255). In ogni caso, sfruttando qualsiasi altro software sui pc, mi è permesso di mandare pacchetti UDP verso l'indirizzo di broadcast, i quali raggiungono tutti i PC e svegliano solo i PC interessati.

La mia ultima idea sarebbe quella di dotarmi di un Arduino Nano (con relativo ethernet shield), collegarlo alla rete e usarlo come web server. Tramite un'apposita applicazione per Android (il cui sviluppo non è un problema), vorrei essere in grado di mandare tramite Internet una richiesta alla piattaforma Arduino, la quale si occuperà di far girare, tramite broadcast, un Magic Packet contenente uno specifico indirizzo MAC. Inoltre, non mi dispiacerebbe se Arduino riuscisse anche a comunicare all'applicazione lo stato on/off di un determinato PC.

Dite che si può fare?
Scusate per la lunga spiegazione, ma desidero essere il più chiaro possibile.

Michele

Testato

non vedo problemi nel fare quello che chiedi via arduino, il progetto e' interessante. Mi viene in mente un solo problema per ora, che la versione nano non e' compatibile con la ethernet shield meccanicamente. Io prenderei direttamente una Arduino Ethernet, che ingloba su un unica scheda, quindi senza shield, la sezione micro e la sezione ethernet.
mi sono ripromesso piu' volte di affrontare il wake on lan, ma non l'ho mai fatto. Non credevo ci fossero questi problemi. scusa ma quindi normalmente come si gestisce la cosa ? nelle aziende con tanti pc come fanno a non avere problemi con la arp table ?
- [Guida] IDE - http://goo.gl/ln6glr
- [Lib] ST7032i LCD I2C - http://goo.gl/GNojT6
- [Lib] PCF8574+HD44780 LCD I2C - http://goo.gl/r7CstH

Smicuz96

Ciao Testato, grazie innanzitutto per avermi risposto :)
Come progetto avevo preso in considerazione la scheda Arduino Nano perchè su Ebay ho trovato un modulo ethernet fatto apposta per la versione Nano e, a conti fatti, mi converrebbe. Che tu sappia ci sono dei problemi? (Suppongo che questo tipo di ethernet shield non sia ufficiale)
Non so come si comportino le grandi aziende, ma suppongo che prendano dei router che supportino il port forward verso l'ip di broadcast o, altrimenti, permettano di controllare la ARP table. Purtroppo il mio Netgear non permette nessuno dei due..

Già che ci sei potresti darmi una dritta per iniziare ad inquadrare il progetto? Così poi, se tutta la parte teorica fila lascio, posso provare la parte pratica acquistando Arduino :)

Grazie in anticipo,
Michele

pablos

#3
Dec 23, 2012, 01:32 am Last Edit: Dec 23, 2012, 02:58 am by pablos Reason: 1
Quote
Tutti i PC sono connessi via cavo ad un router Netgear DG834Gv4 (con firmware modificato, ma questo non c'entra niente). Il suddetto router, tuttavia, dopo un po' svuola la ARP cache e non mi è più concesso svegliare i pc da remoto.


Questo succede perchè il tuo ruter non ti permette di salvare i MAC su eeprom, il router resetta la flash o una mancata alimentazione mentre le macchine sono spente svuotano la lista ARP. Ho avuto tempo fa una necessità come la tua su 4 macchine collegate via cavo ti serve un router che abbia la funzione Bind ovvero salvare i mac e abbinarli ad un indirizzo ip locale.
Quando una delle 4 macchine viene avviata, il router vede il mac e gli assegna l'ip da me stabilito, questo mi serviva perchè col vnc potevo cercare con certezza il pc giusto da remoto conoscendo l'ip (lasciando su windows/rete "ip automatico") e risvegliarlo conoscendo il mac.
Con il forward completi l'operazione quando chiami il pc da ip pubblico:
programmi una porta es 1234 all'ip 192.168.2.100 protocollo da usare ... per WOL
programmi una porta es 5678 all'ip 192.168.2.100 protocollo da usare ... per VNC


lista delle macchine attualmente accese
ARP List
ID   MAC Address   IP Address   Status    Configure   
1   74-E5-0B-xx-xx-xx    192.168.2.100   Unbound   Load Delete
2   BC-AE-C5-xx-xx-xx   192.168.2.112   Unbound   Load Delete
3   64-A7-69-xx-xx-xx   192.168.2.180   Unbound   Load Delete

lista delle macchine con i rispettivi MAC e gli ip (stabiliti da me) che devono assumere quando si accendono (configurati su eeprom)
ARP Binding:    Disable Enable  
ID    MAC Address             IP Address     Bind         Modify    
1   A4-C0-E1-xx-xx-xx   192.168.2.101    y   Modify Delete   
2   BC-AE-C5-xx-xx-xx   192.168.2.112    y   Modify Delete   
3   64-A7-69-xx-xx-xx   192.168.2.180    y   Modify Delete   
4   1C-6F-65-xx-xx-xx   192.168.2.114    y   Modify Delete   
5   54-9B-12-xx-xx-xx   192.168.2.190    n   Modify Delete
6   74-E5-0B-xx-xx-xx   192.168.2.100    n   Modify Delete

prendi un router che abbia questa funzione

se poi vuoi sapere quali macchine sono ON da web server allora aggiungi un arduino con 4 ingressi, ma i modi sono molti per saperlo da remoto senza un particolare sistema.

Il primo che mi viene in mente è google drive (se possiedi un account google) inviando gli eventi su un foglio elettronico tipo excel con uno script
il secondo una mail lanciata da ciascuna macchina con un file.bat allo start, magari messo su esecuzione automatica all'avvio

es:
crea un file bach  automail.bat modificando i tuoi parametri e mettilo su esecuzione automatica all'accensione del pc
bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da ufficio" -b "Computer N°1 ACCESO"

Ottimo per sapere quando la segretaria arriva in ufficio visto che la prima cosa che fa è accendere il pc e poi togliere la giacca  :D :D

bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da casa" -b "Computer moglie ACCESO"

Ottimo per sapere quando la moglie ti dice "amore oggi non ho avuto un minuto libero" ahahahahahha
....



ciao
no comment

Smicuz96

Questo succede perchè il tuo ruter non ti permette di salvare i MAC su eeprom, il router resetta la flash o una mancata alimentazione mentre le macchine sono spente svuotano la lista ARP. Ho avuto tempo fa una necessità come la tua su 4 macchine collegate via cavo ti serve un router che abbia la funzione Bind ovvero salvare i mac e abbinarli ad un indirizzo ip locale.
Quando una delle 4 macchine viene avviata, il router vede il mac e gli assegna l'ip da me stabilito, questo mi serviva perchè col vnc potevo cercare con certezza il pc giusto da remoto conoscendo l'ip (lasciando su windows/rete "ip automatico") e risvegliarlo conoscendo il mac.
Con il forward completi l'operazione quando chiami il pc da ip pubblico:
programmi una porta es 1234 all'ip 192.168.2.100 protocollo da usare ... per WOL
programmi una porta es 5678 all'ip 192.168.2.100 protocollo da usare ... per VNC


lista delle macchine attualmente accese
ARP List
ID   MAC Address   IP Address   Status    Configure   
1   74-E5-0B-xx-xx-xx    192.168.2.100   Unbound   Load Delete
2   BC-AE-C5-xx-xx-xx   192.168.2.112   Unbound   Load Delete
3   64-A7-69-xx-xx-xx   192.168.2.180   Unbound   Load Delete

lista delle macchine con i rispettivi MAC e gli ip (stabiliti da me) che devono assumere quando si accendono (configurati su eeprom)
ARP Binding:    Disable Enable  
ID    MAC Address             IP Address     Bind         Modify    
1   A4-C0-E1-xx-xx-xx   192.168.2.101    y   Modify Delete   
2   BC-AE-C5-xx-xx-xx   192.168.2.112    y   Modify Delete   
3   64-A7-69-xx-xx-xx   192.168.2.180    y   Modify Delete   
4   1C-6F-65-xx-xx-xx   192.168.2.114    y   Modify Delete   
5   54-9B-12-xx-xx-xx   192.168.2.190    n   Modify Delete
6   74-E5-0B-xx-xx-xx   192.168.2.100    n   Modify Delete

prendi un router che abbia questa funzione

se poi vuoi sapere quali macchine sono ON da web server allora aggiungi un arduino con 4 ingressi, ma i modi sono molti per saperlo da remoto senza un particolare sistema.

Il primo che mi viene in mente è google drive (se possiedi un account google) inviando gli eventi su un foglio elettronico tipo excel con uno script
il secondo una mail lanciata da ciascuna macchina con un file.bat allo start, magari messo su esecuzione automatica all'avvio

es:
crea un file bach  automail.bat modificando i tuoi parametri e mettilo su esecuzione automatica all'accensione del pc
bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da ufficio" -b "Computer N°1 ACCESO"

Ottimo per sapere quando la segretaria arriva in ufficio visto che la prima cosa che fa è accendere il pc e poi togliere la giacca  :D :D

bmail -s smtp.fastwebnet.it -t nomecognome@gmail.com -f nome.cognome@fastwebnet.it -h -a "Da casa" -b "Computer moglie ACCESO"

Ottimo per sapere quando la moglie ti dice "amore oggi non ho avuto un minuto libero" ahahahahahha
....



ciao   

Ciao, grazie pervla spiegazione, sicuramente mi tornerà utile :)
Tuttavia, non vedo perchè dovrei comprare un nuovo router quando potrei fare tutto tramite Arduino. Sostituire il mio Netgear, che funziona perfettamente, potrebbe sì risolvere il problema ARP, ma poi dovrei prendere comunque Arduino per controllare lo stato dei PC. Spesa doppia per lo stesso risultato xD.
Potreste piuttosto darmi qualche dritta per iniziare a progettare il sistema web server-wake on lan? :)

Grazie ancora,
Michele

Go Up