Zaluzje fasadowe i przełącznik BSEED_TS0601_cover

Cześć,
Jakis czas temu pojawiła sie aktualizacja i w MQTT zacząłem rozpoznawac urządzenie BSEED_TS0601 czyli mój przełącznik do sterowania żaluzjami.
Wszystko jest miło, mogę myszka kliknąć w MQTT i puścić w dół, w górę, zatrzymać… nawet pokazuje procentowo pozycję:

Jednak kiedy chcę zrobić coś w node red, coś prostego, żeby ustawić na przykład otwarcie żaluzji na pozycję 50% ( w połowie okna) no to jest to już dla mnie problem.

podaję domenę “cover” serwis: “set_cover_position” i w JSON wrzucam {“position”:“50”} i… nic,
jest głucho.
mogę dać serwis open_cover, close_cover ale teoretycznie na liście mam do wyboru serwis set_cover_position i pojawia mi się wówczas dostępny parametr “position”

Generalnie to mierze się już drugi rok chyba z tymi żaluzjami, najpierw MQTT nie widziało tych przełączników a teraz kiedy juz widzi to trochę olałem node red, nieco zapomniałem jak sie tam robiło i czuje że się kręce w kółko… może jest ktoś kto przerabiał już coś z tymi urządzeniami i jakoś potrafi zmusić żeby sterowanie uruchamiało się u zatrzymało na jakiejś zadanej pozycji “current_position” czy coś…

spróbuj {“position”:50}

tak samo głuchy… zastanawiam sie czy nie musze tego robić jakimiś opcjami typu: jeżeli pozycja jest = 75 a chcesz przejść do pozycji 50 to 75-50 = 25 → uruchom opuszczanie na 25 sekund czy coś w ten sposób.
Ale jest jeszcze jedna rzecz: żaluzje to łopatki, kiedy jadą do góry to zawsze będą jechały poziomo a kiedy jadą w dół to jadą ułożone w pion.
po zatrzymaniu jazdą w dół sa zamknięte i aby je otworzyć do poziomu ( swiatło wpada) trzeba je “cofnać” i analogicznie kiedy jada w górę i chcemy je po zatrzymaniu zamknać lub przymknać.
Ten moment kiedy one zmieniają swoją polaryzację odbywa się zawsze w zwolnionym tempie. zupełnie nie mam koncepcji jak nad tym panować. Chciałbym zrobić tak, że mam tryb “rano”: łopatki po prostu otwierają się poziomo, tryb noc: łopatki zamykaja się na całym oknie, tryb wichury: żaluzja jedzie w górę i całość chowa się do skrzynki w elewacji, tryb “mniej słońca” kiedy żaluzja jedzie tak na 75% w dół i lekko po zatrzymaniu uchyla łopatki, wpuszczając ograniczona ilość światła…
No i sa przełączniki manualne na ścianie, zawsze ktoś może ręcznie przestawić.
Dość skomplikowany temat…

Rozumiem, że ustawianie pozycji z poziomu samego HA działa prawidłowo?
W tym przypadku zawsze możesz zobaczyć w MQTT w jaki sposób ustawiony jest ładunek i zamiast
ustawiać je na drodze NR<>HA<>MQTT<>ZeegBee, za pomocą węzła mqtt_out wysłać to bezpośrednio (choćby tylko na próbę).
Będziesz miał wtedy porównanie jak robi to HA a jak próbujesz Ty.
NR<>MQTT<>ZegBee.
Trzeba ustawić msg jak w dokumentacji:

Aby zmienić pozycję opublikuj wiadomość w temacie zigbee2mqtt/FRIENDLY_NAME/set 
z payloadem {"position": VALUE}gdzie VALUEjest liczba pomiędzy 0a 100.

Opisywany przez Ciebie sposób jest zupełnie prawidłowy, zataiłeś tylko jakąś informację dodatkową.

Tak jak wyżej , żaluzja musi być widoczna w HA wraz z jej atrybutami


Może też wymagać kalibracji, do poprawnej pracy . Jak to już jest ok , to musi działać
U mnie wszystko działa dla różnych rolet w tym am43 MOES zigbee

Trochę sie motam z tym…

w HA widać to tak.

Próbuję machnąć jakiś skrypt ( tam gdzie sie robi sceny itd…) tez nie bardzo mogę ustawić żeby poleciał do konkretnej pozycji.
mogę je puścić w gorę lub w doł i ruszą i jadą… musze puścić komende stop żeby stanęły.
podczas kiedy jadą w NR próbowałem podglądać czy na bieżąco podaje current position ale nie.
position i current position jak na razie zawsze mi pokazuje takie samo. zakładałem, że skoro są dwie zmienne to jedna podaje aktualną a druga nie wiem… docelową? czy coś.

w JSON próbowałem i z cudzysłowami i bez, nie bangla mi toto :slight_smile:

chyba oleje to na kolejne dwa lata, może pokaże sie jakaś lepsza aktualizacjia albo nie wiem :slight_smile:

a w międzyczasie może ktoś ma NR jakiś przykładowy gdzie jest jakaś pętelka czasowa zrobiona, że jak puszczam ruch żaluzji w górę czy w dół to żeby po drodze był klocek, który zrobi mi delay o zadaną ilość sekund ( ta sobie policzę z current position i docelowej position ) tak, żebym po tym delay mógł zrobić stop.
To mi juz jakoś rozwiąże sprawę, pewnie wieśniacko ale coś będzie działać :slight_smile:

…to nic nie zmieni skoro tego nie czujesz :wink:
Znajdź w MQTT wpis podobny do tego poniżej - tylko dotyczący twojej żaluzji ( ja nie mam więc przykład dotyczy dimmer)

Tylko nie pomyl MQTT z ZeegBee !!! - bo to mylisz

Użyj do tego MQTTExplorer

… w jaki sposób? … jeśli z noda event state, to źle

To już jak robie z siebie lamusa :slight_smile: to dopytam, czy chodzi o tą pozycję z menu zigbee2mqtt czy właśnie teraz mylę zigbee z mqtt ?

Tak, mylisz.

W tym wątku pojawiły się 4 całkowicie niezależne od siebie serwery:

  1. NR

  2. HA

  3. Zigbee2MQTT, w skrócie można go nazywać Z2M by było mniej pisania, de facto można by się przyczepić czy to Zigbee czy nie Zigbee (bo tu po drodze jest jeszcze jeden segment), ale nie utrudniajmy sobie życia - ten serwer zajmuje się przekazywaniem i tłumaczeniem komunikacji Zigbee (tej między koordynatorem a urządzeniami Zigbee) na komunikację MQTT z której mogą korzystać inne serwery. Patrząc na sytuacje z pozycji jego GUI nie ma tam żadnego MQTT (poza opcjami konfiguracyjnymi oczywiście), a jest właśnie Zigbee.

  4. MQTT (de facto chodzi o broker MQTT, prawdopodobnie Mosquitto, ale może być i inny) ten serwer pełni rolę jakby centrali telefonicznej (to nie jest najtrafniejsze porównanie ale nic innego mi się nie nawinęło, pisanie o nim jako o serwerze poczty czy newsów albo komunikatorze chyba nie rozjaśni sytuacji) - realizuje połączenia między każdym serwerem który dysponuje możliwością komunikacji protokołem MQTT (też śliskie porównanie, no ale skoro to ma być centrala telefoniczna…).

oraz zewnętrzny klient

  1. MQTT Explorer (aby było weselej, nie musi być zainstalowany na osobnym komputerze, wręcz można go zainstalować w HA i to również w formie Dodatku, czyli kolejnego kontenera, tak jak kilka serwerów o których tu mowa), zasadniczo to jest klient, ale pewne funkcje w nim dostępne pozwalają myśleć o nim też w kategorii serwera. Oczywiście on też się komunikuje jedynie po MQTT.

Serwery 1. 2. i 3. mogą komunikować się po MQTT.
Serwery 1. z 2. mogą się komunikować też bezpośrednio po API.
Serwer 3. jak sama nazwa wskazuje ma tylko jedną drogę komunikacji jest nią MQTT.

To co pokazałeś na obrazku to link do GUI serwera Z2M.

Obsługiwane komendy: {"state": "OPEN"}, {"state": "CLOSE"}, {"state": "STOP"}

Pozycja %

W mojej jest jeszcze kalibracja, Calibration, Motor_reversal, Backlight_mode, Calibration_time

szopen dzięki za opis, musze go jeszcze kilka razy przeczytać żeby to zrozumieć ale daje mi to już jakiś obraz.
No cóż… kilka dekad życia spędziłem z bazami danych a tych obszarów nie dotykałem, teraz człowiek jest nieco “wypaczony” myśleniem i ma na dodatek sporo braków :smiley:

artpc napisałeś, że obsługuje komendy open, close, stop. No i pewnie tak to właśnie jest, że nie pokombinuję z position.

Obsługuje to co jest w exposes danego modelu na stronie Z2M.
‘’‘Exposes: cover (state, position), linkquality’’’’
Czyli pozycja też jest obsługiwana przez twój przełącznik, jak pokazałem na rysunku nr.2

Screenshot - 08.07.2023 , 04_40_27

Kod:

[{"id":"23ae1111391e4161","type":"inject","z":"3212da9e.c051c6","name":"Pozycja Rolety","props":[{"p":"payload"},{"p":"topic","vt":"str"}],"repeat":"","crontab":"","once":false,"onceDelay":0.1,"topic":"","payload":"","payloadType":"date","x":1560,"y":480,"wires":[["3b193e2743f71644"]]},{"id":"3b193e2743f71644","type":"change","z":"3212da9e.c051c6","name":"pozycja | payload","rules":[{"t":"set","p":"payload","pt":"msg","to":"60","tot":"json"}],"action":"","property":"","from":"","to":"","reg":false,"x":1750,"y":480,"wires":[["6d43b88f9eae6722"]]},{"id":"6d43b88f9eae6722","type":"api-call-service","z":"3212da9e.c051c6","name":"Set Blind Position","server":"1be24b09.4dad55","version":5,"debugenabled":false,"domain":"cover","service":"set_cover_position","areaId":[],"deviceId":[],"entityId":["cover.ster_z_zaluzje"],"data":"{\"position\":\"{{payload}}\"}","dataType":"json","mergeContext":"","mustacheAltTags":false,"outputProperties":[],"queue":"none","output_location":"","output_location_type":"none","x":1990,"y":480,"wires":[[]]},{"id":"1be24b09.4dad55","type":"server","name":"Home Assistant_2022","version":5,"addon":true,"rejectUnauthorizedCerts":true,"ha_boolean":"y|yes|true|on|home|open","connectionDelay":false,"cacheJson":true,"heartbeat":false,"heartbeatInterval":"30","areaSelector":"friendlyName","deviceSelector":"friendlyName","entitySelector":"friendlyName","statusSeparator":"at: ","statusYear":"hidden","statusMonth":"short","statusDay":"numeric","statusHourCycle":"h23","statusTimeFormat":"h:m","enableGlobalContextStore":true}]

bawiłem się z tym przykłądem, który Arturpc mi tutaj pokazałeś.
jeżeli próbuję korzystać z tego:

wówczas mogę ruszyć żaluzjami za pomocą przycisków open/close/stop.
suwak generalnie jakby nie zdziała nic poza prezentacją finalnej pozycji po zatrzymaniu żaluzji.

Jednak w NR chyba mam inny problem.
Nie pamiętam już kiedy i dlaczego ale mam chyba za dużo serwerów.

dla odróżnienia jednemu dodałem kropkę na końcu, kiedy go wybiorę i deploy puszczę to rzygnie mi błędami i zasadniczo widać potem tam w tle pod nodem call error.
kiedy wybiorę tegobez kropki to nie pojawi mi się error, pod nodem będzie komunikat na zielono ale żaluzją i tak nie ruszę takjakbym chciał.

Zastanawiam się czy to nie jest przyczyna, może to jest ta “zatajona informacja dodatkowa” , o której wspominał wyżej RobinI30…

gdzie się tego mogę pozbyć? bo nawet nie kojarze kiedy i jak ja to dodałem…

W NR Info, potem Global Configuration Nodes, server i usuwasz wszystkie serwery , oprócz swojego, będzie miał najwięcej nodów.


Te dodatkowe serwery zassałeś importując flow od innych użytkowników.
Co do niedziałającego suwaka w Z2M , to skoro tam nie działa, dlaczego niby NR miałby go ożywić?
Nie ma takiej możliwości. Robiłeś kalibrację tych modułów ? Może tam jest pies pogrzebany.

hm… kalibrację robię jedynie na samym włączniku żaluzji, czyli trzyma się tam przycisk, miga, jedziemy do dołu, stopujemy, potem to samo z samego dołu na samą górę i powinno być ok.
Innej nie robiłem, nie wiem czy jakąś po stronie HA można jeszcze robić?

Tak ale inaczej, czytałeś dokumentację:
“Kalibrację można wykonać ręcznie, naciskając i przytrzymując przycisk pauzy, aż zacznie migać, a następnie naciśnij otwórz i odczekaj wymagany czas, a następnie ponownie naciśnij otwórz”
czyli kalibracja jest z pozycji zamkniętej rolety, potem przytrzymujesz przycisk pauzy, aż zacznie migać, następnie naciśnij otwórz i odczekaj wymagany czas do całkowitego zamkniecia rolety, a następnie ponownie naciśnij otwórz aby zakończyc proces kalibracji. Czas między tymi dwa naciśnięciami przycisku otwórz to czas potrzebny na otwarcie rolety.
Uwaga: faktyczny czas zamknięcia rolety może być krótszy od “skalibrowango” czasu zamykania rolety na co może mieć wpływ wagi samej rolety.

A nie masz wrażenia, że kalibracja to tylko wpłynie na precyzje poruszania żaluzja a nie na to że ona w ogóle nie chce zareagować na “position:xx” ?

Bo mi się wydaje, że powinno byle jak ale w ogóle reagować.

Bez prawidłowej kalibracji włącznik nie wie czym steruje, więc nie może ustawić tego czym steruje w wymaganą pozycję, przecież można ten sam włacznik, zamontować do rolety tarasowej o długości 2m i do roletki na oknie 60 cm .

zrobiłem kalibracje tak jak piszą.
żaluzja porusza się w zakresie od 0 do 100
za każdym razem jak uzyję opcji “open” lub “close” w

żaluzja ruszy i będzie szła.
muszę uzyć stop aby zatrzymała się.
Aby odczytać bieżącą pozycję muszę przeskoczyć po kartach i wrócić. wówczas suwak się ustawi.

Podobnie mam w NR.
mogę zrobić układ gdzie nody mi ruszą żaluzją w dół lub w górę i będzie ona jechałą.
Aby ją zatrzymać musiałbym zrobić jakiś warunek na opóźnienie i wywołać opcję “stop”

nigdzie mi te “position” nie chce zaskoczyć niestety.

Kurczę, przełącznik kupowałem od jakiejś polskiej firemki, nawet mi wymienili na jakiś inny model z lepszym oprogramowaniem na samym początku, żeby pod HA to lepiej mogło zadziałać… (chyba z kalibracją wcześniejsze miały kłopoty)

mam wrażenie, że w moim przypadku to po prostu nie ruszy… robił ktoś w NR skrypt zawierający opóźnienie czasowe? coś że jeden nod wywołuje akcję, kolejny odczekje zadany czas po czym wywołuje kolejną akcję i skrypt jedzie dalej…
start → odczytaj stan żaluzji → jeżeli stan jest poniżej 50 wykonaj akcję zamykania → odczekaj 20 sekund → wykonaj akcję zatrzymania żaluzji → odczytaj stan żaluzji → koniec.

Tak działa ?