User Tools

Site Tools


devicehub

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revision Previous revision
Next revision
Previous revision
devicehub [2016/11/08 15:26]
dan.tudose [Transmisia datelor în Cloud]
devicehub [2016/11/08 18:34] (current)
dan.tudose [DeviceHub]
Line 5: Line 5:
 Pentru această lucrare de laborator vom folosi DeviceHub pentru a agrega datele de la mai multe noduri Sparrow, apoi vom folosi API-ul DeviceHub pentru a controla nodurile senzoriale. Pentru această lucrare de laborator vom folosi DeviceHub pentru a agrega datele de la mai multe noduri Sparrow, apoi vom folosi API-ul DeviceHub pentru a controla nodurile senzoriale.
  
-După înregistrare și crearea contului, selectați Project > New Project și dați un nume proiectului vostru. Inițial, proiectului i se vor atribui un Project ID și un API Key, care vor îl identifica unic pe platformă.+ 
 + 
 +===== DeviceHub ===== 
 + 
 +Pentru a avea acces la resurse, trebuie să vă creați mai întâi un cont pe [[https://dashboard.devicehub.net/register| platformă]]. După înregistrare și crearea contului, selectați Project > New Project și dați un nume proiectului vostru. Inițial, proiectului i se vor atribui un Project ID și un API Key, care vor îl identifica unic pe platformă.
  
 Trebuie să adăugați un nou dispozitiv proiectului vostru, selectând Add Device. Dați-i un nume, la Device Type selectați Other, la Programming Language Python și la Connection Type, Ethernet sau WiFi, după caz. La creare, dispozitivului i se va aloca un Device UUID, care este de asemenea unic. Fiecare dispozitiv poate avea mai mulți senzori și mai multe actuatoare, ce pot fi adăugate din interfața web. Trebuie să adăugați un nou dispozitiv proiectului vostru, selectând Add Device. Dați-i un nume, la Device Type selectați Other, la Programming Language Python și la Connection Type, Ethernet sau WiFi, după caz. La creare, dispozitivului i se va aloca un Device UUID, care este de asemenea unic. Fiecare dispozitiv poate avea mai mulți senzori și mai multe actuatoare, ce pot fi adăugate din interfața web.
  
 Pentru început, atașați un senzor nou dispozitivului vostru cu Add Sensor. Denumiți-l **Temperature**, tipul senzorului ar trebui să fie analogic, iar la measurement unit adăugați **deg. C**. Pentru început, atașați un senzor nou dispozitivului vostru cu Add Sensor. Denumiți-l **Temperature**, tipul senzorului ar trebui să fie analogic, iar la measurement unit adăugați **deg. C**.
-  
  
-===== DeviceHub =====+DeviceHub pune la dispoziție un API prin care diverse platforme IoT se pot conecta direct la server-ul din cloud. Din cauză că nodurile Sparrow nu au posibilitatea de a se conecta la WiFi sau Ethernet, vom folosi un PC pe post de client DeviceHub. Nodul Sparrow va trimite datele prin interfața serială către PC, iar acesta va rula un mic program scris în Python pentru a parsa datele primite și a le trimite DeviceHub.
  
-Pentru a avea acces la resurse, trebuie să vă creați mai întâi un cont pe [[https://dashboard.devicehub.net/registerplatformă]]. +Pentru aceasta, trebuie să vă instalați [[https://www.python.org/|Python]] 2.7.x pe mașina voastră și biblioteca **devicehub**, care se poate face rapid din linia de comandă folosind utilitarul pip:
  
-DeviceHub pune la dispoziție un API prin care diverse platforme IoT se pot conecta direct la server-ul din cloud. Din cauză că nodurile Sparrow nu au posibilitatea de a se conecta la WiFi sau Ethernet, vom folosi un PC pe post de client DeviceHub. Nodul Sparrow va trimite datele prin interfața serială către PC, iar acesta va rula un mic program scris în Python pentru a parsa datele primite și a le trimite DeviceHub.+<code shell> > pip install devicehub</code>
  
-Pentru aceastatrebuie să vă instalați [[https://www.python.org/|Python]] 2.7.x pe mașina voastră.+ 
 +==== Trimiterea de date ==== 
 + 
 +Vom scrie un mic program Python pentru a trimite date în contul nostru de DeviceHub. Folosiți drept referință exemplul de mai josîn care treubie să completați datele contului vostru:
  
 <code python> <code python>
Line 25: Line 31:
 from random import randint from random import randint
  
-PROJECT_ID      = '4586+PROJECT_ID      = 'your project ID
-DEVICE_UUID     = '0960c350-dee7-4c25-87a2-fa32164d5c16+DEVICE_UUID     = 'your Device UUID
-API_KEY         = '6ccd115d-5131-407f-b76f-5158fa4889bb+API_KEY         = 'your API KEY
-AN_SENSOR_NAME  = 'CONS_PH1'+AN_SENSOR_NAME  = 'Temperature#make sure your sensor has the same name on DeviceHub!
  
  
Line 49: Line 55:
     sleep(5.0)     sleep(5.0)
 </code> </code>
 +
 +<note>**Task 0:** Rulați exemplul de mai sus și verificați trimiterea de date aleatorii în DeviceHub.</note>
 +
 +Pentru a trimite date reale, trebuie să programăm nodurile senzoriale să trimită valoarea temperaturii pe interfața serială, pentru a fi citită mai apoi de către programul Python.
 +
 +<note>**Task 1:** Folosind exemplele din laboratoarele anterioare, programați nodul Sparrow pentru a trimite valoarea temperaturii, urmată de un new line o dată la 5 secunde.
 +Exemplu: 
 +25.2
 +25.8
 +26.3
 +26.1
 + </note>
 +
 +În Python, folosiți următorul exemplu pentru a deschide o conexiune serială cu placa Sparrow și a citi datele:
 +
 +<code python>
 +from time import sleep
 +import serial
 +
 +# Make sure you have the correct port and baud rate selected
 +# For Windows, use COMx instead of ttyUSB
 +ser=serial.Serial('/dev/ttyUSB0', 9600) 
 +
 +while True:
 +        line = ser.readline()
 +        print line
 +        sleep(1.0)
 +</code>
 +<note>**Task 2:** Modificați primul exemplu Python de mai sus pentru a trimite temperatura în DeviceHub.</note>
 +
 +<note>**Task 3:** Folosind codul de la laboratoarele anterioare, programați nodurile Sparrow să trimită datele de la toți senzorii în format CSV pe interfața serială. De exemplu, un nod poate trimite la fiecare 5 secunde date în formatul:
 +<adresă_nod>,<temperatură>,<umiditate>,<luminozitate>,<presiune> 
 +Adăugați noi senzori analogici în interfața web DeviceHub pentru noii senzori și modificați exemplul de la task-ul anterior pentru a parsa valorile CSV și pentru a trimite valorile de la toți senzorii în DeviceHub</note>
 +
 +==== Trimiterea de comenzi ====
 +
 +Putem să trimitem și comenzi din interfața DeviceHub. Pentru aceasta, trebuie să ne întoarcem în interfața web și să adaugăm un actuator device-ului nostru. Denumiți actuatorul **LED** și alegeți sa fie de tip **Digital**.
 +
 +Rulați următorul exemplu Python pentru a citi starea actuatorului vostru din DeviceHub.
 +
 +<code python>
 +from devicehub import Sensor, Actuator, Device, Project
 +from time import sleep
 +
 +PROJECT_ID      = 'your project ID'
 +DEVICE_UUID     = 'your Device UUID'
 +API_KEY         = 'your API KEY'
 +AN_SENSOR_NAME  = 'LED' #make sure your actuator has the same name on DeviceHub!
 +
 +  
 +def act1_callback(payload):
 +    """
 +    :param payload: mqtt payload message
 +    """
 +    print ACT1.state
 +
 +project = Project(PROJECT_ID)
 +device = Device(project, DEVICE_UUID, API_KEY)
 +
 +ACT1 = Actuator(Actuator.DIGITAL, ACTUATOR_NAME1)
 +
 +device.addActuator(ACT1, act1_callback)
 +
 +try:
 +    while True:
 +        pass
 +except KeyboardInterrupt:           
 +    print 'Goodbye!'
 +
 +</code>
 +
 +<note>**Task 4:** Scrieți un mic program pentru nodul Sparrow în care led-ul verde (digital pin 11) poate fi aprins/stins prin comenzi din interfața serială (de ex. de fiecare dată când este recepționat caracterul ”0”, LED-ul este stins, iar de fiecare dată când e recepționat caracterul ”1”, led-ul este aprins). Modificați exemplul python de mai sus pentru a trimite comenzi nodului Sparrow prin care să aprindă/stingă LED-ul verde.</note>
 +
 +În mod similar, puteți să adăugați un actuator cu input analogic din interfața web DeviceHub. Denumiți-l RED.
 +Folosiți următorul exemplu de cod pentru a-l testa:
 +
 +<code python>
 +from devicehub import Sensor, Actuator, Device, Project
 +from time import sleep
 +
 +PROJECT_ID      = 'your project ID'
 +DEVICE_UUID     = 'your Device UUID'
 +API_KEY         = 'your API KEY'
 +AN_SENSOR_NAME  = 'RED' #make sure your actuator has the same name on DeviceHub!
 +
 +  
 +def act1_callback(payload):
 +    """
 +    :param payload: mqtt payload message
 +    """
 +
 +    print ACT1.state
 +
 +project = Project(PROJECT_ID)
 +device = Device(project, DEVICE_UUID, API_KEY)
 +
 +ACT1 = Actuator(Actuator.ANALOG, ACTUATOR_NAME1)
 +
 +device.addActuator(ACT1, act1_callback)
 +
 +try:
 +    while True:
 +        pass
 +except KeyboardInterrupt:           
 +    print 'Goodbye!'
 +
 +</code>
 +
 +<note>**Task 5:** Scrieți un mic program pentru nodul Sparrow în care led-ului roșu (analog pin 8) îi poate fi modificată luminozitatea din interfața serială (valori de la 0 - complet stins la 100 - complet aprins). Modificați exemplul python de mai sus pentru a trimite comenzi nodului Sparrow prin care să variați direct din interfața web DeviceHub intensitatea LED-ului roșu. </note>
  
devicehub.1478611598.txt.gz · Last modified: 2016/11/08 15:26 by dan.tudose