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
Temperatur von DHT22 in Variable speichern
- 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.
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.
-
- 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 =)
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 =)
-
- 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
#!/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
-
- 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
wenn ich eine Variable Deklariere z.B
temp = '{0:0.1f}'.format(temperature)
kann ich diese nicht für eine Abfrage verwenden
-
- 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!
-
- 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
Lg Keuli
-
- 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
Und sry nochmal, es ist sicherlich ganz leicht, aber ich bin noch relativ frisch bei Python =( und es ist alles noch ein wenig verwirrend
- sls
- User
- Beiträge: 480
- Registriert: Mittwoch 13. Mai 2015, 23:52
- Wohnort: Country country = new Zealand();
Hier:
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
temp = '{0:0.1f}'.format(temperature)
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.
-
- 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 =)

Manchmal hilft es sich nochmal in Ruhe alles durchzulesen
Danke =)