In dem Modul 52_I2C_EZODO.pm muss sich ein Fehler befinden den ich bzw. der Modulentwickler nicht lösen kann.
Zudem wird das Sauerstoffsaettigung Reading nicht ausgeführt.
Im FHEM LOG steht folgender Eintrag.
2017.05.03 20:20:49 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/52_I2C_EZODO.pm line 222.
Die Schreibweise in der Zeile 222 finde ich ein bischen eigen und ich vermute dass hier der Fehler besteht
..... . 'mg/l SAT: ' . $split1[1] . '%')
bzw. in diesem Bereich.
sub I2C_EZODO_I2CRec ($$) {
my ($hash, $clientmsg) = @_;
my $name = $hash->{NAME};
my $phash = $hash->{IODev};
my $pname = $phash->{NAME};
while ( my ( $k, $v ) = each %$clientmsg ) { #erzeugen von Internals fuer alle Keys in $clientmsg die mit dem physical Namen beginnen
$hash->{$k} = $v if $k =~ /^$pname/ ;
}
if ( $clientmsg->{direction} && $clientmsg->{$pname . "_SENDSTAT"} && $clientmsg->{$pname . "_SENDSTAT"} eq "Ok" ) {
if ( $clientmsg->{direction} eq "i2cread" && defined($clientmsg->{received}) ) {
Log3 $hash, 5, "empfangen: $clientmsg->{received}";
my $raw = $clientmsg->{received};
my @ascii = split(" ", $raw);
my $erster = shift(@ascii);
my $new = pack("C*", @ascii);
$new =~ s/\0+$//;
my @split1 = split(",", $new);
readingsBeginUpdate($hash);
readingsBulkUpdate($hash,'state','S: ' . $erster . ' DO: ' . $split1[0] . 'mg/l SAT: ' . $split1[1] . '%');
readingsBulkUpdate($hash, 'Sauerstoffgehalt', $split1[0]);
readingsBulkUpdate($hash, 'Sauerstoffsaettigung', $split1[1]);
readingsBulkUpdate($hash, 'Status', $erster);
readingsEndUpdate($hash, 1);
}
}
}
Da meine Programmierkenntnisse hierfür nicht ausreichend sind, hoffe ich dass mir jemand dabei helfen kann.
Kann uns wirklich keiner bei diesem Perl Fehler behilflich sein.
danieljo und ich stehen bei der Auswertung des Reading Sauerstoffsaettigung leider an.