Błąd Call-service API error

W ramach poznawania NR, napisałem sobie funkcję która ma sterować jasnością światła.


“fun2” działa zgodnie z oczekiwaniami, natomiast “fun 1” też działa (steruje jasnością i pozwala wyłączyć światło), ale przy każdym wywołaniu w debug pojawia się CALL-service API error
flows (5).json (5,7 KB)
czy ktoś mógłby mi wytłumaczyć dlaczego? nie jestem programistą, ale ja różnicy logicznej nie widzę, a mimo to funkcje zachowują się inaczej, no i dlaczego mimo zwracanego błędu działa sterowanie?

Postaram się jutro na to spojrzeć

U mnie to wyglada tak
“Call-service API error. Error Message: expected int for dictionary value @ data[‘brightness’]”
Błąd ten pojawił się po którejś aktualizacji.

Ustaw sobie jak na poniższym obrazku

Screenshot - 14.10.2020 , 03_01_36

w funkcji z przyciskiem nie zapisujesz watrosci do flow:

if (funkcja == 'long')
{
    jasnosc = 1;
    msg.jasnosc = jasnosc;
}

to powoduje, że przy kolejnym wywołaniu odczytywana wartość jasności z karty Flow jest z stanu przed naciśnięcia przycisku w trybie LONG

@artpc tak mam skonfigurowane, za wyjątkiem tego że będę chciał w tej funkcji sterować również barwą dlatego jako parametr do brightness nie mogę dać payload

@Marcin_Domański wiem, celowo tak jest zrobione, długie naciśnięcie ma spowodować wyłączenie światła, ponieważ chce całe sterowanie schować w jednej funkcji, to taki sposób wyłączenia sobie wymyśliłem (dla parametru brightness poniżej 30 lampa wyłącza się), natomiast zapisana w pamięci ma być wartość ostatniej jasności, tak żeby nie startować od zera. Muszę robić to sterowanie tak na około, bo to tuya, opóźnienia są tak duże że nie ma mowy o odczycie obecnej wartości jasności, zmianie i wysłaniu nowej do lampy tak jak to robił @artur w swoim pzykładzie

@artur z góry dziekuje, na chwilę obecną poradziłem sobie zamieniając if na switch, błędu już nie mam i całe sterowanie działa OK, ale chętnie dowiedziałbym się dlaczego w jednej funkcji błąd pojawia się a w drugiej nie.

Jeszcze jedno pytanie przy okazji, jeśli funkcja wypracowuje dwie lub więcej zmiennych, które potem czymś sterują, np. jak u mnie msg.jasnosc i msg.barwa, to czy można jedną wartość wyprowadzić na jedno wyjście a drugą na drugą? próba w stylu return[jasnosc,barwa] nie powiodła się

a możesz mi jeszcze dać wynik debug z tego nodu “przycisk”. Rozumiem, ze tam w payload jest single/double ale jak byś mógł mi dla pewności wysłać będzie prościej

Jak podłączam swój przycisk pod Twój proces to wszystko działa bez błędu. Więc jak na razie nie udaje mi się tego odtworzyć. Z punktu widzenia kodu wszystko wygląda dobrze. Daj znać czy dalej masz ten problem (gdy zmienisz switch na funkcje) ewentualnie tak jak prosiłem wcześniej podaj mi dokładny wynik obiektu msg z przycisku

To ja wtrące tak trochę pobocznie. Nie próbowałeś zmienić w żarówce softu, za pomocą tuya-convert, na Tasmote? Ja tak zrobiłem ze swoją ze softem Tuya i mam jasność od 1 do 100% sterowanie przez mqqt i opróżnienia na poziomie poniżej 1s. Ale zmian nie mogę dokonywać częściej niż 1x na sekundę.
Poniżej 20% faktycznie widoczne jest dla oka “drganie światła”, ale jest możliwe i zależy od tego czy w dzień czy w nocy.

@Marcin_Domański nie, nie próbowałem… trochę podchodzę do tego jak “pies do jeża” jestem sprzętowcem, więc wolałbym zrobić to lokalnie programatorem, a do tego trzeba zdjąć plafon… do tego z tego co poczytałem to jest spore niebezpieczeństwo że sprzęt z nowym softem tuya nie pójdzie zdalnie, a wolałbym nie uwalić plafonu… żona zabije :slight_smile:

@artur
tu kompletny msg
{“topic”:“sensor.0x00158d000279e9a1_click”,“payload”:“single”,“data”:{“entity_id”:“sensor.0x00158d000279e9a1_click”,“old_state”:{“entity_id”:“sensor.0x00158d000279e9a1_click”,“state”:"",“attributes”:{“battery”:100,“click”:“single”,“linkquality”:55,“voltage”:3022,“friendly_name”:“0x00158d000279e9a1_click”,“icon”:“mdi:toggle-switch”},“last_changed”:“2020-10-13T16:23:04.593895+00:00”,“last_updated”:“2020-10-14T07:05:42.929211+00:00”,“context”:{“id”:“ac9ba5a10deb11eb9eb39f907becdcad”,“parent_id”:null,“user_id”:null}},“new_state”:{“entity_id”:“sensor.0x00158d000279e9a1_click”,“state”:“single”,“attributes”:{“battery”:100,“click”:“single”,“linkquality”:55,“voltage”:3022,“friendly_name”:“0x00158d000279e9a1_click”,“icon”:“mdi:toggle-switch”},“last_changed”:“2020-10-14T07:05:42.940301+00:00”,“last_updated”:“2020-10-14T07:05:42.940301+00:00”,“context”:{“id”:“ac9d5acf0deb11eba347cf850113b1eb”,“parent_id”:null,“user_id”:null},“timeSinceChangedMs”:398}},"_msgid":“8307f2ff.a7b11”,“jasnosc”:155}
tyle że marnie to widać… nie wiem jak pokazać to lepiej (zrzut ekranu nie obejmuje całości)
zauważyłem że błąd pojawia się wtedy gdy przypisanie wartości do msg (np. msg.jasnosc) odbywa się w zakresie funkcji if, jeśli natomiast tam zmieniam wartość zmiennej, a do msg przypisuje bezpośrednio przed return msg to wszystko jest ok

spoko chyba mi to wystarczy. Dam znać czy mi się udało to odtworzyć.

@Robert_Król męczę na wszystkie sposoby tą funkcję i nie mam błędu. To musi być coś konkretnie u Ciebie. Jedyne co mi przychodzi do głowy to sesja na teamviewer.

zawsze możesz to zrobić kiedy jej nie będzie w domu i w razie czego powiedzieć że się skończyła :sunglasses:. A na poważnie, ja też myślałem że uwaliłem żarówkę przez WiFi, okazało się że potrzebuje trochę więcej czasu by wstać

Chyba nie warto zawracać sobie głowy i tracić czasu, udało mi się znaleźć rozwiązanie które działa i nie generuje błędów. I tak musiałem jednak użyć nodu switch, bo inaczej musiałbym każdą możliwą akcję swojego przełącznika uwzględnić w funkcji switch, robiło się to mało czytelne.
Teraz zrobiłem sobie oddzielne funkcje do jasności i barwy, a wyzwalam je z konkretnych wyjść switcha, wszystko działa jak chce, a co ważniejsze nie generuje błędów
tak to teraz wygląda

1 Like

sek w tym że ten plafon mi też się podoba… jak go montowałem to nie wiedziałem o tych problemach z komunikacją tuya wifi :frowning:
jakbym miał panel na stole to pewnie bym już przeprogramował, a tak to teraz wygrywa lenistwo… :slight_smile:

Jeśli to nie problem to napisz co to za plafon, sam uzbrajam dom w oświetlenie i obecnie idę w kierunek smart

jasne, mam dwa rodzaje plafonów, większy od spectrum smart (nymphea) ~150PLN (~50cm 36W (bodajże), drugi mniejszy ale z RGB od LSC (kupiony w Action) ~69PLN
Oba integrują się bardzo fajnie z HA, można nimi sterować poprzez NR, tylko trzeba pamiętać o ograniczeniach tuya.
Najważniejsze to że nawet przy minimalnej jasności nie migają

Przeniesiono do nowego wątku.
(Call-service error)