Sensordaten anhand von jason oder csv automatisch speichern lassen

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
yRyu-l
User
Beiträge: 7
Registriert: Dienstag 14. Januar 2020, 10:42

Code: Alles auswählen

import smbus 
import time
import gpiozero
from gpiozero import LED
from time import sleep

bus = smbus.SMBus(1)
led = LED(17)
config = [0x00, 0x00]
bus.write_i2c_block_data(0x18, 0x01, config)

bus.write_byte_data(0x18, 0x08, 0x03)

time.sleep(0.5)

		while True:

		data = bus.read_i2c_block_data(0x18, 0x05, 2)

		ctemp = ((data[0] & 0x1F) * 256) + data[1]

		if ctemp > 4095 :
			ctemp -= 8192
		ctemp = ctemp * 0.0625
		ftemp = ctemp * 1.8 + 32

		print ("Temperature in Celsius is      : %.2f C" %ctemp)
		print ("Temperature in Fahreneinheit is: %.2f F" %ftemp)

		if (ctemp > 30):
			print ("Temperature to high")
			led.on()
			sleep(3)
			led.off()
			time.sleep(1)
			
Guten Tag, ich bräuchte einmal Hilfe, ich bin ein Python Neuling und versuche seit einer Woche die Sensordaten automatisch speichern zu lassen ob in csv oder jason. Ich bin am verzweifeln gewesen und verstehe die beiden Speichermethoden noch nicht ganz. Ich wäre sehr sehr dankbar wenn mir jemand helfen kann.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Vorab: Eingerückt wird in Python laut Kovention mit 4 Leerzeichen. Nicht mehr, nicht weniger, keine Tabstopps.
Etwas stimmt mit deiner Einrückung nicht. Der Block der while-Schleife ist ebenso weit eingerückt wie die while-Bedingung.

Was genau willst du denn speichern und was willst du mit den dort geschriebenen Daten tun? Davon hängt das Format ab, in dem man speichert. Das heißt übrigens json (zumindest nehme ich an, dass du das meinst) und nicht jason. Jason ist der Mörder aus irgendeiner Horrorfilm-Reihe ;)
yRyu-l
User
Beiträge: 7
Registriert: Dienstag 14. Januar 2020, 10:42

Ähm entschuldige das mit dem Einrücken bin momenta ein bisschen neben der Spur haha. Ne aber deine für deine Rückmeldung, ich würde gerne die ausgegebenen Temperaturdaten automatisch in einer Textdatei speichern lassen sobald der Raspberry PI mit Strom versorgt wird.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Bleibt die Frage: Warum sollen die dort gespeichert werden, denn - wie ich bereit schrieb - davon hängt die Wahl des Formates ab. Also was soll mit den Daten geschehen, die dort in die Datei geschrieben werden?
Und sollen alle Messungen gespeichert werden oder nur die, bei denen es zu heiß war?

Warum wartest du bei einer zu hohen Temperatur eine Sekunde vor der nächsten Messung und nicht, wenn es zu keiner Abweichung kam? Willst du nach jeder Messung eine Sekunde warten? Dann ist das sleep falsch eingerückt.
yRyu-l
User
Beiträge: 7
Registriert: Dienstag 14. Januar 2020, 10:42

Es sollen alle Messungen gespeichert werden die aufgezeichnet wurden. Das mit der einen Sekunde habe ich gemacht weil die LED für eine Sekunde aufleuchten soll wenn die Temperatur zu hoch ist.
Benutzeravatar
sparrow
User
Beiträge: 4538
Registriert: Freitag 17. April 2009, 10:28

Ja, das die Daten gespeichert werden sollen, hast du ja mehrfach geschrieben. Die Frage ist, was mit den Daten passieren soll, nachdem sie gespeichert wurden. Sollen sie von einem anderen Programm weiterverarbeitet werden? Braucht dieses Programm ein bestimmtes Format? Soll das Protokoll menschenlesbar sein? Dann ist json ein unpassendes Format, für einen Austausch mit anderen Programmen kann es aber sinnvoll sein.

Wenn die Temperatur zu hoch ist, bleibt die LED 3 Sekunden an - nicht nur 1. Aber anschließend wartet das Programm eine weitere Sekunde. Meinen Frage war, ob dieses "eine Sekunde warten" nicht nach jeder Messung passieren sollte. Dann ist das halt falsch eingerückt.

Schau dir für das Speichern mal das csv-Modul an. Wenn es denn CSV-Daten sein sollen. Das wäre dann grundsätzlich menschenlesbar und könnte in eine Tabellenkalkulation importiert werden.
yRyu-l
User
Beiträge: 7
Registriert: Dienstag 14. Januar 2020, 10:42

Alles klar Danke dir !
Antworten