Wenn dies dein erster Besuch hier ist, lies bitte zuerst die Hilfe - Häufig gestellte Fragen durch. Du musst dich vermutlich registrieren, bevor du Beiträge verfassen kannst. Klicke oben auf 'Registrieren', um den Registrierungsprozess zu starten. Du kannst auch jetzt schon Beiträge lesen. Suche dir einfach das Forum aus, das dich am meisten interessiert.
Ankündigung
Einklappen
Keine Ankündigung bisher.
Anlagenstatus einer Alpha Innotec Wärmepumpe (Luxtronik 1.0)
Somit könnt Ihr es ja doch insofern nachstellen, indem Ihr die Ausgabe der Wärmepumpe (den String aus Posting https://knx-user-forum.de/372581-post105.html) in eine Variable (Buffer) schreibt und dann mal das Processing laufen lasst und die Performance beobachtet. Oder?
Das per se funktioniert problemlos. War auch nicht anders zu erwarten, da ja Jambalas Makro bei ihm (mit echter Anlage) problemlos funktioniert.
Daher muss man Stück für Stück den Code unter Realbedingungen entschlacken, um so den Übeltäter zu finden...
Aber auch eine AI WP mit der Luxtronic 1.0
Ich frage die WP alle 30sec. ab.
Ich würde nie auf die Idee kommen sie alle 2mS abzufragen.
Das macht die Luxtronic auch garnicht mit.
Versuch es einfach mal mit 30sec.
Gruß NetFritz
Habe auch eine AI mit Luxtronik 1. Ich frage sämtliche Daten minütlich ab und pumpe das Zeugs in eine Mysql-Datenbank. Aus den Daten generiere ich dann u.a. Langzeitcharts über das Verhalten der Wärmepumpe.
Minütlich abfragen reicht völlig aus. Hab schon länger nicht mehr mit rumgespielt, aber ich glaube, dass es bereits kritisch wird, wenn die Zeit zwischen 2 aufeinanderfolgenden Abfragen unter 5 Sek sinkt.
Das per se funktioniert problemlos. War auch nicht anders zu erwarten, da ja Jambalas Makro bei ihm (mit echter Anlage) problemlos funktioniert.
Daher muss man Stück für Stück den Code unter Realbedingungen entschlacken, um so den Übeltäter zu finden...
Hallo Michael,
danke für den Test. Dann muss wohl doch mein EibPC kaputt sein.
Was will man hier noch entschlacken?
[ETS-ESF]
// Die aus der ETS3 exportierte ESF-Datei
./Exports/Haus_Debug.esf
[WebServer]
[InitGA]
[EibPC]
myDEBUG=EIN
if myDEBUG==EIN and cycle(0,1) then write("Zeit-15/1/0",settime()) endif
// Reaktion auf Waermepumpe
if delay(change(WP_Temp_Aussentemperatur),1000u64) or delay(change(WP_Temp_Warmwasser_Ist_Temperatur),10 00u64) then {
write("LCD_Beleuchtung_BadOG-1/6/7",EIN);
write("Text_Bad_OG-1/6/6",convert(WP_Temp_Aussentemperatur,$$c14)+$ / $c14+convert(WP_Temp_Warmwasser_Ist_Temperatur,$$c 14))
} endif
[/highlight]
Im Test hat bei Euch der EibPC sekündlich Mails geschickt? Oder wie habt Ihr das mit der Verzögerung gemessen?
Habe auch eine AI mit Luxtronik 1. Ich frage sämtliche Daten minütlich ab und pumpe das Zeugs in eine Mysql-Datenbank. Aus den Daten generiere ich dann u.a. Langzeitcharts über das Verhalten der Wärmepumpe.
Minütlich abfragen reicht völlig aus. Hab schon länger nicht mehr mit rumgespielt, aber ich glaube, dass es bereits kritisch wird, wenn die Zeit zwischen 2 aufeinanderfolgenden Abfragen unter 5 Sek sinkt.
Gruß,
thoern
Hallo Thoern,
mich würde mal interessieren: wie hoch ist denn der Load Deines EibPCs ?
Hallo Michael,
Im Test hat bei Euch der EibPC sekündlich Mails geschickt? Oder wie habt Ihr das mit der Verzögerung gemessen?
Die Verarbeitungsdauer kann man wie auf S89ff beschrieben im EibPC messen. Wenn man einen String auf die Verarbeitung gibt, ist das jedenfalls konstant. Das deckt sich wie gesagt mit den Aussagen von Jambala.
Ggf. ist es auch ein Problem, das ab und an die WP doch nicht die Pakete in der Form ausgibt, wie vorausgesetzt oder eine Pause dazwischen einfügt (siehe auch Thread zum IPExtender).
Was spricht dagegen, die WP nur alle 5 Minuten abzufragen? Vielleicht ist sie dann nicht so störrisch? Oder hattest Du das schon getestet?
Die Verarbeitungsdauer kann man wie auf S89ff beschrieben im EibPC messen. Wenn man einen String auf die Verarbeitung gibt, ist das jedenfalls konstant. Das deckt sich wie gesagt mit den Aussagen von Jambala.
Ggf. ist es auch ein Problem, das ab und an die WP doch nicht die Pakete in der Form ausgibt, wie vorausgesetzt oder eine Pause dazwischen einfügt (siehe auch Thread zum IPExtender).
Was spricht dagegen, die WP nur alle 5 Minuten abzufragen? Vielleicht ist sie dann nicht so störrisch? Oder hattest Du das schon getestet?
Ich hatte es über längeren Zeitraum auf 5 Minuten.
Nur kam es in dem Zeitraum immer während des Polling-Zyklus zu Verzögerungen (beim Licht, wenn der EibPC auf eine GA reagieren sollte um z.B. ein zweites Licht zu schalten, oder bei Bedieung CommandFusion [intermitted conn. loss], oder es wurden Aufrufe von htime() vergessen/ausgelassen).
Kann ich Euren Test-Code bekommen und eine kurze Anleitung was Ihr wie gemacht habt?
Würde den gleichen Test gern hier machen und dann vergleichen wir mal die Zeiten..
Die Verarbeitungsdauer kann man wie auf S89ff beschrieben im EibPC messen. Wenn man einen String auf die Verarbeitung gibt, ist das jedenfalls konstant. Das deckt sich wie gesagt mit den Aussagen von Jambala.
Wie stellst du das denn genau nach?
Jambala hat noch nichts zu seiner tatsächlichen Auslastung gesagt.
Kannst du bitte das Programm von S89ff noch fixen und posten, damit man einen verlässlichen Wert erhält?
Ggf. ist es auch ein Problem, das ab und an die WP doch nicht die Pakete in der Form ausgibt, wie vorausgesetzt oder eine Pause dazwischen einfügt (siehe auch Thread zum IPExtender).
Das habe ich bereits getestet und mit einem Terminalprogramm festgestellt, dass immer alle Antworten korrekt kommen, der eibPC aber regelmäßig nicht alle Daten bekommt und mit Jambalas Makro so regelmäßig Temperaturen mit 0°C berechnet.
Was spricht dagegen, die WP nur alle 5 Minuten abzufragen? Vielleicht ist sie dann nicht so störrisch? Oder hattest Du das schon getestet?
Nichts, genau das habe ich gemacht und gerade hier fiel es mit der Sonnenstandsberechnung zusammen. Dies führte bei mir dazu, dass regelmäßig die komplette CommandFusion Kommunikation stehen blieb, für ca. 30 sec! WP Makro raus und alles war wieder ok! Ein echtes Problem war übrigens, dass die Rollos teilweise nicht mehr gefahren sind, also diese Events völlig verschluckt wurden!
Ansonsten habe ich noch hier (klick) gepostet. Auch wenn dies scheinbar nicht zum Thema passt, würde mich eine Antwort interessieren!
Meine Auslastung ist total unkritisch obwohl ich die aufwändigere IP Abfrage mit deutlich höherem Parsing Teil der Luxtronik 2 verwende. Zusätzlich sind dort die Daten noch im Big Endian Format kodiert und müssen alle einzeln konvertiert werden.
Ich habe weder bei der Luxtronik 1 noch 2 jemals irgendwelche Verarbeitungsverzögerungen erlebt (in >2 Jahren der Benutzung), obwohl wie schon geschrieben eine große Anzahl weiterer Makros parallel läuft (1-Wire, Weather Underground usw.).
Wenn ich in den nächsten Tagen einmal Zeit finde, werde ich den Luxtronik 1 Code einmal in 2-3 verschiedenen Ausbaustufen als Test-Code uploaden. Damit können dann einmal vergleichbare Situationen bei allen betroffenen Usern geschaffen werden.
Sollte dies alles zu keinem Ergebnis führen, könnte ich Enertex einmal eine Original Luxtronik 1 Steuerung zur Verfügung stellen. Diese liefert dann ohne WP keinen realen Werte, aber die Kommunikation zwischen Steuerung und EibPC bzw. die nachgelagerte Verarbeitung kann damit problemlos geprüft werden.
Ich glaube eher an eine vollkommen andere Ursache, als die eigentliche Verarbeitung der Daten.
Ich glaube eher an eine vollkommen andere Ursache, als die eigentliche Verarbeitung der Daten.
Herausfinden wird man das nur, wenn man auch will und die notwendigen Hilfsmittel hat/erhält. "Bei mir/dir/ihm geht's" hilft leider nicht.
Gerade für solche Probleme wäre eine "eingebaute" Laufzeitanalyse wirklich hilfreich, analog einer "CPU Auslastungsanzeige", die man nicht erst "einbauen" und um eine vernünftige Darstellung erweitern muss.
Oder man erweitert das Beispiel aus der Anleitung zu einem "Komplettpaket".
Wenn dann jeder dieses "Tool" einsetzt, könnte man sehr schnell sehen, wie stark der eibPC wirklich beschäftigt ist.
Damit habe ich getestet:
[highlight=epc]
// Berechnet die minimale und maximale Zyklusdauer
// der Verarbeitung. Dabei ist die Performance-Angabe im EibStudio immer
// als Offset dabei.
Max=1000000000000000u64
Restzeit=0u64
StoppZeit=Max
MaxZyklusZeit=0u64
MinZyklusZeit=Max
// Im EibStudio ggf. geändert, Defaultwert ist 20ms
PerformanceZeit=20u64
// Die erste Zyklus kann etwas länger dauern ...
if afterc(after(systemstart(),10000u64), Max, Restzeit) then {
StoppZeit=0u64;
} endif
if change(Restzeit) then {
MaxZyklusZeit=max(StoppZeit-Restzeit-PerformanceZeit,MaxZyklusZeit);
MinZyklusZeit=min(StoppZeit-Restzeit -PerformanceZeit,MinZyklusZeit);
StoppZeit=Restzeit;
} endif
NewLIne=$ $;
if systemstart() then stringset(NewLIne,13,0u16) endif
Test=AUS
if Test then {
Buffer=$1800;8$+NewLIne+
$1100;12;520;477;312;313;10;486;500;120;58;326;341 ; 0$+NewLIne+
$1200;6;0;1;0;1;1;0+$+NewLIne+
$1300;13;0;0;0;0;0;0;0;0;0;0;0;0;0$+NewLIne+
$1400;29; 0;0;0; 0;0;0; 0;0;0; 0; 0;0;0; 0;0;0; 0;56;3; 0;0;0; 10;1;37; 0;0;0; 0;0;0+$+NewLIne+
$1450;9;3628317;2161;1678;3121663;2162;1443;372727 ; 0;6230122$+NewLIne+
$1500;5$+NewLIne+
$1500;1500;6;709;22;11;8;11;54$+NewLIne+
$1500;1501;6;715;22;11;8;12;4$+NewLIne+
$1500;1502;6;709;22;11;8;12;4$+NewLIne+
$1500;1503;6;711;11;12;8;20;24$+NewLIne+
$1500;1504;6;708;13;12;8;14;9$+NewLIne+
$1500;5$+NewLIne+
$1600;5$+NewLIne+
$1600;1600;6;010;19;12,8;12;32$+NewLIne+
$1600;1601;6;010;19;12;8;14;54$+NewLIne+
$1600;1602;6;010;19;12;8;17;10$+NewLIne+
$1600;1603;6;010;19;12;8;19;31$+NewLIne+
$1600;1604;6;010;19;12;8;21;14$+NewLIne+
$1600;5$+NewLIne+
$1700;12;2; V2.33; 1; 5 ;19;12;8; 10;42;12; 0; 1$+NewLIne+
$1800;8$
}endif
[/highlight]
Da kommt es schon mal zu einem Peak in Deinem Orginalprogramm von 600ms, aber nur wenn sich alles auf einmal ändert.v.a. die zig Fließkommaoperationen werden da so einiges an Rechenzeit kosten.
Deine Delays waren ja nicht so wirksam, da Du das nicht wirklich entzerrt hattest.
Ich habe das eben mit
if delay(change(Data_Temperatur),Data_Delay*2u64) and Data_Temperatur!=$$ then {
} ...
gecodet.
Hat sicher etwas gebracht (Data_Delay war 500u64).
Ich habe die delay wie folgt realisiert:
[highlight=epc]// Parsen der einzelnen Temperaturwerte
if delay(change(Data_Temperatur),Data_Delay*2u64) and Data_Temperatur!=$$ then {
}... endif
[/highlight]
Der Faktor (hier 2) wurde hochgezählt von if zu if.
Mit
[highlight=epc]
if delay(change(Data_Temperatur),Data_Delay*2u64) and Data_Temperatur!=$$ then {
write('1/6/6'c14,$2:$c14+convert(convert(MaxZyklusZeit,0f16), $$c14));
MaxZyklusZeit=0u64;
...
} endif
[/highlight]
kann man dann die max. Verarbeitungszeit bis zu dieser Anweisung evaluieren.
Da kommt es schon mal zu einem Peak in Deinem Orginalprogramm von 600ms, aber nur wenn sich alles auf einmal ändert.v.a. die zig Fließkommaoperationen werden da so einiges an Rechenzeit kosten.
Das hätte ich auch erwartet, wobei die Verarbeitung durch das change() (wenn es denn so funktioniert: hast du jetzt schon auf meine 2. Frage geantwortet?) ja schon optimiert sein sollte.
Andererseits trat der Fehler bei mir explizit mit der Abfrage alle 5 Minuten auf und bei mir läuft CommandFusion mit über 1000 Joins auf 3 iPads.
Ich werde die nächsten Tage die Messung analog deiner durchführen.
KNX ist sicherlich unterschiedlich und bestimmt noch weiteres!
KNX und weiteres spielt hier erst einmal überhaupt keine Rolle.
Hier sorgt ja laut den bisherigen Aussagen die Auswertung der WP Daten für Performance Probleme im EibPC.
Um das Problem einzugrenzen darf nur die AI WP, der EibPC und das Luxtronik Makro zusammen mit drei Zeilen Code im Hauptprogramm im Spiel sein.
Wenn Ihr nicht so testet und weiterer Code im Spiel ist, können wir die Diskussion hier beenden. Den Fehler wird man so nicht mit vertretbarem Aufwand eingrenzen können.
Wir verarbeiten personenbezogene Daten über die Nutzer unserer Website mithilfe von Cookies und anderen Technologien, um unsere Dienste bereitzustellen. Weitere Informationen findest Du in unserer Datenschutzerklärung.
Indem Du unten auf "ICH stimme zu" klickst, stimmst Du unserer Datenschutzerklärung und unseren persönlichen Datenverarbeitungs- und Cookie-Praktiken zu, wie darin beschrieben. Du erkennst außerdem an, dass dieses Forum möglicherweise außerhalb Deines Landes gehostet wird und bist damit einverstanden, dass Deine Daten in dem Land, in dem dieses Forum gehostet wird, gesammelt, gespeichert und verarbeitet werden.
Kommentar