merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Anbindung von FS20-Komponenten, ELV-Wetterstationen, EnOcean und DMX an HomeMatic

Moderator: Co-Administratoren

Antworten
Benutzeravatar
Baxxy
Beiträge: 10646
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 596 Mal
Danksagung erhalten: 2180 Mal

merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von Baxxy » 20.02.2022, 12:08

Hallo Uwe,
bin da auf eine merkwürdige Abrundung des übergebenen Temperaturwertes bei Ankopplung des (90) Universal Wrapper Device - Thermostat gestoßen.

Meine Sensoren sind alle per HM-Serial an das jeweilige Wrapper-Device gekoppelt und liefern ausschließlich eine Nachkommastelle, Beispielwert 21.4°C.
Daraus macht das Wrapper-Device dann manchmal 21.39°C.
CUxD-Wrapper_komische Abrundung.JPG
Das kann ich auch reproduzieren indem ich den Wert per Script an das Wrapper-Device übergebe.

Hier mal ein gif wo man das (hoffentlich) erkennen kann. Der Fehler tritt 4x auf, bei Eingabe von 21.2; 21.4; 21.7; 21.9
GIF 20.02.2022 12-02-43.gif

Das merkwürdige ist, das nicht jeder Wert "falsch" im Wrapper-Device landet. Ein Muster konnte ich bisher noch nicht erkennen.

Das ganze kann ich mit CUxD 2.7 auf 2 x86 .ova RaspberryMatics reproduzieren, auf einem Pi3B+ tritt das (nach einem ersten Test) nicht auf.

Edit:
mit CUxD 2.8 konnte ich das Verhalten bisher nicht mehr beobachten.
Zuletzt geändert von Baxxy am 06.04.2022, 09:28, insgesamt 2-mal geändert.

Benutzeravatar
Black
Beiträge: 5463
Registriert: 12.09.2015, 22:31
System: Alternative CCU (auf Basis OCCU)
Wohnort: Wegberg
Hat sich bedankt: 418 Mal
Danksagung erhalten: 1069 Mal
Kontaktdaten:

Re: merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von Black » 20.02.2022, 12:15

Halte ich durchaus für möglich, Crosscompiling für unterschiedliche Zielsysteme (sei es OS oder Prozessorarchitekturen) birgt immer irgendwo die ein oder andere unerwartete Überraschung.

Da müsste Uwe dann mal die EInstellungen checken.

Black
Wenn das Fernsehprogramm immer mehr durch nervende Werbung unterbrochen wird und der Radiomoderator nur noch Müll erzählt, ist es besser, die Zeit für sinnvolle Dinge zu nutzen -
mal aufs Klo zu gehen, ein Bier zu holen oder einfach mal den roten AUS-Knopf zu drücken. Klick - und weg

Script Time Scheduler V1.3
AstroSteuerung über Zeitmodul flexibel mit Offset / spätestens, frühestens
SDV 5.03.01 Das umfassende Entwicklungs und Diagnosetool für Homematik
Selektive Backups - Nützliche Dinge, die die WebUI nicht kann

Intel NUC6 Celeron 16GB mit 512GB SSD unter Proxxmox mit insgesamt 5 VM: 2 x bloatwarebefreiter Raspberrymatik, 2 x IOBroker als Middleware und einer MariaDB zur Archivierung. Verbrauch: 6W

technical contribution against annoying advertising

Benutzeravatar
Baxxy
Beiträge: 10646
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 596 Mal
Danksagung erhalten: 2180 Mal

Re: merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von Baxxy » 21.02.2022, 17:03

Ich habe mir nun mal das volle CUxD-Logging gegönnt...

Code: Alles auswählen

21.02.2022 16:55:46.45 [11655] {59864} RPC incoming connection(8) from 127.0.0.1:46880 fd(11)
21.02.2022 16:55:46.45 [11655] {59864} selectanswer(1)
21.02.2022 16:55:46.45 [11655] {59864} RPC start incoming request(11)
21.02.2022 16:55:46.45 [11655] {59864} process_rpc_request(127.0.0.1)
21.02.2022 16:55:46.45 [11655] {59960} process_bin_request(type:0,len:71,host:127.0.0.1) fd(11)
21.02.2022 16:55:46.45 [11655] {59960} DUMP: 71 bytes - 0
21.02.2022 16:55:46.45 [11655] {59960} 0000 - 00 00 00 08 73 65 74 56 61 6C 75 65 00 00 00 03 ....setValue....
21.02.2022 16:55:46.45 [11655] {59960} 0016 - 00 00 00 03 00 00 00 0C 43 55 58 39 30 30 32 30 ........CUX90020
21.02.2022 16:55:46.45 [11655] {59960} 0032 - 30 31 3A 31 00 00 00 03 00 00 00 0F 53 45 54 5F 01:1........SET_
21.02.2022 16:55:46.45 [11655] {59960} 0048 - 54 45 4D 50 45 52 41 54 55 52 45 00 00 00 04 28 TEMPERATURE....(
21.02.2022 16:55:46.45 [11655] {59960} 0064 - 66 66 66 00 00 00 05                            fff....
21.02.2022 16:55:46.45 [11655] {59960} process_bin_request(setValue)
21.02.2022 16:55:46.45 [11655] {59960} analyze_data(0003) at 20
21.02.2022 16:55:46.45 [11655] {59960} ...[a](1){4} "CUX9002001:1"
21.02.2022 16:55:46.45 [11655] {59960} analyze_request()
21.02.2022 16:55:46.45 [11655] {60040} analyze_data(0003) at 40
21.02.2022 16:55:46.45 [11655] {60040} ...[a](1){4} "SET_TEMPERATURE"
21.02.2022 16:55:46.45 [11655] {60040} analyze_request()
21.02.2022 16:55:46.45 [11655] {60040} analyze_data(0004) at 63
21.02.2022 16:55:46.45 [11655] {60040} ...[a](1){4}  20.200000 [float]
21.02.2022 16:55:46.45 [11655] {60040} analyze_request()
21.02.2022 16:55:46.45 [11655] {60040} Request 3 setValue-S:( "CUX9002001:1" "SET_TEMPERATURE" 20.200000 [f] )
21.02.2022 16:55:46.45 [11655] {60040} handle_requests(127.0.0.1) btype:0 'setValue' 'setValue' num:3
21.02.2022 16:55:46.45 [11655] {60040} setValue 'CUX9002001:1.SET_TEMPERATURE=20.200000'
21.02.2022 16:55:46.45 [11655] {60040} CUX9002001: set_parameter(SET_TEMPERATURE) (20.200000)
21.02.2022 16:55:46.45 [11655] {60040} get_parameter(9002001:1) - TEMPERATURE = '20.19'
21.02.2022 16:55:46.45 [11655] {60040} add_rpc_event(CUX9002001:1.TEMPERATURE = '20.19') type:1
21.02.2022 16:55:46.45 [11655] {60040} add_rpc_event(CUX9002001:1.TEMPERATURE = '20.19') #1
21.02.2022 16:55:46.45 [11655] {60040} get_parameter(9002001:1) - TEMP_MIN_24H = '20.19'
21.02.2022 16:55:46.45 [11655] {60040} add_rpc_event(CUX9002001:1.TEMP_MIN_24H = '20.19') type:1
21.02.2022 16:55:46.45 [11655] {60104} add_rpc_event(CUX9002001:1.TEMP_MIN_24H = '20.19') #2
21.02.2022 16:55:46.45 [11655] {60104} get_parameter(9002001:1) - TEMP_MAX_24H = '20.19'
21.02.2022 16:55:46.45 [11655] {60104} add_rpc_event(CUX9002001:1.TEMP_MAX_24H = '20.19') type:1
21.02.2022 16:55:46.45 [11655] {60200} add_rpc_event(CUX9002001:1.TEMP_MAX_24H = '20.19') #3
21.02.2022 16:55:46.45 [11655] {60200} send_rpc_events()
21.02.2022 16:55:46.45 [11655] {60200} send_rpc_events(#3)
21.02.2022 16:55:46.45 [11655] {60200} DUMP: 390 bytes - 10
So wie ich das sehe kommt der Wert korrekt beim Wrapper-Device an, wird dann aber falsch zurückgegeben.


@Uwe... wenn du da was spezielles zwecks Analysen brauchst, dann sag bescheid.

Benutzeravatar
uwe111
Beiträge: 4806
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von uwe111 » 22.02.2022, 10:00

Baxxy hat geschrieben:
21.02.2022, 17:03
@Uwe... wenn du da was spezielles zwecks Analysen brauchst, dann sag bescheid.
Danke, aber sowas hatte ich schon vermutet. Ich muss mir das zuerst mal genau ansehen.
Black hat geschrieben:
20.02.2022, 12:15
Da müsste Uwe dann mal die EInstellungen checken.
Ich habe da einen Verdacht...

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Benutzeravatar
uwe111
Beiträge: 4806
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von uwe111 » 23.02.2022, 21:17

Hallo Baxxy,

kannst Du es bitte mal mit der CUxD Testversion 2.7.3 testen?
http://cuxd.de/download/

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Benutzeravatar
Baxxy
Beiträge: 10646
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 596 Mal
Danksagung erhalten: 2180 Mal

Re: merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von Baxxy » 23.02.2022, 22:43

Hallo Uwe,
uwe111 hat geschrieben:
23.02.2022, 21:17
CUxD Testversion 2.7.3
Sieht nach ersten Tests sehr gut aus.
Werde das noch eine Zeit beobachten und wenn der Fehler nicht mehr auftritt den Thread als erledigt markieren.

Grüße, Baxxy

Benutzeravatar
Baxxy
Beiträge: 10646
Registriert: 18.12.2018, 15:45
System: Alternative CCU (auf Basis OCCU)
Hat sich bedankt: 596 Mal
Danksagung erhalten: 2180 Mal

Re: [erledigt] merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von Baxxy » 06.04.2022, 09:27

Hallo Uwe,
ich muss das Thema nochmal reaktivieren.

Da ich einen Außensensor (HmIP-STHO) an das Wrapper-Device gekoppelt habe und es kürzlich des nächtens unter Null war ist mir aufgefallen das auch negative Werte abgerundet werden.

Code: Alles auswählen

-0.1 > -0.09
-0.2 > -0.19
-0.3 > -0.29
usw.

Getestet habe ich jeweils mit der CUxD-Testversion (2.8.2) auf CCU3 (3.63.8 ), RM .ova sowie RM auf Pi3B+.
Das Problem tritt also dieses mal unabhängig von der verwendeten CUxD Architektur (arm vs X86) auf.

Kleines Testscript:

Code: Alles auswählen

object set_tp = dom.GetObject('CUxD.CUX9002001:1.SET_TEMPERATURE');
WriteLine("Start");
set_tp.State(0.00);
set_tp.State(-0.10, 3000);
set_tp.State(-0.20, 6000);
set_tp.State(-0.30, 9000);
set_tp.State(-0.40, 12000);
set_tp.State(-0.50, 15000);
set_tp.State(0.00, 18000); 
Und ein "Videobeweis":
GIF 06.04.2022 09-13-38.gif
Grüße, Baxxy

Benutzeravatar
uwe111
Beiträge: 4806
Registriert: 26.02.2011, 22:22
Hat sich bedankt: 3 Mal
Danksagung erhalten: 239 Mal
Kontaktdaten:

Re: merkwürdige Abrundung bei (90) Universal Wrapper Device - Thermostat auf x86 Systemen

Beitrag von uwe111 » 06.04.2022, 19:57

Hallo Baxxy,

ja, ein typischer Rundungsfehler bei negativen Werten.
Ich werde es korrigieren und Dir dann eine neue Testversion bereitstellen.

Viele Grüße

Uwe
Alle sagten: Das geht nicht. Dann kam einer, der wußte das nicht und hat's einfach gemacht.
SPENDEN :wink: Download: CUxD 2.11, SSH KeyDir

Antworten

Zurück zu „CUxD“