User Tools

Site Tools


allthingstalk

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
allthingstalk [2018/11/13 16:24]
dan.tudose [DeviceHub]
allthingstalk [2018/11/16 10:07] (current)
dan.tudose [Trimiterea de date]
Line 11: Line 11:
 Pentru a avea acces la resurse, trebuie să vă creați mai întâi un cont pe [[https://maker.allthingstalk.com/signup| platformă]]. După înregistrare și crearea contului, selectați //Devices->Connect a device// și alegeți //Your own// din listă. Dați-i numele //Sparrow//. Din butonul //Settings->Authentication// rețineți Device ID și Device Token care îl vor identifica unic pe platformă. Pentru a avea acces la resurse, trebuie să vă creați mai întâi un cont pe [[https://maker.allthingstalk.com/signup| platformă]]. După înregistrare și crearea contului, selectați //Devices->Connect a device// și alegeți //Your own// din listă. Dați-i numele //Sparrow//. Din butonul //Settings->Authentication// rețineți Device ID și Device Token care îl vor identifica unic pe platformă.
  
-Pentru început, atașați un senzor nou dispozitivului vostru cu New Asset. Denumiți-l **Temperature**, tipul senzorului ar trebui să fie Number.+Pentru început, atașați un senzor nou dispozitivului vostru cu New Asset. Denumiți-l **Temperature**, tipul senzorului ar trebui să fie Number. În continuare, creați un nou **Pinboard** care să conțină senzorul vostru.
  
 AllThingsTalk 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 AllThingsTalk. 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 AllThingsTalk. AllThingsTalk 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 AllThingsTalk. 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 AllThingsTalk.
Line 22: Line 22:
 ==== Trimiterea de date ==== ==== 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:+Vom scrie un mic program Python pentru a trimite date în contul nostru de AllThingsTalk. Folosiți drept referință exemplul de mai jos, în care treubie să completați datele contului vostru:
  
 <code python> <code python>
-from devicehub import Sensor, Device, Project +import random 
-from time import sleep +import time
-from random import randint +
- +
-PROJECT_ID      = 'your project ID' +
-DEVICE_UUID     = 'your Device UUID' +
-API_KEY         = 'your API KEY' +
-AN_SENSOR_NAME  = 'Temperature' #make sure your sensor has the same name on DeviceHub! +
  
-def analog_input(devsensor): +from allthingstalk import ClientDeviceNumberAsset
-    value = randint(01023) +
-    sensor.addValue(value) +
-    dev.send() +
-    print value +
-    return+
  
-project Project(PROJECT_ID, ssl_verify=False) +# Parameters used to authorize and identify your device 
-device Device(project, DEVICE_UUID, API_KEY)+# Get them on maker.allthingstalk.com 
 +DEVICE_TOKEN '<YOUR_TOKEN>' 
 +DEVICE_ID '<YOUR_ID>'
  
-AN1 Sensor(Sensor.ANALOG, AN_SENSOR_NAME)+class RandomDevice(Device): 
 +    temperature NumberAsset(unit='°C')
  
-device.addSensor(AN1)+client = Client(DEVICE_TOKEN) 
 +device = RandomDevice(client=client, id=DEVICE_ID)
  
 while True: while True:
-    analog_input(device, AN1+    device.temperature = random.randint(1100
-    sleep(5.0)+    time.sleep(1)
 </code> </code>
  
-<note>**Task 0:** Rulați exemplul de mai sus și verificați trimiterea de date aleatorii în DeviceHub.</note>+<note>**Task 0:** Rulați exemplul de mai sus și verificați trimiterea de date aleatorii în AllThingsTalk.</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. 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.
Line 66: Line 58:
  </note>  </note>
  
-În Python, folosiți următorul exemplu pentru a deschide o conexiune serială cu placa Sparrow și a citi datele:+În Python, folosiți următorul exemplu pentru a deschide o conexiune serială cu placa Sparrow și a citi datele. Va trebui să instalați în prealabil biblioteca //pyserial//
 + 
 +<code shell> > sudo pip3 install pyserial</code>
  
 <code python> <code python>
Line 78: Line 72:
 while True: while True:
         line = ser.readline()         line = ser.readline()
-        print line+        print(line)
         sleep(1.0)         sleep(1.0)
 </code> </code>
-<note>**Task 2:** Modificați primul exemplu Python de mai sus pentru a trimite temperatura în DeviceHub.</note>+<note>**Task 2:** Modificați primul exemplu Python de mai sus pentru a trimite temperatura în AllThingsTalk.</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: <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>  <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>+Adăugați noi senzori analogici în interfața web AllThingsTalk 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 AllThingsTalk</note>
  
 ==== Trimiterea de comenzi ==== ==== Trimiterea de comenzi ====
  
-Putem să trimitem și comenzi din interfața DeviceHubPentru aceastatrebuie 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**.+Putem să trimitem și comenzi din interfața AllThingsTalkDe exemplucea mai simplă comandă pe care o putem trimite este un boolean care poate să comande starea unui LED.
  
-Rulați următorul exemplu Python pentru a citi starea actuatorului vostru din DeviceHub.+Rulați următorul exemplu Python pentru a citi starea actuatorului vostru din AllThingsTalk. Nu vă faceți griji în legătură cu actuatorul, el va fi creat automat de către platformă la rularea codului Python.
  
 <code python> <code python>
-from devicehub import SensorActuatorDeviceProject +import time 
-from time import sleep+from allthingstalk import DeviceBooleanAssetClientAsset
  
-PROJECT_ID      = 'your project ID' +# Parameters used to authorize and identify your device 
-DEVICE_UUID     = 'your Device UUID' +# Get them on maker.allthingstalk.com 
-API_KEY         = 'your API KEY+DEVICE_TOKEN = '<YOUR_TOKEN>
-AN_SENSOR_NAME  = 'LED#make sure your actuator has the same name on DeviceHub!+DEVICE_ID = '<YOUR_ID>'
  
-   
-def act1_callback(payload): 
-    """ 
-    :param payload: mqtt payload message 
-    """ 
-    print ACT1.state 
  
-project = Project(PROJECT_ID+class LedActuator(Device): 
-device Device(project, DEVICE_UUID, API_KEY)+    led BooleanAsset(kind=Asset.ACTUATOR)
  
-ACT1 = Actuator(Actuator.DIGITAL, ACTUATOR_NAME1) 
  
-device.addActuator(ACT1act1_callback)+# Authorize and connect your device with the Cloud 
 +client = Client(DEVICE_TOKEN) 
 +device = LedActuator(client=clientid=DEVICE_ID)
  
-try+ 
-    while True: +@LedActuator.command.led 
-        pass +def on_led(device, value, at)
-except KeyboardInterrupt:            +    print('Led state updated to %s.' % value) 
-    print 'Goodbye!'+ 
 + 
 +while True: 
 +    print('Waiting for actuation...'
 +    time.sleep(5)
  
 </code> </code>
Line 126: Line 119:
 <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> <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.+În mod similar, puteți să adăugați un actuator cu input analogic.
 Folosiți următorul exemplu de cod pentru a-l testa: Folosiți următorul exemplu de cod pentru a-l testa:
  
 <code python> <code python>
-from devicehub import SensorActuatorDeviceProject +import time 
-from time import sleep+from allthingstalk import DeviceIntegerAssetClientAsset
  
-PROJECT_ID      = 'your project ID' +# Parameters used to authorize and identify your device 
-DEVICE_UUID     = 'your Device UUID' +# Get them on maker.allthingstalk.com 
-API_KEY         = 'your API KEY+DEVICE_TOKEN = '<YOUR_TOKEN>
-AN_SENSOR_NAME  = 'RED#make sure your actuator has the same name on DeviceHub!+DEVICE_ID = '<YOUR_ID>'
  
-   
-def act1_callback(payload): 
-    """ 
-    :param payload: mqtt payload message 
-    """ 
  
-    print ACT1.state+class LedActuator(Device): 
 +    picker = IntegerAsset(kind=Asset.ACTUATOR)
  
-project = Project(PROJECT_ID) 
-device = Device(project, DEVICE_UUID, API_KEY) 
  
-ACT1 Actuator(Actuator.ANALOGACTUATOR_NAME1)+# Authorize and connect your device with the Cloud 
 +client Client(DEVICE_TOKEN) 
 +device = LedActuator(client=clientid=DEVICE_ID)
  
-device.addActuator(ACT1, act1_callback) 
  
-try: +@LedActuator.command.picker 
-    while True: +def on_picker(device, value, at)
-        pass +    print('Led brightness updated to %s.% value)
-except KeyboardInterrupt           +
-    print 'Goodbye!'+
  
 +
 +while True:
 +    print('Waiting for actuation...')
 +    time.sleep(5)
 </code> </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>+<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 AllThingsTalk intensitatea LED-ului roșu. </note>
  
allthingstalk.1542119070.txt.gz · Last modified: 2018/11/13 16:24 by dan.tudose