Hallo,
den EibPC nutze ich seit 2011 und bin auch eigentlich sehr zufrieden. Mit zunehmender Programmlänge stoße ich nun auf komische Verhaltensweisen, die ich mir nicht recht erklrären kann.
Ich steuere bspw. meine Raumthermostate nach Anwesenheit, Wochentag und Zeit. Die folgende Abfrage funktioniert leider nicht zuverlässig, weder morgens um 6 Uhr (wenn wir üblicherweise da sind ;-)) noch wenn wir wieder nach Hause kommen (bei Setzen der Variable AnwesendAllgemeinFlag passiert recht viel an Logik-Auswertungen...):
Zur Erläuterung:
- in der Variable "Wochentag" wird täglich der Wochentag abgelegt, das war schon ein verzweifelter Versuch, ob es damit zusammenhängt
- tempHeizungsmodus wird zum Umsetzen der Heizungsbetriebsart genutzt
- VirtGesamt Text-0/2/50 ist fürs debuggen gedacht
Deutlich besser - soweit ich beurteilen kann zuverlässig - klappt es hiermit, auch wenn ich mir das logisch nicht erklären kann:
Wie man sieht, ist nur chtime durch eine im 10-Sekunden-Takt aktualisierte Variable ersetzt worden.
Was mir bei meinen Analysen aufgefallen ist - und das ist jetzt mein Verdacht hinsichtlich der Performance - dass mein EibPC ganz schön beschäftigt ist:
(P.S.: Auch vor dem letzten Update war das Problem da, der letzte Patch hatte keine Besserung gebracht)
Ich hatte auch schon mal die Zykluszeiten mir laufend mitgezählt (in Kategorien von bis), die schwankt zwischen 100 ms und in Spitze auch mal über 900 ms, leider kommen die über 900 ms ein paar mal am Tag vor.... In einem anderen Thread war mal die Rede davon, dass in der Spitze die Zykluszeit in Richtung 1 Sekunde schon kritisch ist (dauernd die Zykluszeiten messen und in eine Variable packen kostete auch nochmal 5-10 Prozentpunkte Average CPU usage, das habe ich dann wieder herausgenommen). Auch scheint die Nutzung der Visu den EibPC je nach Anzahl der Elementen ganz schon zu beschäftigen, daher habe ich die neuartigen Charts auch gleich wieder herausgenommen...
Frage 1: Hat jemand Ideen zum chtime-Problem?
An sich würde ich meinen, dass die durchschnittliche CPU-Auslastung deutlich zu hoch ist, aber eine Idee, was ich dagegen ohne Feature-Verlust wirklich tun kann, habe ich nicht, schließlich möchte ich die Logiken ja im EibPC programmieren und nicht anderswo, dafür habe ich ihn ja. Aber ich sehe mich schon fast gezwungen, manche Dinge jetzt auf meinen BananaPi auszulagern, damit der EibPC sich nicht so anstrengen muss... ;-).
Frage 2: Über Hinweise, welche Befehle / Programmlogiken den EibPC viel beschäftigen, bin ich dankbar.
den EibPC nutze ich seit 2011 und bin auch eigentlich sehr zufrieden. Mit zunehmender Programmlänge stoße ich nun auf komische Verhaltensweisen, die ich mir nicht recht erklrären kann.
Ich steuere bspw. meine Raumthermostate nach Anwesenheit, Wochentag und Zeit. Die folgende Abfrage funktioniert leider nicht zuverlässig, weder morgens um 6 Uhr (wenn wir üblicherweise da sind ;-)) noch wenn wir wieder nach Hause kommen (bei Setzen der Variable AnwesendAllgemeinFlag passiert recht viel an Logik-Auswertungen...):
Code:
if AnwesendAllgemeinFlag == EIN \\ and (Wochentag == 1 or Wochentag == 2 or Wochentag == 3 or Wochentag == 4 or Wochentag == 5) \\ and chtime(06,00,00) \\ and !chtime(19,59,00) then { tempHeizungsmodus = 1s08; write("VirtGesamt Text-0/2/50",$HZM 5$c14); } endif
- in der Variable "Wochentag" wird täglich der Wochentag abgelegt, das war schon ein verzweifelter Versuch, ob es damit zusammenhängt
- tempHeizungsmodus wird zum Umsetzen der Heizungsbetriebsart genutzt
- VirtGesamt Text-0/2/50 ist fürs debuggen gedacht
Deutlich besser - soweit ich beurteilen kann zuverlässig - klappt es hiermit, auch wenn ich mir das logisch nicht erklären kann:
Code:
if AnwesendAllgemeinFlag == EIN \\ and (Wochentag == 1 or Wochentag == 2 or Wochentag == 3 or Wochentag == 4 or Wochentag == 5) \\ and AktuelleZeitInSekundenZehner >= 21600s32 \\ and AktuelleZeitInSekundenZehner < 72000s32 then { tempHeizungsmodus = 1s08; write("VirtGesamt Text-0/2/50",$HZM 5$c14); } endif
Was mir bei meinen Analysen aufgefallen ist - und das ist jetzt mein Verdacht hinsichtlich der Performance - dass mein EibPC ganz schön beschäftigt ist:
Code:
IP-Adresse des EibPCs: 192.168.4.40 Firmwareversion des EibPCs: v3.030 Seriennummer des EibPCs: 00000406 Netzwerkeinstellungen: Statisch Netzmaske: 255.255.255.0 Gateway: 192.168.4.100 Nameserver 1: 192.168.4.100 Nameserver 2: ? Nameserver 3: ? Physikalische Adresse: 00-50-c2-79-31-5f Patches: 3.027.ptc Boot image: Boot image fixes: 0 Boot image updates: 3 System boot time: Wed Feb 10 22:01:10 CET 2016 Average CPU usage since booting: 69 % Maximum available firmware memory: 21720 kb Telegram buffer reduced to: 150000 VPN: The openvpn daemon is not running. Allowed VPN users: EIB-Schnittstelle: EIBnet/IP (Verbindung aufgebaut)
Ich hatte auch schon mal die Zykluszeiten mir laufend mitgezählt (in Kategorien von bis), die schwankt zwischen 100 ms und in Spitze auch mal über 900 ms, leider kommen die über 900 ms ein paar mal am Tag vor.... In einem anderen Thread war mal die Rede davon, dass in der Spitze die Zykluszeit in Richtung 1 Sekunde schon kritisch ist (dauernd die Zykluszeiten messen und in eine Variable packen kostete auch nochmal 5-10 Prozentpunkte Average CPU usage, das habe ich dann wieder herausgenommen). Auch scheint die Nutzung der Visu den EibPC je nach Anzahl der Elementen ganz schon zu beschäftigen, daher habe ich die neuartigen Charts auch gleich wieder herausgenommen...
Frage 1: Hat jemand Ideen zum chtime-Problem?
An sich würde ich meinen, dass die durchschnittliche CPU-Auslastung deutlich zu hoch ist, aber eine Idee, was ich dagegen ohne Feature-Verlust wirklich tun kann, habe ich nicht, schließlich möchte ich die Logiken ja im EibPC programmieren und nicht anderswo, dafür habe ich ihn ja. Aber ich sehe mich schon fast gezwungen, manche Dinge jetzt auf meinen BananaPi auszulagern, damit der EibPC sich nicht so anstrengen muss... ;-).
Frage 2: Über Hinweise, welche Befehle / Programmlogiken den EibPC viel beschäftigen, bin ich dankbar.
Kommentar