readingsProxy valueFn seltsames verhalten

Begonnen von Phill, 30 März 2017, 19:41:24

Vorheriges Thema - Nächstes Thema

Phill

Hallo,
ich wollte eigentlich nur aus einer 0 eine 1 machen. Will aber irgendwie nicht klappen.

$VALUE ist immer 1 in den unteren Beispielen.
{  abs($VALUE  - 1) }
Ergebnis: 1
{  abs(($VALUE  - 1)) }
Ergebnis: 1
{ ($VALUE == 1 ) ? "0" : "1" }
Ergebnis: 1
{ ($VALUE == 1 ) ? "A" : "B" }
Ergebnis: A
{ ($VALUE == 1 ) ? "0" : "B" }
Ergebnis: 1

sobald die Funktion eine 0 ergibt steht im STATE immer 1. ???
Genauer gesagt wird das $Value in STATE geschrieben.
{ 0 }
Ergebnis: 1
So wie es aussieht ignoriert fhem die Perlklammer wenn diese null ergibt. Ist das wirklich so gewollt?
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

viegener

Deine Beobachtung ist richtig, und so ist auch die Implementierung. Es steht zwar so nicht genau in der commandref, aber es geht um den Fall, wenn die valueFn "" also einen leeren String zurückliefert. Oder eben eine leere Rückgabe und diese ist eben der Wert 0 in perl.

Vielleicht könnte man die Dokumentation hier anpassen (oder auch das Verhalten ändern), momentan würde ich aber empfehlen auf andere Werte auszuweichen
Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

Phill

#2
Danke für die Antwort.
Ehrlich gesagt verstehe ich nicht warum man die reguläre 0 bei dem Modul verhindern sollte.
Wie wäre es damit? So würden Zahlen generell erlaubt werden.
33_readingsProxy.pm
135c135
<     $value = $value_fn if( $value_fn );
---
>     $value = $value_fn if( $value_fn or $value_fn =~ /\d/ );

Ein leerer String würde weiterhin einen Passthrough generieren. Was durchaus Sinn macht.

Wie du schon gesagt hast. Es muss sowieso was getan werden, entweder an die Doku ran oder besser den Code der Doku anpassen.   ;)

EDIT:
oder so wäre es vielleicht schöner.
135c135
<     $value = $value_fn if( $value_fn );
---
>     $value = $value_fn if( $value_fn =~ /./);
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

viegener

Wie gesagt kurzfristig würde ich an Deiner Stelle auf andere Werte ausweichen. Ob das Modul geändert wird ist ein Frage, die Andre (justme1968) entscheiden muss. Es stellt sich aber auf jeden Fall die Frage, ob sich jemand auf das jetzige Verhalten verlässt oder ob das vielleicht gar bewusst so gemacht wurde, denn Dein Vorschlag wäre ja eine inkompatible Verhaltensänderung.

Kein Support über PM - Anfragen gerne im Forum - Damit auch andere profitieren und helfen können

JoeALLb

wäre das nicht im ELS-> Zweig performanter und würde nur ausgeführt werden, wenn die erste Prüfung fehlschlägt?

Ich denke jedenfalls, dass dies unbedingt geändert werden sollte, da 0 und 1 korrekte Rückgabewerte sein sollten und diese in Plots besser darstellbar sind wie alle alternativen!
FHEM-Server auf IntelAtom+Debian (8.1 Watt), KNX,
RasPi-2 Sonos-FHEM per FHEM2FHEM,RasPi-3 Versuchs-RasPi für WLAN-Tests
Gateways: DuoFern Stick, CUL866 PCA301, CUL HM, HMLan, JeeLink, LaCrosse,VCO2
Synology. Ardurino UNO für 1-Wire Tests, FB7270

justme1968

schau mal ob es mit$value = $value_fn if( $value_fn ne '' );macht was du willst.

gruss
  andre
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

Phill

Zitat von: justme1968 am 31 März 2017, 22:58:46
schau mal ob es mit$value = $value_fn if( $value_fn ne '' );macht was du willst.

Ja funktioniert!
Homebrew 1-Wire / HomeMatic Mix - Cubietruck mit FHEM als Server - Raspberry PI 3 als Informationsanzeige im MagicMirror Stil - Raspberry Pi 1 als Klingelanlage - VDR

Mein Modul: Talk2Fhem - Mein Tipp: https://forum.fhem.de/index.php/topic,82442.0.html

justme1968

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968