Probleme mit Datenpunkt 9.024, falscher Wert erscheint am Ziel.

Begonnen von jailbreaker07, 23 Januar 2022, 20:25:26

Vorheriges Thema - Nächstes Thema

jailbreaker07

Hallo,
ich haben mit KNX Tul ein seltsames Problem. Sende ich über Fhem folgendes an den KNX Bus: "set Bezug_JCT_kwh_test steuern 99.5" erscheint wie zu erwarten bei ETS 99,5.
Sende ich aber  "999999.5", erscheint als Wert 670433,3 kW. Also umso höher der Wert um so höher die Abweichung. Verwendet wird hier der Datenpunkt 9.024.
Verwende ich jedoch den Datenpunkt 13.013, also ohne komma Zahl dann erscheinen bei gesendet 999999 auch 999999.

Hier noch das list von den Device:


Internals:
   CFGFN     
   DEF        8/2/0:dpt9.024:steuern
   DEVNAME    Bezug_JCT_kwh_test
   FIRSTGADNAME steuern
   FUUID      61ed7dee-f33f-7bd1-cadd-c26b08b713d3ce29
   GETSTRING  steuern:noArg
   IODev      KNX
   KNX_MSGCNT 19
   KNX_RAWMSG C00007w082007ffe
   KNX_TIME   2022-01-23 20:21:54
   LASTInputDev KNX
   MSGCNT     19
   NAME       Bezug_JCT_kwh_test
   NR         213
   SETSTRING  steuern:slider,-670760,13415,670760
   STATE      670433.28 kW
   TYPE       KNX
   model      dpt9
   GADDETAILS:
     steuern:
       CODE       08200
       GROUP      8/2/0
       MODEL      dpt9.024
       NO         1
       OPTION     
       RDNAMEGET  steuern-get
       RDNAMEPUT  steuern-put
       RDNAMESET  steuern-set
       SETLIST    :slider,-670760,13415,670760
   GADTABLE:
     08200      steuern
   READINGS:
     2022-01-23 20:21:00   IODev           KNX
     2022-01-23 20:21:54   last-sender     0.0.7
     2022-01-23 20:21:54   state           670433.28 kW
     2022-01-23 20:21:54   steuern-get     670433.28 kW
     2022-01-23 20:21:54   steuern-set     999999.5 kW
Attributes:
   comment    set Bezug_JCT_kwh_test steuern
   room       KNX


Gruß

Thorsten

erwin

Hi,
ZitatSende ich aber  "999999.5", erscheint als Wert 670433,3 kW.
Das passiert deswegen, weil 999999 ausserhalb des erlaubten Zahlenbereichs ist - lt. specs:

dpt   | Name      | Range                     | unit | resolution |
9.024 | DPT_Power |  -670 760 kW ... 670 760 kW | kW  | 0,01 kW

l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

jailbreaker07

Also muss ich für größere Zahlen einen anderen Datenpunkt wählen?
Benötige das für den Zählerstand von Stromzähler....

Gruß

Thorsten

erwin

ZitatAlso muss ich für größere Zahlen einen anderen Datenpunkt wählen?
Ja !
der dpt9.024 ist mit kW spezifiziert, was du brauchst sind aber kWh !
Der richtige dpt muss in den specs vom Zähler zu finden sein.
Falls du die nicht hast, würde ich mit dem ETS-Monitor "zuschauen" und mögliche dpt's probieren, bis dass Ergebnis mit dem Wert am Zähler übereinstimmt.
Meine Vermutung: dpt13
l.g. erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

jailbreaker07

Hallo,
Dpt 13 hat leider keine Komma stellen... muss ich nachher mal in Ruhe schauen....

erwin

beim dpt13 gibts die variante Wh (dpt13.010) oder kWh (dpt13.013).
Allerdings: im Modul wird beides völlig gleich behandelt, nichts umgerechnet/skaliert - es kommt nur darauf an, was der Zähler sendet!
l.g.erwin
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

jailbreaker07

Hallo,

Bei einem Wert von 19435.52 auch das Problem,
Müsste ja eigentlich gehen...

erwin

das ist ein grundsätzliches Problem der dpt9 encodierung (in 2 Bytes).
Da entstehen Ungenauigkeiten.... ( Im Prinzip wird da gerundet...allerdings nicht mathematisch im klassischen Sinn)
in 16bits = 2Bytes kann man maximal 65536 darstellen, wenn man mehr will (in unserem Fall +-670000...) muss man irgendwie die Genauigkeit reduzieren.
Darum ist dieser dpt für einen Zähler absolut ungeeignet.

Versuch mal folgendes: Vom ETS-Monitor mit dpt9.024 den
1) Wert 19435,52 schicken -> was kommt in FHEM an ?
2) Wert 19435 schicken -> was kommt in FHEM an ?
Und anschließend von FHEM -> ETS-Monitor
1) Wert 19435.52 schicken -> was kommt am ETS-Monitor an?
2) Wert 19435 schicken -> was kommt am ETS-Monitor an?
Wenn die "Fehler" in beiden Richtungen gleich sind, liegts an der codierung......

PS: Ich kenne keinen KNX-Stromzähler, der Komma Zahlen ausgibt. Die meisten senden Wh als Integer.
FHEM aktuell auf RaspberryPI Mdl 1-4
Maintainer: 00_KNXIO.pm 10_KNX.pm
User: CUNO2 (868 SLOWRF) - HMS100xx, FS20, FHT, 1-Wire  - 2401(iButton), 18x20, 2406, 2413 (AVR), 2450,..,MQTT2, KNX, SONOFF, mySENSORS,....
Hardware:  Busware ROT, Weinzierl IP731, 1-Wire GW,...

jailbreaker07

Zitat1) Wert 19435,52 schicken -> was kommt in FHEM an ?
19435,52

Zitat2) Wert 19435 schicken -> was kommt in FHEM an ?
19435,52 (In ETS wird dieser nach den abschicken auch angezeigt)

ZitatUnd anschließend von FHEM -> ETS-Monitor
19425,28

Zitat1) Wert 19435.52 schicken -> was kommt am ETS-Monitor an?
19435,52

Zitat2) Wert 19435 schicken -> was kommt am ETS-Monitor an?
19425,28

ZitatPS: Ich kenne keinen KNX-Stromzähler, der Komma Zahlen ausgibt. Die meisten senden Wh als Integer.

Ich lese über FHEM mit dem OBIS Modul den Zähler über die optische Schnitstelle aus. Den Wert gebe ich in einen neuen Reading als kwh an....

jailbreaker07

Ich werde jetzt einfach den Wert in Watt nehmen, und später den Wert umwandeln.....
Dann reicht auch der Datenpunkt 13.013 ohne Komma Stelle....