Seite 1 von 1

1Wire gibt nur einen Wert aus

Verfasst: Mittwoch 21. Dezember 2016, 15:08
von Daniel-owl
Guten Tag,

Ich verstehe leider nicht warum der Code nicht funktioniert.
Habe mir nachfolgendes Tutorial angeschaut und das Programm so übernommen.
Leider bekomme ich nur eine Seriennummer mit Temperatur ausgegeben.
Angeschlossen sind 3 Sensoren.

print w1_slaves gibt mir auch alle 3 Seriennummern aus
und print filecontent gibt mir den kompletten Inhalt aller Sensoren an.

Leider bekomme ich Formatiert nur eine Seriennummer mit Temperatur.

Was habe ich da nur falsch gemacht.
Komme leider nicht dahinter.

Wäre toll wenn Ihr mir helfen könnt.

Code:

Code: Alles auswählen

#!/usr/bin/python
# -*- coding: utf-8 -*-

import sys
import os
import time

file = open('/sys/devices/w1_bus_master1/w1_master_slaves')
w1_slaves = file.readlines()
print w1_slaves
file.close()

for line in w1_slaves:
        w1_slave = line.split("\n")[0]
        file = open('/sys/bus/w1/devices/' + str(w1_slave) + '/w1_slave')
        filecontent = file.read()
        print filecontent
        file.close()

stringvalue = filecontent.split("\n")[1].split(" ")[9]
temperature = float(stringvalue[2:]) / 1000

print(str(w1_slave)+ ':%6.2f °C' % temperature)

sys.exit(0)

Re: 1Wire gibt nur einen Wert aus

Verfasst: Mittwoch 21. Dezember 2016, 15:17
von Sirius3
@Daniel-owl: das letzte print steht ja auch außerhalb der zweiten for-Schleife.

Code: Alles auswählen

with open('/sys/devices/w1_bus_master1/w1_master_slaves') as slaves:
    for slave in slaves:
        slave = slave.strip()
        with open('/sys/bus/w1/devices/{}/w1_slave'.format(slave)) as content:
            next(content) # ignore first line
            temperatur = float(next(content).split()[9]) / 1000
        print('{}: %6.2f°C'.format(slave, temperature))

Re: 1Wire gibt nur einen Wert aus

Verfasst: Mittwoch 21. Dezember 2016, 15:19
von Daniel-owl
Habe das Problem gelöst.

Ich hatte bei den letzten 3 Zeilen den Tab vergessen.
Daher wurden diese Befehle nur einmal ausgeführt und nicht für "for line in w1_slaves"

Re: 1Wire gibt nur einen Wert aus

Verfasst: Mittwoch 21. Dezember 2016, 15:22
von Daniel-owl
@Sirius3

Vielen Dank für Deine Hilfe

Gruß,
Daniel