Hallo,
ich benutze einen Arduino mit Firmata drauf und möchte einen HTU21D Sensor einbinden ich habe den Sensor wie folgt eingebunden:
Internals:
FIRMATA_SENDSTAT Ok
I2C_Address 64
IODev FIRMATA
NAME AdaSensor
NR 177
STATE T: 23.2 H: 35.0
TYPE I2C_SHT21
Readings:
2016-01-02 14:45:35 humidity 35.0
2016-01-02 14:45:35 state T: 23.2 H: 35.0
2016-01-02 19:51:36 temperature 22.6
Attributes:
IODev FIRMATA
poll_interval 5
Das auslesen der Temperatur funktioniert aber aber die Luftfeuchtigkeit wird kurz nach dem anlegen ausgelesen aber dann nicht mehr.
Was mir seltsam erscheint ist das laut Log die Temperatur zweimal ausgelesen wird.
2016-01-02_14:45:35 AdaSensor temperature: 23.2
2016-01-02_14:45:35 AdaSensor humidity: 35.0
2016-01-02_14:48:37 AdaSensor temperature: 23.1
2016-01-02_14:48:37 AdaSensor temperature: 23.1
2016-01-02_14:48:40 AdaSensor temperature: 23.1
2016-01-02_14:48:40 AdaSensor temperature: 23.1
2016-01-02_14:48:42 AdaSensor temperature: 23.1
2016-01-02_14:48:42 AdaSensor temperature: 23.1
2016-01-02_14:48:43 AdaSensor temperature: 23.1
2016-01-02_14:48:43 AdaSensor temperature: 23.1
2016-01-02_14:50:36 AdaSensor temperature: 23.1
2016-01-02_14:50:36 AdaSensor temperature: 23.1
2016-01-02_14:55:36 AdaSensor temperature: 22.9
2016-01-02_14:55:36 AdaSensor temperature: 22.9
2016-01-02_15:00:36 AdaSensor temperature: 22.9
2016-01-02_15:00:36 AdaSensor temperature: 22.9
2016-01-02_15:05:36 AdaSensor temperature: 22.8
2016-01-02_15:05:36 AdaSensor temperature: 22.8
2016-01-02_15:10:36 AdaSensor temperature: 22.8
2016-01-02_15:10:36 AdaSensor temperature: 22.8
2016-01-02_15:15:36 AdaSensor temperature: 22.9
2016-01-02_15:15:36 AdaSensor temperature: 22.9
2016-01-02_15:20:36 AdaSensor temperature: 22.7
2016-01-02_15:20:36 AdaSensor temperature: 22.7
2016-01-02_15:25:37 AdaSensor temperature: 22.8
2016-01-02_15:25:37 AdaSensor temperature: 22.8
2016-01-02_15:30:37 AdaSensor temperature: 22.7
2016-01-02_15:30:37 AdaSensor temperature: 22.7
2016-01-02_15:35:37 AdaSensor temperature: 22.8
2016-01-02_15:35:37 AdaSensor temperature: 22.8
2016-01-02_15:40:37 AdaSensor temperature: 22.7
2016-01-02_15:40:38 AdaSensor temperature: 22.7
2016-01-02_15:45:37 AdaSensor temperature: 22.8
2016-01-02_15:45:37 AdaSensor temperature: 22.8
2016-01-02_15:50:37 AdaSensor temperature: 22.7
2016-01-02_15:50:37 AdaSensor temperature: 22.7
2016-01-02_15:55:37 AdaSensor temperature: 22.8
2016-01-02_15:55:37 AdaSensor temperature: 22.8
2016-01-02_16:00:38 AdaSensor temperature: 22.8
2016-01-02_16:00:38 AdaSensor temperature: 22.8
2016-01-02_16:05:38 AdaSensor temperature: 22.7
2016-01-02_16:05:38 AdaSensor temperature: 22.7
2016-01-02_16:10:38 AdaSensor temperature: 22.8
2016-01-02_16:10:38 AdaSensor temperature: 22.8
2016-01-02_16:15:38 AdaSensor temperature: 22.8
2016-01-02_16:15:38 AdaSensor temperature: 22.8
2016-01-02_16:20:38 AdaSensor temperature: 22.7
2016-01-02_16:20:38 AdaSensor temperature: 22.7
2016-01-02_16:25:38 AdaSensor temperature: 22.7
2016-01-02_16:25:38 AdaSensor temperature: 22.7
2016-01-02_16:30:38 AdaSensor temperature: 22.7
2016-01-02_16:30:38 AdaSensor temperature: 22.7
2016-01-02_16:35:38 AdaSensor temperature: 22.6
2016-01-02_16:35:38 AdaSensor temperature: 22.6
2016-01-02_16:40:39 AdaSensor temperature: 22.7
2016-01-02_16:40:39 AdaSensor temperature: 22.7
2016-01-02_16:45:39 AdaSensor temperature: 22.6
2016-01-02_16:45:39 AdaSensor temperature: 22.6
2016-01-02_16:50:39 AdaSensor temperature: 22.5
2016-01-02_16:50:39 AdaSensor temperature: 22.5
2016-01-02_16:55:39 AdaSensor temperature: 22.4
2016-01-02_16:55:39 AdaSensor temperature: 22.4
2016-01-02_17:00:39 AdaSensor temperature: 22.4
2016-01-02_17:00:39 AdaSensor temperature: 22.4
2016-01-02_17:05:39 AdaSensor temperature: 22.3
2016-01-02_17:05:39 AdaSensor temperature: 22.3
2016-01-02_17:10:39 AdaSensor temperature: 22.2
2016-01-02_17:10:39 AdaSensor temperature: 22.2
2016-01-02_17:15:40 AdaSensor temperature: 22.3
2016-01-02_17:15:40 AdaSensor temperature: 22.3
2016-01-02_17:20:40 AdaSensor temperature: 22.3
2016-01-02_17:20:40 AdaSensor temperature: 22.3
2016-01-02_17:25:40 AdaSensor temperature: 22.2
2016-01-02_17:25:40 AdaSensor temperature: 22.2
2016-01-02_17:30:40 AdaSensor temperature: 22.2
2016-01-02_17:30:40 AdaSensor temperature: 22.2
2016-01-02_17:35:40 AdaSensor temperature: 22.2
2016-01-02_17:35:40 AdaSensor temperature: 22.2
2016-01-02_17:40:40 AdaSensor temperature: 22.3
2016-01-02_17:40:40 AdaSensor temperature: 22.3
2016-01-02_17:45:40 AdaSensor temperature: 22.5
2016-01-02_17:45:40 AdaSensor temperature: 22.5
2016-01-02_17:50:41 AdaSensor temperature: 22.5
2016-01-02_17:50:41 AdaSensor temperature: 22.5
2016-01-02_17:55:41 AdaSensor temperature: 22.4
2016-01-02_17:55:41 AdaSensor temperature: 22.4
2016-01-02_18:00:41 AdaSensor temperature: 22.4
2016-01-02_18:00:41 AdaSensor temperature: 22.4
2016-01-02_18:05:41 AdaSensor temperature: 22.4
2016-01-02_18:05:41 AdaSensor temperature: 22.4
2016-01-02_18:10:41 AdaSensor temperature: 22.3
2016-01-02_18:10:41 AdaSensor temperature: 22.3
2016-01-02_18:15:41 AdaSensor temperature: 22.5
2016-01-02_18:15:41 AdaSensor temperature: 22.5
2016-01-02_18:20:41 AdaSensor temperature: 22.5
2016-01-02_18:20:41 AdaSensor temperature: 22.5
2016-01-02_18:25:42 AdaSensor temperature: 22.4
2016-01-02_18:25:42 AdaSensor temperature: 22.4
2016-01-02_18:30:42 AdaSensor temperature: 22.5
2016-01-02_18:30:42 AdaSensor temperature: 22.5
2016-01-02_18:35:42 AdaSensor temperature: 62.7
2016-01-02_18:35:42 AdaSensor temperature: 62.7
2016-01-02_18:40:42 AdaSensor temperature: 62.7
2016-01-02_18:40:42 AdaSensor temperature: 62.7
2016-01-02_18:50:32 AdaSensor temperature: 22.4
2016-01-02_18:50:32 AdaSensor temperature: 22.4
2016-01-02_18:55:32 AdaSensor temperature: 22.4
2016-01-02_18:55:32 AdaSensor temperature: 22.4
2016-01-02_19:00:32 AdaSensor temperature: 22.4
2016-01-02_19:00:32 AdaSensor temperature: 22.4
2016-01-02_19:05:33 AdaSensor temperature: 22.3
2016-01-02_19:05:33 AdaSensor temperature: 22.3
2016-01-02_19:10:33 AdaSensor temperature: 22.4
2016-01-02_19:10:33 AdaSensor temperature: 22.4
2016-01-02_19:15:33 AdaSensor temperature: 22.5
2016-01-02_19:15:33 AdaSensor temperature: 22.5
2016-01-02_19:20:33 AdaSensor temperature: 22.6
2016-01-02_19:20:33 AdaSensor temperature: 22.6
2016-01-02_19:25:33 AdaSensor temperature: 22.5
2016-01-02_19:25:33 AdaSensor temperature: 22.5
2016-01-02_19:30:33 AdaSensor temperature: 22.6
2016-01-02_19:30:33 AdaSensor temperature: 22.6
2016-01-02_19:35:33 AdaSensor temperature: 22.6
2016-01-02_19:35:33 AdaSensor temperature: 22.6
2016-01-02_19:40:33 AdaSensor temperature: 22.6
2016-01-02_19:40:33 AdaSensor temperature: 22.6
2016-01-02_19:40:41 AdaSensor temperature: 22.6
2016-01-02_19:40:41 AdaSensor temperature: 22.6
2016-01-02_19:40:43 AdaSensor temperature: 22.6
2016-01-02_19:40:43 AdaSensor temperature: 22.6
2016-01-02_19:40:44 AdaSensor temperature: 22.6
2016-01-02_19:40:44 AdaSensor temperature: 22.6
2016-01-02_19:40:45 AdaSensor temperature: 22.6
2016-01-02_19:40:45 AdaSensor temperature: 22.6
2016-01-02_19:45:34 AdaSensor temperature: 22.6
2016-01-02_19:45:34 AdaSensor temperature: 22.6
2016-01-02_19:50:34 AdaSensor temperature: 22.6
2016-01-02_19:50:34 AdaSensor temperature: 22.6
2016-01-02_19:51:34 AdaSensor temperature: 22.6
2016-01-02_19:51:34 AdaSensor temperature: 22.6
2016-01-02_19:51:35 AdaSensor temperature: 22.7
2016-01-02_19:51:35 AdaSensor temperature: 22.7
2016-01-02_19:51:36 AdaSensor temperature: 22.6
2016-01-02_19:51:36 AdaSensor temperature: 22.6
2016-01-02_19:55:34 AdaSensor temperature: 22.6
2016-01-02_19:55:34 AdaSensor temperature: 22.6
Ich habe auch schon einen anderen Arduino und zwei andere HTU21D versucht.
Bitte um Hilfe
danke
Ich kenne mich mit Perl nicht so gut aus aber kann sein das hier im I2C_SHT21 Mudul etwas nicht passt?
sub I2C_SHT21_GetTemp ($$) {
my ($hash, $rawdata) = @_;
my @raw = split(" ",$rawdata);
my $temperature = $raw[0] << 8 | $raw[1];
$temperature = ( 175.72 * $temperature / 2**16 ) - 46.85;
$temperature = sprintf(
'%.' . AttrVal($hash->{NAME}, 'roundTemperatureDecimal', 1) . 'f',
$temperature
);
readingsSingleUpdate($hash,"temperature", $temperature, 1);
}
sub I2C_SHT21_GetHum ($$) {
my ($hash, $rawdata) = @_;
my @raw = split(" ",$rawdata);
my $name = $hash->{NAME};
my $temperature = ReadingsVal($name,"temperature","0");
my $humidity = $raw[0] << 8 | $raw[1];
$humidity = ( 125 * $humidity / 2**16 ) - 6;
$humidity = sprintf(
'%.' . AttrVal($hash->{NAME}, 'roundHumidityDecimal', 1) . 'f',
$humidity
);
readingsBeginUpdate($hash);
readingsBulkUpdate(
$hash,
'state',
'T: ' . $temperature . ' H: ' . $humidity
);
#readingsBulkUpdate($hash, 'temperature', $temperature);
readingsBulkUpdate($hash, 'humidity', $humidity);
readingsEndUpdate($hash, 1);
}