This shows you the differences between two versions of the page.
Both sides previous revision Previous revision Next revision | Previous revision | ||
allthingstalk [2018/11/13 16:09] dan.tudose [Transmisia datelor în Cloud] |
allthingstalk [2018/11/16 10:07] (current) dan.tudose [Trimiterea de date] |
||
---|---|---|---|
Line 7: | Line 7: | ||
- | ===== DeviceHub | + | ===== AllThingsTalk |
- | 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 | + | 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 |
- | Trebuie să adăugați un nou dispozitiv proiectului | + | Pentru început, atașați un senzor |
- | 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**. | + | 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. |
- | DeviceHub pune la dispoziție un API prin care diverse platforme IoT se pot conecta direct la server-ul | + | Pentru aceasta, trebuie să vă instalați [[https:// |
- | Pentru aceasta, trebuie să vă instalați [[https:// | + | <code shell> > sudo pip3 install |
- | + | ||
- | <code shell> > pip install | + | |
==== 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 |
- | from time import sleep | + | import |
- | from random import randint | + | |
- | PROJECT_ID | + | from allthingstalk import Client, |
- | DEVICE_UUID | + | |
- | API_KEY | + | |
- | AN_SENSOR_NAME | + | |
+ | # Parameters used to authorize and identify your device | ||
+ | # Get them on maker.allthingstalk.com | ||
+ | DEVICE_TOKEN = '< | ||
+ | DEVICE_ID = '< | ||
- | def analog_input(dev, sensor): | + | class RandomDevice(Device): |
- | | + | |
- | sensor.addValue(value) | + | |
- | dev.send() | + | |
- | print value | + | |
- | return | + | |
- | project | + | client |
- | device = Device(project, DEVICE_UUID, | + | device = RandomDevice(client=client, id=DEVICE_ID) |
- | + | ||
- | AN1 = Sensor(Sensor.ANALOG, | + | |
- | + | ||
- | device.addSensor(AN1) | + | |
while True: | while True: | ||
- | | + | device.temperature = random.randint(1, 100) |
- | sleep(5.0) | + | |
</ | </ | ||
- | < | + | < |
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 68: | Line 58: | ||
</ | </ | ||
- | Î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 // |
+ | |||
+ | <code shell> > sudo pip3 install pyserial</ | ||
<code python> | <code python> | ||
Line 80: | Line 72: | ||
while True: | while True: | ||
line = ser.readline() | line = ser.readline() | ||
- | print line | + | print(line) |
sleep(1.0) | sleep(1.0) | ||
</ | </ | ||
- | < | + | < |
< | < | ||
< | < | ||
- | Adăugați noi senzori analogici în interfața web DeviceHub | + | Adăugați noi senzori analogici în interfața web AllThingsTalk |
==== Trimiterea de comenzi ==== | ==== Trimiterea de comenzi ==== | ||
- | Putem să trimitem și comenzi din interfața | + | Putem să trimitem și comenzi din interfața |
- | 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 time |
- | from time import sleep | + | from allthingstalk |
- | PROJECT_ID | + | # Parameters used to authorize and identify |
- | DEVICE_UUID | + | # Get them on maker.allthingstalk.com |
- | API_KEY | + | DEVICE_TOKEN |
- | AN_SENSOR_NAME | + | DEVICE_ID |
- | | ||
- | def act1_callback(payload): | ||
- | """ | ||
- | :param payload: mqtt payload message | ||
- | """ | ||
- | print ACT1.state | ||
- | project = Project(PROJECT_ID) | + | class LedActuator(Device): |
- | device | + | |
- | ACT1 = Actuator(Actuator.DIGITAL, | ||
- | device.addActuator(ACT1, act1_callback) | + | # Authorize and connect your device |
+ | client = Client(DEVICE_TOKEN) | ||
+ | device = LedActuator(client=client, id=DEVICE_ID) | ||
- | try: | + | |
- | while True: | + | @LedActuator.command.led |
- | pass | + | def on_led(device, |
- | except KeyboardInterrupt: | + | |
- | print 'Goodbye!' | + | |
+ | |||
+ | while True: | ||
+ | print('Waiting for actuation...') | ||
+ | time.sleep(5) | ||
</ | </ | ||
Line 128: | Line 119: | ||
< | < | ||
- | În mod similar, puteți să adăugați un actuator cu input analogic | + | Î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 time |
- | from time import sleep | + | from allthingstalk |
- | PROJECT_ID | + | # Parameters used to authorize and identify |
- | DEVICE_UUID | + | # Get them on maker.allthingstalk.com |
- | API_KEY | + | DEVICE_TOKEN |
- | AN_SENSOR_NAME | + | DEVICE_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, | ||
- | ACT1 = Actuator(Actuator.ANALOG, ACTUATOR_NAME1) | + | # Authorize and connect your device with the Cloud |
+ | client | ||
+ | device = LedActuator(client=client, id=DEVICE_ID) | ||
- | device.addActuator(ACT1, | ||
- | try: | + | @LedActuator.command.picker |
- | while True: | + | def on_picker(device, |
- | pass | + | print('Led brightness updated to %s.' |
- | except KeyboardInterrupt: | + | |
- | print 'Goodbye!' | + | |
+ | |||
+ | while True: | ||
+ | print(' | ||
+ | time.sleep(5) | ||
</ | </ | ||
- | < | + | < |