Forum użytkowników automatyki budynkowej
Z-wave => Fibaro - urządzenia wirtualne, pluginy => Wątek zaczęty przez: virgojavier w Styczeń 12, 2016, 05:29:47 pm
-
Witam
Zamarzyła mi się wirtualka do podglądu pracy rekuperatora. Pierwszą część którą udało mi się już zrobić to info dotyczące tego na którym biegu w zależności od zużycia prądu (reku jest podłączony wall plugiem) rekuperator się znajduje.
Druga to stan GWC, czy aktywny czy nie, podobnie na podstawie info z wall plaga sterującego GWC.
Następnie zakupiłem UBS i 4 DSy w celu przeliczania sprawności rekuperatora.
local myDeviceID = fibaro:getSelfId()
local t1Id = 1549
local t2Id = 1550
local t3Id = 1551
local t4Id = 1552
local temp_zew = tonumber(fibaro:getValue(t1Id, "value"))
local temp_wylot = tonumber(fibaro:getValue(t2Id, "value"))
local temp_nawiew = tonumber(fibaro:getValue(t3Id, "value"))
local temp_wywiew = tonumber(fibaro:getValue(t4Id, "value"))
fibaro:call(myDeviceID, "setProperty", "ui.LabelNow1.value", temp_zew)
fibaro:call(myDeviceID, "setProperty", "ui.LabelNow2.value", temp_wylot)
fibaro:call(myDeviceID, "setProperty", "ui.LabelNow4.value", temp_nawiew)
fibaro:call(myDeviceID, "setProperty", "ui.LabelNow5.value", temp_wywiew)
local sprawnosc = ((temp_nawiew - temp_zew)/(temp_wywiew - temp_zew))*100
fibaro:call(myDeviceID, "setProperty", "ui.LabelNow6.value", sprawnosc)
Wszystko fajnie działa, ale wyliczona sprawność wyświetla się z 10 miejscami po przecinku.
Wie ktoś może jak zaogrąglić wyliczaną wartość do jednego miejsca po przecinku?
Z góry dzięki za podpowiedź
-
a czy możesz sterować biegami rekuperatora? zastanawiam się czy płacić prawie 1000pln za moduł Aeris Inteligence, czy da się to przy pomocy fibaro rozwiązać...
-
Witaj virgojavier
spróbuj tak:
wpisz do swojego kodu przed twoimi zmiennymi:
local p = 100 -- ilość zer = ilość miejsc po przecinku
local s = sprawnosc
zamiast "p" możesz wpisać "przecinek" ale to długi wyraz,
potem
tak samo zamiast "sprawnosc" napisałem: "s", możesz zostawić "sprawnosc", zrobiłem tak dla przejrzystości przykładu;
przed wyświetleniem właściwie jakiejkolwiek liczby lub przed jej dalszym użyciem (w tym przypadku chodzi o "sprawnosc")
napisz taki kod (najlepiej skopiuj i wstaw poprawne zmienne):
sprawnosc = s - ((((s - math.floor(s)) * p) - math.floor(((s - math.floor(s)) * p))) / p);
teraz możesz ilością zer - w zmiennej "p" ("p", czytaj "przecinek") - obok jedynki regulować sobie ilość miejsc po przecinku jak "dusza" zapragnie ;)
nie znam wszystkich funkcji matematycznych, wiec zrobiłem to tak!
Ale za to działa u mnie niezawodnie!!! 8)
Nawet jak byś chciał, możesz wstawić do wirtualki suwak do regulacji ilości miejsc po przecinku, tylko proponuje wtedy zmienną "p" zrobić jako globalną ;) ;) :D
-
Zmieniając troszkę temat chciałbym zapytać, ponieważ sam w tej kwestii jeszcze się nie nauczyłem, jak skonstruować ścieżkę, którą wysłałbym do rekuperatora z przycisku urządzenia wirtualnego w HC2?
Problem jest w tym, że komenda wpisana w adres przeglądarki, po wciśnięciu klawisza ENTER wykonuje z sukcesem swoje zadanie. Natomiast wpisanie tego do urządzenia wirtualnego i wciśnięcie przycisku wysyłającego zadany tekst nie pociąga za sobą żadnego skutku.
tekst wygląda następująco:
http://192.168.1.200:8080/rest/supply/A/set/1
tabela funkcji i konstrukcji ścieżki jest w załączniku.
docelowo chciałbym móc sprawdzić, czy rekuperator jest włączony czy nie oraz sczytać temperaturę z pilota jak również włączyć i/lub wyłączyć rekuperator ale też zmienić bieg rekuperatora.
Z góry dziękuję za pomoc.
Pozdrawiam
-
na forum masz pełno przykładów jak wysyłać cokolwiek po http.
funkcja Net.FHttp
-
poproszę zatem o link do przykładu wysłania komendy do rekuperatora bo do tej pory nie znalazłem niczego odpowiedniego (albo wysyłanie do HC2 albo odczyt). A skoro orientujesz się doskonale, to z łatwością mnie pokierujesz
Z góry dziękuję :)
-
Przecież sztywniak napisał Ci dokładnie czego szukać.
http://lmgtfy.com/?q=Fibaro+Net.FHttp