Domotica fai da te con Arduino - quale protocollo di comunicazione?

Salve a tutti, ho praticamente concluso un progetto personale per la domotica casalinga con Arduino. Ho sviluppato un applicativo server in C# che fa da centralizzatore per la gestione della casa. Esso a sua volta interagisce con gli arduino installati. Gli attuatori sono quasi tutti compatibili Arduino, quindi direttamente collegabili.

La mia domanda è la seguente: al momento dall'applicativo server mi connetto all'arduino tramite l'ethernet shield con una semplice connessione socket. Ma sento in giro di gente che utilizza altri protocolli come il modbus; qualcuno puo spiegarmi se nel mio caso migliorerebbe qualcosa? Oppure in quali casi conviene utilizzare il modbus (ovviamente escludento i casi in cui l'attuatore o sensore comunica solo con questo protocollo...). Qualcuno di voi ha utilizzato altri standard di comunicazione?

Grazie infinite.

Ti invitiamo a presentarti (dicci quali conoscenze hai di elettronica e di programmazione) qui: Presentazioni e a leggere il regolamento: Regolamento - qui una serie di schede by xxxPighi per i collegamenti elettronici vari: ABC - Arduino Basic Connections - qui le pinout delle varie schede by xxxPighi: Pinout - qui una serie di link [u]generali[/u] utili: Link Utili

Il modbus pur potendo essere multimaster ,anche se di solito nelle applicazioni più semplici ha un solo master, non potrà mai rilevare le collisioni come ora può fare il tuo sistema ethernet quindi è migliore sotto tutti i punti di vista, eccetto il costo perchè ovviamente costa molto di più, un alternativa alla LAN è il CAN che rileva le collisioni ed è hot plug , costa poco più di un modbus ma ha una immunità ai disturbi superiore alla LAN anche se è più lento ma nel caso della domotica non è proprio un problema.

La LAN andrebbe anche bene se parlassimo di microcontrollori di una certa importanza, qui parliamo di micro ridicoli dove la pensatezza del trotocollo porta via il 90% delle risorse facendoti perdere parecchi eventi: Se si tratta di leggere un ingresso permanente o di inviare un comando permanente non è più di tanto un problema aspetti quei 400-500 ms, ma ad esempio la pressione di un pulsante per attivare un relè passo-passo dove la durata è minore di 400ms ne perdi il 50% .... spesso devi premerlo 2-3 volte (provato e confermato) Quindi no, con gli arduini a 16Mhz creare dei nodi LAN persistenti non è la soluzione migliore e comunque sarebbe un sistema instabile a lungo termine. Al massimo se proprio vuoi usa il protocollo UDP

http://www.navigaweb.net/2014/06/differenza-tra-tcp-e-udp-nella.html

Mmmm, ho visto solo ora che è del 26 giugno la domanda, i soliti utenti morti ....