/^OK/ { debug("OK line", $0) }
+/^ERROR in:MPD.*NON_ZERO_EXIT_CODE/ {
+ for (mpd_key in db) {
+ if (mpd_key ~ "^mpd_") {
+ delete db[mpd_key]
+ }
+ }
+ next
+}
+
/^ERROR/ {
- debug("ERROR line", $0)
- shift()
- msg_head = $1
- shift()
- msg_body = $0
- alert_trigger_hi(msg_head, "KhatusSensorError", msg_body)
+ debug("ERROR line", $0)
+ shift()
+ msg_head = $1
+ shift()
+ msg_body = $0
+ alert_trigger_hi(msg_head, "KhatusSensorError", msg_body)
}
/^OK in:ENERGY battery/\
{
shift()
shift()
- db["net_wifi_status"] = $0
+ set_net_wifi_status()
}
/^OK in:BLUETOOTH_POWER/\
db["mpd_status_percent"] = $3
}
-/^OK in:WEATHER/\
+/^OK in:WEATHER temperature/\
{
+ shift()
shift()
shift()
db["weather_temperature"] = $0
}
+/^OK in:WEATHER phenomenon/\
+{
+ shift()
+ shift()
+ shift()
+ alert_trigger_low("weather_phenomenon", "WeatherPhenomenon", $0)
+}
+
/^OK in:DATE_TIME/\
{
shift()
} else if (mute == "yes") {
db["volume"] = "X"
} else {
- error("Unexpected value for 'mute' field: " mute)
+ error("set_volume", "Unexpected value for 'mute' field: " mute)
}
}
" - " db_mpd_song["Album:"] \
" - " db_mpd_song["Title:"]
}
- alert_trigger_low("alert_check_mpd", "NowPlaying", body)
+ alert_trigger_low("alert_check_mpd", "MpdNowPlaying", body)
}
}
db["disk_io_diff_r"] = curr_r - prev_r
}
+function set_net_wifi_status( interface) {
+ interface = $1
+ shift()
+ db["net_wifi_status", interface] = $0
+}
+
function set_net_addr_io( \
interface, address, io_curr_w, io_curr_r, io_prev_w, io_prev_r\
) {
io_stat = "--"
}
if (interface ~ "^w") {
- label = label ":" db["net_wifi_status"]
+ label = label ":" db["net_wifi_status", interface]
}
if (++count_printed > 1) {
sep = " "
}
}
-function error(msg) {
- output_msg("ERROR", msg, "/dev/stderr")
+function error(location, msg) {
+ # TODO: Reconsider classifying internal errors as alerts
+ # Maybe better to keep the error class distinct and provide a
+ # an optional transformation from error to alert
+ alert_trigger_hi(location, "KhatusControllerError", msg)
}
function ensure_numeric(n) {