Pierwszy Inject Node wysyła wartość “a” co 5,40 sek.
Drugi Inject Node wysyła wartość “S” co 4,60 sek.
W pewnym momencie czasy wysyłania nakładają się na siebie i powstaje konflikt, wartości zwracane przez regulator są nieprawidłowe. Do podglądu na żywo to nie przeszkadza, ale “psuje” to wykresy i stają się bezwartościowe.
Ustawiałem już rózne czasy, ale zawsze w którymś momencie dane się nałożą w tym samym czasie.
Najlepiej gdyby się dało zrobić to tak:
Wysyłam “a”, regulator zwraca wartość, nastepuje przerwa 1-2 sek. po czym wysyłam “S”, znowu nastepuje przerwa 1-2 sek i tak w kółko. Taka pętla. Ale nie umiem tego zrobić.
Na logikę powinno zadziałać. I nawet próbowałem w ten sposób to zrobić wcześniej. Ale napotykam przy tym na inny problem.
Powiedz mi proszę jak ty połączyłeś “Delay node” z “Inject node”?
Przed “Inject node” nie da się niczego dowiązać.
U mnie się tego nie da zrobić za żadne skarby świata.
Próbuje na wszelkie sposoby i nic.
Spójrz proszę na link:
Połącz wyjście pierwszego RS485 przed delay z wejściem drugiego.
Napędzaj to tylko jednym (pierwszym) inject.
Oczywiście wróżenie z obrazka mówi mi, że będziesz musiał ustawić jeszcze msg.payload = “S”
Naucz się załączać coś więcej niż screen
W dalszym ciągu będzie problem z zatrzymywaniem i wznawianie pracy.
Cały flow powinien być tak skonstruowany aby zawierał tylko jeden nod RS485 np. przez zrobienie kolejki do wysłania, ale…
Tworzenie pętli nie jest zalecane.
Opcja kolegi @RobinI30 wydaje się najsensowniesza, tylko przy tak częstym wysyłaniu danych ( co 5 sek) nod delay bym zastąpił triggerem . Tak mnie uczył jeden kolega z tego forum i uważam, że miał rację.
@MariuszAK … fajna sztuczka Jednak rekurencyjne wywołanie samej siebie doprowadzi do tego, że skończy Ci się pamięć. Tworzy się sterta obiektów w których nie ma warunku końca.
Taka hipoteza …
Zapuść ten proces na dłużej i sprawdź co dzieje się z pamięcią.
To go wywal
Działa to tak… wywołując funkcje - na stos odkładany jest adres powrotu, po to aby po zakończeniu wywoływanej funkcji wiadomo było gdzie wrócić. Przy takiej konstrukcji, na końcu wywoływana jest kolejna… i kolejny adres ląduje na stosie, nie ma takiego miejsca aby cały stos wyzerował się do stanu początkowego. Prędzej lub później stackoverflow.
Zrobiłem tak jak zaproponował kolega RobinI30, czyli poprzez “Delay node” i “Change node” i wygląda na to że działa poprawnie
Być może da się to zrobić lepiej, ale dla mnie jako początkującemu to rozwiązanie wystarcza i jestem zadowolony.
Dzięki wielkie za pomoc.
Jeśli ktoś posiada “Regulator grzałek MEGA PWM MPPT 3kW 13A” to wrzucam plik z gotowcem. Może komuś się przyda. Wyciągnięte wszystkie dane jakie można wyciągnąć z tego regulatora po RS485.
Hmmm narazie nie zabserwowałem problemu podczas naciskania przycisków wznowienia/zatrzymania. Na naciśniecia w HA regulator reaguje odrazu. Nic się nie “krzaczy”.
Ale masz rację, w teorii może wystąpić konflikt. Gdy nacisnę wznowienie/zatrzymanie w tym samym momencie co będzie wysyłał “a” lub “S” mogą pojawić się fałszywe dane. Mało prawdopodobne co prawda, bo ze zdalnego wznowienia lub zatrzymania raczej sporadycznie będę korzystał, ale jednak możliwy scenariusz.