# HG changeset patch # User matthewreed # Date 2017-01-01 16:46:22 # Node ID 1dd55863f6845f810504521a17ad0bb4b6cdbf20 # Parent 4d9b047f84367d618ee06f8aacc3a3b6469a0012 Added exception handling for database connection error diff --git a/hydrobot.py b/hydrobot.py --- a/hydrobot.py +++ b/hydrobot.py @@ -6,7 +6,6 @@ import configparser import datetime from canard import can, messaging from canard.hw import socketcan -from canard.hw import cantact from canard.file import jsondb from canard.utils import queue from influxdb import InfluxDBClient @@ -66,39 +65,40 @@ class Database: password = config.get("database", "password") database = config.get("database", "database") self.name = config.get("system", "name") - self.client = InfluxDBClient(host, port, username, password, database) - MySeriesHelper.Meta.client = self.client - MySeriesHelper.Meta.series_name = self.name + '.{measurement}' + try: + self.client = InfluxDBClient(host, port, username, password, database) + MySeriesHelper.Meta.client = self.client + MySeriesHelper.Meta.series_name = self.name + '.{measurement}' + except: + logger.error("Could not connect to database") # To manually submit data points which are not yet written, call commit: #MySeriesHelper.commit() def log_data(self, msgdb, message): - if message == msgdb.AirSense: - MySeriesHelper(measurement='air_temp', value=(float)(message.Temperature.value)) - MySeriesHelper(measurement='air_humidity', value=(float)(message.Humidity.value)) - MySeriesHelper(measurement='air_pressure', value=(float)(message.Pressure.value)) - if message == msgdb.RelayDriveIn: - MySeriesHelper(measurement='water_flow_rate', value=(float)(message.FlowRate.value)) - MySeriesHelper(measurement='input_1', value=(float)(message.Input1.value)) - MySeriesHelper(measurement='input_2', value=(float)(message.Input2.value)) - MySeriesHelper(measurement='input_3', value=(float)(message.Input3.value)) - MySeriesHelper(measurement='input_4', value=(float)(message.Input4.value)) - if message == msgdb.WaterSense: - MySeriesHelper(measurement='water_level', value=(float)(message.PercentFull.value)) - MySeriesHelper(measurement='water_temp', value=(float)(message.Temperature.value)) - + try: + if message == msgdb.AirSense: + MySeriesHelper(measurement='air_temp', value=(float)(message.Temperature.value)) + MySeriesHelper(measurement='air_humidity', value=(float)(message.Humidity.value)) + MySeriesHelper(measurement='air_pressure', value=(float)(message.Pressure.value)) + if message == msgdb.RelayDriveIn: + MySeriesHelper(measurement='water_flow_rate', value=(float)(message.FlowRate.value)) + MySeriesHelper(measurement='input_1', value=(float)(message.Input1.value)) + MySeriesHelper(measurement='input_2', value=(float)(message.Input2.value)) + MySeriesHelper(measurement='input_3', value=(float)(message.Input3.value)) + MySeriesHelper(measurement='input_4', value=(float)(message.Input4.value)) + if message == msgdb.WaterSense: + MySeriesHelper(measurement='water_level', value=(float)(message.PercentFull.value)) + MySeriesHelper(measurement='water_temp', value=(float)(message.Temperature.value)) + except: + logger.error("Could not connect to database") class CanBus: def __init__(self, database): self.database = database - self.dev = socketcan.SocketCanDev("can0") - #self.dev = cantact.CantactDev("/dev/ttyACM8") - #self.dev.set_bitrate(500000) - self.queue = queue.CanQueue(self.dev) parser = jsondb.JsonDbParser()