Fehlende Datenpunkte mit CUxD-Highcharts

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

Moderator: Co-Administratoren

Bembi
Beiträge: 381
Registriert: 04.02.2015, 02:15
System: CCU und Access Point
Wohnort: Bochum
Hat sich bedankt: 14 Mal
Danksagung erhalten: 50 Mal

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von Bembi » 25.08.2024, 17:55

forstner-m hat geschrieben:
20.08.2024, 18:29
Was mir aufgefallen ist, dass dies bei Sensoren passiert, welche Datenpunkte gleichzeitig senden.
Du benutzt $src$ in Deinem Script und schreibst den Datenpunkt mittels $src$ wieder weg. Folglich schreibst Du nur den Wert weg, welcher als Trigger das Script ausgelöst.

Ich habe das so gemacht, dass ich aus der $src$ Variable das Gerät heraus filtere und anschließend alle interessanten Werte nochmals auslese und mit LOGIT wegschreibe.
1 x CCU3 mit aktuell 37 Geräten und 343 Kanälen (HM, HmIP, HmIPW)
1 x CCU3 mit aktuell 65 Geräten und 605 Kanälen (HM, HmIP, HmIPW)
2 x CCU2 und einen Schrank voll mit Restbeständen, 13,5 KWp auf dem Dach mit Solaredge WR, Waterkotte WP über ModBus

forstner-m
Beiträge: 20
Registriert: 27.12.2023, 14:21
System: CCU
Danksagung erhalten: 1 Mal

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von forstner-m » 25.08.2024, 18:17

Kannst du vielleicht ein Beispiel hier einstellen. Danke!

Bembi
Beiträge: 381
Registriert: 04.02.2015, 02:15
System: CCU und Access Point
Wohnort: Bochum
Hat sich bedankt: 14 Mal
Danksagung erhalten: 50 Mal

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von Bembi » 25.08.2024, 18:26

forstner-m hat geschrieben:
25.08.2024, 18:17
Kannst du vielleicht ein Beispiel hier einstellen. Danke!

Code: Alles auswählen

!* 14.05.2024 ***** TH Status Write BiCos ************************             

var source;
var channel;
var logch;

real HAct;
real TAct;

string chnName;
string dstName;
string strRes;

source = dom.GetObject("$src$");

   channel = dom.GetObject(source.Channel());
   chnName = channel.Name().Substr(3,4);
   dstName = "TM " # chnName;

   TAct = channel.DPByHssDP("TEMPERATURE").Value();
   HAct = channel.DPByHssDP("HUMIDITY").Value();

   dom.GetObject(dstName # " Temp").State(TAct);
   dom.GetObject(dstName # " Humi").State(HAct);


   dstName = "CUX TM " # chnName;	

   logch = dom.GetObject(dstName # " Temp");	
   strRes = dstName # " Temp;" # TAct.ToString(1);
   logch.DPByHssDP("LOGIT").State(strRes);

   strRes = dstName # " Humi;" # HAct.ToString(1);
   logch.DPByHssDP("LOGIT").State(strRes);

1 x CCU3 mit aktuell 37 Geräten und 343 Kanälen (HM, HmIP, HmIPW)
1 x CCU3 mit aktuell 65 Geräten und 605 Kanälen (HM, HmIP, HmIPW)
2 x CCU2 und einen Schrank voll mit Restbeständen, 13,5 KWp auf dem Dach mit Solaredge WR, Waterkotte WP über ModBus

forstner-m
Beiträge: 20
Registriert: 27.12.2023, 14:21
System: CCU
Danksagung erhalten: 1 Mal

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von forstner-m » 26.08.2024, 19:20

Hallo Bembi,

mit deinem Programm kann man Highcharts füttern. Vielen Dank!

Mein Programm mit der Zeitverzögerung läuft auch. Warum man aber eine Zeitverzögerung braucht, ist mir unklar.

Schöne Grüße
Michael

Bembi
Beiträge: 381
Registriert: 04.02.2015, 02:15
System: CCU und Access Point
Wohnort: Bochum
Hat sich bedankt: 14 Mal
Danksagung erhalten: 50 Mal

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von Bembi » 27.08.2024, 00:42

forstner-m hat geschrieben:
26.08.2024, 19:20
Warum man aber eine Zeitverzögerung braucht, ist mir unklar.
Na wenn in einem Datenpaket zwei Werte kommen, ist nur einer dieser beiden Werte der Trigger. Und Dein Script nimmt den Trigger und schreibt diesen Wert weg, der zweite Wert geht verloren.

Mit der Zeitverzögerung hast Du zwei Trigger. Dein Programm schreibt also für jeden Trigger den auslösenden Wert weg.
1 x CCU3 mit aktuell 37 Geräten und 343 Kanälen (HM, HmIP, HmIPW)
1 x CCU3 mit aktuell 65 Geräten und 605 Kanälen (HM, HmIP, HmIPW)
2 x CCU2 und einen Schrank voll mit Restbeständen, 13,5 KWp auf dem Dach mit Solaredge WR, Waterkotte WP über ModBus

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

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von Baxxy » 28.08.2024, 18:51

Bembi hat geschrieben:
27.08.2024, 00:42
Na wenn in einem Datenpaket zwei Werte kommen, ist nur einer dieser beiden Werte der Trigger. Und Dein Script nimmt den Trigger und schreibt diesen Wert weg, der zweite Wert geht verloren.
Die These hatte ich ja auch schon aufgestellt.
Die hinkt aber etwas denn nach meinen Tests wird korrekterweise 2x getriggert und jeweils beide Trigger (Temp/Hum) entsprechen dann $src$ und werden hier auf dem Testsystem bisher "Aussetzerfrei" ins SYSLOG geloggt.

Ich konnte also weiterhin nicht bestimmen wer/wie/was/wo verschluckt.

Bembi
Beiträge: 381
Registriert: 04.02.2015, 02:15
System: CCU und Access Point
Wohnort: Bochum
Hat sich bedankt: 14 Mal
Danksagung erhalten: 50 Mal

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von Bembi » 28.08.2024, 23:06

Baxxy hat geschrieben:
28.08.2024, 18:51
Die These hatte ich ja auch schon aufgestellt.
Die hinkt aber etwas denn nach meinen Tests wird korrekterweise 2x getriggert und jeweils beide Trigger (Temp/Hum) entsprechen dann $src$ und werden hier auf dem Testsystem bisher "Aussetzerfrei" ins SYSLOG geloggt.

Ich konnte also weiterhin nicht bestimmen wer/wie/was/wo verschluckt.
Also ich hatte meine Scripte nach meiner Erinnerung aus einem ähnlichen Grund eben so wie beschrieben umgebaut. Ist aber lange her. Und weil es funktionierte auch nicht mehr verändert. Deswegen habe ich auch nie weiter geforscht, ob das gerätespezifisch war.

Wenn allerdings 2 Mal nahezu zeitgleich getriggert wird, wäre noch die Frage offen, wie sich die Variable $src$ verhält. In Deinem Script wird sie zweimal benutzt. Es wäre demnach mal einen Test wert, die Variable $src$ erst einmal an eine Scriptvariable zu übergeben und dann mit der Scriptvariable weiterzuarbeiten. Und dann sehen, ob der Effekt immer noch auftritt.

Die Variable $src$ sollte nach meinem Gefühl Script spezifisch sein. Wenn die CCU die Variable aber global behandelt, könnte sie während des Ablaufs des Scripts quasi vom zweiten Trigger überschrieben werden.

Ich hab das nie geprüft, bei mir ist das eher eine Angewohnheit aus anderen Programmiersprachen, wo es explizit eine Variablenübergabe "by Value" oder "by Referenz" gibt, in andern Worten, ob ein Wert oder ein Pointer übergeben wird. Übergibt man die Variable aber sofort an eine Script-spezifische Variable, dann erzwingt man damit quasi eine Übergabe eines Wertes, und die CCU kann anschließend damit machen, was sie will.
1 x CCU3 mit aktuell 37 Geräten und 343 Kanälen (HM, HmIP, HmIPW)
1 x CCU3 mit aktuell 65 Geräten und 605 Kanälen (HM, HmIP, HmIPW)
2 x CCU2 und einen Schrank voll mit Restbeständen, 13,5 KWp auf dem Dach mit Solaredge WR, Waterkotte WP über ModBus

forstner-m
Beiträge: 20
Registriert: 27.12.2023, 14:21
System: CCU
Danksagung erhalten: 1 Mal

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von forstner-m » 29.08.2024, 18:32

Folgendes kann mit dem Thema was zu tun haben oder nicht:
Wenn man in einem Programm im Bereich Aktivität zwei Befehlen an CUxD schickt, wird nur einer ausgeführt. Sobald man bei einem Befehl eine Verzögerung einstellt, funktionieren beide. Bei den Befehlen handelt es sich um http-Kommandos an unterschiedliche Geräte. Daher war meine Vermutung, dass CUxD gleichzeitige Befehle nicht verarbeiten kann.

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

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von Baxxy » 29.08.2024, 18:45

forstner-m hat geschrieben:
29.08.2024, 18:32
kann mit dem Thema was zu tun haben oder nicht
Das "Problem" ist ja das die Logikschicht der Zentrale über ihre Schnittstellen diese "Befehle" an CUxD übergibt.
Es kann also "bei der Sendung der Befehle" an CUxD hängen oder aber beim Empfang der Sendungen durch CUxD.

Erschwerend kommt hinzu das das Verhalten schwer zu reproduzieren ist (mal geht's, mal nicht).
Ich hab mir das mal auf meinem Testzettel notiert, mal gucken ob ich, wenn die Tage wieder kürzer werden, was rausfinde.

Und, sorry Uwe, aber das muss jetzt mal sein...
CUxD sollte eigentlich auch mit der Zeit gehen und diesen Umweg über WebUI-Programme (POSTIT/LOGIT) abschaffen und direkt als XMLRPC-Klient an den Schnittstellen lauschen.
Für den Anfang würde ja eine reiner "Listener" reichen der die Events einfach mitliest, parst und an den entsprechenden Stellen nutzt.
Ich glaube wir hatten "vor Jahren" schon mal drüber geredet. :wink:

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

Re: Fehlende Datenpunkte mit CUxD-Highcharts

Beitrag von uwe111 » 29.08.2024, 20:42

Baxxy hat geschrieben:
29.08.2024, 18:45
Und, sorry Uwe, aber das muss jetzt mal sein...
CUxD sollte eigentlich auch mit der Zeit gehen und diesen Umweg über WebUI-Programme (POSTIT/LOGIT) abschaffen und direkt als XMLRPC-Klient an den Schnittstellen lauschen.
Ja, da bin ich zeitlich leider noch nicht zu gekommen...

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.12, SSH KeyDir

Antworten

Zurück zu „CUxD“