Forum użytkowników automatyki budynkowej
Z-wave => Fibaro - sceny => Wątek zaczęty przez: damian w Marzec 26, 2015, 11:46:44 am
-
Mam instalację wodną z dodatkowym obiegiem cyrkulacyjnym, dzięki czemu woda pod prysznicem (w kranie, wannie etc) jest zawsze ciepła od razu. Obieg wspomagany jest przez pompę, tłumaczyć nie będę bo to nie to forum.
Po co pompa ma działać cały czas, skoro wystarczy uruchomić ją powiedzmy na minutę i pozwolić na 15 minut przerwy w jej pracy? Korzyść z tego taka, że pompa pracuje 15 razy krócej, a efekt i tak jest osiągnięty. Można zaoszczędzić jeszcze kilka złotych nie uruchamiając pompy w nocy, kiedy śpimy, albo kiedy nikogo nie ma w domu.
U mnie pompa CWU rusza kiedy naruszone są drzwi którejś sypialni albo łazienki, albo jak wykryje ruch na schodach. Oczywiście pod warunkiem że określone w skrypcie granice czasowe jej na to pozwalają.
Oto skrypt. Podziękowania dla Traktor69.
--[[
%% properties
10 value
11 value
66 value
70 value
120 value
%% globals
--]]
-- Sprawdzenie czy nie jest uruchomiona więcej jak jedna scena -----------------------------------
if (fibaro:countScenes() > 1) then
fibaro:debug("Uruchomiono druga instancje sceny - zatrzymanie")
fibaro:abort();
end
-- Initial Values -----------------------------------------------------------
-- Nie zapomnij dodać ID czujek i sensorów drzwi w deklaracji na początku skryptu!!!
local switch = 84 -- Podaj ID switcha odpowiedzialnego za uruchamianie pompy CWU
local startTime1 = '06:00' -- czas startu pierwszego zakresu
local stopTime1 = '10:30' -- koniec czasu pierwszego zakresu
local startTime2 = '14:00' -- czas startu drugiego zakresu
local stopTime2 = '23:59' -- koneic czasu drugiego zakresu
local startTimeWe = '07:00' -- czas startu w weekend
local stopTimeWe = '23:59' -- koniec czasu w weekend
CWU_Time = 2 -- Czas pracy CWU w minutach
CWU_Delay = 15 -- Przerwa pomiędzy kolejnymi możliwymi cyklami pompy, w minutach
-- Funkcje -----------------------------------------------------------------
-- funkcja zamienia czas w formacie tekstowym "HH:MM" lub os.date("*t")
-- na liczbę minut od północy
function toMinutes(czasHHMM)
local a
if type(czasHHMM) == "string" then
a = tonumber(string.sub(czasHHMM, 1, 2)) * 60 + tonumber(string.sub(czasHHMM, 4, 5))
else
a = tonumber(czasHHMM.hour) * 60 + tonumber(czasHHMM.min)
end
return a
end
-- funkcja sprawdza czy aktualny czas jest w określonej porze
function isTime(startHHMM, stopHHMM)
nowMin=toMinutes(os.date("*t"))
startMin=toMinutes(startHHMM)
stopMin=toMinutes(stopHHMM)
if (stopMin >= startMin) then
if (nowMin >= startMin) and (nowMin <= stopMin) then
isTme = true
else
isTme = false
end
elseif (stopMin <= startMin) then
if (nowMin <= startMin) and (nowMin >= stopMin) then
isTme = false
else
isTme = true
end
end
return isTme
end
---------------------------------------------------------------------------------------------------
-- Pokaż który sensor uruchomił scenę
local trigger = fibaro:getSourceTrigger();
fibaro:debug("Sensor " .. trigger['deviceID'] .. " naruszony.")
-- isActiveTime - sprawdzenie czy to odpowiedni czas na uruchomienie pompy ---
local wD=os.date('*t').wday
isActiveTime = (wD==2 or wD==3 or wD==4 or wD==5 or wD==6) and (isTime(startTime1,stopTime1) or isTime(startTime2,stopTime2)) or (wD==7 or wD==1) and isTime(startTimeWe,stopTimeWe)
fibaro:debug("isActiveTime = "..tostring(isActiveTime))
-- Sterowanie CWU ------------------------------------------------------------------
if isActiveTime then
fibaro:call(switch, "turnOn")
fibaro:debug("CWU Start")
fibaro:setGlobal("CWU_lastrun", toMinutes(os.date("*t")))
fibaro:sleep(CWU_Time*1000*60)
fibaro:call(switch, "turnOff")
fibaro:debug("CWU Stop")
fibaro:sleep(CWU_Delay*1000*60)
else
fibaro:debug("CWU nie uruchomione - poza zakresem czasowym")
end
-----------------------------------------------------------------------------
fibaro:debug("------------------------------------------------")
-
zastanawiałem sięczy uruchomić sobie taką scenę, ale moja pompka bierze 3.6W, więc oszczędności raczej nie będzie ;)
-
Myślę, że świetnie się ten skrypt nada do innych celów, jak na przykład elektrycznie podgrzewane lustro w łazience, czy nawet podgrzewanie kawy w ekspresie przelewowym... :)
-
damian to akurat prawda :) generalnie skrypt ma bardzo wiele zastosowań i już go sobie użyczyłem :D
-
marecki_0luk1, pamiętaj, że tu nie chodzi o oszczędność na prądzie w pompie.
Jak nie mielisz non-stop wody w obiegu, to rzadziej dogrzewasz. U siebie mam zbiornik warstwowy podłączony do kotła gazowego. Od kiedy uruchomiłem podobną scenę (u mnie akurat na bloczkach) to kocioł praktycznie przestał się włączać w trybie grzania wody gdy jej nie pobieram. Wcześniej regularnie "dogrzewał" bo cała instalacja, jakby nie była zaizolowana, to jednak wielka chłodnica ;-)
-
może i racja. Ja grzeje dom pompą ciepła i w sumie trochę zajmuje zanim nagrzeję zbiornik (300l), wykorzystam i sprawdze w logach o ile sie zmniejsza ilosc zalaczen pompy na cele CWU
-
Zrobiłem sobie statystykę włączeń pompy, z ciekawości. Jutro pokażę wykres (z jednej doby) ile razy się uruchomiła. A że scena działa już od dawna, to mam pewność, że działa wystarczająco dobrze - woda w kranie zawsze ciepła. ;-)
-
damian i gdzie ten wykres :P ?
-
damian i gdzie ten wykres :P ?
Mówisz i masz, ostatnia doba. Sporo się wczoraj po domu kręciliśmy, więc w sumie wyszło że w ciągu 24 godzin pompa chodziła 30 razy po 2 minuty. Razem przez godzinę czasu - to 24 razy mniej niż praca nonstop. ;-)
-
Gdyby ktoś pytał o oszczędności, to raczej nie pojawią się one na zużyciu prądu pompy.
Kolega ostatnio liczył oszczędność na podgrzewaniu CWU, przy ograniczeniu czasu pracy pompy recyrkulacji prostą automatyką czasową.
Wyszło 1kpln rocznie dla średniej wielkości domku i pieca gazowego.
Oczywiście specyfika układu grzewczego itd., może znacznie te dane zmieniać. Nie mniej, to jest fajny element do wykorzystania.
-
Lesław chyba kolega ma problem z liczeniem.
Kolega ostatnio liczył oszczędność na podgrzewaniu CWU, przy ograniczeniu czasu pracy pompy recyrkulacji prostą automatyką czasową.
Wyszło 1kpln rocznie dla średniej wielkości domku i pieca gazowego.
To ile ten kolega wydaje na CWU rocznie ? Zbiornik 5000l ? ;)
-
Trzeba przyznać, że te wyliczenia są mocno optymistyczne. :)
Jednak diabeł tkwi w szczegółach. Np. jeśli piec nie moduluje mocą lub nawet moduluje, a startuje z poziomu 7-9kW, to podgrzewanie CWU powoduje duże straty na samym procesie.
Jeśli rury są niedobrze lub wcale zaizolowane, to zimą pół biedy, bo ciepło idzie w budynek ale latem to czysta strata.
Można by dodać jeszcze parę rzeczy (np. LPG lub olej jako paliwo) i jestem pewien że kilkadziesiąt złotych miesięcznie by się uzbierało.
-
Cześć,
na początek się przedstawię, bo to mój pierwszy wpis. Przyznam, że sporo ciekawych i konkretnych zastosowań można znaleść na tym forum.
Rzeczywiście, zastosowań powyższego skryptu można znaleźć wiele. Ja podłączyłem pod niego elektryczny odświeżacz powietrza, taki wpinany do gniazda 230V - w moim przypadku gniazdem jest WallPlug. Mój dotychczasowy odświeżacz pracował całą dobę, a powiewów świeżej bryzy w środku nocy nie potrzebuję - marnuje tylko zasobnik.
Jeżeli ktoś ma inne, ciekawe zastosowania, piszcie - czasami ciężko wpaść na rozwiązania, które są banalne a ułatwiają życie.
PS.
Próbowałem zamiast Switcha podłączyć Dimmer i działa. Czy ktoś ma pomysł, jak sterować % wartością Dimmera, aby np. odpalał 20% mocy jakiegoś wentylatora? Względnie, aby można było zadawać różne wartości w zależności od np. zakresu (w I zakresie czasowym podaje 100%, w drugim 20%). Z góry dzięki za pomoc.
-
Najprościej zamiast
fibaro:call(switch, "turnOn")
dać:
fibaro:call(dimmer, 'setValue',20)
Przy tym trzeba pamiętać o zmianach ustawień dimmera do sterowania silnikami. Info w instrukcji.
Poza tym większość silników może źle znosić start z poziomu 20%. Idealnie byłoby startować ze 100% i potem zmniejszyć na 20%.
Jaki to wentylator?
Względnie, aby można było zadawać różne wartości w zależności od np. zakresu (w I zakresie czasowym podaje 100%, w drugim 20%). Z góry dzięki za pomoc.
Nie mam jak sprawdzić ale chyba trzeba dodać zmienną isActiveTime2, której zadasz odpowiednie zakresy czasowe i dni.
a potem:
if isActiveTime then
<warunki>
elseif isActiveTime2 then
<warunki>
else
fibaro:debug("CWU nie uruchomione - poza zakresem czasowym")
end
-
Lesław - wielkie dzięki za szybką pomoc i cenne uwagi odnośnie wentylatora.
Mam prosty wentylator "a la łazienkowy" na 230V i już podłączałem go do Dimmera. Rzeczywiście - czasami ciężko go wystartować z poziomu 0 - 20%, więc lepiej byłoby z 100% i zejść do tych 20%.
Mając tą funkcjonalność będę próbował zrobić z tego jakiś sensowny układ.
-
Lesław,
podmieniłem fibaro:call(switch, "turnOn") na fibaro:call(dimmer, 'setValue',20) i dostaję błąd:
[ERROR] 13:24:06: Runtime error: /opt/fibaro/FibaroSceneAPI.lua:252: attempt to concatenate local 'deviceID' (a nil value)
Masz jakiś pomysł, co może być nie tak? Ze Switchem w kodzie i podłączonym pod niego Dimmerem działa OK.
-
Znajdź linię: local switch (...) i tam zmień na local dimmer z numerem id dimmera.
Żeby bawić się z Lua musisz trochę poczytać. Na skróty się nie da :)
-
Dzięki za pomoc - działa bez zarzutów, choć nie wiedzieć czemu wcześniej robiłem niby tak samo i nie działało - pewnie jakaś literówka. Do dimmera przystosowałem też wyłączanie Dimmer, "turnOff".
Zgadza się - na skróty nie mam zamiaru, ale przygodę z Lua zacząłem dwa dni temu i na początek staram się adoptować gotowe lub zbliżone rozwiązania z ewentualnymi poprawkami do swoich potrzeb.
-
witam
Czy któryś z kolegów mógł by podrzucić taka scenę włączającą pompkę CWU w oparciu o czujniki ruchu tylko na bloczkach ? Coś nie mogę odpalić takiej.
-
Sebastian im szybciej zapomnisz o bloczkach tym lepiej
Wysłane z iPhone za pomocą Tapatalk
-
Podepnę sie pod temat
Mam pytanie czy da sie włączyć pompę wody poprzez naruszenie czujnika w łazience ale nie częściej niż 30 minut ??
Na chwilę obecną działa mi każdorazowe naruszenie czujki włącza pompę.
Scenę potrzebuję odpalić na HCL
-
Jak na HCL to trzeba pokombinować ze zmiennymi.
Utworzyc zmienna np. pompa o wartosci 0/1.
Pierwsza scena to jesli ruch i pompa==0 to
wlacz pompe i pompa = 1
Druga scena
pompa == 1 to
czejak 30min i
pompa =0
-
Dzięki za odpowiedz ale to tez pupa :(
bo zamysł jest taki by pompa włączyła się na 2 minuty bo tyle wystarczy by zagrzała obieg i się wyłączyła wiec jak ktoś wejdzie ponownie po 5 minutach to scena sprawdzi ze pompa jest wyłączona i ją załączy. Niestety chyba trzeba będzie pomyśleć o HC2 :(
-
Podepnę sie pod temat
Mam pytanie czy da sie włączyć pompę wody poprzez naruszenie czujnika w łazience ale nie częściej niż 30 minut ??
Na chwilę obecną działa mi każdorazowe naruszenie czujki włącza pompę.
Scenę potrzebuję odpalić na HCL
u mnie to działa tak
http://100-x-arduino.blogspot.com/2017/04/proste-i-tanie-pompa-cwu-sterowanie.html
wersja z Arduino NANO - 150 zet
z bezprzewodową czujką PiR i przekaźnikiem < 30 zł
K
-
Ciekawa sprawa, ale nie chce kolejnego systemu bo mam 3 łazienki i kuchnie ;)