Internetul Obiectelor (Internet of Things) [304563]

[anonimizat] a putea evalua riscurile cu care se confruntă și pentru a decide asupra contramăsurilor aplicabile. [anonimizat], foarte relevantă pentru persoanele care locuiesc în imediata apropiere a centralelor nucleare.

Datorită echipamentului necesar și a [anonimizat].

[anonimizat]-accidentală a unei situații de dezastru nuclear este complicată de nivelurile ridicate de frică asociată cu riscul nuclear. Astfel, din cauza pierderii încrederii în comunicarea oficială de criză, s-a [anonimizat], se bazează foarte mult pe rețelele de socializare pentru a [anonimizat] a împărtăși surse de informații alternative și pentru a crea hărți de radiații. În literatura științifică au fost propuse diferite aplicații pentru a [anonimizat], [anonimizat] a [anonimizat] a descoperi nevoile de informație și pentru a identifica atitudinile și emoțiile oamenilor.

[anonimizat], [anonimizat], pentru a permite cetățenilor să își construiască propriile soluții de monitorizare a [anonimizat]. [anonimizat], Twitter. [anonimizat]-un serviciu de cloud pentru o analiză ulterioară folosind algoritmi de învățare automată (Machine Learning).

[anonimizat]. [anonimizat] o [anonimizat].

CAPITOLUL 1 – NOȚIUNI TEORETICE PRIVIND INTERNETUL OBIECTELOR (INTERNET OF THINGS) ȘI MEDIILE DE PROGRAMARE

Internetul Obiectelor (Internet of Things)

Istoric

Conceptul unei rețele de dispozitive inteligente (smart) a fost discutat la începutul anilor 1980 [anonimizat] o [anonimizat], [anonimizat].

În lucrarea din 1991 despre computerele omniprezente, "The Computer of the 21st Century", în locații academice precum UbiComp și PerCom, a fost elaborată lucrarea lui Mark Weiser din 1991 despre viziunea contemporană a Internetului Obiectelor. În 1994, Reza Raji a descris conceptul în IEEE Spectrum drept "pachete de date (în mișcare) [anonimizat] de noduri, astfel încât să integreze și să automatizeze totul de la aparatele de uz casnic la fabrici întregi".

Între 1993 și 1996 mai multe companii au propus soluții cum ar fi Microsoft sau NEST Novell. Cu toate acestea, abia în 1999, domeniul a căpătat amploare. Bill Joy a conceput comunicarea Device to Device (D2D), în cadrul "Six Webs", prezentat la Forumul Economic Mondial de la Davos în 1999.

Conceptul de Internet al Obiectelor a devenit popular în 1999, prin intermediul Centrului Auto-ID la MIT (Massachusetts Institute of Technology) și al publicațiilor de analiză a pieței. Identificarea prin frecvență radio (RFID) a fost văzută de Kevin Ashton (unul dintre fondatorii Centrului Auto-ID) ca o condiție prealabilă pentru Internetul obiectelor în acel punct. Ashton preferă sintagma "Internet pentru obiecte". Dacă toate obiectele și oamenii din viața de zi cu zi ar fi echipați cu sisteme de identificare, computerele ar putea să le gestioneze și să le inventarieze. Pe lângă utilizarea RFID, etichetarea lucrurilor poate fi realizată prin tehnologii precum comunicațiile de pe câmp, codurile de bare, codurile QR și watermark. În interpretarea sa inițială, una dintre primele consecințe ale implementării Internetului Obiectelor prin echiparea tuturor obiectelor din lume cu dispozitive minuscule de identificare sau identificatori care pot fi citite de un automatism ar fi transformarea vieții de zi cu zi. De exemplu, controlul imediat și neîntrerupt al inventarului ar deveni omniprezent. Abilitatea unei persoane de a interacționa cu obiectele ar putea fi modificată de la distanță pe baza nevoilor imediate sau prezente, în conformitate cu acordurile existente privind utilizatorii finali. Un alt exemplu ar putea fi ca o astfel de tehnologie ar putea acorda editorilor de filme cinematografice un control mult mai mare asupra dispozitivelor private ale utilizatorilor finali, prin aplicarea restricțiilor privind drepturile de autor și gestionarea drepturilor digitale, astfel încât abilitatea unui client care a cumpărat un disc Blu-Ray să vizioneze filmul ar putea deveni dependentă de decizia dreptului de autor.

Tendințe și predicții

Internetul Obiectelor este un concept care se referă la interconectarea dispozitivelor informatice în infrastructura de internet cu scopul principal de a face viața mai ușoară. Este de așteptat ca acest concept să ofere conectivitate avansată la dispozitive, sisteme și servicii, care depășește un alt concept Machine-to-Machine (M2M), realizând o acoperire vastă a mai multor domenii, aplicații și protocoale.

Până în 2020, se estimează că vor fi, conform IDC, 4 miliarde de oameni conectați la IO, peste 25 de milioane de aplicatții cu informații stocate in 50 de trilioane de GB de date, acesta fiind doar primul pas către ”Internetul tuturor lucrurilor”.

Fig. 1.1. – Estimare dezvoltare IO

Din punct de vedere tehnologic, IO devine o imensitate de coduri QR, aplicații NFC (Near Field Communication) și SAAS (Software-As-A-Service), senzori, Ipv6, Wi-Fi etc.

Big Data este un alt proces de analizare a marilor baze de date pentru căutarea și găsirea unor modele-tipare între diferite variabile, pentru aplicarea lor în continuare.

Condusul prin sisteme ale IO

Acum se poate conduce prin sisteme ale IO. Producătorul de mașini electrice Tesla descarcă automat actualizările de service și, dacă este necesar, planifică în mod autonom un șofer să aleagă vehiculul și să-l aducă la un service Tesla.

Haine conectate prin IO

Noul Polo Tech Shirt de la Ralph Lauren emite performanțele atletice biometrice cum ar fi ritmul cardiac, intensitatea mișcării către un serviciu de cloud. Se pot integra cu alte articole de purtat cum ar fi FitBit, pentru a primi o experiență unică a performanței atletice.

Experienta Roger Federer cu ajutorul IO

Compania franceză de tenis Babolat a adăugat senzori și conectivitate în unele dintre rachetele sale. Sistemul Play Pure Drive permite jucătorilor să analizeze viteza, modul în care mingea se învârte și impactul mingii pentru îmbunătățirea jocului.

Iluminatul cu IO

Becurile cu LED-uri Philips pot permite consumatorilor să controleze iluminarea cu ajutorul tabletei sau smartphone-ului. Utilizatorii pot programa luminatoarele să se estompeze noaptea sau să clipească dacă detectează un intrus.

Orase inteligente (Smart Cities)

Există multe exemple de acest gen. În Singapore, de exemplu, autoritățile orașului testează sisteme inteligente pentru gestionarea parcării și eliminarea deșeurilor pentru a se adapta modelelor zilnice și săptămânale.

Realizarea unei agriculturi mai ușoare

Sistemul John Deere Field Connect monitorizează nivelurile de umiditate și transmite datele către agricultori. Senzorii de mediu măsoară, de asemenea, "temperatura aerului și a solului, viteza vântului, umiditatea, radiația solară, precipitațiile și umiditatea frunzelor", pentru o reușită cât mai mare a producției.

Zborul cu IO

Aeronavele Boeing 787 ale companiei Virgin Airlines sunt conectate în totalitate – de la motoare, până la clapete, la sistemul de aterizare. Se pot obtine peste jumatate de terabyte de date dintr-un singur zbor de la diferitele dispozitive conectate la internet.

Aplicații pentru vârstnici

Senzorii specializați sunt dispuși în spații de locuit pentru a monitoriza starea de sănătate și bunăstarea generală a cetățenilor în vârstă, asigurând în același timp că se administrează un tratament adecvat și ajută oamenii să își recâștige mobilitatea pierdută prin terapie.

Proprietatea conectată la IO

Bosch a dezvoltat o cameră de securitate compatibilă cu tehnologia IP care va permite conectarea la sistemul propriu de securitate atunci când proprietarii nu sunt acasă. Accesarea aplicației iPhone Bosch oferă o vizualizare în timp real, indiferent unde se află proprietarii.

Datele traficului

În multe orașe, mașinile fără șofer vor transmite prin senzorii aflați pe străzi oficialilor orașului datele adecvate pentru a îmbunătăți pattern-urile de trafic.

Protocoale folosite în Internetul Obiectelor

Protocoalele folosite în IO se pot organiza astfel:

Infrastructură (ex: 6LowPAN, IPv4 / IPv6, RPL)

Identificare (ex: EPC, uCode, IPv6, URI)

Comunicare / Transport (ex: WiFi, Bluetooth, LPWAN)

Descoperire (ex: Web fizic, mDNS, DNS-SD)

Protocoale de date (ex: MQTT, CoAP, AMQP, Websocket, Node)

Managementul dispozitivelor (ex .: TR-069, OMA-DM)

Semantic (ex: JSON-LD, Modelul Web Thing)

Cadre cu mai multe straturi (Multi-layer Frameworks) (ex: Alljoyn, IoTivity, Weave, Homekit)

Securitate

Industria verticala (Connected Home, Industrial etc).

Infrastructură

IPv6 – "IPv6, este un protocol de internet cu comutare de pachete și oferă o transmisie datagramă end-to-end în mai multe rețele IP.

6LoWPAN – "6LoWPAN este un acronim Ipv6 pentru rețelele personale fără fir de rețea cu consum de energie redusă, care este un strat de adaptare pentru conexiunile IPv6 prin legăturile IEEE 802.15.4 Acest protocol funcționează numai în gama de frecvențe de 2,4 GHz cu o viteză de transfer de 250 kbps.

UDP (User Datagram Protocol) – Un protocol OSI de transport simplu pentru aplicațiile de rețea client / server, bazate pe Internet Protocol (IP). UDP este principala alternativă la TCP și unul dintre cele mai vechi protocoale de rețea existente, introdus în 1980. UDP este adesea folosit în aplicații speciale pentru performanța în timp real.

QUIC (Quick UDP Internet Connections) acceptă un set de conexiuni multiplexate între două puncte finale pe User Datagram Protocol (UDP) și a fost proiectat să ofere o protecție de securitate echivalentă cu TLS / SSL cu estimarea lățimii de bandă în fiecare direcție pentru a evita congestionarea.

Aeron – Unitate de transfer UDP multicast și transport de mesaje IPC.

UIP – UIP este o stivă TCP / IP open source capabilă să fie utilizată cu microcontrolere de 8 și 16 biți. Acesta a fost inițial dezvoltat de Adam Dunkels de la grupul "Networked Embedded Systems" de la Institutul Suedez de Informatică, licențiat sub licență BSD și dezvoltat în continuare de un grup larg de dezvoltatori.

DTLS (Datagram Transport Layer) – Protocolul DTLS asigură confidențialitatea comunicațiilor pentru protocoalele datagramelor. Protocolul permite aplicațiilor client / server să comunice într-un mod care este proiectat pentru a preveni interceptarea, manipularea fraudelor sau falsificarea mesajelor. Este bazat pe protocolul Transport Security Layer (TLS) și oferă garanții de securitate echivalente.

ROLL / RPL (rutare IPv6 pentru rețele cu putere redusă)

NanoIP – reprezintă protocolul nano Internet și este un concept care a fost creat pentru a furniza servicii de rețea de tip Internet pentru dispozitive încorporate și senzori, fără costuri generale ale TCP / IP. NanoIP a fost proiectat cu cheltuieli minime concectat la rețele wireless.

Content-Centric Networking (CCN) – Următoarea generație de arhitectură a rețelei folosită pentru a rezolva provocările legate de scalabilitatea, mobilitatea și securitatea distribuției de conținut. CCN rutează direct și livrează numere de conținut numite la nivel de pachet al rețelei, permițând memorarea automată și neutră a aplicațiilor în memorie oriunde este localizată în rețea. Rezultatul? Distribuirea eficientă a conținutului oriunde și ori de câte ori este necesar, deoarece arhitectura permite aceste efecte de caching ca efect secundar automat al livrării de pachete, memoria putând fi utilizată fără a construi servicii caching costisitoare la nivel de aplicație.

Protocolul de sincronizare a rețelelor de timp (Time Synchronized Mesh Protocol – TSMP) – Un protocol de comunicații pentru rețelele de dispozitive wireless auto-organizate numite motes. Dispozitivele TSMP rămân sincronizate una cu alta și comunică în perioade de timp asemănătoare celorlalte sisteme TDM (time-division multiplexing).

Descoperire

mDNS (multicast Domain Name System) – rezolvă numele gazdă la adrese IP în rețele mici, care nu includ un server local.

Physical Web – Webul fizic permite vizualizarea unei liste de adrese URL care sunt difuzate de obiecte în mediul înconjurător cu un semnal Bluetooth cu energie redusă (BLE).

HyperCat – Un format deschis, JSON bazat pe formatul cataloagelor hypermedia pentru expunerea colecțiilor de URI.

UPnP (Universal Plug and Play) – acum gestionat de Open Connectivity Foundation este un set de protocoale de rețea care permite dispozitivelor din rețea să descopere fără probleme prezența reciprocă în rețea și să stabilească servicii de rețea funcționale pentru partajarea datelor, comunicații și divertisment.

Protocoale de date

MQTT (Message Quering Telemetry Transport) – Protocolul MQTT permite un model de mesagerie publicat / abonat într-un mod extrem de ușor. Este util pentru conexiunile cu locații la distanță unde este necesară o amprentă de cod mic și / sau lățimea de bandă a rețelei este superioară.

Resurse aditionale

MQTT-SN (MQTT pentru rețele de senzori) – Un protocol deschis de publicare / abonare conceput special pentru aplicații M2M și mobil.

-Mosquitto: Un MQTT v1.1 Broker deschis

– IBM MessageSight

CoAP (Constrained Application Protocol) – CoAP este un protocol de aplicație care este destinat utilizării dispozitivelor de Internet cu constrângere de resurse, cum ar fi nodurile WSN. CoAP este proiectat să traducă cu ușurință HTTP pentru o integrare simplificată cu webul, satisfăcând totodată cerințele specializate, cum ar fi suportul multicast. Grupul CoRE a propus următoarele caracteristici pentru CoAP: Protocolul RESTful să minimizeze complexitatea mapării cu HTTP, suport URI, Suport pentru descoperirea resurselor furnizate de serviciile cunoscute CoAP.

Resurse aditionale

– SMCP – Un CoAP bazat pe C, care este potrivit pentru medii încorporate. Caracteristicile includ: Suport draft-ietf-core-coap-13, I / O complet asincron, Suporta atat socket-uri BSD cat si UIP.

STOMP – Protocolul de mesagerie simplă orientat pe text

XMPP (Extensible Messaging and Presence Protocol) – o tehnologie deschisă pentru comunicarea în timp real, care permite o gamă largă de aplicații, inclusiv mesagerie instantă, prezență, chat, apeluri vocale și video, colaborare, sindicare de conținut și rutare generalizată a datelor XML".

Resurse aditionale

– XMPP-IoT – In aceeași manieră ca si XMPP a creat comunicare interoperabilă people-to-people, tinzând spre interoperabilitate intre machine-to-people și machine-to-machine.

Mihini / M3DA – Agentul Mihini este o componentă software care acționează ca un mediator între un server M2M și aplicațiile care rulează pe un gateway încorporat. M3DA este un protocol optimizat pentru transportul datelor binare M2M, fiind disponibil în proiectul Mihini pentru mijloace de gestionare a dispozitivelor, prin facilitarea manipulării și sincronizării modelului de date al unui dispozitiv și prin mijloacele de gestionare a activelor, permițând aplicațiilor utilizatorilor să facă schimb de date / comenzi tipizate înainte și înapoi cu un server M2M, într-un mod care optimizează utilizarea lățimii de bandă.

AMQP (Advanced Message Queuing Protocol) – Un protocol OSI de aplicație pentru middleware orientat spre mesaj. Caracteristicile definitorii ale AMQP sunt orientarea mesajelor, coada de așteptare, rutarea (inclusiv punct-la-punct și publish-and-subscribe), fiabilitatea și securitatea."

– Resurse aditionale

DDS (serviciul de distribuție a datelor pentru sisteme în timp real) – Primul standard internațional deschis pentru middleware care abordează în mod direct comunicațiile publicare-abonare pentru sistemele în timp real și sisteme încorporate.

JMS (Java Message Service) – Un API Java Middleware Oriented Middleware (MOM) pentru trimiterea de mesaje între doi sau mai mulți clienți.

LLAP (protocolul de automatizare locală ușoară) – LLAP este un mesaj simplu scurt care este trimis între obiecte inteligente utilizând textul normal, nu este ca TCP / IP, bluetooth, zigbee, 6lowpan, WiFi etc care realizează asta la un nivel scăzut de energie. Se poate rula pe orice mediu de comunicare. Cele trei puncte forte ale LLAP se refera la funționarea pe orice dispozitiv acum și în viitor și este ușor de înțeles de oameni.

LWM2M (M2M Lightweight) – M2M Lightweight (LWM2M) este un standard de sistem în Open Mobile Alliance. Acesta include DTLS, CoAP, Block, Observe, SenML și Resource Directory și le ”țese” într-o interfață dispozitiv-server, împreună cu o structură de obiect.

SSI (Simple Sensor Interface) – Un protocol de comunicare simplu conceput pentru transferul de date între calculatoare sau terminale de utilizator și senzori inteligenți.

Reactive Streams – Un standard pentru procesarea fluxului asincron cu contra-presiune non-blocantă asupra JVM.

ONS 2.0

REST (Representational state transfer) – RESTful HTTP

Resurse suplimentare în contextul IoT

HTTP / 2 – permite o utilizare mai eficientă a resurselor de rețea și o percepție redusă a latenței prin introducerea compresiei câmpului de antet și permiterea mai multor schimburi concurente pe aceeași conexiune.

SOAP (Simple Object Protocol Protocol), JSON / XML, WebHooks, Jelastic, MongoDB

WebSocket – dezvoltată ca parte a inițiativei HTML5 – a introdus interfața WebSocket JavaScript, care definește o conexiune full-duplex socket pentru care mesajele pot fi trimise între client și server. Standardul WebSocket simplifică o mare parte a complexității în ceea ce privește comunicațiile web și gestionarea conexiunilor bidirecționale.

Comunicare / Transport

Ethernet

WirelessHart – Tehnologia WirelessHART oferă un protocol wireless pentru întreaga gamă de aplicații de măsurare, control și managementul aplicațiilor.

DigiMesh – este o topologie de rețea de tip peer-to-peer pentru utilizarea în soluții de conectivitate end-point.

ISA100.11a – este un standard de tehnologie a rețelelor fără fir dezvoltat de Societatea Internațională de Automatizare (ISA). Descrierea oficială este "Sistemele wireless pentru automatizarea industrială: controlul proceselor și aplicațiile aferente"

IEEE 802.15.4 – este un standard care specifică stratul fizic și controlul accesului media pentru rețelele personale fără fir personalizate (LR-WPANs). Acesta este menținut de grupul de lucru IEEE 802.15. Este baza pentru specificațiile ZigBee, ISA100.11a, WirelessHART și MiWi, fiecare dintre acestea extind standardul prin dezvoltarea straturilor superioare care nu sunt definite în IEEE 802.15.4. Alternativ, acesta poate fi utilizat cu protocoalele standard 6LoWPAN și standard pentru a construi un internet încorporat fără fir.

NFC – se bazează pe standardul ISO / IEC 18092: 2004, folosind dispozitive cu cuplaj inductiv la o frecvență centrală de 13,56 MHz. Rata de date este de până la 424 kbps, iar intervalul de frecvență este de câțiva metri mai mic comparativ cu rețelele wireless.

ANT – este o tehnologie patentată a rețelei de senzori fără fir care include o stivă de protocoale de comunicații fără fir care permite radiodifuziunilor semiconductoare care funcționează în alocarea industrială, științifică și medicală de 2,4 GHz a spectrului RF ("bandă ISM") să comunice prin stabilirea unor reguli standard de coexistență, reprezentarea datelor, semnalizarea, autentificarea și detectarea erorilor.

Bluetooth – Funcția Bluetooth funcționează în banda ISM de 2,4 GHz și utilizează hopping-ul frecvenței. Cu o rată a datelor de până la 3 Mbps și o rază maximă de 100 m, fiecare tip de aplicație care poate utiliza Bluetooth are propriul său profil.

Eddystone – o specificație de protocol care definește un format de mesaj Bluetooth low energy (BLE) pentru mesajele de proximitate.

ZigBee – Protocolul ZigBee utilizează standardul 802.15.4 și operează în domeniul de frecvență de 2,4 GHz cu 250 kbps. Numărul maxim de noduri din rețea este de 1024, cu o rază de acțiune de până la 200 de metri. ZigBee poate utiliza criptarea AES pe 128 biți.

EnOcean – EnOcean este o tehnologie wireless de captare a energiei, care funcționează la frecvențele de 868 MHz pentru Europa și 315 MHz pentru America de Nord. Gama de transmisie merge până la 30 de metri în clădiri și până la 300 de metri în aer liber.

Wifi

WiMax – se bazează pe standardul IEEE 802.16 și este destinat rețelelor metropolitane fără fir. Gama este diferită pentru stațiile fixe, unde poate ajunge până la 50 km, iar la dispozitivele mobile la o distanță de 5 până la 15 km. WiMax funcționează la frecvențe cuprinse între 2,5 GHz și 5,8 GHz, cu un transfer de 40 Mbps.

LPWAN

Weightless – este un standard patentat pentru tehnologia wireless deschisă pentru schimbul de date între o stație de bază și mii de mașini din jurul acesteia (folosind transmisii radio cu lungimi de undă în canale de emisie TV neocupate) cu niveluri ridicate de securitate.

NB-IoT (IoT cu bandă îngustă) – O tehnologie standardizată de organismul de standardizare 3GPP.

LTE-MTC (Comunicare de tip LTE-mașină) – Familia de tehnologii bazate pe standarde acceptă mai multe categorii de tehnologii, cum ar fi Cat-1 și CatM1, potrivite pentru IoT.

EC-GSM-IoT (Extended Coverage-GSM-IoT) – Permite noi capabilități ale rețelelor celulare existente pentru aplicațiile IoT LPWA (Low Power Wide Area). EC-GSM-IoT poate fi activat prin intermediul unui nou software implementat pe o amprentă GSM foarte mare, adăugând o acoperire chiar mai mare pentru a servi dispozitivele IoT.

LoRaWAN – Protocolul de rețea destinat bateriilor fără fir în rețea regională, națională sau globală.

RPMA (Random Phase Multiple Access) – Un sistem de comunicații tehnologice care utilizează spectrul de răspândire cu secvență directă (DSSS) cu acces multiplu.

Celular

GPRS / 2G / 3G / 4G

Fig. 1.2. – Viteza și raza de acțiune unor standarde

1 – Multe standarde concurente pentru ratele de date cu frecvențe joase, medii spre joase împiedică creșterea numarului aplicații IoT

– lipeseste interoperabilitatea.

– ar putea aparea conflicte ale sindicatelor.

– incompatibilități suplimentare în straturile de comunicare superioare, de exemplu, 6LoWPAN vs ZigBee.

2 – Spațiu alb standard pentru aplicații cu viteză redusă de date, cu putere redusă și cu rază mare de acțiune, cum ar fi o rețea inteligentă.

– Wi-Fi și LTE au un consum ridicat de energie.

– alternativele cu putere redusă și gamă largă (de exemplu, LTE cat 0, 802.11ah, Sigfox și OnRamp) se află într-o fază foarte timpurie și concurează reciproc.

Semantic

IOTDB

SensorML furnizează modele standard și codificare XML pentru descrierea senzorilor și a proceselor de măsurare.

Ontologia Senzorilor Semantici – W3C – Această ontologie descrie senzorii, observații și concepte înrudite. Nu descrie concepte de domeniu, timp, locații etc., acestea sunt intenționate să fie incluse din alte ontologii prin importurile OWL.

Wolfram Language – Dispozitive conectate – O reprezentare simbolică a fiecărui dispozitiv. Există un set standard de funcții Wolfram Language precum DeviceRead, DeviceExecute, DeviceReadBuffer și DeviceReadTimeSeries care efectuează operațiuni legate de dispozitiv.

RAML (RESTful Language Modeling API) – facilitează gestionarea întregului ciclu de viață API de la proiectare la partajare. Este concis – se scrie doar ceea ce trebuie să definit – este reutilizabil.

SENML (Tipuri media pentru limbajul de marcare a senzorilor) – Un senzor simplu, cum ar fi un senzor de temperatură, ar putea utiliza acest tip de suport în protocoale precum HTTP sau CoAP pentru a transporta măsurătorile senzorului sau pentru a fi configurat.

LsDL (Lemonbeat smart Device Language) – limbaj de dispozitive bazat pe XML pentru dispozitive orientate pe servicii.

Cadre cu mai multe straturi (Multi-layer Frameworks)

Alljoyn – un cadru software open source care facilitează descoperirea și comunicarea între dispozitive și aplicații.

IoTivity – este un proiect open source găzduit de Fundația Linux și sponsorizat de OIC.

IEEE P2413 – Standard pentru un cadru arhitectural pentru Internetul obiectelor (IoT)

Thread – Construit pe standarde deschise și tehnologie IPv6 cu fundație 6LoWPAN.

Cadrul de aplicații IPSO (PDF) – Acest design definește seturi de interfețe REST care pot fi folosite de un obiect inteligent pentru a reprezenta resursele disponibile, pentru a interacționa cu alte obiecte inteligente și servicii backend. Acest cadru este conceput pentru a fi complementar profilurilor Web existente, inclusiv SEP2 și oBIX.

OMA LightweightM2M v1.0 – Motivația LightweightM2M este de a dezvolta o specificație client-server rapid implementabilă, pentru a furniza servicii M2M. LightweightM2M este, în principiu, un protocol de gestionare a dispozitivelor, dar ar trebui proiectat astfel încât să poată fi extins pentru a satisface cerințele aplicațiilor. LightweightM2M nu se limitează la gestiunea dispozitivelor, ci ar trebui să poată transfera servicii / aplicații.

Weave – o platformă de comunicații pentru dispozitivele IoT care permite configurarea dispozitivului, comunicarea de la phone-to-device-to-cloud și interacțiunea utilizatorilor prin dispozitive mobile și web.

Telehash – JSON + UDP + DHT – Un protocol securizat de alimentare care alimentează o rețea de suprapunere descentralizată pentru aplicații și dispozitive

Securitate

Open Trust Protocol (OTrP) – Un protocol pentru instalarea, actualizarea și ștergerea aplicațiilor și pentru gestionarea configurației de securitate într-un mediu de încredere de execuție (TEE).

X.509 – Standard pentru infrastructura cheilor publice (PKI) pentru gestionarea certificatelor digitale și criptarea cheilor publice. O parte esențială a protocolului Transport Layer Security este utilizat pentru securizarea comunicațiilor pe web și e-mail.

Industria verticală

IEEE 1451

IEEE 1451 – o familie de standarde de interfață a traductorilor inteligenți, care descrie un set de interfețe de comunicare deschise, comune, independente de rețea, Mai este utilizat pentru conectarea traductoarelor (senzori sau actuatori) la microprocesoare, sisteme de instrumente și rețele de control / câmp.

IEEE 1888.3-2013 – Standardul IEEE pentru rețeaua globală de control comunitar verde: securitatea.

IEEE 1905.1-2013 – Standardul IEEE pentru o rețea digitală convergentă de domiciliu pentru tehnologii eterogene.

IEEE 802.16p-2012 – Standardul IEEE pentru interfața aeriană pentru sistemele de acces fără fir în bandă largă.

IEEE 1377-2012 – Standardul IEEE pentru măsurarea nivelului de aplicație al industriei utilitare.

IEEE P1828 – Standard pentru sisteme cu componente virtuale.

IEEE P1856 – Cadrul standard pentru prognoză și managementul sănătății sistemelor electronice.

Arhitectura IO

Modelul de referință al Forumului Mondial IoT este alcătuit din șapte niveluri, după cum se arată în figura 1.3. În IO, obiectele lumii fizice interacționează cu lumea digitală pentru a deveni Obiecte conectate. Elementele pasive sau active, identificate și identificabile, conectate au o legătură directă sau indirectă cu Internetul. Un studiu realizat de Școala Politehnică Federală din Zurich prevede că în 10 ani la nivel mondial vor fi conectate 150 de miliarde de obiecte; Volumul de date este proiectat să se dubleze la 12 ore. Exploatarea acestor volume masive de date necesită o abordare cu date mari (de exemplu, Data Intelligence, Data Science with Machine Learning, Nexialism și Data Mining). Două probleme recurente sunt: a) protecția vieții private, b) reglementarea și guvernarea acestui IO din ce în ce mai omniprezent și multiplatformat.

Fig. 1.3. – Nivelurile modelului de referință al IoT World Forum

Riscurile IO

Implementarea IO la nivel mondial, conectând astfel majoritatea oamenilor și dispozitivelor poate genera anumite riscuri. Există mai multe aspecte care consider că ar trebui luate in considerare:

Intimitatea personală;

Securitatea cibernetică;

Interoperabilitatea;

Scalabilitatea datelor folosite;

Integritatea sistemelor.

Deseori, conectarea la internet poate fi vulnerabilă. Fie că este conectivitate Ethernet, wireless, Bluetooth, satelit sau celulară, stocate într-un serviciu de cloud (PAAS sau SAAS), sau alte servicii sau servere menite sa primească, să caute si să primească date de la o aplicație de IO. Descoperind diferite vulnerabilități precum protocoale care nu sunt documentate sau sunt nesigure, parole slabe sau „backdoors” (metodă de autentificare a unor utilizatori legitimi), acestea pot permite unui hacker să blocheze anumite comunicări, să intercepteze și să manipuleze diferite comunicări. Cea mai rea variantă fiind preluarea controlului fizic asupra unui dispozitiv sau mașină, ca în cazul mașinilor Ford Escape și Toyota Prius, în momentul folosirii unui calculator conectat la portul de diagnosticare din cele două autovehivule. Astfel, cei doi experți în securitate cibernetică care au pătruns prin această vulnerabilitate, au reușit să manevreze direcția , luminile și frânele.

Departamentul „Homeland Security” a descoperit, de asemenea, o vulnerabilitate în rețeaua națională de energie. Prin decriptarea traficului dintre consumator și router-ele RuggedCom, hackerii ar putea începe atacuri asupra rețelei de energie prin compromiterea ei.

Dispozitivele medicale sunt în continuare vulnerabile. Siguranța și securitatea pacienților ar putea fi pusă în pericol, prin manevraarea pompelor e infuzie a tratamentelor cu medicamente, de la distanță, dispozitivele de radiologie, RMN-urile, sau defibrilatoarele.

Studiul Symantec asupra atacurilor cibernetice indică creșteri majore în ceea ce privește numărul de ”spargeri”. Conform IBM, numai in Statele Unite ale Americii au avut loc 1,5 milioane de astfel situații.

Indiferent de numere, două tendințe sunt evidente în lumea IO:

– Atacurile cibernetice sunt în continuă creștere;

– Atacurile cibernetice devin tot mai distructive, iar impactul atacurilor este tot mai puternic.

În 2012 s-a făcut un studiu de către Global Oil and Gas Infrastructure Security Market Assesment, în care valorile cheltuielilor pentru asigurarea securității cibernetice a infrastructurii de petrol și gaze se va dubla în 10 ani, de la 18 miliarde de dolari pe an, la 36 de miliarde pe an. Marea majoritatea a banilor se va folosi pentru contracararea a ceea ce poartă denumirea de Advanced Persistent Threat – APT (Amenințare Avansată Permanentă): un atac greu de depistat, periculos și – foarte adesea –  reușit.

I din IoT înseamnă Intimitate sau Identitate, pentru o mulțime de oameni. Dispozitivele conectate omniprezent la internet și utilizarea din ce în ce mai mult a smartphone-urilor, au extins posibilitățiile unora de a cunoaște date cu caracter personal. (politice, comerciale etc.). De exemplu, diverse corporații sau reprezentanți ai unor servicii guvernamentale pot depista locația exactă a unei persoane. Google salvează istoricul căutarilor, BuzzFeed cunoaște modul de completare a unor chestionare și în același timp operatorul e telefonie mobilă știe exact durata apelului și poate identifica și apelantul. Aceste date sunt colectate pe termen nedefinit, persoanele neștiind cum vor fi utilizate. Acolo se pot interesa și diferite servicii precum FBI, NSA sau alii.

Toate dispozitivele produc meta-date. Se pot afla diferite părți din mesajele trimise, chiara dacă nu apar pe internet, Facebook salvează toate conversațiile, postărlie sau ceea ce am șters deja, iar Amazon, de exemplu, ține minte ce am cumpărat, ce am pus în coșul de cumpărături, sugestii de cumpărături pe baza a ceea ce am căutat, sau pagina de carte la care am rămas prin e-book reader-ul Kindle. La fel se întâmplă și în domeniul reclamelor, companiile mari personalizând reclamele în funcție de căutările clientului. Acestea sunt afișate gratuit pe site-uri precum Google, Yahoo, Amazon etc.

Un articol a fost publicat nu demult cu numele Neuropolitics, ”Where Campaigns Try to Read Your Mind”, în The New York Times. Autorul descrie că într-un oraș din Mexic pe holurile unei instituții publice, trecătorii priveau un afișaj digital cu un candidat al Congresului, dar în același timp afișul îi urmărea pe trecători înregistrând expresiile faciale, având un algoritm prin care se puteau înregistra emoțiile provocate de afiș: fericire, tristețe, frică, surpriză sau dezgust. Autorul campaniei, în continuare, își ajusta mesajul campaniei electoral în funcție de aceste aspecte.

Un alt caz este acela a lui Edward Snowden care a facut niste dezvăluiri în ceea ce privește programele Agenției Naționale de Securitate din Statele Unite (NSA) în care cetățenii erau spionați (Xkeycore, PRISM) prin intermediul unor dispozitive stingray, sub forma unor stâlpi telefonici falși, care preluau date din telefoanele mobile aflate în împrejurimea stâlpilor.

Odata cu trecerea timpului, dispozitivele și aplicațiile IO se dezvoltă, devenind interconectate: de la șosete pană la luminile din locuință și mașini de spălat, toate vor putea transmite informații despre noi, prin intermediul internetului.

Arduino și shield-uri compatibile

Platforma open-source Arduino, realizată cu ajutorul unui procesor de semnal, este un dispozitiv cu hardware și software ușor de utilizat. Plăcuța este de cele mai multe ori de mici dimenisuni și are capacitatea de a capta informații din mediul înconjurător prin diferiți senzori. De asemenea, prin programarea accesibilă, platforma poate acționa prin diferite dispozitive mecanice sau electronice (lumini, servomotoare, motoare etc.). Programarea se realizează într-un mod similar cu limbajul C++.

Tabel 1.1. – Specificații Arduino UNO

Platforma utlizată în proiect este Arduino UNO, care are posibilitatea de conectare la laptop sau calculator prin intermediul unui port USB, cu un cablu USB A-B. Ar fi posibilă și conectarea din exterior printr-o priză, cu ajutorul unui alimentator extern. Este nevoie de alimentare suplimentară doar în cazul în care aplicația rulată, prin consumatorii ei, folosește un amperaj de ordinul sutelor de amperi.

Fig. 1.4. – Placa Arduino detaliată

Processing – limbaj de programare

Processing este un limbaj de programare open-source și un mediu de dezvoltare integrată (IDE), construit, în principiu, pentru artă electronică, comunitățile de design vizual cu scopul de a învăța fundamentele programării pe calculator într-un context vizual și să servească ca o fundație pentru mediu de lucru electronic.

Unul dintre conceptele de bază cu care Processing a pornit, a fost sa se folosească ca o unealtă pentru persoanele care nu sunt obișnuite cu programarea, urmând sa aibă rezultate vizuale instante.

Limbajul Processing, construit pe limbajul de programare Java, folosește atât o sintaxă mai simplificată, cât și un model de programare grafică.

Processing a pornit un alt proiect, Wiring, care utilizează IDE-ul Processing cu o colecție de biblioteci scrie în limbajul C++ ca o modalitate de a învăța artiștii cum sa programeze microcontrolere. În prezent, există două proiecte de hardware separate, Wiring și Arduino, folosind ca mediu de programare Wiring. Fritzing este un alt mediu software, de același tip, care ajuta designerii și artiștii în documentarea prototipurilor interactive realizate de ei și să facă pasul de la prototip fizic, la produs real.

Fig. 1.5. – Programare în limbajul Processing

În Processing are loc autentificarea, cu chei de acces, personalizate pentru fiecare utilizator în parte și pentru fiecare aplicație în parte (un utilizator poate avea mai multe aplicații), la Twitter, în primă fază, după care, se accesează serviciul de identificare a adresei ip-ului extern împreună cu serviciul de localizare pe baza ip-ului, printr-un API (Application Programming Interface).

Application Programming Interface (API)

API reprezintă o interfață pentru programarea de aplicații. De obicei este vorba despre interfața dintre programele de aplicație și sistemul de operare, care stabilește în amănunt modul în care programele de aplicație pot accesa (apela) serviciile sistemului de operare sub care rulează.

Comunicarea serială

Comunicarea serială este realizată între senzor și aplicație este modul cel mai simplu de a face legătura intre partea hardware și software. Ea are câteva avantaje, fata de comunicarea în paralel, începând de la costurile reduse de implementare și pana la transmisia mai rapida a datelor, ceea ce în acest exemplu este foarte important.

O conexiune serială necesită mai puține cabluri de interconectare (de exemplu, fire / fibre) și, prin urmare, ocupă mai puțin spațiu. Spațiul suplimentar permite o mai bună izolare a canalului din împrejurimi.

Fig. 1.6. – Modul de lucru al comunicării seriale

Rețeaua de socializare Twitter

Twitter este o platformă de social media care permite utilizatorilor să trimită și să citească mesaje scurte (de maximum 140 de caractere) numite "tweets".

Cuvântul twitter este un cuvânt englez cu traducerile pălăvrăgeală, agitație, freamăt, și pronunția . Desemnează atât un site web fondat în 2006 care permite scrierea și transmiterea de mesaje de maxim 140 caractere (litere) prin Internet, cât și compania care oferă acest serviciu de tip „rețea socială”. Este uneori descris ca fiind "SMS-ul Internetului".

În jurul ideii de „twitting” au fost dezvoltate o mulțime de servicii menite a ajuta utilizatorii să câștige timp. De exemplu:

Sms2Twitter și SmsNow permit adăugarea de mesaje în Twitter prin SMS. Aceste servicii sunt de obicei disponibile și în rețelele din România (Vodafone, Orange România și Telekom) la tariful normal pentru un mesaj SMS.

1U, SP2 și NanoUrl permit scurtarea legăturilor lungi, astfel încât spațiul de 140 de caractere disponibil pentru un mesaj pe Twitter să fie folosit mai eficient.

widget-uri pentru browser care permit de exemplu verificarea instantanee a noutăților tuturor prietenilor.

Twitter pune la îndemâna utilizatorilor un mediu de dezvoltare a aplicațiilor, pentru a face mai ușoara comunicarea intre utilizatori și aplicații din toata lumea.

Fig. 1.7. – Exemple de tweet-uri trimise, pe profilul personal.

CAPITOLUL 2 – MĂSURAREA RADIOACTIVITĂȚII CU SENZORUL POCKET GEIGER PE TWITTER

Componente folosite

Pentru culegerea tuturor informațiilor necesare publicării unui rezultat pe o rețea de socializare, am folosit un ansamblu de componente interconectate:

Placa Arduino UNO

Senzorul Pocket Geiger

GPS Shield pentru Arduino

Placa Arduino UNO a fost prezentă ca o placă de bază pentru sistemul de componente conectate, având rolul de a prelua informațiile transmise de senzori și de transmitere a datelor către programul de procesare.

Radiația sau razele gamma (gamma desemnează litera grecească γ) sunt unde electromagnetice de frecvențe foarte mari produse de interacțiuni între particule subatomice, cum ar fi la dezintegrările radioactive sau la ciocnirea și anihilarea unei perechi de electron – pozitron.

Radiametrul Pocket Geiger este un senzor care măsoară nivelul de radioactivitate la nivel local. El este dezvoltat de către o companie japoneză, Radiation-Watch, care se bazează pe o inițiativă științifică a oamenilor, apărută după accidentul de la Fukushima, din 11 martie 2011.

Pocket Geiger, convenit sa fie conectat inițial doar la iPhone, poseda acum mult mai multe versiuni de senzor, pentru a putea fi conectat atât la smartphone-uri cat și la un calculator cu diferite sisteme de operare sau plăcuțe programabile.

Oricare dintre versiuni ar fi utilizată, plăcuța include o X100-7 PIN fotodiodă pentru detecția de radiații gamma.

Primul pas necesar pentru determinarea nivelului de radiație este setarea valorilor pentru următorii parametri: pulsul de radiație, pulsul de zgomot, rata de numărare a setărilor curente și de sincronizare. Când senzorul este lovit de radiație, acesta va trage pinul de radiație (SIG) la un nivel de tensiune înaltă timp de câteva microsecunde. O transformare de la microsecunde la secunde este folosită pentru a preveni scurgerea datelor. Având în vedere faptul că senzorul fotodiodic este sensibil la vibrații, radiometrul include de asemenea un accelerometru care utilizează știftul de zgomot (NS) pentru a semnala momentele în care înregistrările ar trebui să fie respinse ca false-pozitive. După aceea, se calculează cpm (numărări pe minut), care este μSv înmulțită cu o constantă α (alfa), în funcție de timpul de măsurare (maximum 20 de minute pe ciclu), nivelul radiațiilor în μSv / h și eroarea μSv / h.

Fig. 2.1. – Conectarea fizică la placa Arduino

Codul de programare în Arduino, disponibil gratuit pe site, se poate descărca, pe urmă putând urmări măsurătorile pe Serial Monitor, din cadrul softului Arduino sau într-un mini-soft care poate rula pe sistemul de operare Windows.

Fig. 2.2. – Monitor Pocket Geiger pentru Arduino

Unitatea de măsură pentru nivelul radioactivității măsurată de senzor este μSv/h (microSievert/oră). În același tabel se pot observa și alte unități: timpul măsurării, numărări pe minut (counts per minute), precum și eroarea măsurării.

Dispozitivul GPS Logger Shark echipează accesul la un modul GPS, loc pentru cardul de memorie μSD și toate celelalte periferice necesare pentru a transforma dispozitivul Arduino într-un dispozitiv de urmărire, monitorizare a vitezei și de observare a altitudinii. Ecranul se bazează în jurul unui modul GPS GP3906-TLP – un receptor GPS cu 66 de canale care include o arhitectură MediaTek MT3339 și o rată de actualizare de până la 10 Hz. Modulul GPS va transmite actualizări de poziție constantă pe un port serial TTL simplu, care se poate înregistra pe o cartelă μSD și / sau utiliza în alte scopuri.

Majoritatea proprietăților de pe placă sunt configurabile: un switch permite selectarea interfaței UART a modulului GPS între porturi hardware sau software, cardul μSD funcționează pe un port SPI hardware, care ar trebui să fie compatibil cu cele mai multe layout-uri Arduino. Tensiunea principală a dispozitivului GPS Logger Shield este preluată de pe pinul de bază al Arduino de 5V. Această tensiune este reglată până la 3.3V, care este furnizată atât modulului GPS, cât și cardului μSD. Aceste două componente ar trebui să consume, aproximativ 30mA în medie, dar ele pot uneori să ajungă la aproximativ 100mA. De asemenea, se poate atașa o baterie de 3V, care să se potrivească cu suportul bateriei GPS Shield.

Fig. 2.3. – Propunerea sistemului de monitorizare a radiației

Transmiterea datelor către programul de interpretare a rezultatelor

Pentru a realiza comunicarea între cele două sisteme a trebuit să se aleagă un format prestabilit și bine definit al datelor ce urmează să fie afișate. Acest format trebuie să garanteze interpretarea corectă a datelor, asigurând totodată recepționarea integrală a datelor de la sistem.

”valoareRadiatie(uSv/h);latitudinePosGps;longitudinePosGps;ora:minut:secunda”

După cum se poate observa și în formatul ales, toat informația este transmisă deodata, folosind un singur impuls, astfel încât programul de interpretare are toate resursele necesare de a anunța un posibil pericol oferind locația și data exactă a detectării valorilor periculoase.

Frecvența de trimitere a datelor a fost controlată de placa Arduino, ceea ce a permis o setare optimă din punct de vedere energetic și al gestionării resurselor de calcul, fără să existe un pericol de omite caracteristici importante ale datelor.

CAPITOLUL 3 – CONCLUZII ȘI RECOMANDĂRI

În această lucrare am prezentat o abordare prin care cetățenii obișnuiți își pot colecta propriile măsurători ale radiațiilor și le pot împărtăși cu alți concetățeni folosind Twitter, una dintre cele mai populare rețele de social media.

În viitor, există posibilități de integrare a abordării propuse cu platforma web semantică dedicată persoanelor care trăiesc în zone cu contaminare nucleară pe termen lung, pe care le-am prezentat mai sus.

Datele de radiații colectate, împreună cu măsurătorile oficiale, vor fi stocate, procesate, analizate și utilizate pentru a genera vizualizări bazate pe hărți bazate pe hărți radioactive.

Posibilele direcții de cercetare suplimentare includ folosirea algoritmilor de învățare a mașinilor pentru a înțelege mai bine și anticipa modul în care nivelurile de radiație se vor schimba în timp, dat fiind faptul că procesul este influențat de o mare varietate de factori.

Codul sursă va fi disponibil pentru descărcare la adresa https://github.com/horicius/PocketGeiger-Arduino.

CAPITOLUL 4 – ANEXE CU PROGRAMUL

Codul senzorului Pocket Geiger programat în Arduino

//////////////////////////////////////////////////

// Radiation-Watch.org

// URL http://www.radiation-watch.org/

//////////////////////////////////////////////////

/// Digital I/O PIN Settings ///

int signPin = 2; //Radiation Pulse (Yellow)

int noisePin = 5; //Vibration Noise Pulse (White)

//VCC 5V (Red)

//GND (Blue)

////////////////////////////////

const double alpha=53.032; // cpm = uSv x alpha

int index=0; //Number of loops

char msg[256]=""; //Message buffer for serial output

int signCount=0; //Counter for Radiation Pulse

int noiseCount=0; //Counter for Noise Pulse

int sON=0;//Lock flag for Radiation Pulse

int nON=0;//Lock flag for Noise Puls

double cpm = 0; //Count rate [cpm] of current

double cpmHistory[200]; //History of count rates

int cpmIndex=0;//Position of current count rate on cpmHistory[]

int cpmIndexPrev=0;//Flag to prevent duplicative counting

//Timing Settings for Loop Interval

int prevTime=0;

int currTime=0;

int totalSec=0; //Elapsed time of measurement [sec]

int totalHour=0; //Elapsed time of measurement [hour]

//Time settings for CPM calcuaration

int cpmTimeMSec=0;

int cpmTimeSec=0;

int cpmTimeMin=0;

//String buffers of float values for serial output

char cpmBuff[20];

char uSvBuff[20];

char uSvdBuff[20];

void setup()

{

//Serial setup

//9600bps

Serial.begin(9600);

//PIN setting for Radiation Pulse

pinMode(signPin,INPUT);

digitalWrite(signPin,HIGH);

//PIN setting for Noise Pulse

pinMode(noisePin,INPUT);

digitalWrite(noisePin,HIGH);

//CSV-formatting for serial output (substitute , for _)

Serial.println("hour[h]_sec[s]_count_cpm_uSv/h_uSv/hError");

//Initialize cpmHistory[]

for(int i=0; i<200;i++ )

{

cpmHistory[i]=0;

}

//Get start time of a loop

prevTime = millis();

}

void loop()

{

// Raw data of Radiation Pulse: Not-detected -> High, Detected -> Low

int sign = digitalRead(signPin);

// Raw data of Noise Pulse: Not-detected -> Low, Detected -> High

int noise = digitalRead(noisePin);

//Radiation Pulse normally keeps low for about 100[usec]

if(sign==0 && sON==0)

{//Deactivate Radiation Pulse counting for a while

sON = 1;

signCount++;

}else if(sign==1 && sON==1){

sON = 0;

}

//Noise Pulse normally keeps high for about 100[usec]

if(noise==1 && nON==0)

{//Deactivate Noise Pulse counting for a while

nON = 1;

noiseCount++;

}else if(noise==0 && nON==1){

nON = 0;

}

//Output readings to serial port, after 10000 loops

if(index==10000) //About 160-170 msec in Arduino Nano(ATmega328)

{

//Get current time

currTime = millis();

//No noise detected in 10000 loops

if(noiseCount == 0)

{

//Shift an array for counting log for each 6 sec.

if( totalSec % 6 == 0 && cpmIndexPrev != totalSec)

{

cpmIndexPrev = totalSec;

cpmIndex++;

if(cpmIndex >= 200)

{

cpmIndex = 0;

}

if(cpmHistory[cpmIndex] > 0)

{

cpm -= cpmHistory[cpmIndex];

}

cpmHistory[cpmIndex]=0;

}

//Store count log

cpmHistory[cpmIndex] += signCount;

//Add number of counts

cpm += signCount;

//Get ready time for 10000 loops

cpmTimeMSec += abs(currTime – prevTime);

//Transform from msec. to sec. (to prevent overflow)

if(cpmTimeMSec >= 1000)

{

cpmTimeMSec -= 1000;

//Add measurement time to calcurate cpm readings (max=20min.)

if( cpmTimeSec >= 20*60 )

{

cpmTimeSec = 20*60;

}else{

cpmTimeSec++;

}

//Total measurement time

totalSec++;

//Transform from sec. to hour. (to prevent overflow)

if(totalSec >= 3600)

{

totalSec -= 3600;

totalHour++;

}

}

//Elapsed time of measurement (max=20min.)

double min = cpmTimeSec / 60.0;

if(min!=0)

{

//Calculate cpm, uSv/h and error of uSv/h

dtostrf(cpm / min, -1, 3, cpmBuff);

dtostrf(cpm / min / alpha, -1, 3, uSvBuff);

dtostrf(sqrt(cpm) / min / alpha, -1, 3, uSvdBuff);

}else{

//Devision by zero

dtostrf(0, -1, 3, cpmBuff);

dtostrf(0, -1, 3, uSvBuff);

dtostrf(0, -1, 3, uSvdBuff);

}

//Create message for serial port

/* sprintf(msg, "%d,%d.%03d,%d,%s,%s,%s",

totalHour,totalSec,

cpmTimeMSec,

signCount,

cpmBuff,

uSvBuff,

uSvdBuff

);

*/

//Send message to serial port

sprintf(msg, "%s", uSvBuff);

Serial.println(msg);

}

//Initialization for next 10000 loops

prevTime = currTime;

signCount=0;

noiseCount=0;

index=0;

}

index++;

}

Trimiterea unui tweet

import twitter4j.conf.*;

import twitter4j.auth.*;

import twitter4j.api.*;

import java.util.*;

import processing.serial.*;

import processing.net.*;

import processing.data.*;

import java.net.*;

import java.io.*;

final String IPFIND_KEY = " "; // Find public ip api key

final String OAUTH_CONSUMER_KEY = " "; // Twitter consumer key

final String OAUTH_CONSUMER_SECRET = " "; // Twitter secret key

final String OAUTH_ACCESS_TOKEN = " "; // Twitter access token

final String OAUTH_ACCESS_TOKEN_SECRET = " "; // Twitter secret access token

final int iFrequencyOfPublication = 30; // Min to post at

Serial myPort; // The serial port

String inString; // Input string from serial port

final int lf = 10; // ASCII linefeed

boolean posted = false;

Client oGeoIpClient;

URL url;

String sGeoData;

Twitter twitter;

void setup()

{

//size(800,600);

ConfigurationBuilder cb = new ConfigurationBuilder();

cb.setOAuthConsumerKey(OAUTH_CONSUMER_KEY);

cb.setOAuthConsumerSecret(OAUTH_CONSUMER_SECRET);

cb.setOAuthAccessToken(OAUTH_ACCESS_TOKEN);

cb.setOAuthAccessTokenSecret(OAUTH_ACCESS_TOKEN_SECRET);

TwitterFactory tf = new TwitterFactory(cb.build());

twitter = tf.getInstance();

myPort = new Serial(this, Serial.list()[0], 9600);

myPort.bufferUntil(lf);

}

void draw() {

int m = minute();

tweet(m);

}

void serialEvent(Serial p) {

inString = p.readString();

}

String getMyIp() {

String sMyIp = "";

try {

URL oPublicIp = new URL("https://api.ipify.org");

BufferedReader inIp = new BufferedReader(new InputStreamReader(oPublicIp.openStream()));

sMyIp = inIp.readLine(); //you get the public IP as a String

} catch (Exception e) {

System.out.println("Could not fetch public ip");

}

return sMyIp;

}

processing.data.JSONObject getLocation(String sMyIp) {

processing.data.JSONObject oGeoResponse = new processing.data.JSONObject();

try {

String sIpUrl = "https://ipfind.co/?ip=" + sMyIp + "&auth="+IPFIND_KEY;

oGeoResponse = loadJSONObject(sIpUrl); // Get location data based on public ip

} catch (Exception e) {

System.out.println("Could not fetch location");

}

return oGeoResponse;

}

String constructTwitterMessage(processing.data.JSONObject oGeoResponse, String inString) {

float fLatitude = oGeoResponse.getFloat("latitude");

float fLongitude = oGeoResponse.getFloat("longitude");

String sCountry = oGeoResponse.getString("country");

String sCity = oGeoResponse.getString("city");

int iMin = minute();

String sMin = str(iMin);

if (iMin < 10) {

sMin = "0"+sMin; // Trailing 0 for mins < 10

}

String sMessage = "Radioactivity level in " + sCountry

+ ", " + sCity + "(" + str(fLatitude) + ", " + str(fLongitude) + "), at " + year() + "-" + month() + "-" + day()

+ " " + hour() + ":" + sMin + " is : " + trim(inString) + " uSv/h, #PocketGeiger #Arduino #Processing";

return sMessage;

}

Boolean shouldPost(String inString, int m) {

return m%iFrequencyOfPublication==0 && inString!=null && float(trim(inString)) > 0.00;

}

void tweet(int m) {

if (!posted && shouldPost(inString, m)) {

try

{

processing.data.JSONObject oGeoResponse = getLocation(getMyIp());

posted=true;

Status status = twitter.updateStatus(constructTwitterMessage(oGeoResponse, inString)); // Construct message to post to twitter

System.out.println("Status updated to [" + status.getText() + "].");

}

catch (Exception te)

{

System.out.println("Error: "+ te.getMessage());

posted = false;

}

}

}

BIBLIOGRAFIE

A. Segault, F. Tajariol, and I. Roxin, “#geiger : Radiation Monitoring Twitter Bots for Nuclear Post-Accident Situations,” in Proceedings of the ISCRAM 2015 Conference, Kristiansand, Norway, 2015.

I. Roxin, L. Cotfas, H. Dărăștean, A. Stan – An Internet of Things solution for radioactivity environmental monitoring, IE Conference, Cluj-Napoca, 2016.

Eskimon O. – Arduino: Premiers pas en informatique embarquée, Zeste de Savoir, Februarie, 2016

Shiffman D. – Learning Processing, Morgan Kaufmann, USA, 2008

Reas C., Fry B. – Processing: a programming handbook for visual designers and artists, The MIT Press, 2007

Schwartz M. – Internet of Things with Arduino Yun, Packt Publishing, Birmingham, 2014

A. Zimcea – Analiza rețelelor sociale, 2012

Cranganu, C., H. Luchian and M. E. Breaban (Eds) – Artificial Intelligent Approaches in Petroleum Geosciences, Springer, 2015

L.-A. Cotfas, C. Delcea, I. Roxin, and R. Paun – “Twitter Ontology-Driven Sentiment Analysis,” in New Trends in Intelligent Information and Database Systems, D. Barbucha, N. T. Nguyen, and J. Batubara, Eds. Springer International Publishing, 2015

Jim Green, “Building the Internet of Things,” presented at the IoT World Forum, Chicago, Illinois, USA, 2014.

WEBOGRAFIE

http://arduino.cc

http://processing.org/reference

http://dev.twitter.com/documentation

http://blog.blprnt.com/blog/blprnt/updated-quick-tutorial-processing-twitter

https://www.postscapes.com/internet-of-things-protocols/

https://en.wikipedia.org/wiki/Internet_of_things

https://www.scribd.com/presentation/199801961/Internet-of-Things

http://www.mckinsey.com/industries/semiconductors/our-insights/internet-of-things-opportunities-and-challenges-for-semiconductor-companies

Similar Posts