... Eins habe ich noch vergessen:
Die Seriennummer benötigst du auf jeden Fall zur Identifizierung des HM. Sie ist auf einem Aufkleber auf der Rückseite des WR.
... Eins habe ich noch vergessen:
Die Seriennummer benötigst du auf jeden Fall zur Identifizierung des HM. Sie ist auf einem Aufkleber auf der Rückseite des WR.
Moin,
Du schreibst "mehr schlecht als recht..." bei der Kombination 8266 und nrf24xx.
Empfehlenswert ist es jeden Fall "AhoyDtu" auszuprobieren. Läuft bei mir seit Monaten fast fehlerfrei und ist sehr komfortabel. Neben der Anzeige der Livedaten kann insbesondere die Ausgangsleistung des HM eingestellt werden. Dazu hat es eine mqtt Schnittstelle. Auf github gibt eine gute Doku und Support.
Es reicht ja nicht, den nrf am raspi zu betreiben, du musst ja auch noch das Protokoll des HM entschlüsseln und entsprechend den raspi programmieren. Das würde ich mir nicht antun.
Gruß Hans-Jürgen
Moin Dennis,
Schwache Tage im Hinblick auf Programmcode habe ich häufiger 😭😭😭
Bin im Moment auf Urlaubstour und kann deswegen nur eingeschränkt weiter testen. Insofern kann das Feedback etwas dauern.
LG
Hans-Jürgen
.... schade, ich hatte vorhin schon mal testweise dort 33 eingetragen -ohne Erfolg. Ich wollte sonst irgendeinen unwahrscheinlichen Wert, z.B. 99 dort eintragen, aber der Fehler wird weiterhin gezeigt.
"0" ändert auch nichts an der Fehlermeldung.
Vielen Dank für Deine Mühe
Hans-Jürgen
Moin,
die Fehlermeldung lautet jetzt(ich habe wieder print eingefügt). Sie erscheint, sobald die Webseite aufgerufen wird.
bytearray(b'(\xffd\x0e\x7f\\0g')
23.375
Traceback (most recent call last):
File "<stdin>", line 121, in <module>
File "<stdin>", line 112, in main
File "<stdin>", line 66, in get_website
TypeError: can't convert 'NoneType' object to str implicitly
ist die if Abfrage so richtig?
for key, value in POSITION_TO_SENSOR.items():
position_to_temperature[key] = temperature if rom == key else None
.... das Byte-Array für einen Sensor hatte ich angepasst. Für meine Tests habe ich nur einen Sensor angeschlossen, In der finalen Version benutze ich 4 Sensoren mit den angepassten Arrays .
Hier die Ausgabe:
>>> %Run -c $EDITOR_CONTENT
24.625
bytearray(b'(\xffd\x0e\x7f\\0g')
-
24.5625
bytearray(b'(\xffd\x0e\x7f\\0g')
-
24.5625
bytearray(b'(\xffd\x0e\x7f\\0g')
-
Fertig
Display More
ich habe noch nicht verstanden, warum das Design der Website geändert werden soll. Ich brauche sie nur als Hilfsmittel für das periodische Auslesen mit einem Raspi per WLAN. Dabei greife ich auf die festen Positionen der Werte zu, nicht über "parsen". Die bisherige Version hat hier gut funktioniert.
hier die Ausgabe, habe wieder eine print - Anweisung eingefügt:
bytearray(b'(\xffd\x0e\x7f\\0g')
27.875
Traceback (most recent call last):
File "<stdin>", line 137, in <module>
File "<stdin>", line 128, in main
File "<stdin>", line 67, in get_website
ValueError: need more than 0 values to unpack
es scheint, als läge der Fehler in der darauf folgenden For-Schleife:
for rom in roms:
print(rom)
temperature = bus.read_temp(rom)
print(temperature) ## bis hier funktioniert es
ab hier liegt der Fehler:
for key, value in POSITION_TO_SENSOR.items():
if rom == key:
position_to_temperature[key] = temperature
print(temperature) ## wird offensichtlich nicht aufgerufen??
return position_to_temperature
Display More
moin,
für den Temperaturwert habe ich nur
print(temperature)
eingefügt.
Der andere Fehler ist davon unabhängig und besteht immer noch
ValueError: need more than 0 values to unpack
Ergänzung:
Beim Auslösen des Impulses kommt ohne Zeilenangabe:
TypeError: function takes 1 positional arguments but 2 were given
Moin,
Deine Idee finde ich grundsätzlich gut.
Da ich nur sehr wenig Kenntnisse über mpy habe, nehme ich mir immer erst eine Baustelle von mehreren vor, versuche sie zu lösen und widme mich dann der nächsten. Darunter leidet zwar für einen Profi die Strukturerwartung, aber mir hilft es ein wenig.
Bei dem vorliegenden Script taucht folgender Fehler auf:
24.1875 # habe ich eingefügt, um zu prüfen, ob die Definition aufgerufen wird
Traceback (most recent call last):
File "<stdin>", line 120, in <module>
File "<stdin>", line 111, in main
File "<stdin>", line 50, in get_website
ValueError: need more than 0 values to unpack
der Fehler bezieht sich auf folgende Zeile :
vorlauf, ruecklauf, aussen = position_to_temperature
na ja, Prellen kann man auch über SW in den Griff bekommen
dann lass mich doch an Deiner Lösung daran teilhaben.
Mit dem Hallsensor ist das Prellen zwar weg, aber mit dem Reedkontakt ist das Erkennen des Magneten stabiler.
Moin,
auf meinem ESP32 ist webrepl aktiviert und läuft.
Mit einem Browser kann ich mich zwar mit dem ESP32 verbinden und anmelden, aber es sind keine Eingaben möglich.
Der ESP zeigt bei erfolgreicher Anmeldung:
WebREPL connection from: ('192.168.178.116', 35690)
dupterm: EOF received, deactivating
Ctrl B beendet die Verbindung.
Wo liegt mein Fehler?
Ergänzung:
Mit einem Hallsensor 3144 anstelle des Reedkontakts ist das Prellen weg.
Sorry, Du hast recht. Daran habe ich nicht gedacht, weil ich auf meine Frage hier beim Beitrag direkt keine Antwort oder Reaktion aus dem Forum erhalten habe. "WillyR_aus_C" hat meine "Versuche" in mehreren Schritten µP konform aufbereitet. Ich muss nur ( ) noch das Prellen des Kontakts lösen oder auf einen Hall-Sensor umstellen.
Hier das Script:
#TempHeizung_Gaszaehler_HTML.py
# für Temperaturabfrage, Webverbindung, Website
try:
import usocket as socket
except:
import socket
from utime import sleep, sleep_ms
from machine import Pin, Timer
import onewire, ds18x20
import network
import esp
import gc
import secrets
esp.osdebug(None)
gc.collect()
class LED():
def __init__(self, PIN):
self.led = Pin(PIN, Pin.OUT)
self.active = False
def on(self):
self.led.value(1)
def off(self):
self.led.value(0)
def impulse(self):
if not self.active:
self.active = True
self.off()
self.timer = Timer(-2)
self.timer.init(period= 3_000, mode=Timer.ONE_SHOT, callback=lambda t:self.toggle())
def toggle(self):
self.on()
self.timer.deinit()
self.active = False
class Gas_Zaehler():
def __init__(self, basis, LED):
self.counter = basis
self.LED = LED
def add(self, step = 0.01):
self.counter += step
self.LED.impulse()
sleep_ms(40)
def get(self, String = True):
return (f'{self.counter:8.2f}' if String else self.counter)
class Temp_Sensor():
def __init__(self, ds_bus, sen_list):
self.ds_bus = ds_bus
self.senlist = sen_list
self.vorlauf = 0
self.ruecklauf = 0
self.aussen = 0
self.sen_error = False
def read(self):
roms = self.ds_bus.scan()
self.ds_bus.convert_temp()
sleep_ms(750)
for rom in roms:
temperature = round(self.ds_bus.read_temp(rom),1)
for sen in self.senlist:
if rom in sen[0]:
value = sen[-1]
break
value = None
if value == 'vorlauf':
self.vorlauf = temperature
elif value == 'ruecklauf':
self.ruecklauf = temperature
elif value == 'aussen':
self.aussen = temperature
else:
self.sen_error = True
def get_temp(self, String = True):
return ((f'{self.vorlauf:3.2f} ' if String else self.vorlauf),
(f'{self.ruecklauf:3.2f} ' if String else self.ruecklauf),
(f'{self.aussen:3.2f} ' if String else self.aussen),
self.sen_error)
# Interrupthandler
def btn_handler(btn):
zaehler.add()
# nur zum Testen
x = zaehler.get()
print (x)
sleep_ms(40)
def web_page(senso, gas):
vorlauf, ruecklauf, aussen, error = senso.get_temp()
zaehlerstand = gas.get()
html = """<!DOCTYPE HTML><html><head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<style> html { font-family: Arial; display: inline-block; margin: 0px auto; text-align: center; }
h2 { font-size: 3.0rem; } p { font-size: 3.0rem; } .units { font-size: 1.2rem; }
.ds-labels{ font-size: 1.5rem; vertical-align:middle; padding-bottom: 15px; }
</style></head><body><h2>Daten</h2>
</style></head><body><h2>Heizungsraum</h2>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Vorlauf </span>
<span id="temperature">""" + vorlauf + """</span>
<sup class="units">°C</sup>
</p>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Ruecklauf </span>
<span id="temperature">""" + ruecklauf + """</span>
<sup class="units">°C</sup>
</p>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Aussen </span>
<span id="temperature">""" + aussen + """</span>
<sup class="units">°C</sup>
</p>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Zaehler </span>
<span id="temperature">""" + zaehlerstand + """</span>
<sup class="units">cbm</sup>
</p></body></html>"""
return html
#------------------------------------------------------------------
SensorListe = [[bytearray(b'(\xffd\x0e}DF\x97'), 'vorlauf'],
[bytearray(b'(\xffd\x0er:C\x9d'), 'ruecklauf'],
[bytearray(b'(\xffd\x0er:C\x9d'), 'aussen']]
# zusätzlich für Interruptsteuerung Gaszähler
btn = Pin(2, Pin.IN, Pin.PULL_UP)
led = LED(8)
zaehler = Gas_Zaehler(4000.000, led) # Zählerstand anpassen
ds_pin = Pin(9)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
sensoren = Temp_Sensor(ds_sensor, SensorListe)
ssid = secrets.SSID
password = secrets.PASSWORD
station = network.WLAN(network.STA_IF)
station.active(False)
station.active(True)
station.connect(ssid, password)
while station.isconnected() == False:
sleep(1)
led.on()
print('Connection successful')
print(station.ifconfig())
# initiierung Timer 3_000 = 3 Sek. Abfrage periodisch der Sensoren
timer1 = Timer(-2)
timer1.init(period= 3_000, mode=Timer.PERIODIC, callback=lambda t: sensoren.read())
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
btn.irq(trigger=Pin.IRQ_FALLING, handler=btn_handler)
while True:
try:
if gc.mem_free() < 102000:
gc.collect()
conn, addr = s.accept()
conn.settimeout(3.0)
print('Got a connection from %s' % str(addr))
request = conn.recv(1024)
conn.settimeout(None)
request = str(request)
#print('Content = %s' % request)
response = web_page(sensoren, zaehler)
conn.send('HTTP/1.1 200 OK\n')
conn.send('Content-Type: text/html\n')
conn.send('Connection: close\n\n')
conn.sendall(response)
conn.close()
except OSError as e:
conn.close()
print('Connection closed')
sleep_ms(50)
Display More
das Thema ist erledigt
Moin,
sorry für den Titel, aber die Stichworte sind zutreffend.
In meinem Programm werden 3 Temperatursensoren ausgelesen und die Werte auf einer kleinen Website dargestellt. Ich möchte zusätzlich die Werte des Gaszählers über die Addition der Verbrauchsimpulse erfassen. Das funktioniert mit "Interrupt-Handler" gut Beide Programme funktionieren für sich, aber wie bekomme ich die Interrupt-Routine in das "Sensor" Programm integriert?
Im "Sensor-Programm" habe ich teilweise schon die Definitionen des anderen eingefügt, aber ich komme nicht weiter:
#TempHeizung_Gaszaehler_HTML.py
# für Temperaturabfrage, Webverbindung, Website
try:
import usocket as socket
except:
import socket
from time import sleep
from machine import Pin
import onewire, ds18x20
import network
import esp
esp.osdebug(None)
import gc
gc.collect()
# zusätzlich für Interruptsteuerung Gaszähler
led = Pin(8, Pin.OUT)
btn = Pin(2, Pin.IN, Pin.PULL_DOWN)
btn_pressed = False
zaehler = 4000.000 # Zählerstand anpassen
vorlauf=()
ruecklauf=()
aussen=()
ds_pin = Pin(9)
ds_sensor = ds18x20.DS18X20(onewire.OneWire(ds_pin))
ssid = 'FRITZ'
password = 'pw'
station = network.WLAN(network.STA_IF)
#station.active(False)
station.active(True)
station.connect(ssid, password)
while station.isconnected() == False:
pass
print('Connection successful')
print(station.ifconfig())
# Interrupthandler
def btn_handler(btn):
global btn_pressed
global zaehler
btn_pressed = True
def read_ds_sensor():
vorlauf =()
ruecklauf =()
aussen=()
# die print Befehle werden später gelöscht
roms = ds_sensor.scan()
#print(roms)
Sens1 = (bytearray(b'(\xffd\x0e}DF\x97')) #vVorlauf
#print ("Sensor1", Sens1)
Sens2 = (bytearray(b'(\xffd\x0er:C\x9d')) #Ruecklauf
#print ("Sensor2", Sens2)
Sens3= (bytearray(b'(\xffd\x0er:C\x9d')) # Aussen
#print ("Sensor3", Sens3)
ds_sensor.convert_temp()
sleep(3)
for rom in roms:
temperature = round(ds_sensor.read_temp(rom),1)
if rom == Sens1:
vorlauf = temperature
print("Vorlauf :", vorlauf)
elif rom == Sens2:
ruecklauf = temperature
print("Ruecklauf :", ruecklauf)
elif rom == Sens3:
aussen = temperature
print("Aussen :", aussen)
return vorlauf, ruecklauf, aussen
def web_page():
vorlauf, ruecklauf, aussen = read_ds_sensor()
zaehlerstand=zaehler #dummy für Anzeige Wert
html = """<!DOCTYPE HTML><html><head>
<meta name="viewport" content="width=device-width, initial-scale=1">
<link rel="stylesheet" href="https://use.fontawesome.com/releases/v5.7.2/css/all.css" integrity="sha384-fnmOCqbTlWIlj8LyTjo7mOUStjsKC4pOpQbqyi7RrhN7udi9RwhKkMHpvLbHG9Sr" crossorigin="anonymous">
<style> html { font-family: Arial; display: inline-block; margin: 0px auto; text-align: center; }
h2 { font-size: 3.0rem; } p { font-size: 3.0rem; } .units { font-size: 1.2rem; }
.ds-labels{ font-size: 1.5rem; vertical-align:middle; padding-bottom: 15px; }
</style></head><body><h2>Daten</h2>
</style></head><body><h2>Heizungsraum</h2>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Vorlauf </span>
<span id="temperature">""" + str(vorlauf) + """</span>
<sup class="units">°C</sup>
</p>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Ruecklauf </span>
<span id="temperature">""" + str(ruecklauf) + """</span>
<sup class="units">°C</sup>
</p>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Aussen </span>
<span id="temperature">""" + str(aussen) + """</span>
<sup class="units">°C</sup>
</p>
<p><i class="fas fa-thermometer-half" style="color:#059e8a;"></i>
<span class="ds-labels">Zaehler </span>
<span id="temperature">""" + str(zaehlerstand) + """</span>
<sup class="units">cbm</sup>
</p></body></html>"""
return html
"""
an dieser Stelle wird es nicht aufgerufen
while True:
if btn_pressed:
led.value(1)
sleep(3)
led.value(0)
zaehler += 0.001
print (zaehler)
btn_pressed = False
"""
s = socket.socket(socket.AF_INET, socket.SOCK_STREAM)
s.bind(('', 80))
s.listen(5)
while True:
try:
if gc.mem_free() < 102000:
gc.collect()
conn, addr = s.accept()
conn.settimeout(3.0)
print('Got a connection from %s' % str(addr))
request = conn.recv(1024)
conn.settimeout(None)
request = str(request)
#print('Content = %s' % request)
response = web_page()
conn.send('HTTP/1.1 200 OK\n')
conn.send('Content-Type: text/html\n')
conn.send('Connection: close\n\n')
conn.sendall(response)
conn.close()
except OSError as e:
conn.close()
print('Connection closed')
Display More
Das Programm für die Interrupt-Abfrage:
#Gaszaehler.py
from machine import Pin
from time import sleep
led = Pin(8, Pin.OUT)
btn = Pin(2, Pin.IN, Pin.PULL_DOWN)
btn_pressed = False
zaehler = 4000.000 # aktualisieren
def btn_handler(btn):
global btn_pressed
btn_pressed = True
btn.irq(trigger=Pin.IRQ_RISING, handler=btn_handler)
#btn.irq(trigger=Pin.IRQ_FALLING, handler=btn_handler)
while True:
if btn_pressed:
led.value(1)
zaehler += 0.001
print ("Zaehler ",zaehler)
sleep(3)
led.value(0)
#zaehler = btn_handler(btn)
btn_pressed = False
Display More
Das Problem liegt mE darin, dass die Abfrage des IRQ laufend erfolgen muss, während die Aktualisierung der Temperaturdaten nur dann erfolgt, wenn Abfragewebsite aufgerufen/aktualisiert wird. Dabei ist eine laufende Aktualisierung der Website nicht notwendig, wenn ein IRQ ausgelöst wird. Hintergrund: Die Temperaturdaten lese ich mit einem Raspi häufiger aus, die Zählerdaten einmal am Tag.
(Bitte keine anderen Fragestellungen z.B. w/ der HTML-Seite thematisieren )
Moin,
der Tipp mit 'r.encoding' hat auf Anhieb geklappt. Jetzt kann ich die Werte aus der Seite auslesen. Habe das Programm testweise etwas erweitert:
#TestUrequests.py
#encoding='utf8' habe ich analog zu Python-Programmen eingefügt -ohne Erfolg
import Wlan_einschalten
import urequests
# folgender Aufruf funktioniert unter Python fehlerfrei
#r = requests.get('http://192.168.178.197/cgi-bin/menu.cgi?mode=data' , auth=('dummy' , 'root'))
# in mpy kein Fehlerhinweis w/ "auth"??
r = urequests.get('http://192.168.178.197/cgi-bin/menu.cgi?mode=data' , auth=('root' , 'root'))
inhalt_seite = r.content[1:100] #ohne Positionseingrenzung wird die ganze Seite zugewiesen
print("HTML_Seite", inhalt_seite)
kwh = (r.content[1208:1219])
kwfloat = float(kwh)
print("Kilowattstunden", kwh, kwfloat)
#print(r.content)
Display More
und bekomme diese Ausgabe, genauso wie ich es benötige:
Mit WLAN verbinden...
WLAN: ('192.168.178.121', '255.255.255.0', '192.168.178.1', '192.168.178.1')
SSID: FRITZ!Box 7490
IP: 192.168.178.121
(2023, 1, 13, 15, 59, 25, 4, 13)
(2023, 1, 13, 16, 59, 25, 4, 13)
HTML_Seite b'HTML><HEAD><TITLE>Menu</TITLE>\r\n<meta http-equiv="Content-Type" content="text/html; charset=iso-885'
Kilowattstunden b'00044428.92' 44428.92
Danke für die schnellen und hilfreichen Tipps.
Hans-Jürgen
Moin,
Ich lese mit einem Raspi meinen Datenlogger von Photon-Control Datenlogger aus. Auf dem Logger läuft eine Website mit "User" und "PW" gesichertem Zugang. Der Raspi ist mit der Aufgabe eigentlich unterfordert und ich versuche, das mit einem ESP32 und Micropython zu erledigen. Anstelle von "requests" (Python) versuche ich es mit "urequests" (mpy). Habe überall gesucht, ob es mittlerweile eine Lösung für die Integration von "auth" in mpy gibt, aber nichts gefunden. Gibt es einen Workaround?
Mein Testprogramm:
#TestUrequests.py
#encoding='utf8' habe ich analog zu Python-Programmen eingefügt -ohne Erfolg
import Wlan_einschalten
import urequests
# folgender Aufruf funktioniert unter Python fehlerfrei
#r = requests.get('http://192.168.178.197/cgi-bin/menu.cgi?mode=data' , auth=('dummy' , 'root'))
# in mpy kein Fehlerhinweis w/ "auth"??
r = urequests.get('http://192.168.178.197/cgi-bin/menu.cgi?mode=data' , auth=('dummy' , 'root'))
print()
test = r.text[1:1000] #-- das ist die Zeile aus dem Fehlerhinweis
print(test)
Display More
Mit dem dummy - User bekomme ich folgende Ausgabe. Es werden nur die ersten wenigen Zeichen der HTML Seite ausgegeben (bitte keine Kommentare zu den absoluten Positionen, daran ändert sich bei dem Server nichts. Ich weiß, dass "parsen" die richtigere Methode wäre).
Mit WLAN verbinden...
WLAN: ('192.168.178.121', '255.255.255.0', '192.168.178.1', '192.168.178.1')
SSID: FRITZ!Box 7490
IP: 192.168.178.121
(2023, 1, 12, 20, 59, 48, 3, 12)
(2023, 1, 12, 21, 59, 48, 3, 12)
HTML><HEAD><TITLE>401 Unauthorized</TITLE></HEAD><BODY>401 Unauthorized</BODY></HTML>
Mit korrektem User/PW wird es leider auch nicht besser:
Mit WLAN verbinden...
WLAN: ('192.168.178.121', '255.255.255.0', '192.168.178.1', '192.168.178.1')
SSID: FRITZ!Box 7490
IP: 192.168.178.121
(2023, 1, 12, 21, 39, 36, 3, 12)
(2023, 1, 12, 22, 39, 36, 3, 12)
Traceback (most recent call last):
File "<stdin>", line 11, in <module>
File "urequests.py", line 32, in text
UnicodeError:
Display More
urequests hat bei Line 32 folgenden Text:
Gibt es einen Workaround oder muss ich bei meinem Raspi bleiben.
Hans-Jürgen
Moin,
vielen Dank.
Das hat gut geklappt.
Die Anregungen w/ der Namenskonventionen versuch ich beim nächsten Mal zu beachten.
Gruß
Hans-Jürgen
Moin,
vorweg: ich habe nur rudimentäre Python-Kenntnisse.
Ich möchte aus einem Python Programm eine Funktion aufrufen (Temperaturabfrage) und die Ergebnisse anschließend weiter verarbeiten. Die Abfrage selbst funktioniert gut.
from machine import Pin
import onewire, ds18x20, time
SensorPin = Pin(14, Pin.IN)
sensor = ds18x20.DS18X20(onewire.OneWire(SensorPin))
#die Messwerte sollen diesen Variablen zugewiesen werden
Vorl=()
Rueckl=()
Auss=()
def TempAbfrage(Vorl, Rueckl, Auss):
# die print Befehle werden später gelöscht
roms = sensor.scan()
print(roms)
Sens1 = (bytearray(b'(\xffd\x0e}DKj')) #vVorlauf
#print ("Sensor1", Sens1)
Sens2 = (bytearray(b'(\xffd\x0e}p\x1e\x98')) #Ruecklauf
#print ("Sensor2", Sens2)
Sens3= (bytearray(b'(\xffd\x0er:C\x9d')) # Aussen
#print ("Sensor3", Sens3)
sensor.convert_temp()
time.sleep(5)
for rom in roms:
temperature = round(sensor.read_temp(rom),1)
if rom == Sens1:
Vorl = temperature
print("Vorlauf :", Vorl)
elif rom == Sens2:
Rueckl = temperature
print("Rücklauf :", Rueckl)
elif rom == Sens3:
Auss = temperature
print("Außen :", Auss)
TempAbfrage(Vorl, Rueckl, Auss)
print("Vorlauf :", Vorl, "°C")
print("Rücklauf :", Rueckl, "°C")
print("Aussen :", Auss, "°C")
print()
Display More
Als Ausgabe bekomme ich:
>>> %Run -c $EDITOR_CONTENT
[bytearray(b'(\xffd\x0e}DKj'), bytearray(b'(\xffd\x0e}p\x1e\x98'), bytearray(b'(\xffd\x0er:C\x9d')]
Vorlauf : 24.4
Rücklauf : 24.2
Außen : 24.2
Vorlauf : () °C
Rücklauf : () °C
Aussen : () °C
Wie muss ich die Funktion/den Funktionsaufruf ändern, damit "Vorl, Rueckl, Auss" weiter verarbeitet werden können? (Bitte keine neuen Fragestellungen o.ä. einbringen).
Hans-Jürgen