How to write sensor data so seperate text file (Raspberry Pi, Python)
Ask QuestionAsked todayActive todayViewed 18 times0
I have a pm2.5 sensor attached to a raspberry pi. I got the code working for the sensor but I want to be able to store the values being outputted. I was wondering what I needed to change to be able to write the data to a text file.
Heres my code:
import time import board import busio from digitalio import DigitalInOut, Direction, Pull import adafruit_pm25 import serial uart = serial.Serial("/dev/ttyS0", baudrate=9600, timeout=0.25) print("Found PM2.5 sensor, reading data...") while True: time.sleep(1) try: aqdata = pm25.read() # print(aqdata) except RuntimeError: print("Unable to read from sensor, retrying...") continue print() print("Concentration Units (standard)") print("---------------------------------------") print( "PM 1.0: %d\tPM2.5: %d\tPM10: %d" % (aqdata["pm10 standard"], aqdata["pm25 standard"], aqdata["pm100 standard"]) ) print("Concentration Units (environmental)") print("---------------------------------------") print( "PM 1.0: %d\tPM2.5: %d\tPM10: %d" % (aqdata["pm10 env"], aqdata["pm25 env"], aqdata["pm100 env"]) ) print("---------------------------------------") print("Particles > 0.3um / 0.1L air:", aqdata["particles 03um"]) print("Particles > 0.5um / 0.1L air:", aqdata["particles 05um"]) print("Particles > 1.0um / 0.1L air:", aqdata["particles 10um"]) print("Particles > 2.5um / 0.1L air:", aqdata["particles 25um"]) print("Particles > 5.0um / 0.1L air:", aqdata["particles 50um"]) print("Particles > 10 um / 0.1L air:", aqdata["particles 100um"]) print("---------------------------------------")
pythonraspberry-pilorashareedit follow flag asked 8 hours agoJohn Hooft1 New contributor
- Just as a minor note, try to use f-Strings if the Python version permits. Instead of doing your
%d
things, just do this:f"PM 1.0: {aqdata["pm10 env"]} ..."
– Dustin 7 hours ago
1 Answer
Use this:
measurement_values = [0.3, 0.5, 1.0] measurement_strings = [f"Particles > {size}um / 0.1L air" for size in measurement_values] with open("myfile.txt", "w") as f: # Write block of string f.write("Block of string") # Write whole list f.writelines(L)
shareedit follow flag answered 7 hours agoDustin11066 bronze badges
- 1Did you mean to include the “f” in [f”Particles >….. – John Hooft 6 hours ago
- 1Yes. This is called an f-string, where instead of using %d and format, you can simply write the variable names into your string in the {}. There are other letters you can put before strings, such as u (I believe unicode), r (raw, for instance if you don’t want the \ in filenames to mess up stuff) and likely a few more. – Dustin 6 hours ago
.END
Categories: Uncategorized