Wiemy że program przeglądający pytając nas o wartość parametru umieszcza w zmiennej t informacje dla jakiego czasu chce uzyskać wartość parametru.
Wiem też, półoficjalnie, że ta wartość zapisana jest jako ilość sekund od pewnego czasu '0'. Możemy się więc pokusić o napisanie parametru, który będzie liczył np. przyrost temperatury zewnętrznej w okresie 10 minut, np. takiego:
v = p("xxxx:Sieć:Sterownik temperatura zewnętrzna, t, PT_MIN10) - p("xxxx:Sieć:Sterownik temperatura zewnętrzna, t - 10 * 60, PT_MIN10)
I faktycznie, parametr zwróci to co chcemy. Jak widać da się to tak zrobić w ten sposób, ale ręczne operowanie na wartości zmiennej t jest niewygodne, dlatego też w formułach programu przeglądającego mamy dostępną funkcję szb_move_time. Funkcja szb_move_time przyjmuje 3 parametry: czas początkowy, o ile jednostek należy czas początkowy przesunąć, jednostka przesunięcia. To co ta funkcja zwraca to przesunięta wartość czasu. Zanim podamy przykład to jeszcze wyjaśnienie o co chodzi z tymi jednostkami. Za pomocą funkcji szb_move_time czas możemy przesunąć o pewną ilość: lat, miesięcy, dni, tygodni, okresów 8-godzinnych i 10-minutowych. Odpowiadają one ściśle rodzajom średnich na ekranach programu draw3. Oznaczenia jednostek są też takie same jak oznaczenia średnich, a więc odpowiednio PT_YEAR, PT_MONTH, PT_WEEK, PT_DAY, PT_WEEK, PT_HOUR8, PT_MIN10.
Kilka przykładów wywołań funkcji szb_move_time:
szb_move_time(t, 6, PT_MIN10) - przesuń podany czas o 6 jednostek 10-minutowych
szb_move_time(t, 2, PT_YEAR) - przesuń podany czas o 2 lata do przodu
szb_move_time(t, -1, PT_MONTH) - przesuń podany czas o 1 miesiąc do tyłu
Możemy teraz np. napisać parametr który będzie podawał różnicę między wartością temperatury zewnętrznej dla czasu dla którego liczony jest parametr a czasem miesiąc wcześniejszym.
local miesiac_wczesniej = szb_move_time(t, -1, PT_MONTH) v = p("xxxx:Sieć:Sterownik temperatura zewnętrzna, t, PT_MIN10) - p("xxxx:Sieć:Sterownik temperatura zewnętrzna, miesiac_wczesniej, PT_MIN10)
Możemy też wykorzystując fakt, że w zmiennej pt mamy średnią dla której rysowany jest parametr, zrobić rzecz następującą - parametr, który oglądany na ekranie dekada będzie podawał nam wzrost średniej temperatury rocznej między poszczególnymi latami; oglądany na ekranie rocznym to wzrost średniej temperatury miesięcznej między poszczególnymi miesiącami; miesięcznej, wzrost temperatury dobowej między poszczególnymi dniami; itp.
local poprzedni_czas = szb_move_time(t, -1, pt) v = p("xxxx:Sieć:Sterownik temperatura zewnętrzna", t, pt) - p("xxxx:Sieć:Sterownik temperatura zewnętrzna", poprzedni_czas, pt)
Poprzedni | Spis treści | Następny |
Wreszcie coś ciekawego. | Początek rozdziału | Średnie jeszcze raz. |