Temperatur von DHT22 in Variable speichern

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
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

Hallo zusammen,

ich bin da grad dabei ein Projekt zu realisieren, soweit klappt alles. Ich kann die Daten die mir der DHT22 gibt auslesen usw.

Jetzt würde ich gerne mein Script so anpassen das wenn:

die Temperatur einen gewissen Wert hat z. B 7Grad das dann ein Script geschalten wird was die Heizung anschaltet. Und natürlich andersrum wenn 25 Grad ->Heizung aus

Ich kann mir schon denken das es sich hierbei um einfache If Else Abfragen handelt aber leider bekomme ich es nicht hin.

Ich hoffe Ihr könnt mir helfen und bedanke mich schon mal im Vorraus

Lg Keulenkarl
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Die Auswertung der Temperatur machst du mit einem if/else, ja, aber was hast du den konkret bisher programmiert? Wo hakt es, was verstehst du nicht? Du hast doch immerhin schon einen Ansatz und weißt was du dafür hernehmen musst, warum probierst du es nicht einfach aus?

Wenn du nicht weißt, wie die Prüfung einer Bedingung in Python aussieht, musst du ein Grundlagentutorial heranziehen.

Außerdem frage ich mich, wie genau du die Heizung ansteuern möchtest.
When we say computer, we mean the electronic computer.
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

Das mit der Schaltung der Heizung sollte nur ein Bsp.sein. Ich habe einen Reifeschrank gebaut und diesen mit einem Lüfter, Heizlüfter, Luftbefeuchter ausgestattet. Den DHT22 habe ich nun zum auslesen der Werte verbaut.

Ich habe soweit das Script geschrieben das ich stetig neue Temperatur und Luftfeuchte Werte auf meiner lokalen Seite angezeigt bekomme.

Manuell kann ich nun über ein Python script die einzelnen Geräte schalten. Nun möchte ich dies aber automatisieren. Das eben die Heizung oder Kühlung automatisch einschaltet wenn ein Schwellwert erreicht ist

Ich hoffe Ihr versteht was ich meine =)
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Was du machen möchtest ist klar, zeig' doch am besten dein sagenumwobenes Skript und erkläre, an welcher Stelle es hakt.
When we say computer, we mean the electronic computer.
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

das Pythonscript


#!/usr/bin/python

# -*- coding: iso-8859-15 -*-

import sys

import Adafruit_DHT



sensor_args = { '11': Adafruit_DHT.DHT11,
'22': Adafruit_DHT.DHT22,
'2302': Adafruit_DHT.AM2302 }
if len(sys.argv) == 3 and sys.argv[1] in sensor_args:
sensor = sensor_args[sys.argv[1]]
pin = sys.argv[2]
else:
print('Usage: sudo ./Adafruit_DHT.py [11|22|2302] <GPIO pin number>')
print('Example: sudo ./Adafruit_DHT.py 2302 4 - Read from an AM2302 connected to GPIO pin #4')
sys.exit(1)

humidity, temperature = Adafruit_DHT.read_retry(sensor, pin)

----->hier sollte die Abfrage kommen <----

if humidity is not None and temperature is not None:
print('Temperatur={0:0.1f}*c __ Luftfeuchtigkeit={1:0.1f}%'.format(temperature, humidity))
else:
print('Failed to get reading. Try again!')
sys.exit(1)


nichts großes aber es tut was es soll, liest die Werte und kann diese ausgeben
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

das Problem ist:

wenn ich eine Variable Deklariere z.B

temp = '{0:0.1f}'.format(temperature)

kann ich diese nicht für eine Abfrage verwenden
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

Noch zu erwähnen ist das ich ein PHP script nutze um über shell_exec() die Werte auszugeben!
Sirius3
User
Beiträge: 18268
Registriert: Sonntag 21. Oktober 2012, 17:20

Einen String mit einer Zahl zu vergleichen ist auch schwierig. Warum benutzt Du nicht `temperature` direkt?
Aber am besten, nachdem Du geprüft hast, ob das Lesen überhaupt funktioniert hat.
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

Hm sorry wenn ich so doof frage. Kannst du mir sagen, wie demnach mein Code geschrieben sein müsste?

Lg Keuli
Sirius3
User
Beiträge: 18268
Registriert: Sonntag 21. Oktober 2012, 17:20

Hab ich Dir das nicht schon? Was fehlt Dir denn noch?
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

Achso, ich mein ich weis nicht genau wie meine If Abfrage dann geschrieben sein muss

Und sry nochmal, es ist sicherlich ganz leicht, aber ich bin noch relativ frisch bei Python =( und es ist alles noch ein wenig verwirrend
Benutzeravatar
sls
User
Beiträge: 480
Registriert: Mittwoch 13. Mai 2015, 23:52
Wohnort: Country country = new Zealand();

Hier:

Code: Alles auswählen

temp = '{0:0.1f}'.format(temperature)
Hierbei wird temperature zu einem String, es ist aber in Python nicht möglich einen Integer mit einem String zu vergleichen.

Wenn temperature z.B. ein Float oder Integer ist, kannst du temperature direkt mit einer Zahl vergleichen:

Beispiel:

Code: Alles auswählen

>>> temperature = 20.5
>>> temperature < 30
True
>>> temperature > 18.5
True
>>> temperature < "20" 
Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
TypeError: '<' not supported between instances of 'float' and 'str'
>>> 
When we say computer, we mean the electronic computer.
Keulenkarl
User
Beiträge: 10
Registriert: Mittwoch 21. November 2018, 19:59

Ich wollte mich dafür natürlich noch rechtherzlich bedanken, als ich dann nochmal deinen post durchgelesen hatte, hat es dann klick gemacht ;-)

Manchmal hilft es sich nochmal in Ruhe alles durchzulesen

Danke =)
Antworten