Wertumwandlung Fließkomma auf Ganzzahl setReading

Begonnen von amthenia, 24 September 2017, 08:15:59

Vorheriges Thema - Nächstes Thema

amthenia

Hi,

Ich muss einen Temperaturwert vom Bus lesen und ihn wieder auf den Bus schreiben aber ohne Nachkommastellen.
Die Temperatur kommt auf KNX_1400007 raus (KNX_1400007 KNX 14/0/7:dpt9.001)

Kann mir jemand sagen wie ich das machen müsste? Danke!

UPDATE: https://forum.fhem.de/index.php/topic,77063.msg692897.html#msg692897

amthenia

#1
define Feuchtigkeit_H2_EG KNX 99/9/9:dpt7.001
attr Feuchtigkeit_H2_EG IODev KNXROUTER1
attr Feuchtigkeit_H2_EG room Test
define Feuchtigkeit_H2_EG_notify notify KNX:KNX_1401001.F set Feuchtigkeit_H2_EG value $EVTPART1


Das wäre meine Idee gewesen.

amthenia

#2
define Feuchtigkeit_H2_EG KNX 99/9/9:dpt7.001
attr Feuchtigkeit_H2_EG IODev KNXROUTER1
attr Feuchtigkeit_H2_EG room Test
define Feuchtigkeit_H2_EG_notify notify KNX_1401001:f-get:.* set Feuchtigkeit_H2_EG value KNX_1401001:f-get:.*


Das geht schon fast, aber wie bekomme ich hin das er den Value als Wert nimmt ? Momentan kommt da bei mir immer 14010 an.

Frank_Huber

Schau mal in den event monitor. Denke du musst "nur" einen anderen evtpart nehmen.
Oder anstatt evtpart mit perl ReadingsNum arbeiten.

Gesendet von meinem S3_32 mit Tapatalk


amthenia

#4
Ich caste es jetzt vorher noch auf int, nix geht
KNX_1401001:f-get:.* set Feuchtigkeit_H2_EG value {int(fhem("ReadingsVal('KNX_1401001','f-get','0')"));}

MadMax-FHEM

Statt ReadingsVal (wie bereits vorgeschlagen) ReadingsNum nehmen und das "int-Zeugs" weg...

EDIT: also praktisch mal versuchen was geraten wird oder weiterhin selber rumprobieren (das geht auch ohne Forum)...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amthenia

#6
KNX_1401001:f-get:.* set Feuchtigkeit_H2_EG value ReadingsNum('KNX_1401001','f-get',0, 0)
Was ist denn überhaupt richtig, brauch ich {} ?

Ihr müsst euch vorstellen, ich muss das Gerät immer anhauchen damit sich der Wert ändert !

MadMax-FHEM

ReadingsNum ist eine Perlfunktion (in/aus/von fhem), also wohl ja...

Lass mal das value weg und mach die geschweiften Klammern hin...

Grad nur Handy, daher kurze Antwort...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

MadMax-FHEM

Das Notify triggert aber!?

Also die Regex passt!?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amthenia

KNX_1401001:f-get:.* set Feuchtigkeit_H2_EG value {2} das hier wenn ich ausführe dann kommt korrekt 2 raus.

amthenia

Interessant ist doch auch das mein Gerät 1401001 heisst und jeweils der wert auf 14010 gesetzt wird.

MadMax-FHEM

#11
ReadingsNum wie auch ReadingsVal hat nur 3 Parameter:

Gerät, Reading, Defaultwert

Gerät: von welchem Gerät
Reading: soll dieses Reading/Wert abgefragt werden
Defaultwert: wird zurück gegeben, wenn der Wert nicht gelesen werden konnte

EDIT: mal nachlesen wie das geht. Das Reading "f-get" existiert und enthält den gewünschten Wert?!

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

amthenia

#12
Ich habe gerade einen Tipp bekommen, ich soll es oben in FHEM Befehlszeile eingeben:
{int(ReadingsNum("KNX_1401001","f-get",0))}
bringt mir einen super Wert. z.B. 42

geb ich {42}
kommt auch 42 raus.

Aber in meinem set value geht es nicht

Log sagt:
2017.09.24 15:44:13 3 : check value: input-value {int(ReadingsNum("KNX_1401001"."f-get".0))} was casted to 14010

amthenia

Ich habe mal das dpt auf 16 gestellt und geschaut was er eigentlich ausspuckt.
Ab ReadingsNum, nimmt er ab Num es wörtlich, also interpretiert (?) den Code.
Man darf da nur ne Variable übergeben. Oder?

MadMax-FHEM

Warun machst du nicht was dir geraten wird...
...wenn du einfach nur rum probieren willst: bitte!

Du musst aber dann auch nicht alles hier dokumentieren...

Sorry, dass ich grad nur Smartphone hab...

Einfach nach dem set Gerätename {ReadingsNum("GerätenameWoDuLesenWillst", "ReadingnameWasDuLesenWillst", Defaultwert)}

Bei ReadingsNum kommt ja bereits eine Zahl...

Was kommt denn, wenn du nur:

{ReadingsNum("GerätenameWoDuLesenWillst", "ReadingnameWasDuLesenWillst", Defaultwert)}

In die fhem-Web-Zeile eingibst?

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)