No właśnie to jest dla mnie największa wartość, bo jak te inne procesy w innych miejscach sprawdzają zmienną to jest aktualna. Więc to dokładnie po to robi się zmienne gloablne
Podczas innego procesu pobieramy zmienna global i w procesie mamy tą pobraną w tym momencie. jeśli chcemy w trakcie procesu sprawdzić, czy zmienna się zmieniła to pobieramy ponownie, jak nie chcemy to nie.
–
dobra chyba rozumiem, w przypadku zależności między np. różnymi zmiennymi może być istotna wartość w konkretnym momencie. Ale tu się po prostu logika procesu kłania, nic więcej.
i co z tego?
przecież jeżeli potrzebujemy w procesie zmiennej global w momencie uruchomienia to ją na początku pobieramy i wrzucamy w msg. … i co ma się zmienić?
Dla Ciebie tak ale to często jest przyczyną trudnych do wykrycia błędów ( tak samo jak podmianka msg.payload). Zachodzisz później w głowę skąd różna wartość od odczytanej.
Ok, czyli problem może być z winy użytkownika i błędnej logiki flow.
A kolega @isom1266 napisał
" Jednak przy większej ilości zmiennych, to może nieźle namieszać, szczególnie jak ktoś zapisuje zmienne do pliku."
wiec zasugerował, że są jakieś problemy z zapisem, albo nie wiem czym,
dlatego o to zapytałem
Prawie 100% problemów jakie czytam w procesach można rozwiązać prostym podpięciem pod każdy nod debuga i czarno na białym widać gdzie jest problem… Ale mało kto to robi, tylko zaraz na forum pisze że mi nie działa i wymyślajcie ludzie co jest nie tak.
Nie wiem jak jest z “global” ale jeśli w obrębie jednego flow zrobisz zapis do zmiennej (plik lub memory only) i celowo lub przez pomyłkę nazwy będą identyczne to zmienna będzie miała wartość taką jaką dostanie z jednego lub kilku nodów które zapisują tą zmienną. Zmienna nie jest rozróżniana (mimo tej samej nazwy) tak jak to jest z encjami w HA np. sensor.temp i sensor.temp1
To jest w takim razie błąd softu, tak nie powinno być, faktycznie można namieszać.
Także lepsze są global, jest tablica, widzimy jakie mamy, jakie możemy dodać itd.
koledzy a czego używacie do policzenia minut miedzy zadeklarowana godzina a aktualna?
jest na to jakiś dedytkowany nod/funkcja?
mam ustawioną godzine jako cel oraz godzine biezaca zwykle X-Y nie dziala
Problemów z zapisem nie ma, natomiast ( moim zdaniem), po to ktoś wpadł na pomysł, żeby zmienne podzielić na node , flow, global, żeby sobie ułatwić życie, a nie utrudnić.
Korzystając wszędzie gdzie popadnie ze zmiennych global, zwiększasz prawdopodobieństwo, że użyjesz identycznej nazwy w dwóch róznych flow. Jeżeli używasz zmiennych flow , to mają one zastosowanie tylko w konkretnym przepływie i taka sama nazwa w sąsiednim przepływie może sobie funkcjonować. Globalne zmienne są wygodne i sam z nich korzystam, ale do takich potrzeb jak sprawdzenie wartości Lux , gdzie mogę taką zmienną wykorzystać w dowolnej ilości flow. Natomiast gdybym zaczął Cię naśladować i w każdym przypadku stosował zmienne global, to albo przed kolejnym zapisem do zmiennej , musiałbym przejrzeć wszystkie wcześniej użyte nazwy, albo gdzieś je notować. Forma przeglądu jest mało istotna, ważne że zmusza do większej uwagi. Korzystajac z pełnej palety rodzajów zmiennych , mam fizycznie mniejszą ilość zmiennych globalnych, a że wszystkie zapisuję do pliku to nawet fullDeploy nie ma na nie wpływu
Być może kiedyś zmienię zdanie, ale na tą chwilę i przy obecnym poziomie wiedzy, uważam że tak jest rozsądniej.
PS
Tak na marginesie, możesz mi wytłumaczyć, co wnosi w Twoim flow, wstawinym w tym wątku, użycie zmiennej globalnej ? Przecież ona prezentuje tylko dwie wartości “true”, lub “false”, i są one ściśle powiązane z czasem ustawionym w delay . Do czego ją możesz wykorzystać w większej ilości flow ?
Nic nie wnosi. Tak jak pisałem, tylko dla tego że używam samych global, żadnych innych
mam podobnie zrobione w kotłowni i zmienną blokuję końcówkę innego procesu przypominania o podkładaniu do pieca
albo otwarcie drzwi kuwety, blokuje mi inny proces zapalania i przyciemniania lamp w korytarzu, tak poprostu było mi najłatwiej
fullDeploy
Może nie ma wpływu na to o czym piszesz. ale ma wpływ na wszystkie twoje przepływy w NR które są zatrzymywane i są sprawdzane, cały plik *.json jest tworzony na nowo, po czym jest ładowany do NR.
troche nie rozumiem kiedy w Java trzeba wstawiać znaki {} a kiedy nie wydaj mi się że tutaj nie musze, tak samo jak czasem spotykam się z kodami gdzie jest znak ; na koncu kazdego wiersza ale nie zawsze, czasem tez jest === zamiast ==
o co tu chodzi?