Questo è un argomento a cui ho pensato per un po ', soprattutto perché il concetto di "IoT" è stato molto diffuso negli ultimi tempi.
Inizierò con ciò che intendo quando dico "IoT" . So che il termine IoT potrebbe significare cose diverse e che a volte viene utilizzato in modo improprio. Potrebbe essere un termine che non è chiaramente definito e può portare a grandi discussioni su cosa significhi esattamente, io stesso non conosco la definizione corretta e ampiamente accettata del termine. Quindi per me l'IoT è un concetto, un concetto che definisce la capacità di connettersi a un dispositivo incorporato in remoto tramite Internet o da un altro dispositivo incorporato o da un telefono cellulare . Così semplice.
In questo contesto, lo scopo della connessione non ha importanza, se è possibile connettere un dispositivo nel proprio ufficio con un altro a casa o se è possibile connettersi a un dispositivo a casa dal proprio telefono cellulare, tutto questo tramite Internet, quindi stiamo parlando di dispositivi IoT (i dispositivi integrati, non il telefono).
Quindi, dopo aver concordato cosa intendo per IoT, ora descriverò ciò che sto cercando di ottenere.
Quello che sto cercando di ottenere è proprio quello che descrivo nella mia definizione di IoT.
Voglio avere uno o più dispositivi integrati a casa collegati al mio router Internet, tramite Ethernet o Wi-Fi ed essere in grado di connettersi a loro in remoto con altri dispositivi incorporati in una posizione remota (e per telecomando intendo non sulla stessa rete) e forse anche per essere in grado di connettersi a loro con un'app di monitoraggio sul mio telefono
Ad esempio, potrei avere un semplice dispositivo incorporato che funge da interruttore di accensione / spegnimento collegato al mio apriporta del garage e un altro dispositivo incorporato che funge da grande pulsante rosso sulla mia scrivania al lavoro in modo da poter premere il pulsante rosso sulla mia scrivania e la porta del garage si apre.
Un altro esempio potrebbe essere quello di avere un dispositivo incorporato con funzionalità ADC in grado di monitorare la temperatura di casa mia e inviarmi un avviso quando raggiunge una soglia. La notifica potrebbe essere ricevuta da una semplice app Android o da un altro dispositivo incorporato con un piccolo schermo seduto sulla mia scrivania al lavoro.
Questi esempi possono essere sciocchi ma sono solo per illustrare i possibili scenari e i casi d'uso per quello che sto cercando di ottenere. Alla fine, l'idea è la stessa, collegare un dispositivo incorporato con un altro tramite Internet.
Un'altra cosa da chiarire è che lo scambio di dati tra questi dispositivi sarà molto leggero, solo un paio di byte ogni volta, non è necessario scambiare centinaia di kilobyte tra i dispositivi.
Inoltre, il tipo di "dispositivi incorporati" a cui mi riferisco sono dispositivi semplici ma capaci basati su microcontrollori cortex-m4 da 100 MHz o 200 MHz. E questo è importante chiarire perché non ci saranno librerie Linux o complesse in esecuzione su quei dispositivi. Alla fine, è un tale spreco di risorse e completamente inutile avere un potente processore che esegue Linux solo per accendere e spegnere una lampadina . In ogni caso, sto pianificando di utilizzare un BeagleBoard, un Raspberry Pi o qualsiasi altra scheda simile come dispositivi integrati. Solo microcontrollori perché non è necessaria più complessità di quella.
Non so molto sulle piattaforme IoT e su quei tipi di soluzioni complesse là fuori. Quando ho iniziato questo viaggio alla ricerca di un modo per connettere un dispositivo incorporato a un altro tramite Internet, mi sono imbattuto in un paio di siti con servizi IoT.
So che ci sono alcuni servizi cloud IoT come:
Solo per citarne alcuni. I problemi principali con questi sono costi e complessità. Devi pagare per ottenere quei servizi e devi anche imparare come implementare tutti i servizi che hanno, nel caso in cui ne avessi bisogno, le loro API e forse un sacco di altre cose che non mi sembrano necessarie in grado di scambiare alcuni byte tra i dispositivi. Voglio solo qualcosa di più semplice di quello, qualcosa che posso fare da solo.
Puoi dire che implementare il mio "cloud", se è qualcosa che devo fare, non è semplice e talvolta è meglio usare quel tipo di servizi per semplicità, ma ci sono due ragioni principali che voglio sapere come implementare i miei servizi IoT.
Il motivo principale è che voglio farlo da solo. Non voglio fare affidamento su terzi per collegare i miei dispositivi tra loro e poiché svilupperò il codice e l'hardware per i miei dispositivi, è meglio creare anche i miei mezzi per collegarli come dispositivi IoT.
Il secondo motivo è imparare come farlo. Conoscendo tutte le cose necessarie di cui ho bisogno per raggiungere questo obiettivo, avrò una migliore comprensione del mondo dell'IoT.
Inoltre, voglio menzionare che sono abile in C e uso Linux come il mio sistema operativo quotidiano al lavoro e a casa mia, quindi per favore evita roba di Windows perché questo è inutile per me. Non ho paura di tutto ciò che devo implementare in C per i miei dispositivi embedded o su Linux per implementare tutto ciò che è necessario per raggiungere il mio obiettivo.
Quindi la mia domanda è: che cosa è necessario implementare e dove, per poter connettere due o più dispositivi embedded tra loro allo scopo di scambiare dati tra loro?
Questa domanda Cosa posso usare per creare un IoT sul nostro server? avere qualcosa di simile ma è chiuso e non ha risposte, presuppone anche che venga utilizzata un'infrastruttura cloud già esistente. Quindi non mi aiuta.
Quest'altro post Quali servizi IoT sono disponibili per archiviare / inviare / pubblicare dati generici nel cloud? ha una domanda simile ma l'OP chiede esplicitamente servizi IoT e sto cercando di evitarli.