]> mj.ucw.cz Git - home-hw.git/blobdiff - influx/burrow-influx.c
Auto: Meditation mode turned off
[home-hw.git] / influx / burrow-influx.c
index 6894062fc8e4ae80ab7a844a56a89f3e75357939..ce5baf247e4d88ea230f1f07e11a70223db0153c 100644 (file)
@@ -35,6 +35,7 @@ struct attr {
        const char *value_name;
        const char *topic;
        uint timeout;
+       bool is_string;
 };
 
 static const struct attr attr_table[] = {
@@ -59,9 +60,9 @@ static const struct attr attr_table[] = {
                .topic = "burrow/temp/garage"
        },
        {
-               .metric = "temp,where=kitchen",
+               .metric = "temp,where=terarium",
                .value_name = "t",
-               .topic = "burrow/temp/kitchen"
+               .topic = "burrow/temp/terarium"
        },
        {
                .metric = "rh,where=ursarium",
@@ -123,12 +124,11 @@ static const struct attr attr_table[] = {
                .value_name = "pwm",
                .topic = "burrow/air/exchanger-fan"
        },
-#if 0
        {
                .metric = "loft_fan",
+               .value_name = "on",
                .topic = "burrow/loft/fan"
        },
-#endif
        {
                .metric = "water_circ",
                .value_name = "on",
@@ -194,7 +194,7 @@ static const struct attr attr_table[] = {
                .metric = "heating_outside_temp",
                .value_name = "t",
                .topic = "burrow/heating/outside-temp",
-               .timeout = 300,
+               .timeout = 660,
        },
        {
                .metric = "heating_room_temp,circuit=1",
@@ -214,12 +214,49 @@ static const struct attr attr_table[] = {
                .topic = "burrow/heating/circuit1/mix-valve",
                .timeout = 300,
        },
+       {
+               .metric = "heating_active,circuit=1",
+               .value_name = "x",
+               .topic = "burrow/heating/circuit1/active",
+               .timeout = 660,
+       },
+       {
+               .metric = "heating_pump_active,circuit=1",
+               .value_name = "x",
+               .topic = "burrow/heating/circuit1/pump",
+               .timeout = 300,
+       },
        {
                .metric = "heating_room_temp,circuit=2",
                .value_name = "t",
                .topic = "burrow/heating/circuit2/room-temp",
                .timeout = 300,
        },
+       {
+               .metric = "heating_active,circuit=2",
+               .value_name = "x",
+               .topic = "burrow/heating/circuit2/active",
+               .timeout = 660,
+       },
+       {
+               .metric = "heating_active,circuit=water",
+               .value_name = "x",
+               .topic = "burrow/heating/water/active",
+               .timeout = 660,
+       },
+       {
+               .metric = "heating_error",
+               .value_name = "err",
+               .topic = "burrow/heating/error",
+               .timeout = 300,
+       },
+       {
+               .metric = "heating_clock",
+               .value_name = "t",
+               .topic = "burrow/heating/clock",
+               .timeout = 660,
+               .is_string = true,
+       },
 };
 
 /*** MQTT ***/
@@ -396,7 +433,10 @@ int main(int argc UNUSED, char **argv)
        if (mosquitto_will_set(mosq, "status/influx", 4, "dead", 0, true) != MOSQ_ERR_SUCCESS)
                die("Mosquitto: unable to set will");
 
-       if (mosquitto_connect_async(mosq, "10.32.184.5", 1883, 60) != MOSQ_ERR_SUCCESS)
+       if (mosquitto_tls_set(mosq, "/etc/burrow-mqtt/ca.crt", NULL, "/etc/burrow-mqtt/client.crt", "/etc/burrow-mqtt/client.key", NULL) != MOSQ_ERR_SUCCESS)
+               die("Mosquitto: unable to set TLS parameters");
+
+       if (mosquitto_connect_async(mosq, "burrow-mqtt", 8883, 60) != MOSQ_ERR_SUCCESS)
                die("Mosquitto: connect failed");
 
        if (mosquitto_loop_start(mosq))
@@ -428,7 +468,10 @@ int main(int argc UNUSED, char **argv)
                                        continue;
                        }
 
-                       bprintf(f, "%s %s=%s\n", a->metric, a->value_name, val);
+                       if (!a->is_string)
+                               bprintf(f, "%s %s=%s\n", a->metric, a->value_name, val);
+                       else
+                               bprintf(f, "%s %s=\"%s\"\n", a->metric, a->value_name, val);
                }
                influx_write_flush();
                sleep(INFLUX_INTERVAL);