Запись данных в influxDB ⇐ Linux
-
Anonymous
Запись данных в influxDB
Я пытаюсь записать данные, которые считываю с датчика DHT11, подключенного к моему GPIO, в базу данных контейнера InfluxDB. Я написал свою собственную библиотеку и могу установить соединение с моей базой данных. Однако я столкнулся с трудностями при записи данных в базу данных.
Моя библиотека:
# модулей сокетов импортированы для сетевой связи импорт сокета # Модуль sys импортирован для системных функций импортировать систему класс InfluxDB_Library: def __init__(я, хост, порт, база данных): self.host = хост # Адрес хоста self.port = порт # Порт, на котором работает БД self.database = база данных # База данных, в которую будут записаны данные self.socket = None # Инициализировать объект сокета защита Connect (сам): self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Объект сокета создается для связи пытаться: self.socket.connect((self.host, self.port)) # Соединение с хостом print("Соединение установлено успешно") кроме сокета.error как e: print("Ошибка подключения к базе данных", e) # Если соединение не установлено, вывести ошибку sys.exit(1) # Программа завершает работу при ошибке def Write(self, измерение, поля): data = "INSERT {} {}\n" .format(measurement,fields) # Создается точка данных для записи данных self.Send(data) # Отправляем данные запрос защиты (self, request_string): data = "QUERY {}\n" .format(request_string) # Создаём запрос к базе данных ответ = self.Send(data) # Отправляем запрос в базу данных return ответ # Вернуть ответ def Send(сам, данные): пытаться: self.socket.sendall(data.encode()) # Отправляем данные через созданный объект сокета ответ = self.socket.recv(1024) return answer.decode() # Ответ декодируется и возвращается кроме сокета.error как e: print("Ошибка отправки данных в базу данных") # Если при отправке произошла ошибка, вывести сообщение об ошибке sys.exit(1) # Программа завершает работу при ошибке защита Close(self): self.socket.close() # Объект сокета закрывается И это часть моего кода, в которой я использую свою библиотеку для записи данных в базу данных.
# Создаём экземпляр класса базы данных База данных = influxdb.InfluxDB_Library (база данных = «Датчик», хост = «Контейнер/локальный хост-IP», порт = 8086) пытаться: Database.Connect() # Подключаемся к базе данных пока Правда: # Считайте температуру и влажность температура = dht_device.temperature влажность = dht_device.humidity # Здесь данные, считанные датчиком, записываются в резервуар данных Database.Write(measurement = "Данные_датчика", поля = {"Температура": температура, "Влажность": влажность}) # 2-секундная пауза перед повторным считыванием значений время.сон(2) кроме KeyboardInterrupt: # Используйте (Ctrl + C), чтобы завершить программу заграничный пасспорт окончательно: Database.Close() # Соединение с базой данных закрывается # Закройте датчик и освободите все контакты GPIO dht_device.exit()
Я пытаюсь записать данные, которые считываю с датчика DHT11, подключенного к моему GPIO, в базу данных контейнера InfluxDB. Я написал свою собственную библиотеку и могу установить соединение с моей базой данных. Однако я столкнулся с трудностями при записи данных в базу данных.
Моя библиотека:
# модулей сокетов импортированы для сетевой связи импорт сокета # Модуль sys импортирован для системных функций импортировать систему класс InfluxDB_Library: def __init__(я, хост, порт, база данных): self.host = хост # Адрес хоста self.port = порт # Порт, на котором работает БД self.database = база данных # База данных, в которую будут записаны данные self.socket = None # Инициализировать объект сокета защита Connect (сам): self.socket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) # Объект сокета создается для связи пытаться: self.socket.connect((self.host, self.port)) # Соединение с хостом print("Соединение установлено успешно") кроме сокета.error как e: print("Ошибка подключения к базе данных", e) # Если соединение не установлено, вывести ошибку sys.exit(1) # Программа завершает работу при ошибке def Write(self, измерение, поля): data = "INSERT {} {}\n" .format(measurement,fields) # Создается точка данных для записи данных self.Send(data) # Отправляем данные запрос защиты (self, request_string): data = "QUERY {}\n" .format(request_string) # Создаём запрос к базе данных ответ = self.Send(data) # Отправляем запрос в базу данных return ответ # Вернуть ответ def Send(сам, данные): пытаться: self.socket.sendall(data.encode()) # Отправляем данные через созданный объект сокета ответ = self.socket.recv(1024) return answer.decode() # Ответ декодируется и возвращается кроме сокета.error как e: print("Ошибка отправки данных в базу данных") # Если при отправке произошла ошибка, вывести сообщение об ошибке sys.exit(1) # Программа завершает работу при ошибке защита Close(self): self.socket.close() # Объект сокета закрывается И это часть моего кода, в которой я использую свою библиотеку для записи данных в базу данных.
# Создаём экземпляр класса базы данных База данных = influxdb.InfluxDB_Library (база данных = «Датчик», хост = «Контейнер/локальный хост-IP», порт = 8086) пытаться: Database.Connect() # Подключаемся к базе данных пока Правда: # Считайте температуру и влажность температура = dht_device.temperature влажность = dht_device.humidity # Здесь данные, считанные датчиком, записываются в резервуар данных Database.Write(measurement = "Данные_датчика", поля = {"Температура": температура, "Влажность": влажность}) # 2-секундная пауза перед повторным считыванием значений время.сон(2) кроме KeyboardInterrupt: # Используйте (Ctrl + C), чтобы завершить программу заграничный пасспорт окончательно: Database.Close() # Соединение с базой данных закрывается # Закройте датчик и освободите все контакты GPIO dht_device.exit()
Мобильная версия