Pagina 1 di 6

Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 19:40
da pierinter
Ciao a tutti ragazzi!
un po' di tempo fa vi avevo chiesto se esistevano e quali fossero dei metodi per far comunicare due ''prodotti generici'' in Wireless, senza fili.
La mia intenzione era di stabilire un collegamento tra il mio iPhone e il computer.

Bene, proprio oggi,ci sono riuscito!

Ecco il video :



i passaggi che ho fatto sono stati, sostanzialmente:

-Scrivermi un server in Python. (non conosco python, ma in un modo o nell'altro ci sono riuscito :) )
(quello che io chiamo server è il file chatserver.py che nel video apro dal terminale, a scanso di equivoci, nel caso io non usi proprio la terminologia corretta).
Il server lo faccio lavorare sulla porta 80. Ho letto che nei Macbook è la porta predisposta a questo tipo di applicazioni, ed infatti funziona tutto correttamente

-mi sono scrittol'app da caricare sull'iPhone, che si connette al server (utilizzando l'indirizzo ip del mio computer e il numero della porta), ed è in grado di inviare,ricevere dati al/dal server.

Perfetto, funziona tutto come volevo, la connessione si stabilisce correttamente e riesco a scambiare comandi tra il cellulare e il computer, che ora non fanno ''niente'' ma che potrebbero eventualmente andare a gestire altre cose (luci ecc ecc).

Seppur in via abbastanza elementare e procedendo un po' a tentativi, non conoscendo bene tutte le teorie della comunicazione, protocollo tcp ecc ecc, sono riuscito a fare quello che volevo.

Ora però, questo era solo il primo passo.

Il mio scopo è infatti quello di costruirmi una scheda elettronica che faccia esattamente lo stesso che fa il computer, RICEVERE I COMANDI dal server.

In questo avrei davvero bisogno del vostro aiuto!
Come si potrebbe fare una cosa del genere ?

Innanzitutto, non so dove dovrebbe essere caricato il server. Ok, inizialmente potrei farlo partire da computer, però in un secondo momento vorrei caricarlo su un qualcosa che rimanga sempre attivo, mentre l computer lo spengo, disattivo le connessioni eccetere eccetera..

La schedina dovrebbe quindi essere in grado di :
-connettersi al server, stabilendo una connessione senza errori
-ricevere dati
-comportarsi di conseguenza

se per gli ultimi due punti non dovrei avere particolari difficoltà(forse qualcuna nel ricevere i dati), quello che più mi preme e COME realizzare una schedina che si connetta al mio server.

Vi ringrazio anticipatamente per le risposte e per l'aiuto sempre indispensabile che mi date!
PS: Non tralasciate le cose banali convinti che io le sappia, perché non è così ;) soprattutto su questi argomenti che mi piacciono si, ma mi ci sto avvicinando solo ora !

RaffoTech.
Alias Pierluigi ;)

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:01
da simo85
Il sistema operativo ha delle porte predefinite, sono se non erro fino a 1024 il numero di porte riservate. La numero 80 è quella per la connessione web, ma tu puoi creare un software specifico che lavori con una porta specifica, per esempio la numero 5000.

Suppongo che la tua scheda debba incorporare un modulo RF, e con un micro gestire il trattamento di segnali e comunicazione seriale in ricezione.

Un progetto molto ambizioso ;)

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:07
da pierinter
Sicuramente un po' ambizioso si credo;)
ma ci riuscirò!

Per ora non essendo esperto in python e linguaggi server preferisco restare sull'80, che è la predefinita!

Già che ci sono,una curiosità : quando scrivo il file .py e lo avvio da terminale con il comando sudo python il server si avvia.
come faccio a bloccarlo però? chiudendo il terminale non si chiude, infatti ripetendo il comando sudo mi dice ''address already in use'' riferendosi alla porta 80 credo.
Devo sempre riavviare.
Mi sarebbe utile soprattuto perché ora come ora se devo modificare il file del server e provarlo devo sempre riavviare

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:22
da simo85
Ti consiglio di non usare la numero 80, per i motivi che ti ho scritto prima ed anche per ragioni di sicurezza.

Per terminare un processo usa kill o killall. Per il PID usa top o ps.
Linux non serve riniziarlo nemmeno con una fork bomb :)

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:32
da pierinter
gohan ha scritto:Il sistema operativo ha delle porte predefinite, sono se non erro fino a 1024 il numero di porte riservate. La numero 80 è quella per la connessione web, ma tu puoi creare un software specifico che lavori con una porta specifica, per esempio la numero 5000.


Ma nn mi hai detto nessun motivo prima ;)
Si anch'io avevo pensato a problemi di sicurezza..però in fin dei conti è per prova, e se utilizzare l' 80 rende il tutto un po' più semplice...della sicurezza chi se ne frega :)

Comunque, anche solo a titolo informativo, che problemi potrebbero esserci?

con nessuna delle istruzioni funziona, rimane sempre dentro il server, non ne vuol sapere di uscire!

Tra l'atro ho notato una cosa ''curiosa'' : nel video avevo tolto questa funzione per non avere troppi output, ma prima stampavo ad ogni connessione al server una lista dei client connessi, ed a volte vedevo ''qualcuno o qualcosa'' che era connesso , dopodichè usciva...dopo un po' lo ritrovavo e poi usciva di nuovo.
Boh..cosa potrebbe essere ? non che mi dia fastidio o problemi, però così, per capire:)

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:40
da simo85
Succede che ogni programma di rete usa una porta, e nel tuo caso la potrebbe usare il browser web per esempio. Usare un'altra porta è tanto semplice come impostarla nel server e nel client, poi il mio è un consiglio..

kill non è una istruzione, è un programma per uccidere i processi in esecuzione dalla shell. Vedi man kill.

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:46
da pierinter
Ah ok, quindi il fatto che l'80 sia la porta ''standard'' per questo tipo di connessioni non mi dà nessun vantaggio nell'utilizzo ?
Basta cambiare la sola porta nel server e nel client ?
Se è così allora stasera provo a vedere se va.
Se riuscissi a risolvere anche questo problema del terminale sarebbe ottimo, almeno faccio le prove molto piu velocemente senza dover riavviare !
provo a scrivere man kill nella shell e vedre che succede.

Comunque mi chiedevo, potrebb essere che la porta 80 non sia ''bloccata'' dai firewall mentre altre porte potrebbero esserlo?
In caso che porta mi consiglieresti di utilizzare ?

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:54
da simo85
Se la porta 80 fosse chiusa non potresti scrivere qui. La porta la puoi impostare nel server e nel client. Se non l'hai chiusa con iptables, la usi tranquillamente. Cerca all'interno del file system, con find, il file di elenco delle porte in uso, se non ricordo male si chiama ports. Per la spiegazione sulla tua curiosità, puoi dare una occhiata con netstat, e con nmap.. Vedi sempre il manuale per le istruzioni di uso.

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 20:57
da pierinter
Appena torno dagli allenamenti , cerco un po' e ti dico!
Per terminare il prcesso di python allora come faccio ? sto impazzendo :D, nn riesco

Re: Domotic App - Scheda elettronica

MessaggioInviato: 31 gen 2012, 21:08
da simo85
Esegui top.
Dall' output risali al PID, ed il processo lo puoi uccidere tanto durante l'esecuzione di top schiacciando k e digitando il PID, e poi enter.

Sennò sudo kill <PID>

Se vuoi vedere l'albero dei processi usa pstree (se ricordo bene il nome) eventualmente aiutati con il TAB.

Che esperienza hai con Linux?

EDIT: hai pensato di gestire la scheda tramite il PC aiutandoti con la comunicazione PC e telefono cosi come stai facendo? Se mi è sfuggito perdonami. In ogni caso se ti interessa scrivere il codice in C sia per la comunicazione socket e comunicazione seriale dimmelo..

EDIT2: Rileggendo vedo che usi un sistema operativo Apple, sorry. Se ti interessa posso cercare qualche link utile..