Po przeczytaniu pierwszego postu muszę trochę więcej wyjaśnić.
Mam bramę, która w napędzie w sterowniku (ROGER B70/1DC) ma ustawione automatyczne zamykanie. Użytkownik może więc ją tylko otworzyć albo z pilota albo z SBW-02. Kanał przekaźnika w SBW-02 jest ustawiony jako funkcja
Otwieranie drzwi po to aby w aplikacji była tylko etykietka/przycisk
Otwórz a nie
Otwórz/Zamknij jak to w funkcji
Otwieranie/zamykanie bramy wjazdowej jest zrobione. Kanał przekaźnika ma ustawiony czas załączenia na 0,5s. Jest podpięty również czujnik otwarcia więc stan ikonki się zmienia gdy brama zaczyna się otwierać. To jest i działa super.
// -------------------
W tym miejscu chciałbym zasygnalizować potrzebę powstania kanału bramowego gdzie będzie możliwość ustawienia dwóch przekaźników (sbw-02 ma tylko dwa) pod jeden kanał i akcje typu
otwórz całą,
otwórz częściowo,
otwórz na stałe z predefiniowanymi etykietkami lub na grubo jak w KPOP gdzie byłaby możliwość wpisania swoich labeli. ROGER ma dedykowane wejścia impulsowe do tego i można fajnie to rozdzielić pod dalsze harmonogramy i integracje. Ale to temat na inny post.
// -------------------
Następnie opiszę co chciałbym zrobić aby móc logować w pliku kto i kiedy otworzył bramę z aplikacji.
Mam sd4linux, na którym są wirtualne przekaźniki typu
CmdRelay. Ich funkcja też jest ustawiona na
Otwieranie drzwi aby user mógł je tylko otworzyć. Tych przekaźników jest tyle ile użytkowników (przyjmijmy, że 10). Jest też 10 lokalizacji i 10 identyfikatorów dostępu. Każdy
CmdRelay jest przypisany do jednej
lokalizacji i jednego
identyfikatora dostępu. Dzięki temu każdy user widzi tylko jeden i tylko swój przekaźnik (mając wrażenie, że u każdego jest tak samo). Włączając go loguje do pliku moment włączenia przez:
Code: Select all
cmd_on: "date +'%d.%m.%Y %T' >> /home/supla_logs/relay_<user_name>.log"
Na chwilę obecną nie mam innego pomysłu skąd wiedzieć kto włączył przekaźnik, próbowałem przez MQTT coś wyciągnąć ale nie ma info od kogo przyszedł request na włączenie (choć w aplikacji widać, że ktoś coś włączył jeżeli w tym samym momencie mamy ją uruchomioną). API jeszcze nie próbowałem. W każdym razie mam teraz pliki z datami i godzinami włączenia tych wirtualnych przekaźników na linux'ie.
Idąc dalej, mając 10 tych przekaźników z opcją
cmd w sd4linux mam je i tyle

- nie są połączone z fizycznym sprzętem bo przecież są wirtualne. Pierwsze co nasuwa się na myśl jest spięcie ich przez
Reakcje w Cloud. Okazuje się jednak, że taki wirtualny przekaźnik o funkcji
Otwieranie Drzwi w swoich
Reakcjach nie ma nic co można wykorzystać

Ma tylko reakcje na status połączenia...
Kolejną opcją jest zatem stworzyć w YAML kanał
ActionTriggerParsed, który według dokumentacji na GitHub może być połączony z przekaźnikiem wirtualnym typu
CmdRelay i można wywołać akcję na serwerze Supla Cloud w momencie gdy ten wirtualny przekaźnik zmieni stan z 0 na 1. I to chcę zrobić aby w Cloud dla tego kanału o funkcji
Wyzwalacz akcji (który jest spięty z CmdRelay w YAML) ustawić w momencie SUPLA_ACTION_CAP_TURN_ON (
0) kanał fizycznego przekaźnika z SBW-02. Screen poniżej bo do tego momentu to mam i jest widoczne w Cloud.
Otwórz całkowicie to przekaźnik z SBW-02.
at_trigger.png
Teraz po zapisaniu zmian wystarczy się np. wylogować z konta, (sd4linux robi reconnect), zalogować się ponownie i w wyżej wymienionym
Wyzwalaczu akcji jest pusto jak na wcześniejszym screenie z postu wyżej. Po prostu znikają opcje które jeszcze przed chwilą mogłem ustawić. Nie mówię już o tym, że włączenie tego
CmdRelay nie powoduje żadnej akcji na fizycznym przekaźniku w SBW-02 choć przed chwilą to właśnie spiąłem w Cloud (ale zniknęło).
I tu zaczyna się historia z mojego pierwszego postu, w którym to opisuję, daje log z SSH linuxa oraz odpowiedź z AI co może być nie tak patrząc na log. Według mnie coś tu jest nie tak z procedurą AT Capabilities, że urządzenie zgłasza co może a serwer to ignoruje albo przesyła inne/puste? To jest moja prośba do
@klew aby to przeanalizował pod kątem ew. buga. Jestem też oczywiście otwarty na inne propozycje jak spiąć wirtualny przekaźnik z prawdziwym. Wiem, że mogę po prostu w komendzie dać curl'a z linkiem bezpośrednim albo mosquitto_pub aby przez MQTT wysłać polecenie włączenia fizycznego przekaźnika ale nie ukrywam, że ustawianie tego przez Cloud jest najwygodniejsze.
You do not have the required permissions to view the files attached to this post.