va_list args;
va_start(args, msg);
ucw_vmsg(L_ERROR, msg, args);
- fputc('\n', stderr);
va_end(args);
if (devh) {
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);
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: