Hi,
hab mir die Macros so angesehen... das was ich will scheint aber so nicht ganz dabei zu sein,
deswegen hab ich mich mal selber hingesetzt und versucht was umzusetzen.
Leider funktioniert das so irgendwie nicht ganz.. vielleicht kann mir einerm
mal ein paar Tipps geben wie das besser bzw. überhaupt funktioniert.
Hintergrund:
ich hab eine Variable die mir den gesamten Stromverbrauch von gestern
darstellt. Diesen Stromverbrauch hätte ich jetzt gern in einem Chart mit
Balkendarstellung. Das ist soweit ja nicht das Problem. Das Funtkioniert soweit
ganz gut.. und sieht auch super aus. Nach einem Neustart des EibPC's sind
die Daten allerdings weg.
Mein Ansatz war jetzt. Die Daten in einen String zu schreiben. Jeden Morgen
den Wert des Vortages einfach hinten Anfügen. (mit Trennzeichen)
Dann nach einem Neustart einen Loop über den String zu machen, der mir
dann jeweils die einzelnen Positionen ausliest und wieder in das Chart schreibt...
das gleiche dann mit meiner zweiten Variable (DayofMonth) die mir
für die X-Achse einfach die benötigten Zahlen liefert... (1-31) ..
was ich bisher hab:
[highlight=epc]
//Stromdiagramm
ges_Strom_String = $$
ges_Strom_varString = $$
ges_Strom_startpos = 0u16
ges_Strom_endpos = 0u16
ges_Strom_gespos = 0u16
ges_Strom_gespos_xt = 0u16
ges_Strom_gespos_t1 = 0u16
ges_Strom_gespos_t2 = 0u16
ges_Strom_Zeit = $$
ges_Strom_var_Zeit= $$
n = 99u16
//bei Systemstart String auslesen
if after(systemstart(),20000u64) then {
readflash(ges_Strom_String, 50u16);
readflash(ges_Strom_Zeit, 51u16);
n=0u16
} endif
//String aufbauen
if mtime(00,00) or mtime (30,00) then {
ges_Strom_String = ges_Strom_String + $;$ + convert(gesakttagverbrauch, $$);
ges_Strom_Zeit = ges_Strom_Zeit + $;$ + convert(dayofmonth, $$)
} endif
//Start und Endposition des Strings
if change(n) then {
ges_Strom_gespos = size (ges_Strom_String);
ges_Strom_gespos_xt= size (ges_Strom_Zeit)
} endif
if change(n) then {
ges_Strom_startpos = find (ges_Strom_String, $;$, n);
ges_Strom_gespos_t1 = find (ges_Strom_Zeit, $;$, n)
} endif
if change(n) then {
ges_Strom_endpos = find (ges_Strom_String, $;$, n+1u16);
ges_Strom_gespos_t2 = find (ges_Strom_Zeit, $;$, n+1u16)
} endif
//String für Chart
if change(n) then {
ges_Strom_varString = split(ges_Strom_String,ges_Strom_startpos,ges_Stro m_endpos);
ges_Strom_var_Zeit= split(ges_Strom_Zeit, ges_Strom_gespos_t1+1u16, ges_Strom_gespos_t2)
} endif
if change(n) then {
mpchart(16,convert(ges_Strom_var_Zeit,0f16),conver t(ges_Strom_varString,0f16),0,Strom3ID);
if n==31u16 then n=n else n=n+1u16 endif
} endif
//Beim String die erste Position abschneiden
if mtime(01,00) or mtime (31,00) then {
ges_Strom_String = split(ges_Strom_String,ges_Strom_endpos,ges_Strom_ gespos);
ges_Strom_Zeit = split(ges_Strom_Zeit,ges_Strom_gespos_xt,ges_Strom _gespos_t2);
writeflash(ges_Strom_varString, 50u16);
writeflash(ges_Strom_var_Zeit, 51u16)
}endif
[/highlight]
wie gesagt das ganze funktioniert noch gar nicht ... aber vielleicht bekommen wir das
gemeinsam irgendwie hin...
Gruß Martin
EDIT: ich glaub ich muss mir mal die Funktion stringcast anschaun...
EDIT2: die mtime(xx,yy) hab ich nur drin, damit ich nicht immer bis Mitternacht warten muss.. wird dann in ein htime(00,00,00) geändert
hab mir die Macros so angesehen... das was ich will scheint aber so nicht ganz dabei zu sein,
deswegen hab ich mich mal selber hingesetzt und versucht was umzusetzen.
Leider funktioniert das so irgendwie nicht ganz.. vielleicht kann mir einerm
mal ein paar Tipps geben wie das besser bzw. überhaupt funktioniert.
Hintergrund:
ich hab eine Variable die mir den gesamten Stromverbrauch von gestern
darstellt. Diesen Stromverbrauch hätte ich jetzt gern in einem Chart mit
Balkendarstellung. Das ist soweit ja nicht das Problem. Das Funtkioniert soweit
ganz gut.. und sieht auch super aus. Nach einem Neustart des EibPC's sind
die Daten allerdings weg.
Mein Ansatz war jetzt. Die Daten in einen String zu schreiben. Jeden Morgen
den Wert des Vortages einfach hinten Anfügen. (mit Trennzeichen)
Dann nach einem Neustart einen Loop über den String zu machen, der mir
dann jeweils die einzelnen Positionen ausliest und wieder in das Chart schreibt...
das gleiche dann mit meiner zweiten Variable (DayofMonth) die mir
für die X-Achse einfach die benötigten Zahlen liefert... (1-31) ..
was ich bisher hab:
[highlight=epc]
//Stromdiagramm
ges_Strom_String = $$
ges_Strom_varString = $$
ges_Strom_startpos = 0u16
ges_Strom_endpos = 0u16
ges_Strom_gespos = 0u16
ges_Strom_gespos_xt = 0u16
ges_Strom_gespos_t1 = 0u16
ges_Strom_gespos_t2 = 0u16
ges_Strom_Zeit = $$
ges_Strom_var_Zeit= $$
n = 99u16
//bei Systemstart String auslesen
if after(systemstart(),20000u64) then {
readflash(ges_Strom_String, 50u16);
readflash(ges_Strom_Zeit, 51u16);
n=0u16
} endif
//String aufbauen
if mtime(00,00) or mtime (30,00) then {
ges_Strom_String = ges_Strom_String + $;$ + convert(gesakttagverbrauch, $$);
ges_Strom_Zeit = ges_Strom_Zeit + $;$ + convert(dayofmonth, $$)
} endif
//Start und Endposition des Strings
if change(n) then {
ges_Strom_gespos = size (ges_Strom_String);
ges_Strom_gespos_xt= size (ges_Strom_Zeit)
} endif
if change(n) then {
ges_Strom_startpos = find (ges_Strom_String, $;$, n);
ges_Strom_gespos_t1 = find (ges_Strom_Zeit, $;$, n)
} endif
if change(n) then {
ges_Strom_endpos = find (ges_Strom_String, $;$, n+1u16);
ges_Strom_gespos_t2 = find (ges_Strom_Zeit, $;$, n+1u16)
} endif
//String für Chart
if change(n) then {
ges_Strom_varString = split(ges_Strom_String,ges_Strom_startpos,ges_Stro m_endpos);
ges_Strom_var_Zeit= split(ges_Strom_Zeit, ges_Strom_gespos_t1+1u16, ges_Strom_gespos_t2)
} endif
if change(n) then {
mpchart(16,convert(ges_Strom_var_Zeit,0f16),conver t(ges_Strom_varString,0f16),0,Strom3ID);
if n==31u16 then n=n else n=n+1u16 endif
} endif
//Beim String die erste Position abschneiden
if mtime(01,00) or mtime (31,00) then {
ges_Strom_String = split(ges_Strom_String,ges_Strom_endpos,ges_Strom_ gespos);
ges_Strom_Zeit = split(ges_Strom_Zeit,ges_Strom_gespos_xt,ges_Strom _gespos_t2);
writeflash(ges_Strom_varString, 50u16);
writeflash(ges_Strom_var_Zeit, 51u16)
}endif
[/highlight]
wie gesagt das ganze funktioniert noch gar nicht ... aber vielleicht bekommen wir das
gemeinsam irgendwie hin...
Gruß Martin
EDIT: ich glaub ich muss mir mal die Funktion stringcast anschaun...
EDIT2: die mtime(xx,yy) hab ich nur drin, damit ich nicht immer bis Mitternacht warten muss.. wird dann in ein htime(00,00,00) geändert
Kommentar