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 weewx-user+unsubscr...@googlegroups.com.
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)

Reply via email to