Mam właśnie zamiar go użyć (choć w moim przypadku ostatni state mam “” (pusty), przedostatni “unknown” o dopiero trzeci od końca zawiera wartość liczbową - ale to pryszcz, ogarnę. Pytanie do Ciebie - jak wywołać (nie używając niebieskiego noda) te obiekty - jak odnieść się do nich bezpośrednio z kodu?
Tego jeszcze nie wiem, bo temat świeży ale nie stanowi to problemu chyba?
Ok, może szkoda czasu, myślałem że Tak właśnie je Odczytujesz (z kodu). Ale chyba szkoda czasu na specjalne szukanie - wystawię po prostu w funkcji dedykowane wyjścia , które o ile zajdzie taka konieczność wyzwolą niebieskie nody z odpowiednim zakresem historii, przetworze tą historię, wyłuskam odpowiednie dane i wyjście wrzucę do mqtt, tym samym encje te objawią sie w cache i będą już dostępne dla “ogółu” .
Chmmm - a może samo wywołanie historii spowoduje że dane pojawią się w cache? tak by wskazywała logika - sprawdzę i dam znać.
Sprawdziłem - niestety - dane się nie pojawiły.
Ok, ostatecznie zrobię to tak:
wartosc=0;
var test=-1
for(var i=ile-1;i>-1;i--){
test=parseFloat(msg.payload[i].state)
if (!isNaN(parseFloat(test))) {
i=-1
wartosc=test
}
}
pętla zatrzyma się po znalezieniu pierwszej (a w zasadzie ostatniej z historycznego punktu widzenia) wartości którą da się sparsowac do liczby zmiennoprzecinkowej. JAk nie znajdzie to zmienna wartosc pozostanie “zerem”.
Oczywiście można zastosować inną pętlę (np do…while) ale zastosowałem taką
Zero nie jest dobrym wskaźnikiem niepoprawności danych liczbowych, ponieważ może należeć do zbioru poprawnych wartości.
Tak, ale w tym przypadku przyjmuję, ze jak nie znajdę wartości, to zaczynam od zera. Poza tym nawet ostatnia wartość będąca zerem (np poprzedni init, który później nie został nadpisany przez kolejne rosnące wartości) po prostu nadpisze tutaj “świeżutko” zainicjowane zero. W zbiorze wyników będę miał ciąg zer. Ale oczywiście, w takich przypadkach należy użyć wartości, która nigdy nie wystąpi, jest to po prostu zwykła obsługa wyjątku. W moim konkretnym przypadku - przyjęcie wartości która ma zostać użyta jeżeli nie znajdę sensownej.
Ale wróćmy jaszcze do tego co zrobiłem z tą “wyłuskaną” wartością - wrzuciłem do mqtt i zgodnie z oczekiwaniem - nowy state encji pojawił się w “globalu”. zastanawiałem się czy można zamiast tego kroku po prostu w kodzie użyć:
ale nie udało się, system nie zwrócił też żadnego błędu.
@rafkan - edytor podpowiada, ze w związku z tym ze jest to trzecia odpowiedź do Robinl30, mogę wysłać mu wiadomość priv. Ale co by to wniosło do dyskusji, którą ktoś kiedyś może odnaleźć … oczywiście nie ma tu jakichś mega odkryć, ale w całości może komuś pomóc
Cześć, dzięki za zainteresowanie.
Nie mam tego w głównym kodzie - to był test odpalany z przycisku. W funkcji wpisałem jakąś wartość do zmiennej mojaWyluskanaWartosc, powiedzmy że była to wartość 1 i dalej - tak jak napisałem w poście czyli global.set …
nie udało się i system nie zwrócił błędu. Pytasz dlatego, aby upewnić się że sprawdziłem czy zmienna którą chcę zapisać do zmiennej globalnej istnieje? Tak, istnieje.
Jak wspomniałem,robiłem to w momencie restartu konfiguracji, czyli kiedy ta zmienna globalna jeszcze nie istniała w context (a dokładnie w tym momencie jest mi to potrzebne). Uznałem, że użyję mechanizmu, który na pewno “skonkretyzuje” tą zmienną - czyli mqtt (nie ma w tym specjalnego narzutu, bo te dane z liczników i tak publikuję przez mqtt). Oczywiście mam to zdefiniowane w głównej konfiguracji jako sensor.
O ile dobrze zrozumiałem?
Bezpośredni zapis do zmiennej homeassistant. może być nieskuteczny z powodu tego, że nie oddziaływuje na stan HA. Zapis może być krótkotrwały ponieważ natychmiast nadpisywany jest przez stan faktyczny HA. Zmienna synchronizowana jest jednokierunkowo. Aby to było trwałe trzeba by zrobić to przez usługę.
Zapis może być krótkotrwały ponieważ natychmiast nadpisywany jest przez stan faktyczny HA
No i tu jest sensowna myśl. System nie zwrócił błędu - bo zapisał, ale jednocześnie zaraz ta zapisana wartość została zmieniona przez HA. Jednak trochę to dziwne, - wychodzi na to ze te zmienne sa “jednokierunkowe” na logikę - po co byłby dostępny set z poziomu NR?, Dobra, myślę że to wyczerpuje potrzebę dalszego drążenia
To jest funkcja właściwa dla “całego” NR i jak wiesz służy o operacji na zmiennych kontekstowy - nie wie kto jest faktycznym “właścicielem” zmiennej. Nie ma żadnego związku z tym, czy używasz lub nie paczki HA