I'm a real newbie in Python. Got together a script which reads temperature, pressure, etc. from a BMP180 sensor connected to a raspberry. Everything works fine but the output which is inserted into a table is a bit long in altitude.
I was wondering if someone could help me how do i format the altitude to have only two decimals ?
Here's what i've got:
# bmp180_logger.py
# reads the ambient temperature, pressure and altitude from the sensor module and writes it to the SQL
# database on the LAMP server
import mysql.connector
import datetime
# Import the bmp180 result
from sensor import BMP180
# I2C bus=1, Address=0x77
bmp = BMP180(1, 0x77, 3)
# Get the temperature from the sensor module
t = bmp.temperature()
# Get the pressure from the sensor module
p = bmp.pressure()
#Get the current date & time
now = datetime.datetime.now()
date = now.strftime("%Y-%m-%d")
time = now.strftime("%H:%M:%S")
# Get the altitude from the sensor module
# Look up mean sea level pressure from local observatory.
# 1016.9 hPa is only for example.
a = p.altitude(msl=1016.9)
# print all the values
print(t.C) # temperature in Celsius
print(p.hPa) # pressure in hPa
print(a.m) # altitude in Metre
print (date) # current date
print (time) # current time
# The IP address of the device and its name are set as a user in the SQL database
# Connect the database object
db = mysql.connector.connect(user='bmp180', password='test', host='127.0.0.1', database='BMP180')
# Set a cursor object
cursor = db.cursor()
try:
# Insert into the database
cursor.execute("insert into weather_data(temperature_celsius, pressure_hPa, altitude_meters, date, time) values(%s,%s,%s,%s,%s)", (str(t.C),str(p.hPa),str(a.m),str(date),str(time)))
# Commit the changes
db.commit()
cursor.close()
db.close()
# Unless there is a problem
except Exception as error:
print("error: There was a problem inserting data in the database")
print(error)
# Rollback db transaction
db.rollback()
# Close the database object
db.close()
The output is like this:
26.1
982.84
286.4581156518178 # this i would like to format to have only two decimals e.g. 286.45
2022-07-29
10:03:45
But it should be as "a.m" as that's what I'm inserting into the table.. Hope it's understandable what I'm trying to achieve.
Thanks guys, really appreciate the help in advance.