Как отправлять данные в Thingsboard через HTTP - PullRequest
0 голосов
/ 26 мая 2020

Я использую thingsboard на моем локальном компьютере (windows), и мне нужно отправить данные из файла CSV с запросом HTTP POST , для этого мне нужно написать JAVA программа, которая позволит отправлять данные из файла JSON на платформу thingsboard. У вас есть предложения, как я могу это сделать?

1 Ответ

0 голосов
/ 02 июня 2020

Это довольно просто, нет необходимости в аутентификации, и это примерно API загрузки телеметрии . Поскольку у вас нет примера вашего csv, и предполагая, что для этого вы можете найти множество руководств, я просто привожу здесь пример выполнения HTTP-запроса POST на сервер THINGSBOARD с использованием python http-клиента, в зависимости от ваших требований это может быть выполняется на любом языке.

вам необходимо только:

  • Преобразование данных из csv или любого формата в следующий формат в словаре data с правильной меткой времени ts и другие переменные в поле values. Если вы не поставите ts, на нем будет проставлено время ввода данных. ts должно быть в миллисекундах.

  • Преобразуйте его в json

  • Используйте IP-адрес хоста, ПОРТ и токен доступа это устройство в URL-адресе, как в примере.

      import requests, json
    
      IP, PORT, access_token = ???.???.???.??? # host address of Thingsboard server
      PORT = 8080 # normally it should be 8080 
      access_token = XXXXXXXX # you can copy it easily from device panel of Thingsboard
    
      data = [
        {
          "ts": 1591123823000,
          "values": {
            "TEMPERATURES": 100,
            "DEW_POINT": 28,
            "VALUE_X": 0
          }
        },
        {
          "ts": 1591123883000,
          "values": {
            "TEMPERATURES": 150,
            "DEW_POINT": 26,
            "VALUE_X": 10
          }
        },
        {
          "ts": 1591123943000,
          "values": {
            "TEMPERATURES": 200,
            "DEW_POINT": 25,
            "VALUE_X": -10
          }
        }
      ]
    
      data = json.dumps(data) 
    
      headers = {'Content-Type': 'application/json',}
    
      url_post = 'http(s)://{}:{}/api/v1/{}/telemetry'.format(IP, PORT, access_token)
    
      response = requests.post(url_post, headers=headers, data=data)
    
...