FHEM Forum

FHEM => Anfängerfragen => Thema gestartet von: Jessyfoosy am 02 Oktober 2018, 15:59:39

Titel: [Gelöst] Werte gleichsetzen / Umrechnen
Beitrag von: Jessyfoosy am 02 Oktober 2018, 15:59:39
Moin,

leider haben die 3 Seiten Suchergebnisse zum Thema Rechnen nicht zum Ziel geführt. Ich habe einen Drucksensor 0-5V an einem KNX Analogeingang angeschlossen um den Füllstand meiner Zisterne zu messen. Ich lasse mir aufgrund der genaueren Messung den Wert in 2 Byte ausgeben. Somit habe ich einen Min Wert (Zisterne Leer) von 6550 und einen Max Wert von 18200.

Wie bekomme ich jetzt eine schöne Umrechnung in Form von 6550= 0 und 18200= 100 hin ?
Titel: Antw:Werte gleichsetzen / Umrechnen
Beitrag von: Byte09 am 02 Oktober 2018, 16:50:16
Zitat von: Jessyfoosy am 02 Oktober 2018, 15:59:39
Moin,

leider haben die 3 Seiten Suchergebnisse zum Thema Rechnen nicht zum Ziel geführt. Ich habe einen Drucksensor 0-5V an einem KNX Analogeingang angeschlossen um den Füllstand meiner Zisterne zu messen. Ich lasse mir aufgrund der genaueren Messung den Wert in 2 Byte ausgeben. Somit habe ich einen Min Wert (Zisterne Leer) von 6550 und einen Max Wert von 18200.

Wie bekomme ich jetzt eine schöne Umrechnung in Form von 6550= 0 und 18200= 100 hin ?

hatten wir die tage schonmal :
https://forum.fhem.de/index.php/topic,91474.msg839925.html#msg839925 (https://forum.fhem.de/index.php/topic,91474.msg839925.html#msg839925)

my $eingang = <EINGANGSWERT z.b. 6550>
my $emin=6550;
my $emax=18200;
my $amin=0;
my $amax=100;

$eingang = $emin if $eingang < $emin;
$eingang = $emax if $eingang > $emax;

my $y= (($amax-$amin)/($emax-$emin)*($eingang-$emin))+$amin;



gruss B<te09
Titel: Antw:Werte gleichsetzen / Umrechnen
Beitrag von: Jessyfoosy am 02 Oktober 2018, 17:10:00
Auf Skalierung bin ich nicht gekommen  :(

Danke erstmal für die Antwort. Werde das nachher mal versuchen umzusetzen.
Titel: Antw:Werte gleichsetzen / Umrechnen
Beitrag von: Jessyfoosy am 02 Oktober 2018, 20:24:11
Ich verstehe deinen Code nur leider weiß ich als Anfänger nicht wie ich ihn einbinden soll  :(
kannst du mir da eventuell auf die Sprünge helfen ?

Ich habe bis jetzt nur mit DOIF gearbeitet, der Link und eigene Recherche nach Skalierung hat mich auch nicht weiter gebracht.
Titel: Antw:Werte gleichsetzen / Umrechnen
Beitrag von: Byte09 am 03 Oktober 2018, 06:52:12
Zitat von: Jessyfoosy am 02 Oktober 2018, 20:24:11
Ich verstehe deinen Code nur leider weiß ich als Anfänger nicht wie ich ihn einbinden soll  :(
kannst du mir da eventuell auf die Sprünge helfen ?

Ich habe bis jetzt nur mit DOIF gearbeitet, der Link und eigene Recherche nach Skalierung hat mich auch nicht weiter gebracht.

jenachdem wie und wo du ihn anzeigen willst. dü könntest ihn in die 99myutils auslagern , oder als userreading setzen etc .

als userreading (https://wiki.fhem.de/wiki/UserReadings (https://wiki.fhem.de/wiki/UserReadings)):

attr <DEVICE> userReadings mystate {my $eingang = ReadingsVal($name,"state","") ;;;;my $emin=6550;;;;my $emax=18200;;;;my $amin=0;;;;my $amax=100;;;;$eingang = $emin if $eingang < $emin;;;;$eingang = $emax if $eingang > $emax;;;;my $y= (($amax-$amin)/($emax-$emin)*($eingang-$emin))+$amin;;;;$y = int ($y);;;;}

das Userreading skaliert den wert des readings state und setzt diesen als reading mystate.

über das attribut stateformat (https://blog.krannich.de/fhem-stateformat-kurz-erklaert/ (https://blog.krannich.de/fhem-stateformat-kurz-erklaert/)) kannst du es dann noch in die geräteansicht packen:

attr <DEVICE> stateFormat State skaliert: mystate

<DEVICE>  muss gegen den NAmen deines Devices getauscht werden.

gruss Byte09
Titel: Antw:Werte gleichsetzen / Umrechnen
Beitrag von: Jessyfoosy am 03 Oktober 2018, 18:47:00
Hat super funktioniert. Ich danke dir. Habe wieder viel dazu gelernt  :D