1
0
mirror of https://github.com/daniviga/bite.git synced 2025-04-18 22:00:11 +02:00

Improve device API endpoints

This commit is contained in:
Daniele Viganò 2020-06-05 11:59:44 +02:00
parent 253411c0fd
commit 02cb3bd042
Signed by: dani
GPG Key ID: DB49AFC03C40EE02
5 changed files with 40 additions and 13 deletions

View File

@ -29,7 +29,7 @@ struct netConfig {
};
netConfig config;
const String apiURL = "/api/subscribe/";
const String apiURL = "/api/device/subscribe/";
const String telemetryURL = "/telemetry/";
const int postDelay = 10 * 1000;

View File

@ -31,10 +31,12 @@ def post_json(host, url, data):
except urllib3.exceptions.MaxRetryError:
pass
sleep(10) # retry in 10 seconds
def main():
host = os.environ.get('IOT_HOST', 'http://127.0.0.1:8000')
subscribe = '/api/subscribe/'
subscribe = '/api/device/subscribe/'
telemetry = '/telemetry/'
delay = int(os.environ.get('IOT_DELAY', 10))
@ -49,17 +51,16 @@ def main():
data = {
'device': serial,
'clock': int(datetime.datetime.now().timestamp()),
'payload': {
'id': 'device_http_simulator',
'light': random.randint(300, 500),
"temperature": {
"celsius": random.uniform(20, 28)
}
}
}
while True:
post_json(host, telemetry, data)
payload = {
'id': 'device_http_simulator',
'light': random.randint(300, 500),
'temperature': {
'celsius': round(random.uniform(20, 28), 1)}
}
post_json(host, telemetry, {**data, 'payload': payload})
sleep(delay)

View File

@ -0,0 +1,19 @@
# Generated by Django 3.0.6 on 2020-06-05 09:19
from django.db import migrations, models
import uuid
class Migration(migrations.Migration):
dependencies = [
('api', '0003_auto_20200602_2128'),
]
operations = [
migrations.AddField(
model_name='device',
name='uuid',
field=models.UUIDField(default=uuid.uuid4, editable=False, unique=True),
),
]

View File

@ -1,3 +1,5 @@
import uuid
from django.db import models
from django.conf import settings
from django.core.exceptions import ValidationError
@ -31,6 +33,8 @@ class WhiteList(models.Model):
class Device(models.Model):
serial = models.CharField(max_length=128, unique=True,
validators=[device_validation])
uuid = models.UUIDField(unique=True, default=uuid.uuid4,
editable=False)
creation_time = models.DateTimeField(auto_now_add=True)
updated_time = models.DateTimeField(auto_now=True)

View File

@ -17,7 +17,10 @@ from django.urls import path
from api.views import APISubscribe
urlpatterns = [
path('subscribe/',
APISubscribe.as_view({'get': 'list', 'post': 'create'}),
name='api_subscribe'),
path('device/subscribe/',
APISubscribe.as_view({'post': 'create'}),
name='device-subscribe'),
path('device/list/',
APISubscribe.as_view({'get': 'list'}),
name='device-list'),
]