9 prefixes_of_net_interfaces_to_show
="$4"
11 | stdbuf
-o L
"$dir_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 "$dir_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?
50 weather_station_id
='KJFK'
51 screen_brightness_device_name
='acpi_video0'
52 prefixes_of_net_interfaces_to_show
='w' # comma-separated
56 fan_path
='/proc/acpi/ibm/fan'
58 interval_inp_datetime
=1
59 interval_inp_brightness
=1
60 interval_inp_weather
=$
(( 30 * 60)) # 30 minutes
61 interval_inp_mpd_state
=1
62 interval_inp_mpd_song
=1
64 interval_inp_bluetooth
=5
65 interval_inp_net_wifi
=5
67 interval_inp_disk_space
=5
68 interval_inp_disk_io
=1
69 interval_inp_loadavg
=1
75 # ---------------------------------------------------------------------
77 # In order for automatic value reporting, at startup, to work - ensure that
78 # long option names match corresponding variable names!
79 # ---------------------------------------------------------------------
82 long_options
+=',dir_bin:'
83 long_options
+=',dir_logs:'
84 long_options
+=',file_pipe:'
85 long_options
+=',weather_station_id:'
86 long_options
+=',screen_brightness_device_name:'
87 long_options
+=',prefixes_of_net_interfaces_to_show:'
88 long_options
+=',disk_space_device:'
89 long_options
+=',disk_io_device:'
90 long_options
+=',thermal_zone:'
91 long_options
+=',fan_path:'
92 long_options
+=',interval_inp_datetime:'
93 long_options
+=',interval_inp_brightness:'
94 long_options
+=',interval_inp_weather:'
95 long_options
+=',interval_inp_mpd_state:'
96 long_options
+=',interval_inp_mpd_song:'
97 long_options
+=',interval_inp_volume:'
98 long_options
+=',interval_inp_bluetooth:'
99 long_options
+=',interval_inp_net_wifi:'
100 long_options
+=',interval_inp_net_io:'
101 long_options
+=',interval_inp_disk_space:'
102 long_options
+=',interval_inp_disk_io:'
103 long_options
+=',interval_inp_loadavg:'
104 long_options
+=',interval_inp_temp:'
105 long_options
+=',interval_inp_fan:'
106 long_options
+=',interval_inp_mem:'
133 --weather_station_id)
134 weather_station_id
="$2"
137 --screen_brightness_device_name)
138 screen_brightness_device_name
="$2"
141 --prefixes_of_net_interfaces_to_show)
142 prefixes_of_net_interfaces_to_show
="$2"
146 disk_space_device
="$2"
161 --interval_inp_datetime)
162 interval_inp_datetime
="$2"
165 --interval_inp_brightness)
166 interval_inp_brightness
="$2"
169 --interval_inp_weather)
170 interval_inp_weather
="$2"
173 --interval_inp_mpd_state)
174 interval_inp_mpd_state
="$2"
177 --interval_inp_mpd_song)
178 interval_inp_mpd_song
="$2"
181 --interval_inp_volume)
182 interval_inp_volume
="$2"
185 --interval_inp_bluetooth)
186 interval_inp_bluetooth
="$2"
189 --interval_inp_net_wifi)
190 interval_inp_net_wifi
="$2"
193 --interval_inp_net_io)
194 interval_inp_net_io
="$2"
197 --interval_inp_disk_space)
198 interval_inp_disk_space
="$2"
201 --interval_inp_disk_io)
202 interval_inp_disk_io
="$2"
205 --interval_inp_loadavg)
206 interval_inp_loadavg
="$2"
210 interval_inp_temp
="$2"
214 interval_inp_fan
="$2"
218 interval_inp_mem
="$2"
228 screen_brightness_device_path
='/sys/class/backlight'
229 screen_brightness_device_path
+="/$screen_brightness_device_name"
232 echo '=============================================='
233 echo "Khatus starting with the following parameters:"
234 echo '=============================================='
236 $
(echo -n "$long_options" \
237 |
awk -v RS
=, '{sub(":$", ""); print $0}'
240 echo "$param := ${!param}"
243 echo '----------------------------------------------'
249 cmd_sens_screen_brightness
='khatus_sensor_screen_brightness'
250 cmd_sens_screen_brightness
+=" $screen_brightness_device_path"
252 cmd_sens_weather
="khatus_sensor_weather $weather_station_id"
253 cmd_sens_disk_space
="khatus_sensor_disk_space $disk_space_device"
254 cmd_sens_disk_io
="khatus_sensor_disk_io $disk_io_device"
255 cmd_sens_temperature
="khatus_sensor_temperature $thermal_zone"
256 cmd_sens_fan
="khatus_sensor_fan $fan_path"
257 cmd_sens_bluetooth
="khatus_sensor_bluetooth_power $dir_bin"
259 # TODO: Redirect each worker's stderr to a dedicated log file
261 log
="$dir_logs"/khatus_sensors.log
263 fork_reactor
"$pipe" "$dir_bin" "$log" "khatus_sensor_energy $dir_bin" 'in:ENERGY'
265 fork_poller
$interval_inp_datetime "$pipe" "$dir_bin" "$log" khatus_sensor_datetime
'in:DATE_TIME'
266 fork_poller
$interval_inp_brightness "$pipe" "$dir_bin" "$log" "$cmd_sens_screen_brightness" 'in:SCREEN_BRIGHTNESS'
267 fork_poller
$interval_inp_weather "$pipe" "$dir_bin" "$log" "$cmd_sens_weather" 'in:WEATHER'
268 fork_poller
$interval_inp_mpd_state "$pipe" "$dir_bin" "$log" khatus_sensor_mpd_state
'in:MPD_STATE'
269 fork_poller
$interval_inp_mpd_song "$pipe" "$dir_bin" "$log" khatus_sensor_mpd_song
'in:MPD_SONG'
270 fork_poller
$interval_inp_volume "$pipe" "$dir_bin" "$log" khatus_sensor_volume
'in:VOLUME'
271 fork_poller
$interval_inp_bluetooth "$pipe" "$dir_bin" "$log" "$cmd_sens_bluetooth" 'in:BLUETOOTH_POWER'
272 fork_poller
$interval_inp_net_wifi "$pipe" "$dir_bin" "$log" khatus_sensor_net_wifi_status
'in:NET_WIFI_STATUS'
273 fork_poller
$interval_inp_net_io "$pipe" "$dir_bin" "$log" khatus_sensor_net_addr_io
'in:NET_ADDR_IO'
274 fork_poller
$interval_inp_disk_space "$pipe" "$dir_bin" "$log" "$cmd_sens_disk_space" 'in:DISK_SPACE'
275 fork_poller
$interval_inp_disk_io "$pipe" "$dir_bin" "$log" "$cmd_sens_disk_io" 'in:DISK_IO'
276 fork_poller
$interval_inp_loadavg "$pipe" "$dir_bin" "$log" khatus_sensor_loadavg
'in:LOAD_AVG'
277 fork_poller
$interval_inp_temp "$pipe" "$dir_bin" "$log" "$cmd_sens_temperature" 'in:TEMPERATURE'
278 fork_poller
$interval_inp_fan "$pipe" "$dir_bin" "$log" "$cmd_sens_fan" 'in:FAN'
279 fork_poller
$interval_inp_mem "$pipe" "$dir_bin" "$log" khatus_sensor_memory
'in:MEMORY'
285 "$prefixes_of_net_interfaces_to_show"