OWAD rechnet nicht mit Faktor

Begonnen von UweH, 18 Januar 2013, 16:18:08

Vorheriges Thema - Nächstes Thema

UweH

Moin,

auf meinem Test-RPi läuft OWAD in Verbindung mit einem DS2450.
OWAD ignoriert den eingegebenen Faktor, sowohl bei Kanal A als auch Kanal C.
OWAD und OWX sind die neuesten Versionen. OWAD gibt mir lediglich die gemessenen Spannungen aus.

Bei get 1wire devices werden die angeschlossenen Devices erkannt, ich bekomme aber folgende Meldungen:
Use of uninitialzed value in substr at ./FHEM/00_OWX.pm line 687
Use of uninitialzed value in concatenation (.) or string at ./FHEM/21_OWAD.pm line 344

Auf meinem "Produktivserver" funktioniert das problemlos...nur der Raspi wieder. Kennt das noch jemand oder bin ich wieder der Sonderfall? ;-)


(siehe Anhang / see attachement)


Danke und Gruß
Uwe

Prof. Dr. Peter Henning

OWAD ist gerade heftig überarbeitet worden -  ich ersetze Factor/Offset durch Function und habe dabei offenbar einen Fehler eingebaut.

Du kannst diesen umgehen, indem Du

- entweder zusätzlich zum AFactor einen AOffset 0.0 definierst (der Fehler besteht darin, dass beide Werte vorhanden sein müssen... war keine gute Idee)
- oder stattdessen gleich verwendest

AFunction (30.675*VA)

Andere Kanäle entsprechend

Die Verwendung von VFunction hat den Vorteil, dass Du in die Berechnung der Feuchte auch andere Kanäle mit einbeziehen kannst (z.B. VD für Kanal D) - und natürlich wird AFunction als perl-Expression ausgewertet, kann also auch Aufrufe beliebiger perl-Funktionen beinhalten. Damit z.B. auch Temperaturablesungen von anderen Sensoren.

LG

pah

UweH

Super, Danke
Mit dem Pseudo-Offset funktionierts. Die falschen Anschuldigungen gegen den Raspi werden hiermit fallengelassen ;-)
Da ich auf meinem FHEM-Server einen Offset eingegeben habe, fiel es nie auf.

Zitat von: Prof. Dr. Peter Henning schrieb am Sa, 19 Januar 2013 07:50kann also auch Aufrufe beliebiger perl-Funktionen beinhalten. Damit z.B. auch Temperaturablesungen von anderen Sensoren.
Der Hinweis hat meine Erinnerung an einen anderen Beitrag von Dir wieder ausgegraben. Somit habe ich den Offset wieder verworfen und jetzt diese Formel zur Temperaturkompensation eingegeben

(161.29 * VA / VD - 25.8065)/(1.0546 - 0.00216 * ReadingsVal("Temp.AZ","temperature",0))
und es funktioniert :-)

Der Tag ist gerettet ;-)

Prof. Dr. Peter Henning

Scharf ! So hatte ich es mir vorgestellt - denn mit den einzelnen A/D Eingang des DS2438 bin ich nicht vollständig happy...

Einen Wermutstropen gibt es: Mit Offset/Factor ließen sich die Limits für die Alarmierung problemlos bei z.B. den Feuchtewerten einstellen - eben weil eine lineare Funktion trivial zu invertieren ist. Mit dem Function-Attribut geht das natürlich nicht, da sind die Grenzwerte natürlich auf die tatsächlich gemessene Spannung bezogen.

Allerdings habe ich diese Alarmierung sowieso komplett überarbeitet, Release folgt in den nächsten Tagen.

LG

pah