Witam,
Potrzebuję Waszej pomocy. Mam urządzenie Inode(pomiar energii) podpięte do domoticza i chciałbym ułożyć warunek, że jeśli wartość będzie wyższa niż np.2000W przez 30minut (próbkowanie z urządzenia jest wysylane do domoticza co 10minut) to zostanie wysłany e-mail z ta informacją.Z góry dziękuję za to pewnie trywialne rozwiązanie, które mnie przerasta.
@rafal_sz trzeba utworzyć sobie dodatkowego pomocnika w postaci zmiennej użytkownika nazwanej dowolnie a typ liczba całkowita.
I sobie robisz
IF Inode > 2000 and zmienna ( nie równa się 1)
SET zmienna = 1 po 30 min
ELSEIF Inode> 2000 and zmienna = 1
SET e-mail send
SET zmienna = 0
Musisz tylko wiedzieć że zawsze dostaniesz powiadomienie gdy wartość mocy będzie przekraczać 2000W .
Czy powinno to wyglądać tak (załącznik)? Bo niezależnie jaki czas wpiszę to dostaję co kilka sekund maila po przekroczeniu wartości 2000.
Pomimo zmiany, coś nie działa. Nie mam wysyłanych e-mail-i. Chyba zmiana zmiennej nie reaguje pomimo spełnionych warunków (Inode>limitu i czas)?
Czy wartość zmiennej powinna się zmieniać w tym widoku dynamicznie (załącznik), czy może być jakieś opóźnienie w pokazywaniu aktualnego stanu?
@rafal_sz zmienna ma obowiązek zmienić się w tym widoku po ustawionym czasie i aktualizacji odczytu z tego iNode , pod warunkiem że pobór jest > 2000W . Nie wiem czy wziąłeś pod uwagę czas aktualizacji tego iNode , ale po południu wstawię przykład blockly , który załącza alarm jak pobór jest za duży
Czyli zmienna sprawdza wartość "poboru energii" w momencie przesłania z Inode-a czy tez w sposób ciągły porównując się do ostatniej wartości w czasie rzeczywistym jak jest "wyświetlana" w domoticzu?
Dodam tylko że Inode przesyła wyniki do domoticza (update) co 10 minut.
@rafal_sz W skryptach blockly wyzwalaczem może być czas , albo urządzenie aktualizujące swój stan czyli wszelkiego rodzaju czujniki , mierniki , przełączniki itp , zmienne są tylko pomocnikami w ustalaniu logiki , a aktualizują się na podstawie wyzwalaczy w Twoim przypadku na podstawie wysyłanych danych przez iNode . Biorąc pod uwagę powyższe zmiana wartości zmiennej może nastąpić dopiero kiedy Twój wyzwalacz zaktualizuje stan, minie ustawiony przez Ciebie czas i wartość wskazywana przez iNode przekroczy, lub będzie 2000W. Najprościej mówiąc zmienna ustawi sie na 1 po 11 minutach jak zostaną spełnione wszystkie warunki. i po takim czasie zostanie wysłany mail. Wyjątek może być przy pierwszym odpaleniu skryptu , bo nie wiadomo ile czasu zostało do zaktualizowania się iNode od kliknięcia "zapisz"
Poniżej przykład , który sprawdziłem u siebie i działa na 100%
No to wszystko jasne, zaczęło działać. Wklejałem nie ten rodzaj "puzzli" dla pola wartości.
Dzięki!
A czy da radę ustawić, żeby dopiero np. po piątym odczycie z inode-a powyżej limitu była wysyłana informacja?
@rafal_sz jak w pierwszym ELSEIF zamiast send mail wstawisz set zmienna = 2 after 5 sek a w trzecim ELSEIF wstawisz send mail to dostaniesz powiadomienie dopiero po drugim odczycie . Jak to rozbudujesz to możesz zrobić że dopiero po którymś odczycie wyśle maila