Skip to content
Open
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
34 changes: 12 additions & 22 deletions sensorflux/database_connector.py
Original file line number Diff line number Diff line change
Expand Up @@ -10,7 +10,8 @@

from datetime import datetime

from influxdb import InfluxDBClient
from influxdb_client import InfluxDBClient
from influxdb_client.client.write_api import ASYNCHRONOUS


class DatabaseConnector:
Expand All @@ -23,21 +24,19 @@ class DatabaseConnector:
"""
host = 'localhost'
port = 8086
username = 'admin'
password = 'admin'
database_name = 'sensorflux'
bucket = 'sensorflux'
token = 'admin'
org = 'admin'

def __init__(self, measurement, device, fields):
self._client = InfluxDBClient(
host=self.host,
port=self.port,
username=self.username,
password=self.password,
database=self.database_name)
url=f'http://{self.host}:{self.port}',
token=self.token,
org=self.org)
self.write_api = self.client.write_api(write_options=ASYNCHRONOUS)
self._measurement = measurement
self._device = device
self._fields = fields
self._ensure_database()

@property
def client(self):
Expand All @@ -55,11 +54,6 @@ def device(self):
def fields(self):
return self._fields

def _ensure_database(self):
db_list = (el['name'] for el in self.client.get_list_database())
if self.database_name not in db_list:
self.client.create_database(self.database_name)

def check_data(self, data):
"""
Checks that the data is in a valid format. Returns true if yes.
Expand Down Expand Up @@ -92,18 +86,14 @@ def data_to_point(self, data):

def write(self, data):
r"""
Sends data to influxdb. Returns true if successful.
Sends data to influxdb.

:param dict data: measurement data as a dict optionally
containing a timestamp in ISO 8601 format, and containing
any of 'temp', 'atmo' or 'humi' values.
:rtype: bool
"""
if not self.check_data(data):
return False
point = self.data_to_point(data)
successful = self.client.write_points([point])
return successful

def delete_data(self):
self.client.delete_series(tags={'device': self.device})
result = self.write_api.write(bucket=self.bucket, record=point)
result.get()
2 changes: 1 addition & 1 deletion setup.py
Original file line number Diff line number Diff line change
Expand Up @@ -35,7 +35,7 @@ def read(filename):
]
},

install_requires=['influxdb', 'pyserial-asyncio'],
install_requires=['influxdb-client', 'pyserial-asyncio'],
setup_requires=['pytest-runner'],
tests_require=['pytest'],

Expand Down