The attached python script will write a file named soiltemp.txt for two
DS18B20 Sensors. You will need to edit the sensor numbers and names to fit
your needs.
On Friday, December 20, 2019 at 5:30:47 AM UTC-7, Andreas Weber wrote:
>
> Hi there
>
> I have a weewx and Rasperry pi and would like to connect 3 temp sensors
> DS18B20 and display them on my homepage.
>
> Installation of the 3 sensors on Raspberry is no problem, I have 3 folders
> for the 3 sensors and sensor data.
>
> Who can show me the way how to go on?
>
> There is a script in the weewx manual, but it cannot be used because there
> is no query from the DS18B20.
>
> I am not programming and I have already experimented with different code
> snippets on the internet, unfortunately without success.
>
> The sensor data must be written in a text file and weewx reads out the
> data.
>
> But I have no idea how to do it.
>
> I would like to be shown the way how it works.
>
>
> Please help....
>
>
> A heartfelt thank you
>
--
You received this message because you are subscribed to the Google Groups
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email
to [email protected].
To view this discussion on the web visit
https://groups.google.com/d/msgid/weewx-user/59a28e56-b7b1-4ef9-9e41-058474c2531f%40googlegroups.com.
import subprocess
import glob
import time
from datetime import datetime
sensor1 = '28-0113170101b8'# you need to add each sensor's address manually to these lines
sensor2 = '28-0113167dbf61'# you need to add each sensor's address manually to these lines
sensor1name = 'Left_temp'
sensor2name = 'Right_temp'
base_dir1 = '/sys/bus/w1/devices/'
device_folder1 = glob.glob(base_dir1 + sensor1)[0]
device_file1 = device_folder1 + '/w1_slave'
def read_temp_raw1():
catdata = subprocess.Popen(['cat',device_file1], stdout = subprocess.PIPE, stderr=subprocess.PIPE)
out,err = catdata.communicate()
out_decode = out.decode('utf-8')
lines = out_decode.split('\n')
return lines
def read_temp1():
lines = read_temp_raw1()
while lines[0].strip()[-3:] != 'YES':
time.sleep(10.0)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_f
base_dir2 = '/sys/bus/w1/devices/'
device_folder2 = glob.glob(base_dir2 + sensor2)[0]
device_file2 = device_folder2 + '/w1_slave'
def read_temp_raw2():
catdata = subprocess.Popen(['cat',device_file2], stdout = subprocess.PIPE, stderr=subprocess.PIPE)
out,err = catdata.communicate()
out_decode = out.decode('utf-8')
lines = out_decode.split('\n')
return lines
def read_temp2():
lines = read_temp_raw2()
while lines[0].strip()[-3:] != 'YES':
time.sleep(10.0)
lines = read_temp_raw()
equals_pos = lines[1].find('t=')
if equals_pos != -1:
temp_string = lines[1][equals_pos+2:]
temp_c = float(temp_string) / 1000.0
temp_f = temp_c * 9.0 / 5.0 + 32.0
return temp_f
while True:
date = datetime.today().strftime("%x , %X")
temp1 = str(read_temp1())
temp2 = str(read_temp2())
print (sensor1name+' = '+temp1)
print (sensor2name+' = '+temp2)
fd = open('/home/pi/soiltemp.txt','w')
fd.write(sensor1name+' = '+temp1+'\n')
fd.write(sensor2name+' = '+temp2+'\n')
fd.close()
time.sleep(25.0)