@@ -389,7 +389,9 @@ def print_measured_values(monitored_values):
389389 get_translation ("fan_speed" ): ("rpi5_fan_speed" , "RPM" ),
390390 get_translation ("rpi_power_status" ): ("rpi_power_status" , "" ),
391391 get_translation ("update" ): ("update" , "" ),
392- get_translation ("external_sensors" ): ("ext_sensors" , "" )
392+ get_translation ("external_sensors" ): ("ext_sensors" , "" ),
393+ get_translation ("data_sent" ): ("data_sent" , "MB" ),
394+ get_translation ("data_received" ): ("data_received" , "MB" )
393395 }
394396
395397 output += "\n :: Measured values\n "
@@ -557,6 +559,10 @@ def handle_specific_configurations(data, what_config, device):
557559 add_common_attributes (data , "mdi:water-percent" , device + " " + get_translation ("humidity" ), "%" , "temperature" , "measurement" )
558560 data ["state_topic" ] = config .mqtt_uns_structure + config .mqtt_topic_prefix + "/" + hostname + "/" + what_config + "_" + device
559561 data ["unique_id" ] = hostname + "_" + what_config + "_" + device
562+ elif what_config == "data_sent" :
563+ add_common_attributes (data , "mdi:upload" , get_translation ("data_sent" ), "MB" , None , "measurement" )
564+ elif what_config == "data_received" :
565+ add_common_attributes (data , "mdi:download" , get_translation ("data_received" ), "MB" , None , "measurement" )
560566
561567def config_json (what_config , device = "0" , hass_api = False ):
562568 data = build_data_template (what_config )
@@ -745,6 +751,20 @@ def publish_to_mqtt(monitored_values):
745751 status_sensor_topic = config .mqtt_discovery_prefix + "/sensor/" + config .mqtt_topic_prefix + "/" + hostname + "_status/config"
746752 client .publish (status_sensor_topic , config_json ('status' ), qos = config .qos )
747753 client .publish (config .mqtt_uns_structure + config .mqtt_topic_prefix + "/" + hostname + "/status" , "1" , qos = config .qos , retain = config .retain )
754+
755+ if "data_sent" in monitored_values :
756+ if config .discovery_messages :
757+ client .publish (f"{ config .mqtt_discovery_prefix } /sensor/{ config .mqtt_topic_prefix } /{ hostname } _data_sent/config" ,
758+ config_json ("data_sent" ), qos = config .qos )
759+ client .publish (f"{ config .mqtt_uns_structure } { config .mqtt_topic_prefix } /{ hostname } /data_sent" ,
760+ monitored_values ["data_sent" ], qos = config .qos , retain = config .retain )
761+
762+ if "data_received" in monitored_values :
763+ if config .discovery_messages :
764+ client .publish (f"{ config .mqtt_discovery_prefix } /sensor/{ config .mqtt_topic_prefix } /{ hostname } _data_received/config" ,
765+ config_json ("data_received" ), qos = config .qos )
766+ client .publish (f"{ config .mqtt_uns_structure } { config .mqtt_topic_prefix } /{ hostname } /data_received" ,
767+ monitored_values ["data_received" ], qos = config .qos , retain = config .retain )
748768
749769 while len (client ._out_messages ) > 0 :
750770 time .sleep (0.1 )
@@ -757,7 +777,7 @@ def publish_to_mqtt(monitored_values):
757777def bulk_publish_to_mqtt (monitored_values ):
758778 values = [monitored_values .get (key , 0 ) for key in [
759779 'cpu_load' , 'cpu_temp' , 'used_space' , 'voltage' , 'sys_clock_speed' , 'swap' , 'memory' , 'uptime' , 'uptime_seconds' ,
760- 'wifi_signal' , 'wifi_signal_dbm' , 'rpi5_fan_speed' , 'git_update' , 'rpi_power_status'
780+ 'wifi_signal' , 'wifi_signal_dbm' , 'rpi5_fan_speed' , 'git_update' , 'rpi_power_status' , 'data_sent' , 'data_received'
761781 ]]
762782
763783 ext_sensors = monitored_values .get ('ext_sensors' , [])
@@ -829,58 +849,54 @@ def parse_arguments():
829849 return args
830850
831851
832- def collect_monitored_values ():
852+ def collect_monitored_values ():
833853 monitored_values = {}
834854
835855 if config .cpu_load :
836- cpu_load = check_cpu_load ()
837- monitored_values ["cpu_load" ] = cpu_load
856+ monitored_values ["cpu_load" ] = check_cpu_load ()
838857 if config .cpu_temp :
839- cpu_temp = check_cpu_temp ()
840- monitored_values ["cpu_temp" ] = cpu_temp
858+ monitored_values ["cpu_temp" ] = check_cpu_temp ()
841859 if config .used_space :
842- used_space = check_used_space (config .used_space_path )
843- monitored_values ["used_space" ] = used_space
860+ monitored_values ["used_space" ] = check_used_space (config .used_space_path )
844861 if config .voltage :
845- voltage = check_voltage ()
846- monitored_values ["voltage" ] = voltage
862+ monitored_values ["voltage" ] = check_voltage ()
847863 if config .sys_clock_speed :
848- sys_clock_speed = check_sys_clock_speed ()
849- monitored_values ["sys_clock_speed" ] = sys_clock_speed
864+ monitored_values ["sys_clock_speed" ] = check_sys_clock_speed ()
850865 if config .swap :
851- swap = check_swap ()
852- monitored_values ["swap" ] = swap
866+ monitored_values ["swap" ] = check_swap ()
853867 if config .memory :
854- memory = check_memory ()
855- monitored_values ["memory" ] = memory
868+ monitored_values ["memory" ] = check_memory ()
856869 if config .uptime :
857- uptime = check_uptime ('timestamp' )
858- monitored_values ["uptime" ] = uptime
870+ monitored_values ["uptime" ] = check_uptime ('timestamp' )
859871 if config .uptime_seconds :
860- uptime_seconds = check_uptime ('' )
861- monitored_values ["uptime_seconds" ] = uptime_seconds
872+ monitored_values ["uptime_seconds" ] = check_uptime ('' )
862873 if config .wifi_signal :
863- wifi_signal = check_wifi_signal ('' )
864- monitored_values ["wifi_signal" ] = wifi_signal
874+ monitored_values ["wifi_signal" ] = check_wifi_signal ('' )
865875 if config .wifi_signal_dbm :
866- wifi_signal_dbm = check_wifi_signal ('dbm' )
867- monitored_values ["wifi_signal_dbm" ] = wifi_signal_dbm
876+ monitored_values ["wifi_signal_dbm" ] = check_wifi_signal ('dbm' )
868877 if config .rpi5_fan_speed :
869- rpi5_fan_speed = check_rpi5_fan_speed ()
870- monitored_values ["rpi5_fan_speed" ] = rpi5_fan_speed
878+ monitored_values ["rpi5_fan_speed" ] = check_rpi5_fan_speed ()
871879 if config .drive_temps :
872- drive_temps = check_all_drive_temps ()
873- monitored_values ["drive_temps" ] = drive_temps
880+ monitored_values ["drive_temps" ] = check_all_drive_temps ()
874881 if config .rpi_power_status :
875- rpi_power_status = check_rpi_power_status ()
876- monitored_values ["rpi_power_status" ] = rpi_power_status
882+ monitored_values ["rpi_power_status" ] = check_rpi_power_status ()
877883 if config .ext_sensors :
878- ext_sensors = read_ext_sensors ()
879- monitored_values ["ext_sensors" ] = ext_sensors
884+ monitored_values ["ext_sensors" ] = read_ext_sensors ()
885+ if config .net_io :
886+ data_sent , data_received = get_network_data ()
887+ monitored_values ["data_sent" ] = data_sent
888+ monitored_values ["data_received" ] = data_received
880889
881890 return monitored_values
882891
883892
893+ def get_network_data ():
894+ net_io = psutil .net_io_counters ()
895+ data_sent = net_io .bytes_sent / (1024 * 1024 ) # Convert bytes to megabytes
896+ data_received = net_io .bytes_recv / (1024 * 1024 ) # Convert bytes to megabytes
897+ return round (data_sent , 2 ), round (data_received , 2 )
898+
899+
884900def gather_and_send_info ():
885901 while not stop_event .is_set ():
886902 monitored_values = collect_monitored_values ()
0 commit comments