Hallo Gemeinde,
gibt es eine Möglichkeit das Reading temperature zu runden? Ich logge mit event-on-change-reading nur Werte die sich ändern, was aber bei 4 Stellen hinter dem Komma quasi jedes mal der Fall ist. Mir würde eine Stelle nach dem Komma schon reichen. Ich weiß dass ich dafür ein userreading bauen kann, möchte aber das Reading temperature weiterhin loggen.
Hat jemand eine Idee?
Grüße,
Markus
attr FS1T userReadings temperature { int ( 10 * ReadingsVal("FS1T","temperature",0) + 0.5 ) / 10 }
Hallo Joachim,
danke. Das funktioniert, das reading wird angepasst, jedoch wird es bei jeder Aktualisierung zwei mal gelogged, einmal mit dem originalwert und einmal mit dem gerundeten.
Ist mir auch aufgefallen.
Würgaround:
attr FS1T userReadings ANDERERNAME { int ( 10 * ReadingsVal("FS1T","temperature",0) + 0.5 ) / 10 }
das zwei mal loggen kannst du nicht verhindern wenn das reading den gleichen namen hat. zumindest nicht wenn dich nur der zweite wert interessiert.
schau mal ob dir das attribut resolution weiter hilft.
wenn ja hast du nebenbei noch den vorteil das die messung etwas doppelt so schnell geht.
gruss
andre
Hallo Andre,
das führt leider auch nicht zum gewünschten Ergebnis, der Wert hat weiterhin 4 Stellen hinter dem Komma. Ich habe jetzt ein userreading temperature2 gebaut, welches den entsprechend gerundeten Wert von temperature hat. Habe erst überlegt das zu loggen und dann meine gplots anzupassen, dann würde ich jedoch in den Plots die bisherigen Werte vom reading temperature nicht mehr angezeigt bekommen.
Alles irgendwie nicht so optimal. Klasse wäre es wenn man das Modul 11_OWDevice.pm auf Wunsch per Attribut runden lassen könnte.
Grüße,
Markus
bei mir habe ich mit resolution 9 maximal eine und mit resolution 10 maximal zwei nachkomma stellen.
wenn du owhttp laufen hast solltest du das dort auf der seite zu deinem sensor auch sehen. schau mal untern auf dem screenshot.
gruss
andre
Ein wenig Recherche hat ergeben dass offenbar nur der DS18B20 verschiedene resolutions bietet. Bis auf einen Sensor nutze ich jedoch DS18S20. Damit hat sich das dann auch erledigt. Danke trotzdem für die Info!
dann sollte aber erst recht nur maximal eine nachkomme stelle gezeigt werden wenn der sensor nicht mehr liefert.
das ist zumindest das was das datasheet sagt. hast du owhttp laufen? was siehst du da?
gruss
andre
Bei mir läuft nur owserver, owget liefert mir folgende Daten:
[biomann@pi:~]$ owget /10.463857020800
/10.463857020800/address
/10.463857020800/alias
/10.463857020800/crc8
/10.463857020800/errata
/10.463857020800/family
/10.463857020800/id
/10.463857020800/locator
/10.463857020800/power
/10.463857020800/r_address
/10.463857020800/r_id
/10.463857020800/r_locator
/10.463857020800/temperature
/10.463857020800/temphigh
/10.463857020800/templow
/10.463857020800/type
[biomann@pi:~]$ owget /10.463857020800/temperature
22.1875%
[biomann@pi:~]$
Wie du siehst bekomme ich direkt von owfs/owserver schon Werte mit 4 Nachkommastellen.
Eventuell musst du in der Codeanzeige runterscrollen um den Wert zu sehen
leider nicht zu übersehen.
gruss
andre
Plan A:
Plot anpassen auf temperature.*
Plan B
in Quellcode eingreifen (Wenn ich das richtig sehe zwischen Zeile 483 und 484)
$value= int ( 10 * $value + 0.5 ) / 10
ohne Garantie
Ein paar Dinge müssen etwa korrigiert werden:
1. Die alten DS1820 werden nicht mehr hergestellt, verkauft werden nur noch Restbestände. Ersatzmodell ist der DS18S20.
2. Beim DS1820 wird die Temperaturmessung nur mit 9 Bit bzw. 0,5 Grad Celsius aufgelöst, mit einer Korrekturrechnung kann die Auflösung etwas gesteigert werden. Die Genauigkeit dieser Korrekturrechnung ist aber nicht angegeben. Die gesamte Messung benötigt 500 ms.
3. Beim DS18S20 wird die Temperaturmessung mit 12 Bit bzw 1/16 Grad Celsius aufgelöst, wenn die Auslesung mit einer Korrekturrechnung behandelt wird. Die gesamte Messung benötigt 750 ms.
4. Beim DS18B20 kann die Auflösung der Temperaturmessung zwischen 9 Bit (0,5 Grad Celsius) und 12 Bit (1/16 Grad Celsius) ausgewählt werden. Die Messung mit hoher Auflösung benötigt 750 ms, die Messung mit geringer Auflösung geht schneller.
5. Die drei Typen DS1820,DS18S20 und DS18B20 haben eine angegebene absolute Genauigkeit von 0,5 Grad Celsius.
5. Beim DS1822 wird die Temperaturmessung mit 9 Bit (0,5 Grad Celsius) aufgelöst, diese "Billigversion" misst aber laut Datenblatt nur auf 2 Grad Celsius genau.
6. Ein Vergleich zeigt, dass die absolute Ungenauigkeit in der Messung im Wesentlichen von einem Offset rührt. Alle digitalen Thermometer sollten deshalb kalibriert werden. dann lassen sich auch höhere absolute Genauigkeiten erreichen, siehe diese Wiki-Seite von mir: http://www.fhemwiki.de/wiki/Eichung_von_1-Wire_Temperatursensoren.
Fazit: Wer eine Nachkommastelle Genauigkeit haben möchte, muss sowohl mit 12 Bit Auflösung messen, als auch eine Eichung durchführen.
LG
pah
ist das wirklich so oder werden hier wieder auflösung, präzision sowie äußere- und absolute genauigkeit vermischt?
laut datenblatt ist die accuracy immer ±0.5º (jedenfalls zwischen -10ºC und +85ºC, ausserhalb vermutlich schlechter), unabhängig von der auflösung. über die precission sagt das datenblatt nichts.
meint accuray Präzision oder äußere genauigkeit?
das datenblatt sagt auch nirgends das mit 12bit die genauigkeit auf 1/16º steigt sondern nur die auflösung.
meiner meinung nach ist es für normale haushaltsanwendungen völlig ausreichend die 9bit auflösung zu verwenden so fern man die auflösung wählen kann. zumal die messung dann deutlich unter 100ms benötigt.
gruss
andre
Ah, touché. Klarheit ist vorhanden, aber in der Niederschrift (es war halt früh am Morgen ...) habe ich genau diese Vermischung wieder vorgenommen.
Jetzt durch Editieren beseitigt und hoffentlich besser formuliert.
Nochmal: Die Genauigkeit ist nach meiner Ansicht durchaus auf 1/10 Grad Celsius zu steigern. Das erfordert aber eine Eichung, weil der absolute Messfehler wesentlich durch einen zufällgen (aber für jedes DS-Device festen) Offset bestimmt wird.
LG
pah
die eichung (oder kalibrierung ?) ist sicher zwingend nötig um die absolute genauigkeit zu verbessern.
wenn die ±0.5º aber nicht von der auflösung abhängen reicht aber jeweils eine messung nicht sondern meherere werte müßten geeignet gemittelt werden um tatsächlich die 1/10 grad genauigkeit zu erreichen.
sollte man nicht annehmen das das datenblatt eine bessere (von der auflösung abhängige) genauigkeit nicht extra hervorheben würde?
gruss
andre
Spielen wir heiteres Datenblattraten ?
Ich glaube eher an Messungen - und die sagen, dass ich bei einigen Messungen mt dem richtigen konstanten Offset sehr genau auf der tatsächlichen Temperatur liege. Natürlich kann man das systematisieren und eine ganze Messreihe nehmen. Viel Freude dabei !
Der Begriff "Eichung" stammt aus der theoretischen Physik und bezeichnet die Invarianz von Theorien gegenüber der Addition von konstanten (bei globaler Eichinvarianz) bzw. variablen (bei lokaler Eichinvarianz) Anteilen. Das trifft hier bestens zu - auch wenn im amtlichen Sprachgebrauch "Eichung" Sache der Eichämter ist und deshalb im Amtsdeutsch hier von Kalibrierung zu sprechen wäre. Ich fühle mich der Naturwissenschaft näher als dem Amtsschimmel, sozusagen ... obwohl man natürlich argumentieren könnte, dass die Verwendung von Eiswasser im Rahmen der Gesetze durchaus ein zulässiges amtliches Normal ist.
Ich tippe (rate ?), dass die Genauigkeit bei diesen Wandlern tatsächlich durch die Wertigkeit des niederwertigsten Bits bestimmt wird und für die 20er Modelle typisch +/- 1 digit ist. Nach Ecihung, wohlgemerkt.
LG
pah
nö. ich bin nur ganz wirklich daran interessiert woher die genauigkeit von 1/10 grad kommen kann.
gruss
andre
Moin Prof.,
Klugscheissermodus an:
Eichung?
oder doch eher Kalibrierung.
http://de.wikipedia.org/wiki/Eichung
Gruß Joachim
Hab ich doch oben erklärt - man kann Eichung als Begriff aus der Physik verwenden.
Oder aus der Sicht des Eichbeamten vom Eichamt, der mit offiziellem Eichnormal durch die Lande reist und Eichmarken verteilt.
LG
pah