8 from pr2_msgs.msg
import BatteryServer2
13 host = rospy.get_param(
'~host',
'localhost')
14 port = rospy.get_param(
'~port', 8086)
15 database = rospy.get_param(
'~database',
'test')
16 self.
client = influxdb.InfluxDBClient(
17 host=host, port=port, database=database)
18 self.
client.create_database(database)
19 self.
sub = rospy.Subscriber(
20 '~input', BatteryServer2, self.
_cb, queue_size=10)
25 battery0_temp = msg.battery[0].battery_register[8] / 10.0 - 273.15
26 battery1_temp = msg.battery[1].battery_register[8] / 10.0 - 273.15
27 battery2_temp = msg.battery[2].battery_register[8] / 10.0 - 273.15
28 battery3_temp = msg.battery[3].battery_register[8] / 10.0 - 273.15
29 battery0_voltage = msg.battery[0].battery_register[9] / 1000.0
30 battery1_voltage = msg.battery[1].battery_register[9] / 1000.0
31 battery2_voltage = msg.battery[2].battery_register[9] / 1000.0
32 battery3_voltage = msg.battery[3].battery_register[9] / 1000.0
33 battery0_current = msg.battery[0].battery_register[11] / 1000.0
34 battery1_current = msg.battery[1].battery_register[11] / 1000.0
35 battery2_current = msg.battery[2].battery_register[11] / 1000.0
36 battery3_current = msg.battery[3].battery_register[11] / 1000.0
37 battery0_charge = msg.battery[0].battery_register[13]
38 battery1_charge = msg.battery[1].battery_register[13]
39 battery2_charge = msg.battery[2].battery_register[13]
40 battery3_charge = msg.battery[3].battery_register[13]
41 average_temp = (battery0_temp + battery1_temp
42 + battery2_temp + battery3_temp) / 4.0
43 average_voltage = (battery0_voltage + battery1_voltage
44 + battery2_voltage + battery3_voltage) / 4.0
45 average_current = (battery0_current + battery1_current
46 + battery2_current + battery3_current) / 4.0
47 average_charge = msg.average_charge / 100.0
49 "measurement":
"battery_states",
51 "battery_id": battery_id
55 "temperature": average_temp,
56 "voltage": average_voltage,
57 "current": average_current,
58 "charge_percent": average_charge,
59 "battery0_temperature": battery0_temp,
60 "battery1_temperature": battery1_temp,
61 "battery2_temperature": battery2_temp,
62 "battery3_temperature": battery3_temp,
63 "battery0_voltage": battery0_voltage,
64 "battery1_voltage": battery1_voltage,
65 "battery2_voltage": battery2_voltage,
66 "battery3_voltage": battery3_voltage,
67 "battery0_current": battery0_current,
68 "battery1_current": battery1_current,
69 "battery2_current": battery2_current,
70 "battery3_current": battery3_current,
71 "battery0_charge_percent": battery0_charge,
72 "battery1_charge_percent": battery1_charge,
73 "battery2_charge_percent": battery2_charge,
74 "battery3_charge_percent": battery3_charge,
79 self.
client.write_points(query, time_precision=
'ms')
80 except influxdb.exceptions.InfluxDBServerError
as e:
81 rospy.logerr(
"InfluxDB error: {}".format(e))
84 if __name__ ==
'__main__':
85 rospy.init_node(
'pr2_battery_states_logger')
def timestamp_to_influxdb_time(timestamp)