Hallo beisammen,
Ich habe 3 Stück Shelly “The Pill” mit jeweils 5 x DS18B20 Temperatur Sensoren mit 3M Kabel für meine Heizungsanlage im Einsatz. Bei einem “The Pill” ist es jetzt mehrfach vorgekommen dass sich die Zuordnung der Temp. Fühler untereinander einfach vertauscht hat. Das passiert schon innerhalb des Web Interface vom Shelly “The Pill” … natürlich sind dann auch die Zuordnungen in HA total durcheinander. Eine Ursache für das Verhalten konnte ich bisher nicht feststellen. Ich habe zum test Das Netzteil getauscht, das USB C Kabel vom Netzteil zur Pille, Die Pille selbst ausgetauscht. Das Micro USB Datenkabel getauscht. Alle Kontakte überprüft, und mit Wagos verbunden… und dennoch kommt es alle paar Tage oder Wochen zu so einem Chaos. Nur die Sensoren habe ich noch nicht ersetzt. Bei den anderen 2 Pillen hatte ich bisher noch keine Probleme… Hat Jemand in der Runde ähnliches festgestellt?
Gruß DeNobbes
Hast du Pull-up-Widerstände verbaut?
Ich habe keine „Pillen“ im Einsatz, aber auch an ESP8266 hat so’n Widerstand von 2,2 bis 4,7 kOhm, je nach Leitungslänge und Anzahl der Sensoren, zwischen der Datenleitung und VCC, bei mir schon manchen Fehler behoben.
Im Shelly sind zwar welche verbaut, diese sind aber für extrem lange Leitungen oder viele Sensoren manchmal zu schwach dimensioniert.
Mit den von dir genannten Wagos lässt sich das relativ einfach einrichten.
Ok. War mir nicht bekannt. Das werde ich die Tage mal ausprobieren. Vielen Dank für den Tip!
Ansich hat jeder One-Wire-Sensor eine weltweit eindeutige Kennung (64-Bit). Anhand dieser Kennung sollte ThePill den Sensor wieder dem richtigen Kanal zuordnen können. Wenn hier mehrfach die Kanäle wechseln, solltest Du mal auf die Kennung achten, ob die sich auch verändert. Ich denke das ist sonst ein Problem in The Pill oder Überragungsstörungen (klingt für mich aber unwahrscheinlich).
Ich habe 5 dieser Temperatursensoren an einem ShellyUni und dort tritt der Effekt nicht auf.
Es muss nur einer der Sensoren defekt sein dann
verändert sich die Reihenfolge,
wenn es nicht der letzte in der Reihe ist.
Ich habe keine Shellys aber ich kenne die DS18B20 aus dem Tasmota und ESP Bereich.
Der Wiederstand in der Datenleitung zur Plusleitung ist dabei genauso wichtig.
In Tasmota werden die Sensoren, wenn ich es noch richtig im Kopf habe so übergeben.
DS18B20-01
DS20B20-02
DS18B20-03
… bis mögliche 08 auf einem I2C Bus.
Wenn die 01 oder 02 Ausfällt, kann sich jeder vorstellen was dann passiert.
Gerade bei den Temperatur Sensoren DS18B20 ist soviel Müll Hergestellt worden
das ich auch in diese Richtung gehe.
Alleine ein Probeaufbau von 8 Sensoren auf einem Steckbrett kann Erhebliche Temperatur unterschiede zeigen und sogar komplett Ausfälle.
Habe ich hier alles erlebt.
Es stimmt, wenn die DS18B20-Sensoren I2C-Schnittstelle hätten, dann müßte jeder eine andere Adresse bekommen. Es ist aber eine 1-Wire-Schnittstelle, wo es genaue Prozeduren gibt, um die einzelnen Sensoren, die alle auf einer Leitung hängen, erkannt werden.
Wichtig ist der Widerstand in der Data-Leitung, der sollte aber bei ThePill bereits eingebaut sein, denn wenn man dort die Standard-Komponenten verwendet, ist ja alles nur zusammenzustecken.
Bei 1-Wire werden die einzelnen Sensoren mit der weltweit eindeutigen 64-Bit-Adresse angesprochen (jeder Sensor hat ab Werk eine andere Adresse), sofern mehrere Sensoren in der Leitung sind. Da ist es eigentlich unmöglich, die Antworten zu vertauschen, wenn man sie immer den angefragten Adressen zuordnet. Ich habe, wie gesagt, eine ShellyUni mit 5 Sensoren seit vielen Jahren im Einsatz, ohne dass jemals Werte vertauscht wurden. Ich habe mal in der Shelly-Oberfläche nachgeschaut, leider sind die Kennungen dort nicht ersichtlich, aber im MQTT bekommt man es heraus:
shellies/Shelly-Uni1/ext_temperatures = {
"3":{
"hwID":"2824b45b12210136",
"tC":49.9
},
"0":{
"hwID":"2836608a122101cc",
"tC":39.2
},
"2":{
"hwID":"289b5f7b122101cf",
"tC":56.6
},
"1":{
"hwID":"28073f7e12210193",
"tC":72.1
},
"4":{
"hwID":"28ef9f8c1221015e",
"tC":54.1
}
}
Das stimmt nicht, bei deinem Gen1 geht das auch mit einem HTTP Request
hier sind wir aber beim Pill, daher sollte diese Funktionieren:
Shelly Sensor Add-On | Shelly Technical Documentation
http://192.168.33.1/rpc/SensorAddon.GetPeripherals
Aber ich tippe auch auf non Name DS18B20
Hallo … und Danke euch für die Infos, Das mit den Widerständen und Adressen nehme ich mit… Übrigends habe ich vergessen anzumerken dass ich hin und wieder beobachtet habe, dass manche Sensoren der 5 an der besagten Pille unregelmäßig kurzzeitig ausfallen… in HA als “unbekannt” angezeigt werden. Jedoch immer nur für eine Sekunde. Ich habe inzwischen jedoch einen Verdacht. Die Sensoren sind alle die selben und vom gleichen Lieferanten. AZ Delivery… über A***on gekauft.
Nur an meinem Schichtspeicher machen sie Probleme. An den anderen Anlagenteilen nicht. Ich habe die Sensoren zum Teil mit anderen Sensoren von der Solaranlage oder Wärmepumpe beisammen an selber Position mit “echter” Aluminium Klebefolie fixiert damit sie nicht verrutschen. Möglich dass der direkte Kontakt zwischen 2 Fühlern die nebeneinander mit der Alufolie und dem Speicher in Berührung sind geringe Kriechströme und Potenzial Probleme verursachen die die Pille nicht vertägt. Ich hatte zuvor alle 15 Fühler mit 3 Shelly Addons an 1PM angeschlossen. Das funktionierte absolut Problemlos.
Gruß DeNobbes
Das sind sehr zuverlässig DS18B20, ich habe davon mehr als 40 Stück im Einsatz
Allerdings verwende ich keine „Pille“
ESP32 sind viel vielseitiger
Beispiel an einen ESP32
Ich habe nun die Aluminium Klebefolie (wie oben beschrieben) von den Sensoren als Fixierung entfernt und ein Klebeband verwendet dass sich rückstandslos entfernen lässt und nicht leitfähig ist.
Ob das was hilft wird sich zeigen. Ich sehe jedoch immer wieder dass sie Sensoren kurzzeitig die Meldung (Unbekannt) in HA anzeigen. Also kurzzeitig keine Daten liefern oder aussetzen.
Hier mal paar Meldunge von der Pille:
shelly_ds18b20.cpp:85 unable to read DS18B20 40:86:241:129:227:225:60:48
shelly_ds18b20.cpp:85 unable to read DS18B20 40:17:143:129:227:225:60:15
shelly_ds18b20.cpp:85 unable to read DS18B20 40:226:87:129:227:225:60:68 temperatureperature_monitor.cpp:74 Error reading temperature 1shelly_notifications.cpp:164 Status change of temperature:201: {„errors“:[„read“],„tC“:null,„tF“:null}
shelly_notifications.cpp:164 Status change of temperature:201: {„errors“:,„tC“:36.69,„tF“:98.04}
Ich werde vermutlich als nächstes, zum Testen, einen Widerstand einsetzten ….
Gruß
Gute Entscheidung.
@Schorsch Ich habe deinen Rat befolgt und inzwischen 4,7 kOhm Widerstände auftreiben können und eingebaut. Die Aussetzer haben sich deutlich reduziert.. ab und zu kommt es zwar noch kurz vor, wenn aber die Sensoren nicht mehr ihre Position tauschen soll mir das egal sein. Die Aussetzer sieht man nur im Log. In den Aufzeichnungen ist nun nix mehr sichtbar. Danke für deinen Rat!!!
Gruß
Schön, dass es jetzt besser funktioniert.
Im Folgenden eine Aufstellung zum Wert des Widerstandes:
Anpassung an die Sensoranzahl und Leitungslänge
Wenn die Anzahl der Sensoren steigt oder die Kabellängen zunehmen, erhöht sich die elektrische Kapazität des Busses. Ein zu hoher Widerstand kann dann dazu führen, dass die Signalflanken zu flach werden („Einschleifen“), was zu Lesefehlern führt.
Hier ist eine Orientierungshilfe für die Wahl des Widerstands:
| Anzahl Sensoren | Kabellänge (gesamt) | Empfohlener Widerstandswert |
|---|---|---|
| 1 - 5 | < 5 Meter | 4,7k |
| 5 - 10 | 5 - 20 Meter | 2,2k bis 3,3k |
| > 10 | > 20 Meter | 1k (Grenzwert beachten!) |
Wichtige technische Regeln
- Die Spannungsebene: Der ESP8266 arbeitet mit 3,3V. Achte darauf, dass der Pullup-Widerstand zwischen der Datenleitung (DQ) und 3,3V (VCC) angeschlossen ist, nicht an 5V, um den GPIO des ESP8266 nicht zu beschädigen.
- Der Stromgrenzwert: Der Widerstand darf nicht beliebig klein werden. Ein Wert unter $1\text{ k}\Omega$ sollte vermieden werden, da die Sensoren den Bus sonst nicht mehr sicher auf „Low“ ziehen können (der sogenannte Sink-Strom ist begrenzt).
- Nur ein Widerstand: Unabhängig davon, wie viele Sensoren am Bus hängen, wird nur ein einziger Pullup-Widerstand für den gesamten Bus benötigt (idealerweise nah am ESP8266 platziert).
An einer Pille hängen 5 Sensoren jeweils mit einer Kabellänge von 3m. Der 4,7k Widerstand ist zwischen VCC und DQ angeschlossen. Pro Pille ein Widerstand. Die Verbindung Zwischen der Pille und den Wagos beträgt ca.15cm.
Bei den anderen 2 Pillen habe ich etwas weniger Aussetzer festgestellt, Die Konstellation ist identisch nur die Kabellänge ist pro Sensor 1-1,5m kürzer.
Gruß
Hallo Schorsch, kleines Update… Ich habe, gemäß deiner Liste, nun an der Pille die 5 Sensoren mit zusammen 15m Leitungslänge hat einen 2,2k Widerstand eingesetzt.
Die beiden anderen Pillen die auch jeweils 5 Sensoren, jedoch deutlich kürzere Leitungen haben jeweils einen 2,7k Widerstand eingesetzt.
Bisher habe ich erheblich weniger Aussetzer bei den 2,2k.
Bei den anderen beiden mit den kürzeren Leitungen und 2,7k sind bis dato keine Aussetzer mehr feststellbar.
Möglich dass bei der einen Pille doch noch ein Sensor einen Treffer hat, oder noch ein kleines Kontaktproblem besteht. Alles in allem jedoch kein Vergleich zu vorher.
Noch mal Danke für deinen Rat!
Gruß
