Temperaturmessung (Raspberry Pi) - Fehlermeldung

Wenn du dir nicht sicher bist, in welchem der anderen Foren du die Frage stellen sollst, dann bist du hier im Forum für allgemeine Fragen sicher richtig.
Antworten
eSmurf
User
Beiträge: 2
Registriert: Dienstag 22. April 2014, 18:24

Hallo,
Ich habe ein kleines Script welches die am Pi angeschlossen Temperatursensoren (DS18b20) abfragen soll. Die Wete ollen dann in eine .txt Datei geschrieben werden.
Allerdings wird mir folgende Fehlermeldung ausgegeben, welche ich nicht verstehe:
Sensor ID | Temperatur
----------------------------
10-000802b5399d | 21.000 °C
Traceback (most recent call last):
File "temperatur.py", line 59, in <module>
fobj_out = open("home/pi/temp-daten.txt","a")
IOError: [Errno 2] No such file or directory: 'home/pi/temp-daten.txt
Ich lese daraus, dass die datei temp-daten.txt nicht gefunden wurde? Aber eigentlich kann das nicht sein, denn ich habe sie selbst per Hand angelegt.

Hier einmal der komplette Code:

Code: Alles auswählen

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

# Die Sensoren müssen mit "modprobe w1-gpio" und "modprobe w1-therm" aktiviert werden!

# Import der Module
import sys
import os
from time import *

# Zeitvariable definieren
lt = localtime()

# 1-Wire Slave-Liste oeffnen
file = open('/sys/devices/w1_bus_master1/w1_master_slaves') #Verzeichniss evtl. anpassen

# 1-Wire Slaves auslesen
w1_slaves = file.readlines()

# 1-Wire Slave-Liste schliessen
file.close()

# Header fuer Bildschirmausgabe
print('Sensor ID       | Temperatur')
print('----------------------------')

# Fuer jeden 1-Wire Slave eine Ausgabe
for line in w1_slaves:

# 1-wire Slave extrahieren
 w1_slave = line.split("\n")[0]

 # 1-wire Slave Datei oeffnen
 file = open('/sys/bus/w1/devices/' + str(w1_slave) + '/w1_slave')

# Inhalt des 1-wire Slave File auslesen
filecontent = file.read()

# 1-wire Slave File schliessen
file.close()

# Temperatur Daten auslesen
stringvalue = filecontent.split("\n")[1].split(" ")[9]

# Temperatur konvertieren
temperature = float(stringvalue[2:]) / 1000

# Temperatur ausgeben
print(str(w1_slave) + ' | %5.3f °C' % temperature)

# Werte in Datei schreiben
# Zeit und Datum erfassen
Datum = strftime("%d.%m.%Y")
Uhrzeit = strftime("%H:%M:%S")

# Textdatei oeffnen
fobj_out = open("home/pi/temp-daten.txt","a")

# Daten in Textdatei schreiben
fobj_out.write(Datum + ", " + Uhrzeit +", " + '%5.3f °C' % temperature + "\n")
# Textdatei schliessen
fobj_out.close()

# Python script beenden und GNUPLOT Grafik erstellen
os.system("gnuplot /home/pi/temp.plt")
sys.exit(0)
Ich hoffe ihr könnt mir helfen und mich aus meiner Verzweiflung erlösen?

grüße
eSmurf
BlackJack

@eSmurf: Das sollte wohl ein *absoluter* Pfad sein. Also mit einem '/' ganz am Anfang. Sonst funktioniert das nur wenn man es vom Wurzelverzeichnis aus aufruft, oder tatsächlich relativ zum aktuellen Arbeitsverzeichnis ein Verzeichnis ``home/pi/`` existiert.
Benutzeravatar
Hyperion
Moderator
Beiträge: 7478
Registriert: Freitag 4. August 2006, 14:56
Wohnort: Hamburg
Kontaktdaten:

Man sollte auch nicht ``file`` als Namen wählen; damit überschreibt man ein Builtin!
encoding_kapiert = all(verstehen(lesen(info)) for info in (Leonidas Folien, Blog, Folien & Text inkl. Python3, utf-8 everywhere))
assert encoding_kapiert
eSmurf
User
Beiträge: 2
Registriert: Dienstag 22. April 2014, 18:24

@BlackJack, danke.... so einfach kann es sein, ein fehlendes /, und nichts funktioniert. :)
und danke auch für die erklärung
Antworten