]> mj.ucw.cz Git - home-hw.git/blobdiff - bsb/daemon/burrow-bsbd.c
README
[home-hw.git] / bsb / daemon / burrow-bsbd.c
index 13836165031c0f10247d35aeadf8ffd7e384f4b9..d855b4743af434a41df9a9acf6c031a0382ce8a1 100644 (file)
@@ -202,6 +202,20 @@ static void process_info(time_t t, byte *p, uint len)
        len -= 4;
 
        switch (addr) {
+               case 0x0500006b:
+                       if (len >= 2) {
+                               int err = get_u16_be(p);
+                               mqtt_publish("burrow/heating/error", "%d %lld", err, (long long) t);
+                       }
+                       break;
+               case 0x0500006c:
+                       if (len >= 7) {
+                               mqtt_publish("burrow/heating/clock", "%04d-%02d-%02dT%02d:%02d %lld",
+                                       get_u16_be(p) + 1900, p[2], p[3],
+                                       p[5], p[6],
+                                       (long long) t);
+                       }
+                       break;
                case 0x05000219:
                        if (len >= 4) {
                                int temp = get_s16_be(p);
@@ -219,9 +233,28 @@ static void process_info(time_t t, byte *p, uint len)
                        break;
                case 0x05040227:
                        // AGU.2 control
-                       if (len >= 2) {
+                       if (len >= 4) {
                                uint m = get_u16_be(p);
                                mqtt_publish("burrow/heating/circuit1/mix-valve", "%u %lld", m, (long long) t);
+                               mqtt_publish("burrow/heating/circuit1/pump", "%u %lld", (p[3] == 3), (long long) t);
+                       }
+                       break;
+               case 0x2d000211:
+                       // Circuit 1 status
+                       if (len >= 10) {
+                               mqtt_publish("burrow/heating/circuit1/active", "%u %lld", (p[8] != 0), (long long) t);
+                       }
+                       break;
+               case 0x2e000211:
+                       // Circuit 2 status
+                       if (len >= 10) {
+                               mqtt_publish("burrow/heating/circuit2/active", "%u %lld", (p[8] != 0), (long long) t);
+                       }
+                       break;
+               case 0x31000212:
+                       // Hot water status
+                       if (len >= 3) {
+                               mqtt_publish("burrow/heating/water/active", "%u %lld", (p[1] != 0), (long long) t);
                        }
                        break;
                case 0x3d2d0215: