Test Adapter DS18B20 v1.1.x


  • Developer

    Hallo zusammen,

    ich habe den neuen Adapter DS18B20 erstellt.
    Dieser Adapter bindet, beispielsweise auf einem Raspberry Pi, direkt die gleichnamigen 1-Wire Temperatursensoren in ioBroker ein.

    DS18B20

    Der Adapter ist in der Lage die gängigen Fehler des Sensors (Checksumme, 85°C, -127°C) zu erkennen und entsprechend zu reagieren (Logmeldungen, ggf. Null-Ersatzwerte).

    Alle angeschlossenen Sensoren können über die Sensoren Suchen Funktion auch direkt automatisch erkannt werden.
    Zudem ist es möglich für jeden einzelnen Sensor einen eigenen Abfrageintervall, einen Faktor und Offset, sowie die Anzahl der gewünschten Dezimalstellen anzugeben.

    Konfiguration

    Weiterhin ist eine Verwendung in Skripten möglich.
    Ein Skript kann das Lesen aller Sensoren oder eines bestimmten Sensors antriggern, einen Sensor direkt abfragen und die damit die aktuelle Temperatur erhalten oder nach verfügbaren (angeschlossenen) Sensoren suchen.

    Eine Ausführliche Beschreibung ist im GitHub Repo zu finden.

    Installiert werden kann der Adapter aktuell über das Latest-Repository, oder über den Link https://github.com/crycode-de/ioBroker.ds18b20.


    Verbesserungsvorschläge und ggf. Bug-Meldungen sind gerne willkommen. 🙂

    Viel Spaß beim Testen!


  • Starter

    Guten Tag,

    ich habe diesen Adapter installiert.

    Leider taucht der Adapter in den Instanzen nicht auf.
    Was mache ich falsch?

    Gruß Alex


  • Developer

    @Alexhouse Gab es bei der Installation irgendwelche Fehlermeldungen?
    Wenn nicht müsste der Adapter direkt bei den Instanzen auftauchen. Ansonsten vlt. die Ansicht ein mal neu laden.


  • Starter

    Nein, es gab keine Fehlermeldung.

    Neugestartet habe ich Ihn auch schon.

    2.PNG 1.PNG


  • Developer

    Versuch mal über das + rechts eine Instanz hinzuzufügen.


  • Starter

    Treffer!:-)

    Danke für die Hilfe.

    Gruß Alex



  • @crycode

    Danke für diesen Adapter. Hab ihn heute installiert und mich an die Anleitung von dir gehalten. Die ist wirklich super geschrieben. Alles klappte auf Anhieb.

    Das einzige, was noch nicht ganz klappt, sind die Anzahl der Dezimalstellen. Hab zuerst die Standardeinstellung gelassen. Das waren 2 Dezimalstellen. Bei mir wird aber nur eine Nachkommastelle angezeigt. Wenn ich im Adapter die Dezimalstellen auf 3 erhöhe, wird trotzdem nur eine angezeigt.
    Weißt du, was ich noch machen könnte?


  • Developer

    @daniel_iobroker
    Wenn die aktuelle Temperatur z.B. genau 20,1 °C beträgt, dann wird auch bei zwei gewählten Dezimalstellen 20,1 als Wert in den State geschrieben. Dies hängt damit zusammen, dass der Wert als Zahl und nicht als Text gespeichert wird. Wenn hingegen vom Sensor z.B. 20,123 °C gemeldet wird, dann wird dieser Wert bei zwei Dezimalstellen auf 20,12 °C gerundet.
    Für eine Anzeige mit immer zwei Dezimalstellen müsste das im VIS entsprechend umgesetzt werden. Beispielsweise beim "Number" Widget ist dies durch die Option "Zeichen nach dem Komma" möglich.

    Zum Vergleich, was der Sensor selbst liefert, kannst du in einem Terminal mittels cat /sys/bus/w1/devices/<Sensor-Adresse>/w1_slave den Sensor manuell abfragen. Die Ausgabe sieht dann beispielsweise so aus:

    58 01 4b 46 7f ff 08 10 f9 : crc=f9 YES
    58 01 4b 46 7f ff 08 10 f9 t=21500
    

    Dabei ist t=21500 die aktuelle Temperatur von 21,500 °C, was der Adapter (auch mit zwei gewählten Dezimalstellen) als 21,5 in den State schreiben würde.

    Vielleicht noch zu erwähnen wäre, dass nur die Sensoren vom Typ DS18B20 überhaupt über eine entsprechende Genauigkeit verfügen. Sensoren vom Typ DS18S20 oder DS1820 können genauso verwendet werden, verfügen aber eine deutlich geringere Auflösung (z.B. nur 0,5er Schritte).



  • @crycode
    Danke für deine Antwort.
    Ich habe natürlich vorher kontrolliert, ob der Sensor Werte überträgt, die auch nach der Kommastelle nicht 0 sind. Also in meinem Fall wurde der Sensor mit dem kompletten Wert ausgelesen. Der Adapter selbst zeigt trotzdem nur eine Dezimalstelle an.

    Hab jetzt extra noch probiert, dass Objekt in der VIS anzuzeigen. Es bleibt aber bei einer Stelle. Wenn ich jetzt aber die Nachkommastelle in Vis erhöhe, werden nur 0er angehängt. Also ist die Information im Objekt nicht vorhanden.


  • Developer

    @daniel_iobroker
    Ok, das ist dann seltsam...
    Kannst du ein mal die Ausgabe von cat /sys/bus/w1/devices/<Sensor-Adresse>/w1_slave posten?
    Dann kann ich versuchen das Problem mit deinen Sensordaten nachzuvollziehen.



  • @crycode
    ja, hab mich auch schon gefragt, was es überhaupt sein könnte.
    Hier die gewünschte Ausgabe:
    pi@raspberrypi:/sys/bus/w1/devices $ cat 28-1c8bf31d64ff/w1_slave
    74 01 55 00 7f ff 0c 10 68 : crc=68 YES
    74 01 55 00 7f ff 0c 10 68 t=23250

    Müsste als Objekt ja eigentlich jetzt 23,25°C anzeigen. Im Objekt werden aber 23,3°C angezeigt. Also aufgerundet. Eingestellt sind bei mir im Adapter 3 Dezimalstellen


  • Developer

    @daniel_iobroker danke, ich mach mich mal auf die Suche nach dem Fehler und einer Lösung. 🙂


  • Developer

    Ab sofort ist die Version 1.1.0 über GitHub und NPM verfügbar. Ab morgen sollte sie dann auch direkt über das latest-Repo zum Update bereit stehen.

    Neu in dieser Version:

    • Eigene Implementierung des Lesens der Sensordaten. (lief zuvor über das NPM-Modul ds18b20)
    • Bug beim Runden auf die gewählte Anzahl an Dezimalstellen behoben.
    • Systempfad der 1-Wire Geräte ist nun über die Konfiguration anpassbar.


  • @crycode
    Danke für die rasche Behebung. Habe gerade das Update geladen. Jetzt wird der Wert korrekt auf die eingestellte Dezimalstelle dargestellt / gerundet.

    Eine Frage noch. Wie viele Sensoren können denn ausgelesen werden? Ich habe mal in irgendeiner Doku was von 10Stk. gelesen. Dabei ging es um das auslesen der ds18b20 Sensoren über den Raspi. Könnte natürlich sein, dass das inzwischen erhöht worden ist? Ich weiß aber auch, dass es hier einen workaround gab, mit dem dann mehr auslesen ging.

    Bei mir geht es um ca. 30 Stück. Möchte den Heizkreisverteiler mit den Sensoren vollpacken. Also für jeden Heizkreis (Fußbodenheizung) 2 Stück => 1 Vorlauf, 1 Rücklauf. Dafür wäre der Adapter einfach perfekt 🙂


  • Developer

    @daniel_iobroker
    Soweit ich weiß gibt es da keine softwareseitigen Beschränkungen.
    Was bei zunehmender Sensoranzahl jedoch immer entscheidender wird, sind die elektrischen Eigenschaften. Der 1-Wire Bus sollte Linear mit möglichst kurzen Abzweigungen zu den einzelnen Sensoren geführt werden. Je länger die einzelnen Abzweige von der Hauptleitung sowie die Leitungen überhaupt sind, desto mehr Störungen können auftreten und den Bus stören.

    Auf dem Raspi gibt es noch die Möglichkeit mehrere 1-Wire Busse über unterschiedliche GPIOs zu verwenden und somit die Sensoren quasi in Gruppen aufzuteilen.
    Dazu einfach in der Datei /boot/config.txt die Zeile mit dem entsprechenden Overlay mehrfach hinzufügen und dabei den GPIO anpassen:

    dtoverlay=w1-gpio,gpiopin=4
    dtoverlay=w1-gpio,gpiopin=17
    dtoverlay=w1-gpio,gpiopin=27
    

    Im System werden dann unter /sys/bus/w1/devices mehrere w1_bus_masterX angelegt.
    Der Adapter erkennt aktuell bei der Suche nach Sensoren nur Sensoren am w1_bus_master1 automatisch. Du kannst aber trotzdem die Adressen per Hand in der Liste hinzufügen und damit dann alle Sensoren auslesen.


Log in to reply
 

Suggested Topics

  • 14
  • 1
  • 112
  • 5
  • 34
  • 4
  • 1
  • 5

1.0k
Online

21.8k
Users

26.6k
Topics

325.3k
Posts