9 prefixes_of_net_interfaces_to_show
="$4"
11 | stdbuf
-o L
"$bin"/khatus_controller \
12 -v opt_debug
="$debug" \
13 -v opt_mpd_song_max_chars
=10 \
14 -v opt_prefixes_of_net_interfaces_to_show
="$prefixes_of_net_interfaces_to_show"
23 "$bin"/$cmd |
while read line
; do
24 echo "${msg_head} $line" > "$pipe"
27 # TODO: Perhaps direct log to pipe, so that controller can monitor sensors?
47 ["--dir_bin"]="$HOME/bin"
48 ["--dir_logs"]=$
(mktemp
-d)
49 ["--file_pipe"]=$
(mktemp
)
50 ["--weather_station_id"]='KJFK'
51 ["--screen_brightness_device_name"]='acpi_video0'
52 ["--prefixes_of_net_interfaces_to_show"]='w' # comma-separated
53 ["--disk_space_device"]='/'
54 ["--disk_io_device"]='sda'
56 ["--fan_path"]='/proc/acpi/ibm/fan'
57 ["--interval_inp_datetime"]=1
58 ["--interval_inp_brightness"]=1
59 ["--interval_inp_weather"]=$
(( 30 * 60)) # 30 minutes
60 ["--interval_inp_mpd_state"]=1
61 ["--interval_inp_mpd_song"]=1
62 ["--interval_inp_volume"]=1
63 ["--interval_inp_bluetooth"]=5
64 ["--interval_inp_net_wifi"]=5
65 ["--interval_inp_net_io"]=1
66 ["--interval_inp_disk_space"]=5
67 ["--interval_inp_disk_io"]=1
68 ["--interval_inp_loadavg"]=1
69 ["--interval_inp_temp"]=1
70 ["--interval_inp_fan"]=1
71 ["--interval_inp_mem"]=1
82 if [ -v opts
["$key"] ]
84 if [ "$key" == "--debug" ]
94 echo "Option $key requires an argument" >&2
98 echo "Unknown option: $key" >&2
105 echo '=============================================='
106 echo "Khatus starting with the following parameters:"
107 echo '=============================================='
108 for param
in ${!opts[@]}
110 echo "$param := ${opts[$param]}"
114 echo '----------------------------------------------'
117 screen_brightness_device_path
='/sys/class/backlight'
118 screen_brightness_device_path
+="/${opts['--screen_brightness_device_name']}"
121 pipe
="${opts['--file_pipe']}"
122 bin
="${opts['--dir_bin']}"
123 log
="${opts['--dir_logs']}"/khatus_sensors.log
128 cmd_sens_screen_brightness
='khatus_sensor_screen_brightness'
129 cmd_sens_screen_brightness
+=" $screen_brightness_device_path"
131 cmd_sens_weather
="khatus_sensor_weather ${opts['--weather_station_id']}"
132 cmd_sens_disk_space
="khatus_sensor_disk_space ${opts['--disk_space_device']}"
133 cmd_sens_disk_io
="khatus_sensor_disk_io ${opts['--disk_io_device']}"
134 cmd_sens_temperature
="khatus_sensor_temperature ${opts['--thermal_zone']}"
135 cmd_sens_fan
="khatus_sensor_fan ${opts['--fan_path']}"
136 cmd_sens_bluetooth
="khatus_sensor_bluetooth_power $bin"
137 cmd_sens_mpd_state
="khatus_sensor_mpd_state $bin"
138 cmd_sens_net_addr_io
="khatus_sensor_net_addr_io $bin"
139 cmd_sens_volume
="khatus_sensor_volume $bin"
141 # TODO: Redirect each worker's stderr to a dedicated log file
142 fork_reactor
"$pipe" "$bin" "$log" "khatus_sensor_energy $bin" 'in:ENERGY'
143 fork_poller
"${opts['--interval_inp_datetime']}" "$pipe" "$bin" "$log" khatus_sensor_datetime
'in:DATE_TIME'
144 fork_poller
"${opts['--interval_inp_brightness']}" "$pipe" "$bin" "$log" "$cmd_sens_screen_brightness" 'in:SCREEN_BRIGHTNESS'
145 fork_poller
"${opts['--interval_inp_weather']}" "$pipe" "$bin" "$log" "$cmd_sens_weather" 'in:WEATHER'
146 fork_poller
"${opts['--interval_inp_mpd_state']}" "$pipe" "$bin" "$log" "$cmd_sens_mpd_state" 'in:MPD_STATE'
147 fork_poller
"${opts['--interval_inp_mpd_song']}" "$pipe" "$bin" "$log" khatus_sensor_mpd_song
'in:MPD_SONG'
148 fork_poller
"${opts['--interval_inp_volume']}" "$pipe" "$bin" "$log" "$cmd_sens_volume" 'in:VOLUME'
149 fork_poller
"${opts['--interval_inp_bluetooth']}" "$pipe" "$bin" "$log" "$cmd_sens_bluetooth" 'in:BLUETOOTH_POWER'
150 fork_poller
"${opts['--interval_inp_net_wifi']}" "$pipe" "$bin" "$log" khatus_sensor_net_wifi_status
'in:NET_WIFI_STATUS'
151 fork_poller
"${opts['--interval_inp_net_io']}" "$pipe" "$bin" "$log" "$cmd_sens_net_addr_io" 'in:NET_ADDR_IO'
152 fork_poller
"${opts['--interval_inp_disk_space']}" "$pipe" "$bin" "$log" "$cmd_sens_disk_space" 'in:DISK_SPACE'
153 fork_poller
"${opts['--interval_inp_disk_io']}" "$pipe" "$bin" "$log" "$cmd_sens_disk_io" 'in:DISK_IO'
154 fork_poller
"${opts['--interval_inp_loadavg']}" "$pipe" "$bin" "$log" khatus_sensor_loadavg
'in:LOAD_AVG'
155 fork_poller
"${opts['--interval_inp_temp']}" "$pipe" "$bin" "$log" "$cmd_sens_temperature" 'in:TEMPERATURE'
156 fork_poller
"${opts['--interval_inp_fan']}" "$pipe" "$bin" "$log" "$cmd_sens_fan" 'in:FAN'
157 fork_poller
"${opts['--interval_inp_mem']}" "$pipe" "$bin" "$log" khatus_sensor_memory
'in:MEMORY'
161 "${opts['--debug']}" \
163 "${opts['--prefixes_of_net_interfaces_to_show']}"