Grundsätzliches zum Umgang mit DPT-Varianten

Begonnen von wolliballa73, 30 September 2020, 18:55:17

Vorheriges Thema - Nächstes Thema

wolliballa73

Hallo zusammen,

mich würde mal interessieren, wie ihr das mit den DPT-Untervarianten handhabt.
Wenn ich z.B. einen Temperatursensor habe, kann ich den als dpt9.001 definieren und bekomme dann den Wert als nn.nn °C angezeigt. Sieht zwar nett aus, kann aber nicht direkt für numerische Vergleiche, Berechnungen etc. z.B. in DOIF oder notify, ... verwendet werden da es sich bei 1.25 °C ja um einen String handelt:
defmod di_Frostalarm DOIF ([Temp_aussen:tempNord] <2) (set status_Frostalarm true)
Alternative: ich verwende dpt9 und erhalte nur den numerischen Wert 1.25 . Damit kann ich schön rechnen/vergleichen, muss ihn aber für die Anzeige noch um °C erweitern.

Also muss ich entweder bei der Anzeige die Einheiten hinzufügen oder bei Berechnungen die Einheiten wegfiltern - wie löst ihr das elegant?
CU,
Matze

JoeALLb

Doif hat ein flag um dir Zahl als solche zu extrahieren. Ziemlich einfach damit.
Das Dilemma bleibt.
Es gab mal ein Projekt zum separieren der Einheit, aber das ist gestorben.

Sg Joe
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

Porsti

Hi,

du kannst nur den numerischen Teil für deine zwecke nutzen. Du kannst es so ganz einfach machen: ([Temp_aussen:tempNord:d] <2)
Ich habe nur in deinem Beispiel von oben das ":d" ergänzt. Hatte a´das selbe Problem.

Gruß
Porsti
____________________________________
fhem 6.2  auf Raspberry 3b
Homematic HM-CC-RT-DN / HM-TC-IT-WM-W-EU / HM-SEC-SCo / HM-LC-SW1-PL2
SIGNALduino, KNX (Merten, MDT, Siemens, ABB)

wolliballa73

Hallo ihr beiden,

danke für die Antwort - klingt vielversprechend. Leider tut es in meinem Fall noch nicht so, wie es soll.
Im DOIF kriege ich eine Warnung:
warning
condition c01: Argument "" isn't numeric in numeric lt (<)


Die Definition des DOIF:
defmod di_Frostalarm DOIF ([Temp_aussen:tempNord:d] < 2) (set status_Frostalarm true) DOELSE (set status_Frostalarm false)

und hier das KNX-Device:
defmod Temp_aussen KNX 4/1/91:dpt9.001:tempNord 6/4/1:dpt9.001:tempHuette

Ich hab mir noch ein paar Threads zu der Warnmeldung durchgelesen, kann aber beim besten Willen keinen Fehler feststellen  :-[




CU,
Matze

amenomade

Ein "list" von Temp_aussen beim Problem wäre besser, um die Readings zu sehen. Vermutlich kommt irgendwann gar keine Nummer im Reading.
Pi 3B, Alexa, CUL868+Selbstbau 1/2λ-Dipol-Antenne, USB Optolink / Vitotronic, Debmatic und HM / HmIP Komponenten, Rademacher Duofern Jalousien, Fritz!Dect Thermostaten, Proteus

wolliballa73

Danke - das war's!
Die Meldung kam, wenn ich beim Device "checkall" ausgeführt hab. Allerdings ließ sich die Temperatur nicht auslesen, sondern wurde nur zyklisch gesendet.
CU,
Matze