1 """Constants for InfluxDB integration."""
3 from datetime
import timedelta
6 import voluptuous
as vol
21 CONF_DB_NAME =
"database"
22 CONF_BUCKET =
"bucket"
23 CONF_ORG =
"organization"
25 CONF_DEFAULT_MEASUREMENT =
"default_measurement"
26 CONF_MEASUREMENT_ATTR =
"measurement_attr"
27 CONF_OVERRIDE_MEASUREMENT =
"override_measurement"
28 CONF_TAGS_ATTRIBUTES =
"tags_attributes"
29 CONF_COMPONENT_CONFIG =
"component_config"
30 CONF_COMPONENT_CONFIG_GLOB =
"component_config_glob"
31 CONF_COMPONENT_CONFIG_DOMAIN =
"component_config_domain"
32 CONF_RETRY_COUNT =
"max_retries"
33 CONF_IGNORE_ATTRIBUTES =
"ignore_attributes"
34 CONF_PRECISION =
"precision"
35 CONF_SSL_CA_CERT =
"ssl_ca_cert"
37 CONF_QUERIES =
"queries"
38 CONF_QUERIES_FLUX =
"queries_flux"
39 CONF_GROUP_FUNCTION =
"group_function"
41 CONF_MEASUREMENT_NAME =
"measurement"
44 CONF_RANGE_START =
"range_start"
45 CONF_RANGE_STOP =
"range_stop"
46 CONF_FUNCTION =
"function"
48 CONF_IMPORTS =
"imports"
50 DEFAULT_DATABASE =
"home_assistant"
51 DEFAULT_HOST_V2 =
"us-west-2-1.aws.cloud2.influxdata.com"
53 DEFAULT_BUCKET =
"Home Assistant"
54 DEFAULT_VERIFY_SSL =
True
55 DEFAULT_API_VERSION =
"1"
56 DEFAULT_GROUP_FUNCTION =
"mean"
57 DEFAULT_FIELD =
"value"
58 DEFAULT_RANGE_START =
"-15m"
59 DEFAULT_RANGE_STOP =
"now()"
60 DEFAULT_FUNCTION_FLUX =
"|> limit(n: 1)"
61 DEFAULT_MEASUREMENT_ATTR =
"unit_of_measurement"
63 INFLUX_CONF_MEASUREMENT =
"measurement"
64 INFLUX_CONF_TAGS =
"tags"
65 INFLUX_CONF_TIME =
"time"
66 INFLUX_CONF_FIELDS =
"fields"
67 INFLUX_CONF_STATE =
"state"
68 INFLUX_CONF_VALUE =
"value"
69 INFLUX_CONF_VALUE_V2 =
"_value"
70 INFLUX_CONF_ORG =
"org"
72 EVENT_NEW_STATE =
"new_state"
77 QUEUE_BACKLOG_SECONDS = 30
80 BATCH_BUFFER_SIZE = 100
81 LANGUAGE_INFLUXQL =
"influxQL"
82 LANGUAGE_FLUX =
"flux"
83 TEST_QUERY_V1 =
"SHOW DATABASES;"
84 TEST_QUERY_V2 =
"buckets()"
85 CODE_INVALID_INPUTS = 400
89 RE_DIGIT_TAIL = re.compile(
r"^[^\.]*\d+\.?\d+[^\.]*$")
90 RE_DECIMAL = re.compile(
r"[^\d.]+")
93 "Cannot connect to InfluxDB due to '%s'. "
94 "Please check that the provided connection details (host, port, etc.) are correct "
95 "and that your InfluxDB server is running and accessible."
98 "InfluxDB bucket is not accessible due to '%s'. "
99 "Please check that the bucket, org and token are correct and "
100 "that the token has the correct permissions set."
103 "InfluxDB database is not accessible due to '%s'. "
104 "Please check that the database, username and password are correct and "
105 "that the specified user has the correct permissions set."
108 "InfluxDB bucket '%s' cannot be found. "
109 "Check the name is correct and the token has access to it."
111 NO_DATABASE_ERROR = (
112 "InfluxDB database '%s' cannot be found. "
113 "Check the name is correct and the user has access to it."
115 WRITE_ERROR =
"Could not write '%s' to influx due to '%s'."
117 "Could not execute query '%s' due to '%s'. Check the syntax of your query."
119 RETRY_MESSAGE = f
"%s Retrying in {RETRY_INTERVAL} seconds."
120 CATCHING_UP_MESSAGE =
"Catching up, dropped %d old events."
121 RESUMED_MESSAGE =
"Resumed, lost %d events."
122 WROTE_MESSAGE =
"Wrote %d events."
123 RUNNING_QUERY_MESSAGE =
"Running query: %s."
124 QUERY_NO_RESULTS_MESSAGE =
"Query returned no results, sensor state set to UNKNOWN: %s."
125 QUERY_MULTIPLE_RESULTS_MESSAGE = (
126 "Query returned multiple results, only value from first one is shown: %s."
128 RENDERING_QUERY_MESSAGE =
"Rendering query: %s."
129 RENDERING_QUERY_ERROR_MESSAGE =
"Could not render query template: %s."
130 RENDERING_WHERE_MESSAGE =
"Rendering where: %s."
131 RENDERING_WHERE_ERROR_MESSAGE =
"Could not render where template: %s."
133 COMPONENT_CONFIG_SCHEMA_CONNECTION = {
135 vol.Optional(CONF_API_VERSION, default=DEFAULT_API_VERSION): vol.All(
137 vol.In([DEFAULT_API_VERSION, API_VERSION_2]),
139 vol.Optional(CONF_HOST): cv.string,
140 vol.Optional(CONF_PATH): cv.string,
141 vol.Optional(CONF_PORT): cv.port,
142 vol.Optional(CONF_SSL): cv.boolean,
143 vol.Optional(CONF_VERIFY_SSL, default=DEFAULT_VERIFY_SSL): cv.boolean,
144 vol.Optional(CONF_SSL_CA_CERT): cv.isfile,
145 vol.Optional(CONF_PRECISION): vol.In([
"ms",
"s",
"us",
"ns"]),
147 vol.Inclusive(CONF_USERNAME,
"authentication"): cv.string,
148 vol.Inclusive(CONF_PASSWORD,
"authentication"): cv.string,
149 vol.Optional(CONF_DB_NAME, default=DEFAULT_DATABASE): cv.string,
151 vol.Inclusive(CONF_TOKEN,
"v2_authentication"): cv.string,
152 vol.Inclusive(CONF_ORG,
"v2_authentication"): cv.string,
153 vol.Optional(CONF_BUCKET, default=DEFAULT_BUCKET): cv.string,