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: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:// | Pentru a avea acces la resurse, trebuie să vă creați mai întâi un cont pe [[https:// | ||
- | Pentru început, atașați un senzor nou dispozitivului vostru cu New Asset. Denumiți-l **Temperature**, | + | Pentru început, atașați un senzor nou dispozitivului vostru cu New Asset. Denumiți-l **Temperature**, |
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 |
- | from time import sleep | + | import |
- | from random import randint | + | |
- | + | ||
- | PROJECT_ID | + | |
- | DEVICE_UUID | + | |
- | API_KEY | + | |
- | AN_SENSOR_NAME | + | |
- | def analog_input(dev, sensor): | + | from allthingstalk import Client, Device, NumberAsset |
- | value = randint(0, 1023) | + | |
- | sensor.addValue(value) | + | |
- | dev.send() | + | |
- | print value | + | |
- | return | + | |
- | project | + | # Parameters used to authorize and identify your device |
- | device | + | # Get them on maker.allthingstalk.com |
+ | DEVICE_TOKEN | ||
+ | DEVICE_ID | ||
- | AN1 = Sensor(Sensor.ANALOG, | + | class RandomDevice(Device): |
+ | temperature | ||
- | device.addSensor(AN1) | + | client = Client(DEVICE_TOKEN) |
+ | device | ||
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 66: | 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 78: | 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 126: | 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) | ||
</ | </ | ||
- | < | + | < |