1Wire gibt nur einen Wert aus

Python auf Einplatinencomputer wie Raspberry Pi, Banana Pi / Python für Micro-Controller
Antworten
Daniel-owl
User
Beiträge: 15
Registriert: Mittwoch 21. Dezember 2016, 14:54

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)
Zuletzt geändert von Anonymous am Mittwoch 21. Dezember 2016, 15:29, insgesamt 1-mal geändert.
Grund: Quelltext in Python-Codebox-Tags gesetzt.
Sirius3
User
Beiträge: 17738
Registriert: Sonntag 21. Oktober 2012, 17:20

@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))
Daniel-owl
User
Beiträge: 15
Registriert: Mittwoch 21. Dezember 2016, 14:54

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"
Daniel-owl
User
Beiträge: 15
Registriert: Mittwoch 21. Dezember 2016, 14:54

@Sirius3

Vielen Dank für Deine Hilfe

Gruß,
Daniel
Antworten