15
15
serial_port = config .get ('serial' , 'serial_port' )
16
16
serial_baudrate = int (config .get ('serial' , 'serial_baudrate' ))
17
17
reading_freq = int (config .get ('serial' , 'reading_freq' ))
18
- powers = int (config .get ('general' , 'powers' ))
19
- output_path = config .get ('general' , 'output_path' )
18
+ output_path = config .get ('general' , 'output_path' )
19
+ powers = int (config .get ('battery_info' , 'powers' ))
20
+ dev_name = config .get ('battery_info' , 'dev_name' )
21
+ manufacturer = config .get ('battery_info' , 'manufacturer' )
22
+ model = config .get ('battery_info' , 'model' )
23
+ sw_ver = "PytesSerial v0.6.0_20231007"
24
+ version = sw_ver
25
+
20
26
if reading_freq < 10 : reading_freq = 10
21
27
22
28
SQL_active = config .get ('Maria DB connection' , 'SQL_active' )
111
117
2048 :["warning" ,"0x800" ,"Discharge MOS FAIL" ]
112
118
}
113
119
114
- version = 'PytesSerial build: v0.5.0_20230805'
115
- print (version )
120
+ print ("software version:" ,version )
116
121
117
122
# ------------------------logging definiton ----------------------------
118
123
formatter = logging .Formatter ('%(asctime)s| %(levelname)7s| %(message)s ' ,datefmt = '%Y%m%d %H:%M:%S' ) # logging formating
@@ -424,7 +429,7 @@ def json_serialize():
424
429
'temperature' : sys_temp ,
425
430
'soc' : sys_soc ,
426
431
'basic_st' : sys_basic_st ,
427
- 'pytes ' :pwr ,
432
+ 'devices ' :pwr ,
428
433
'serial_stat' : {'uptime' :uptime ,
429
434
'loops' :loops_no ,
430
435
'errors' : errors_no ,
@@ -435,7 +440,7 @@ def json_serialize():
435
440
'ser_round_trip' :round (parsing_time ,2 )}
436
441
}
437
442
438
- with open (output_path + 'pytes_status .json' , 'w' ) as outfile :
443
+ with open (output_path + dev_name + '_status .json' , 'w' ) as outfile :
439
444
json .dump (json_data , outfile )
440
445
print ('...json creation: ok' )
441
446
@@ -497,32 +502,34 @@ def maria_db():
497
502
def mqtt_discovery ():
498
503
try :
499
504
MQTT_auth = None
500
- if len (MQTT_username ) > 0 :
505
+ if len (MQTT_username ) > 0 :
501
506
MQTT_auth = { 'username' : MQTT_username , 'password' : MQTT_password }
507
+
502
508
msg = {}
503
509
config = 1
504
- names = ["pytes_current " , "pytes_voltage " , "pytes_temperature " , "pytes_soc " , "pytes_status " ]
505
- ids = ["current" , "voltage" , "temperature" , "soc" , "basic_st" ] #do not change the prefix "pytes_"
510
+ names = ["current " , "voltage " , "temperature " , "soc " , "status " ]
511
+ ids = ["current" , "voltage" , "temperature" , "soc" , "basic_st" ]
506
512
dev_cla = ["current" , "voltage" , "temperature" , "battery" ,"None" ]
507
513
stat_cla = ["measurement" ,"measurement" ,"measurement" ,"measurement" ,"None" ]
508
514
unit_of_meas = ["A" ,"V" ,"°C" , "%" ,"None" ]
509
-
515
+
510
516
# define system sensors
511
517
for n in range (5 ):
512
- state_topic = "homeassistant/sensor/pytes/" + str (config )+ "/config"
518
+ state_topic = "homeassistant/sensor/" + dev_name + "/" + str (config ) + "/config"
513
519
msg ["name" ] = names [n ]
514
- msg ["stat_t" ] = "homeassistant/sensor/pytes /state"
515
- msg ["uniq_id" ] = "pytes_" + ids [n ]
516
- if dev_cla [n ] != "None" :
520
+ msg ["stat_t" ] = "homeassistant/sensor/" + dev_name + " /state"
521
+ msg ["uniq_id" ] = dev_name + "_" + ids [n ]
522
+ if dev_cla [n ] != "None" :
517
523
msg ["dev_cla" ] = dev_cla [n ]
518
524
if stat_cla [n ] != "None" :
519
- msg ["stat_cla" ] = stat_cla [n ]
525
+ msg ["stat_cla" ] = stat_cla [n ]
520
526
if unit_of_meas [n ] != "None" :
521
527
msg ["unit_of_meas" ] = unit_of_meas [n ]
528
+
522
529
msg ["val_tpl" ] = "{{ value_json." + ids [n ]+ "}}"
523
- msg ["dev" ] = {"identifiers" : ["pytes" ],"manufacturer" : "PYTES" ,"model" : "E-Box48100R" ,"name" : "pytes_ebox" ,"sw_version" : "1.0" }
524
-
530
+ msg ["dev" ] = {"identifiers" : [dev_name ],"manufacturer" : manufacturer ,"model" : model ,"name" : dev_name ,"sw_version" : sw_ver }
525
531
message = json .dumps (msg )
532
+
526
533
publish .single (state_topic , message , hostname = MQTT_broker , port = MQTT_port , auth = MQTT_auth , qos = 0 , retain = True )
527
534
528
535
b = "...mqtt auto discovery initialization :" + str (round (config / (5 * powers + 5 )* 100 )) + " %"
@@ -535,20 +542,21 @@ def mqtt_discovery():
535
542
# define individual batteries sensors
536
543
for power in range (1 , powers + 1 ):
537
544
for n in range (5 ):
538
- state_topic = "homeassistant/sensor/pytes/" + str (config )+ "/config"
545
+ state_topic = "homeassistant/sensor/" + dev_name + "/" + str (config ) + "/config"
539
546
msg ["name" ] = names [n ]+ "_" + str (power )
540
- msg ["stat_t" ] = "homeassistant/sensor/pytes /state"
541
- msg ["uniq_id" ] = "pytes_" + ids [n ]+ "_" + str (power )
547
+ msg ["stat_t" ] = "homeassistant/sensor/" + dev_name + " /state"
548
+ msg ["uniq_id" ] = dev_name + "_" + ids [n ]+ "_" + str (power )
542
549
if dev_cla [n ] != "None" :
543
550
msg ["dev_cla" ] = dev_cla [n ]
544
551
if stat_cla [n ] != "None" :
545
552
msg ["stat_cla" ] = stat_cla [n ]
546
553
if unit_of_meas [n ] != "None" :
547
554
msg ["unit_of_meas" ] = unit_of_meas [n ]
548
- msg [ "val_tpl" ] = "{{ value_json.pytes[" + str ( power - 1 ) + "]." + ids [ n ] + "}}"
549
- msg ["dev " ] = { "identifiers" : [ "pytes" ], "manufacturer" : "PYTES" , "model" : "E-Box48100R" , "name" : "pytes_ebox" , "sw_version" : "1.0" }
550
-
555
+
556
+ msg ["val_tpl " ] = "{{ value_json.devices[" + str ( power - 1 ) + "]." + ids [ n ] + "}}"
557
+ msg [ "dev" ] = { "identifiers" : [ dev_name ], "manufacturer" : manufacturer , "model" : model , "name" : dev_name , "sw_version" : sw_ver }
551
558
message = json .dumps (msg )
559
+
552
560
publish .single (state_topic , message , hostname = MQTT_broker , port = MQTT_port , auth = MQTT_auth , qos = 0 , retain = True )
553
561
554
562
b = "...mqtt auto discovery initialization :" + str (round (config / (5 * powers + 5 )* 100 )) + " %"
@@ -569,7 +577,7 @@ def mqtt_publish():
569
577
MQTT_auth = None
570
578
if len (MQTT_username ) > 0 :
571
579
MQTT_auth = { 'username' : MQTT_username , 'password' : MQTT_password }
572
- state_topic = "homeassistant/sensor/pytes /state"
580
+ state_topic = "homeassistant/sensor/" + dev_name + " /state"
573
581
message = json .dumps (json_data )
574
582
publish .single (state_topic , message , hostname = MQTT_broker , port = MQTT_port , auth = MQTT_auth )
575
583
print ('...mqtt publish : ok' )
@@ -651,7 +659,7 @@ def parsing_bat(power):
651
659
if cells == 15 :
652
660
coulomb_idx = line_str .find ('SOC' ) # pylon
653
661
else :
654
- coulomb_idx = line_str .find ('Coulomb' ) + 1 # pytes
662
+ coulomb_idx = line_str .find ('Coulomb' ) # pytes
655
663
656
664
decode = 'true'
657
665
@@ -664,7 +672,7 @@ def parsing_bat(power):
664
672
volt_st = line_str [volt_st_idx :volt_st_idx + 8 ]
665
673
current_st = line_str [curr_st_idx :curr_st_idx + 8 ]
666
674
temp_st = line_str [temp_st_idx :temp_st_idx + 8 ]
667
- coulomb = line_str [coulomb_idx :coulomb_idx + 3 ]
675
+ coulomb = line_str [coulomb_idx :coulomb_idx + 4 ]
668
676
669
677
cells_data = {
670
678
'cell' :cell ,
0 commit comments