Wall-Display - Thermostatfunktion mit DS18B20 als Sensor - HOWTO

  • Nach dem etwas enthusiastischen Weihnachsteinkauf und der ersten Ernüchterung zu den Problemen des internen Sensors kam natürlich nach dem Kauf des Shelly-Addons mit einem DS18B20 die zweite Ernüchterung, da sich ein DS18B20 nicht direkt als externer Sensor einbinden lässt.

    Aber frei nach dem Motto - "geht nicht, gibt es nicht", verhalf etwas Scripting zu einer funktionierenden Lösung.

    Neben dem Wall Display verwende ich dafür ein Plus1PM, welches mit dem Shelly-Addon verheiratet wurde, und an dem wiederum der DS18B20.

    Die Lösung über Script liegt darin, dass ich über ein Script im Plus1PM den Messwert aus dem Wall-Display mit dem Messwert vom DS18B20 vergleiche. Daraus wird der notwendige Offset für das Wall-Display berechnet und in das Wall-Display geschrieben. Somit hat man den Wert auch mit schwankenden Offset immer auf dem "richtigen" Wert. Es ist dadurch auch möglich, das Display eingeschaltet zu lassen, ohne dass der Messwert durch die Eigenerwärmung "davon läuft". Ein allfällig notwendige Kompensation (Offset) wird rein über den DS18B20 durchgeführt.

    In Summe sind drei RPC-Calls erforderlich um die erforderlichen Werte abzufragen, sowie ein Call um den neuen Offset zu setzen. Der Aufruf aller Funktionen erfolgt über einen Timer, wobei sichergestellt wird, dass alle drei Aufrufe zur Abfrage erfolgreich waren, bevor ein neuer Offset berechnet und geschrieben wird. Das Schreiben des neuen Offsets erfolgt dabei immer um einen Timer-Zyklus verzögert.

    Das Script ist sicher noch nicht perfekt. Es fehlt in jedem Fall noch die eine oder andere Fehlerprüfung. Insbesonders werden die Rückgabewerte der verschiedenen Calls nicht auf Plausibilität geprüft. Schlagend wird dieser Umstand aber nur, wenn die IP für das Wall-Display auf einen anderen Shelly zeigt.

    Alle sagen "das geht nicht". Bis der eine kam, der es einfach machte.

  • Hallo Wolfgang,

    Gute Idee den Offset per Script zu manipulieren! Ich habe es gleich mal getestet. Anfänglich hat es nicht funktioniert, da ich der IP zum Wall-Display das Passwort durch http://admin:passwort@IP mit übergeben musste. Nachdem ich den PW-Schutz am Display ausgeschaltet hatte, ging es dann. Dabei fiel auf, dass bei konstanter Temp-Anzeige durch den Add-On Sensor, die Anzeige am Wall-Display in dem eingestellten 10sec. Takt um +0,2°C bis -0,3°C schwankt. Kann es sein, dass hier vielleicht noch ein Delay zwischen Offset speichern und Ausgabe auf dem Display eingefügt werden muss ? Leider ist Scripting nicht so mein Ding🙄. Wäre es möglich, mit so einem RPC-Call per Script einen ganz anderen Wert auf das Display zu schreiben ? Ich vermisse immer noch die Funktion einen Wert von einem Add-On Temperatur-Sensor auf dem Display anzeigen zu können. Verstehe nicht, warum Shelly das nicht implementiert.

  • Da die Rückgabe der Werte asynchron über Callback erfolgt, gibt es in der derzeitigen Fassung ein Delay von einem Timer-Intervall. Dazu kommt noch vermutlich eine gewisse Ungenauigkeit mit Rundungen, da die Sensoren die Werte mit zwei Dezimalstellen liefern, der Offset im WD, sowie die Anzeigen im WD aber mit nur einer Dezimalstelle arbeiten.

    Für Anwendungen mit hohen Anforderungen sicher ungeeignet. Für die Regelung einer Raumheizung aber sicher ausreichend. Und in jeden Fall wird die Temperaturdrift des Sensors im WD kompensiert

    Alle sagen "das geht nicht". Bis der eine kam, der es einfach machte.

  • Wieso muß man dauernd die Errors abfragen?

    Der wird doch verzögert, langsamer.

    Kenne ich von Arduinos nicht, nur beim Start ob was fehlt.

    VG Rolf

    (Wer einen Tippfehler findet, darf den gerne behalten :saint:)

  • Dieses Thema enthält 4 weitere Beiträge, die nur für registrierte Benutzer sichtbar sind.