UWAGA: Strona oraz Forum Smart'ny Dom nie będzie dostępne 23 Grudnia 2024 ze względu na przenoszenie serwisu na mocniejszą maszynę.
W tym czasie polecam poświęcenie swojego czasu na pomoc partnerowi w przygotowaniu udanych Świąt 😉
Za niedogodności z góry przepraszam, admin
Witam
Mam prosty blok do sterowania grzałką w zbiorniku CWU moduł wykonawczy to EARU z Tasmota.
Blok ma za zadanie włączyć grzałkę jeśli ładowanie przekracza 1400W tak jak jest na bloczku i wyłączyć jesli spadnie poniżej.
Wszystko działa prawidłowo grzałka jest włączana i wyłączana.
Sytuacja 1: jeśli grzałka nie grzeje i wskazania są poniżej 1400W jeśli włączę ręcznie grzałkę w domoticz lub guzikiem na EARU grzałka grzeje i nie zostanie wyłączona.
Sytuacja 2: jeśli grzałka grzeje czyli została włączona przez zdarzenie blockly i ją wyłączę na EARU to po chwili zostaje włączona ponownie i jeśli znów wyłączę to znów zostaje włączone.
Dlaczego tak się nie dzieje w sytuacji 1 ? Czyli jeśli jest grzałka wyłączona i ją włącze to nie zostanie wyłączona ?
Dodaj do każdego IF sprawdzanie stanu grzałki, bo teraz nie dość że nie jest sprawdzany to jeszcze przy każdym odczycie mocy wysyłane jest ON do grzałki. Nie masz syfu w logach przez takie układanki ?
Czyli tak:
Może być tak. Chociaż warto przy tworzeniu takich bloczków brać pod uwagę co ma priorytet, w tym przypadku ma to znikome znaczenie bo blok jest bardzo prosty, ale warto zdawać sobie sprawę że chcesz sterować grzałką na podstawie nadprodukcji i to ona powinna być priorytetem czyli najpierw sprawdzasz czy takowa jest i sprawdzasz stan grzałki, jeśli nie odpowiada założeniom zostaje wysłane polecenie do zmiany jej stanu.
Czyli ustawienie kolejności w bloku od lewej ma znaczenie w bloku ma znaczenie czy dobrze rozumiem:
Czyli ustawienie kolejności w bloku od lewej ma znaczenie w bloku ma znaczenie
Ma w bardziej rozbudowanych skryptach, w twoim przypadku powinno być dokładnie odwrotnie niż zaznaczyłeś na czerwono.
Pomijam fakt że przy wartości mocy = 1400 jak ktoś włączy ręcznie grzałkę lub ją wyłączy nic się samo nie zrobi bo nie ustaliłeś takiego warunku.
Nie wspomnę już o fakcie, że sterujesz tą grzałką zwykłym przekaźnikiem i nie dałeś żadnego zabezpieczenia żeby nie klepał gdy jest duże zachmurzenie. Powinno być tak :
Gdy Moc >= 1400 grzałka = on
Gdy moc < 1400 poczekaj 1 minutę
Gdy nadal < 1400 wyłącz grzałkę
w twoim przypadku powinno być dokładnie odwrotnie niż zaznaczyłeś na czerwono.
Więc skoro odwrotnie to mam dobrze pierwsze sprawdza moc później czy stan przekaźnika i później włącza / wyłącza.
Pomijam fakt że przy wartości mocy = 1400 jak ktoś włączy ręcznie grzałkę lub ją wyłączy nic się samo nie zrobi bo nie ustaliłeś takiego warunku.
No właśnie że w tym bloku jest ok jeśli moc poniżej 1400W no nie włączę grzałki bo kliknę i po sekundzie wyłączy więc ok.
Nie próbowałem na włączonym czy jak powyżej 1400W i grzeje to jak kliknę na wyłączenie czy włączy i po sekundzie włączy.
Gdy Moc >= 1400 grzałka = on
Gdy moc < 1400 poczekaj 1 minutę
Gdy nadal < 1400 wyłącz grzałkę
Tak to masz rację mszę jakoś to zastosować.
Kolejny temat to mam zamontowane też PZEM 004 na podbór 3 faz całego domu oprócz tylko grzałek więc pasuje jeszcze dodać że np ładowanie powyżej 1400 ale jeśli dom pobiera np 1200 to żeby grzałki się nie włączyły.
Więc skoro odwrotnie to mam dobrze
Jak masz dobrze to nie wnikam, przecież to u Ciebie działa a nie u mnie.
pasuje jeszcze dodać że np ładowanie powyżej 1400 ale jeśli dom pobiera np 1200
Do tego wykorzystaj panel energii z Domoticz.
Pewnie sam obliczy różnicę na podstawie której wysterujesz grzałkę.
Nie korzystam z Domoticz więc nie wiem, ale jak widać ten serwer też daje spore możliwości i jakoś się rozwija.
Więc skoro odwrotnie to mam dobrze
Jak masz dobrze to nie wnikam, przecież to u Ciebie działa a nie u mnie.
Właśnie chciałem ustalić na przyszłość kolejność tego warunku jak układać kolejność wykonywania.
W obecnej chwili grzałka grzeje więc podszedłem do EARU i klikałem żeby wyłączyć więc wyłączy i po sekundzie od razu włączy prób zrobiłem z 5 więc wychodzi na to że w takim bloku bez dodatkowych warunków tak działa. Dlaczego ?
Nawiasem mówić o takie działanie mi chodziło aby przypadkiem włączając czy wyłączając grzałkę system sam doprowadził do ustalonego i założonego stanu wg wskazań z fotowoltaiki.
Co do panele energii Domoticza muszę dopiero dokonać aktualizacji domoticza ale skoro rozszerzy mi możliwości muszę się nad tym pochylić szybciej. Jakieś unowocześnienie.
bez dodatkowych warunków tak działa. Dlaczego ?
Jesteś na tyle doświadczonym użytkownikiem forum i domoticza, że powinieneś wiedzieć o jednym, bez wstawienia ostatecznej wersji tego skryptu, nikt nie odpowie na zadane pytanie. Chyba że znajdzie się ktoś ze szklaną kulą i zobaczy jak to masz zrobione.
Co do aktualizacji, to twoja sprawa, jak jej nie robisz zostajesz w tyle i tyle 🙂
Masz racje wrzucam skrypt bo zawsze mogłem w nim grzebać no ale jest on w takiej pistacji jak w poście 3 i 5:
No dobra moja analiza jak to musi działać:
Wyzwalaczem jest stan przełącznika grzałka, więc każda jego zmiana uruchamia skrypt, odczyt mocy ma drugorzędne znaczenie i jej wartość jest pobierana z ostatniego odczytu, ( nie mylić z aktualną mocą ) chyba że przypadkiem zmiana przełącznika nastąpiła w tym samym czasie co odczyt mocy.
Przykład działania z założeniem że odczyt czujnika mocy jest co minutę,
Zmieniam ręcznie stan grzałki na ON, zostaje sprawdzona ostatnia wartość mocy z przed np 30 sek i jeżeli była odpowiednia dla stanu ON nic się zmieni.
Jeżeli ostatni odczyt mocy był mniejszy ( nie mylić z aktualną mocą ), skrypt natychmiast wyłączy grzałkę.
Teraz sytuacja, ostatni odczyt mocy był równy 1400 , każda ręczna zmiana przełącznika grzałki zostanie olana i nic się nie zmieni do kolejnego odczytu mocy. Jeśli kolejny odczyt będzie znów = 1400 to dalej nic się nie zmieni i można ręcznie zmieniać stan grzałki.
Myślę że to wyjaśnia moje wcześniejsze sugestie. To użytkownik decyduje co jest wyzwalaczem tzn co ma priorytet =1.