Веб-приложение
-
- Мимо проходил
- Сообщения: 4
- Зарегистрирован: Чт, 28 апр 2022 11:25
Веб-приложение
Всем доброго времени суток, я являюсь студентом 3 курса и работаю над проектом в рамках обучения (в одном Томском ВУЗе есть такая фишка). Суть проекта в сборе климатических параметров (температура, влажность, давление). В качестве базовой станции выступает у нас БС 2.2, в качестве оконечных устройств мы используем своё устройство, для которого пишем сами прошивку. Само устройство состоит из микроконтроллера Nucleo STM32, приемопередатчик RAK811, который сажается на переходник XBee, сам сенсор для сбора параметров - UMDK-THP от компании unwired devices.
Так вот, проблема состоит в том, что Vega Pulse не поддерживает оконечные устройства от других компаний. Руководитель проекта мне поставил задачу написать веб-приложение, в котором можно будет добавлять оконечные устройства (как это делается в AdminTool); запрашивать с определенным периодом данные с оконечного устройства; возможность авторизоваться различным пользователям, которые создаются в AdminTool; Синхронизировать данные с БД сервера; Иметь возможность отправки команды на оконечное устройство для того, чтобы тот отправил данные прямо сейчас, анализировать пришедшие данные в виде графика.
Я понимаю, что это только моя проблема, но я совсем не понимаю с чего начать, кроме как использовать API документацию. Какой язык использовать лучше, что как связать. А может вообще уже есть готовые решения...
Помогите!
Заранее спасибо всем
Так вот, проблема состоит в том, что Vega Pulse не поддерживает оконечные устройства от других компаний. Руководитель проекта мне поставил задачу написать веб-приложение, в котором можно будет добавлять оконечные устройства (как это делается в AdminTool); запрашивать с определенным периодом данные с оконечного устройства; возможность авторизоваться различным пользователям, которые создаются в AdminTool; Синхронизировать данные с БД сервера; Иметь возможность отправки команды на оконечное устройство для того, чтобы тот отправил данные прямо сейчас, анализировать пришедшие данные в виде графика.
Я понимаю, что это только моя проблема, но я совсем не понимаю с чего начать, кроме как использовать API документацию. Какой язык использовать лучше, что как связать. А может вообще уже есть готовые решения...
Помогите!
Заранее спасибо всем
Re: Веб-приложение
Добрый день!
Ну самый "просто2 способ - взять сам Pulse (он в исходниках) и переделать.
А вообще получается, что вам таким же образом придется переписывать и Admin Tools и другие утилиты.
А ваше устройство соответственно должно будет "играть по правилам" протокола LoraWAN.
Полностью взаимодействие описано в API (вроде бы последняя версия 23). Язык уж выбирайте сами. Опять же, пока ваше устройство не будет нормально взаимодействовать с сервером (Данные в БД как раз сервер обновляет) смысла писать отображение не вижу.
В любом случае, взаимодействие устройства с сервером - это одно (это дело прошивки), а отображение данных - совсем другое (API, WebSock).
Ну самый "просто2 способ - взять сам Pulse (он в исходниках) и переделать.
А вообще получается, что вам таким же образом придется переписывать и Admin Tools и другие утилиты.
А ваше устройство соответственно должно будет "играть по правилам" протокола LoraWAN.
Полностью взаимодействие описано в API (вроде бы последняя версия 23). Язык уж выбирайте сами. Опять же, пока ваше устройство не будет нормально взаимодействовать с сервером (Данные в БД как раз сервер обновляет) смысла писать отображение не вижу.
В любом случае, взаимодействие устройства с сервером - это одно (это дело прошивки), а отображение данных - совсем другое (API, WebSock).
-
- Мимо проходил
- Сообщения: 4
- Зарегистрирован: Чт, 28 апр 2022 11:25
Re: Веб-приложение
Может есть здесь святой человек, который уже использовал API для написания своего приложения?
Re: Веб-приложение
Конечно есть
Я крупного не писал, писал небольшие модули как правило для запросов к нестандартным устройствам через RS-485 на Python.
Ну вот например:
Запрос к метеостации МК-26 для выдачи текущего состояния (ModBus)
from websocket import create_connection
import json
import time
#### Data section
autreq = {"cmd":"auth_req", # Don't change!
"login": "root", # Login name
"password": "2019@Lora" # password
}
sendconfreq1 = {"cmd":"tx", # Don't change!
"status": "true", # Don't change!
"devEui": "3137353259386F10", # First meteo station - SI-13 DevEUI
"data": "04ff0400000038e406", # command - resd registers - Don't change!
"port": 0x02
}
sendconfreq2 = {"cmd":"tx", # Don't change!
"status": "true", # Don't change!
"devEui": "313735326038660C", # Second meteo station - SI-13 DevEUI
"data": "04ff0400000038e406", # command - resd registers - Don't change!
"port": 0x02
}
autresp1 = []
autresp2 = []
### Code section
ws = create_connection("ws://10.105.24.39:8002/") # IP Address xx-LNMS01 server
ws.send(json.dumps(autreq))
autresp = ws.recv()
ws.send(json.dumps(sendconfreq1))
autresp1 = ws.recv()
#print(autresp1)
time.sleep(10) # Pause between command send (10 second)
ws.send(json.dumps(sendconfreq2))
autresp2 = ws.recv()
#print(autresp2)
ws.close()
Я крупного не писал, писал небольшие модули как правило для запросов к нестандартным устройствам через RS-485 на Python.
Ну вот например:
Запрос к метеостации МК-26 для выдачи текущего состояния (ModBus)
from websocket import create_connection
import json
import time
#### Data section
autreq = {"cmd":"auth_req", # Don't change!
"login": "root", # Login name
"password": "2019@Lora" # password
}
sendconfreq1 = {"cmd":"tx", # Don't change!
"status": "true", # Don't change!
"devEui": "3137353259386F10", # First meteo station - SI-13 DevEUI
"data": "04ff0400000038e406", # command - resd registers - Don't change!
"port": 0x02
}
sendconfreq2 = {"cmd":"tx", # Don't change!
"status": "true", # Don't change!
"devEui": "313735326038660C", # Second meteo station - SI-13 DevEUI
"data": "04ff0400000038e406", # command - resd registers - Don't change!
"port": 0x02
}
autresp1 = []
autresp2 = []
### Code section
ws = create_connection("ws://10.105.24.39:8002/") # IP Address xx-LNMS01 server
ws.send(json.dumps(autreq))
autresp = ws.recv()
ws.send(json.dumps(sendconfreq1))
autresp1 = ws.recv()
#print(autresp1)
time.sleep(10) # Pause between command send (10 second)
ws.send(json.dumps(sendconfreq2))
autresp2 = ws.recv()
#print(autresp2)
ws.close()
-
- Мимо проходил
- Сообщения: 4
- Зарегистрирован: Чт, 28 апр 2022 11:25
Re: Веб-приложение
Могу ли я с вами как-то связаться напрямую?
Re: Веб-приложение
a80808 на сервере yandex.ru
-
- Мимо проходил
- Сообщения: 4
- Зарегистрирован: Чт, 28 апр 2022 11:25
- a.gerusenko
- Сотрудник компании
- Сообщения: 26
- Зарегистрирован: Пт, 26 июл 2019 16:48
Re: Веб-приложение
Добрый день.stupid_student писал(а): ↑Чт, 28 апр 2022 11:43Всем доброго времени суток, я являюсь студентом 3 курса и работаю над проектом в рамках обучения (в одном Томском ВУЗе есть такая фишка). Суть проекта в сборе климатических параметров (температура, влажность, давление). В качестве базовой станции выступает у нас БС 2.2, в качестве оконечных устройств мы используем своё устройство, для которого пишем сами прошивку. Само устройство состоит из микроконтроллера Nucleo STM32, приемопередатчик RAK811, который сажается на переходник XBee, сам сенсор для сбора параметров - UMDK-THP от компании unwired devices.
Так вот, проблема состоит в том, что Vega Pulse не поддерживает оконечные устройства от других компаний. Руководитель проекта мне поставил задачу написать веб-приложение, в котором можно будет добавлять оконечные устройства (как это делается в AdminTool); запрашивать с определенным периодом данные с оконечного устройства; возможность авторизоваться различным пользователям, которые создаются в AdminTool; Синхронизировать данные с БД сервера; Иметь возможность отправки команды на оконечное устройство для того, чтобы тот отправил данные прямо сейчас, анализировать пришедшие данные в виде графика.
Я понимаю, что это только моя проблема, но я совсем не понимаю с чего начать, кроме как использовать API документацию. Какой язык использовать лучше, что как связать. А может вообще уже есть готовые решения...
Помогите!
Заранее спасибо всем
Если правильно понял вам нужно написать веб приложение для визуализации данных с устройства. То есть у вас уже есть устройство которое передает данные на БС, у вас уже развернут наш сервер, на котором через AdminTool можно видеть телеметрию устройства.
Могу предложить вам изучить исходные коды(которые у нас открытые) уже написанных нами приложений, в помощь понимания как работать с API нашего сервера.
Начните с самого простого
https://github.com/VegaAbsolute/IotVegaTimeCorrector
или
https://github.com/VegaAbsolute/IotVegaLora2MQTT
Далее можно ознакомиться с
https://github.com/VegaAbsolute/IotVegaNotifierLite
Все примеры приложения node js, написаны на js. У многих кто выбирает js почему то возникают трудности работы с байтовыми протоколами...
Как удобно разбирать данные можно посмотреть тут
https://github.com/VegaAbsolute/IoTVegaParser
Приложения admintool и pulse - у них так же открытый исходный код, они демонстрируют, что для работы с нашим сервером не обязательно писать какой то бекенд для веб приложения.
Старший инженер-программист
- a.gerusenko
- Сотрудник компании
- Сообщения: 26
- Зарегистрирован: Пт, 26 июл 2019 16:48
Re: Веб-приложение
Есть способы проще чем писать полноценно веб приложение.
Например использовать Node-RED. Пример как работать с нашим сервером прикрепил.
Нужно.
1. Установить node-red
2. импортировать json файл который я прикрепил
3. установить в node-red модуль dashboard (например)
4. по аналогии с тем что прикрепил, написать парсер своего устройства, доделать функционал и тд.
Но не уверен что преподаватель примет такое решение. Но это очень быстрое решение.
Например использовать Node-RED. Пример как работать с нашим сервером прикрепил.
Нужно.
1. Установить node-red
2. импортировать json файл который я прикрепил
3. установить в node-red модуль dashboard (например)
4. по аналогии с тем что прикрепил, написать парсер своего устройства, доделать функционал и тд.
Но не уверен что преподаватель примет такое решение. Но это очень быстрое решение.
- Вложения
-
- nodered_iotvega.json.zip
- (4.71 КБ) 312 скачиваний
Старший инженер-программист