digitemp with collectd 
I used following schematic



Additionally i connected three twisted pair wires with a 100 Ohm resistor. At the end of each wire a schottky diode reverse biased across the DS18S20 sensor against spikes is used.

At the moment i have 5 DS18S20 temperature sensors (inside, outside, heater back, heater, warmwater)

Initialising: digitemp -i -s /dev/ttyS0 -q -c /etc/digitemp.conf

Reading: digitemp -a -q -c /etc/digitemp.conf

Mar 16 12:44:06 Sensor 0 C: 20.94 F: 69.69
Mar 16 12:44:07 Sensor 1 C: 13.75 F: 56.75
Mar 16 12:44:09 Sensor 2 C: 28.69 F: 83.64
Mar 16 12:44:10 Sensor 3 C: 31.94 F: 89.49
Mar 16 12:44:11 Sensor 4 C: 48.75 F: 119.75

/etc/collectd.conf:
LoadPlugin exec
<Plugin exec> Exec "nobody:dialout" "/usr/bin/digitemp_DS9097" "-n0" "-d10" "-a" "-q" "-c/etc/digitemprc" "-oPUTVAL home/temp/temperature-%s interval=10 %N:%.2C"
</Plugin>

I had to make a patch for collectd that the exec plugin runs with user nobody and group dialout. Because user nobody's group is not dialout "setgroups" have to be called (add user nobody to /etc/groups dialout is only used if initgroups is called).

Also for digitemp i made a patch because i got sometimes 85 degrees (error condition) which are not correctly handled by digitemp:

Hi!

I discovered the use of wrong indexes:

These is your Indextable:

Temperature = scratchpad[1]
Sign = scratchpad[2]
TH = scratchpad[3]
TL = scratchpad[4]
Count Remain = scratchpad[7]
Count Per C = scratchpad[8]
CRC = scratchpad[9]


1. glitch condition

COUNT_PER_C is Index 8 and COUNT_REMAIN is Index 7

- if( (scratchpad[7] - scratchpad[6]) == 1 )
+ if( (scratchpad[8] - scratchpad[7]) == 1 )

2. Error Condition (85 Degrees)

- if( (scratchpad[4]==0xAA) &&
- (scratchpad[3]==0x00) &&
- (scratchpad[7]==0x0C) &&
- (scratchpad[8]==0x10)
+ if( (scratchpad[1]==0xAA) &&
+ (scratchpad[2]==0x00) &&
+ (scratchpad[7]==0x0C) &&
+ (scratchpad[8]==0x10) )

Also i think an Error Condition (85 Degrees) should be handled like a
CRC Error.


[ view entry ] ( 817 views )   |  print article

<<First <Back | 14 | 15 | 16 | 17 | 18 | 19 | 20 | 21 | 22 | 23 | Next> Last>>