Komunikacja między urządzeniami

KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

Poruszałem ten temat już kilkukrotnie, ale ponowię (czyli jak widać rozwiązanie może być przydatne - przynajmniej dla mnie... :) ).
Najpierw opisze przypadek. Przyszła mi potrzeba zrobienia wyłącznika światła (tak przyjmijmy dla uproszczenia), który były sterowany Suplą jak i pilotem IR. Zrobiłem sobie właściwą płytkę, napisałem soft - działa bez problemu (nawet jest opcja uczenia kolejnych pilotów i takie tam).
I tu pojawia się POMYSŁ, gdyż mam kilka wyłączników ze ściemnianiem z Zamela - może zrobić taki "hub", który przyjmowałby polecenia za pomocą IR i mógł sterować rozmaitymi urządzeniami (w tym wypadku poziomem oświetlenia).
Niestety teraz pojawia się PROBLEM (choć mam nadzieję, że jednak wyzwanie) - jak sterować z jednego urządzenia innym poprzez cloud nie używając "direct link"? Z direct linko biedy radzę sobie jak mam odczytać zdalny termometr, czy tez coś załączyć lub sprawdzić stan - ale sterowanie takie "jakby analogowe'" to już nie bardzo mi się podoba. Takie to nieeleganckie.
A zatem PYTANIE - w jaki sposób mogę podpiąć się, w ramach tego samego konta pod zupełnie inne urządzenie i nim sterować. Jakieś API chyba istnieje bo przecież aplikacje na telefony sterują różnymi urządzeniami. Jak skorzystać z takiego API w ramach oprogramowania urządzenia? Może jest inne, trickowe, obejście?

Ktoś z Was ma podobny POMYSŁ/PROBLEM/PYTANIE i szuka rozwiązania? Może ktoś znalazł? (szukajka forumowa mi nie pomogła, ale zawsze mogłem przeoczyć)

Pozdrawiam
User avatar
lesny8
Posts: 3132
Joined: Mon Dec 11, 2017 9:43 pm
Has thanked: 10 times
Been thanked: 9 times

Post

Urządzenia bez kontaktu z serwerem się nie widzą wzajemnie. Tak po prostu zbudowany jest protokół, urządzenia i klienci(apki) komunikują się poprzez serwer. Urządzenia nie wystawiają API robi to Cloud po autoryzacji. Obecnie jak nie masz internetu, to nie wysterujesz przekaźnika z apki, zadziała tylko fizyczny klawisz na ścianie. Apki nie sterują urządzeniami przez API tylko przy użyciu protokołu SUPLA.
Z tego co wiem, to ta ślepota urządzeń bez internetu, ale w ramach widoczności w jednej sieci LAN/WLAN ma się kiedyś zmienić. Jak dokładnie i kiedy? Nie wiem :roll:
SOP 2023 :heavy_check_mark:
SOP 2024 :heavy_check_mark:
Czekam na kolejne Supla Offline Party :upside_down_face:
🧩: 🔑cz->b ⛴️+ila
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Ja bym niekoniecznie widział komunikację między modułami, ale chętnie bym widział żeby każde urządzenie wystawiało swój stan przez UDP globalnie co parę sekund w formacie json. Tak można by odbierać potrzebne nam informacje do dalszego przetwarzania bez angażowania linków bezpośrednich i zapytań do serwera. U mnie już tak parę urządzeń działa i pluje danymi co 5 sekund. Inne moduły odbierają potrzebne informacje które ich interesują. Pozostałe olewają. Wszystko działa w sieci lokalnej i nie wymaga dostępu do internetu.
KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

lesny8 wrote: Tue Oct 29, 2024 9:22 pm Urządzenia bez kontaktu z serwerem się nie widzą wzajemnie. Tak po prostu zbudowany jest protokół, urządzenia i klienci(apki) komunikują się poprzez serwer. Urządzenia nie wystawiają API robi to Cloud po autoryzacji. Obecnie jak nie masz internetu, to nie wysterujesz przekaźnika z apki, zadziała tylko fizyczny klawisz na ścianie. Apki nie sterują urządzeniami przez API tylko przy użyciu protokołu SUPLA.
Z tego co wiem, to ta ślepota urządzeń bez internetu, ale w ramach widoczności w jednej sieci LAN/WLAN ma się kiedyś zmienić. Jak dokładnie i kiedy? Nie wiem :roll:
Mnie nawet by nie przeszkadzało, że musi być internet. Wystarczyłoby jakies API, które z drugiej strony plułoby Supla i robiło to efektywniej niz directlinki (tu mam ciągle kłopot z tym, że urządzenie jest podpięte przez bezpieczne połączenie do clouda i jednocześnie robię wywołania directlink - czasami cos się zupełnie przywiesza, albo - co częściej rozłącza mi połączenie z cloudem)
KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

Duch__ wrote: Wed Oct 30, 2024 4:11 am Ja bym niekoniecznie widział komunikację między modułami, ale chętnie bym widział żeby każde urządzenie wystawiało swój stan przez UDP globalnie co parę sekund w formacie json. Tak można by odbierać potrzebne nam informacje do dalszego przetwarzania bez angażowania linków bezpośrednich i zapytań do serwera. U mnie już tak parę urządzeń działa i pluje danymi co 5 sekund. Inne moduły odbierają potrzebne informacje które ich interesują. Pozostałe olewają. Wszystko działa w sieci lokalnej i nie wymaga dostępu do internetu.
Dla DIY nie ma problemu - zrobię sobie co potrzebuję (i tak robię - mam lokalny serwer restAPI i tam sobie oprogramowuje wszystko, podejście z UDP tez mi sie podoba). Głównie chodzi mi o to, ze mam urządzenia "gotowe" i z nimi to nie pogadam.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

KaDet wrote: Wed Oct 30, 2024 9:52 am Dla DIY nie ma problemu - zrobię sobie co potrzebuję (i tak robię - mam lokalny serwer restAPI i tam sobie oprogramowuje wszystko, podejście z UDP tez mi sie podoba). Głównie chodzi mi o to, ze mam urządzenia "gotowe" i z nimi to nie pogadam.
Ogólnie od sterowania urządzeniami są apki na telefonie i one używają supla-client (z repo supla-core).
Ale to nie jest kod przystosowany do pracy na ESP (może ruszy, może nie - nie mam pojęcia - ale raczej rozmiary buforów trzeba by zminiejszyć, bo tam gdzie nie gdzie jest i po 100 kB używane na buforach).

Jest też supla-console-client (też w supla-core) - i to jest gotowa implementacja klienta, którego można sobie z linii poleceń na kompie używać. Ale nie wiem na ile to jest aktualne, ani czy działa :P.

Tak czy inaczej, ten "client" pozwoli na odczyt i sterowanie wszystkim na Twoim koncie (o ile ma ustawiony dostęp). Ale nie wiem czy to odpalisz na esp.

Sama komunikacja między urządzeniami będzie kiedyś dodana. Z tym że to będzie wymagało aktualizacji softu każdego urządzenia. Dodatkowo najprawdopodobniej implementacja będzie mocno ograniczona do opcji dostępnych w Cloud, choć tutaj szczegółowa koncepcja tego całego mechanizmu jeszcze nie jest zrobiona.
Osobiście rozważam wariant, że urządzenie będzie innemu udostępniać swój stan (odczyt) lub zezwalać też na modyfikację stanu (zapis). Format prawdopobnie będzie taki sam jak na komunikacji z serwerem, bo nie trzeba będzie tego na nowo wymyślać i implementować.
Parowanie urządzeń między sobą będzie realizowane przez Cloud i każdą parę trzeba będzie ręcznie ustawić. Będzie też limit ilości sparowanych urządzeń. Przesyłane dane będą szyfrowane (prawdopodobnie AES 256 z osobnym kluczem dla każdej pary). Możliwe, że parowanie będzie realizowane osobno na każdy kanał, a nie na całe urządznie (np. udostępniamy termometr do innego urządzenia, gdzie działa termostat).
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
SOYER
Posts: 1623
Joined: Wed Aug 10, 2022 12:29 pm
Location: Kryry
Been thanked: 2 times

Post

klew wrote: Wed Oct 30, 2024 10:08 am
KaDet wrote: Wed Oct 30, 2024 9:52 am Dla DIY nie ma problemu - zrobię sobie co potrzebuję (i tak robię - mam lokalny serwer restAPI i tam sobie oprogramowuje wszystko, podejście z UDP tez mi sie podoba). Głównie chodzi mi o to, ze mam urządzenia "gotowe" i z nimi to nie pogadam.
Ogólnie od sterowania urządzeniami są apki na telefonie i one używają supla-client (z repo supla-core).
Ale to nie jest kod przystosowany do pracy na ESP (może ruszy, może nie - nie mam pojęcia - ale raczej rozmiary buforów trzeba by zminiejszyć, bo tam gdzie nie gdzie jest i po 100 kB używane na buforach).

Jest też supla-console-client (też w supla-core) - i to jest gotowa implementacja klienta, którego można sobie z linii poleceń na kompie używać. Ale nie wiem na ile to jest aktualne, ani czy działa :P.

Tak czy inaczej, ten "client" pozwoli na odczyt i sterowanie wszystkim na Twoim koncie (o ile ma ustawiony dostęp). Ale nie wiem czy to odpalisz na esp.

Sama komunikacja między urządzeniami będzie kiedyś dodana. Z tym że to będzie wymagało aktualizacji softu każdego urządzenia. Dodatkowo najprawdopodobniej implementacja będzie mocno ograniczona do opcji dostępnych w Cloud, choć tutaj szczegółowa koncepcja tego całego mechanizmu jeszcze nie jest zrobiona.
Osobiście rozważam wariant, że urządzenie będzie innemu udostępniać swój stan (odczyt) lub zezwalać też na modyfikację stanu (zapis). Format prawdopobnie będzie taki sam jak na komunikacji z serwerem, bo nie trzeba będzie tego na nowo wymyślać i implementować.
Parowanie urządzeń między sobą będzie realizowane przez Cloud i każdą parę trzeba będzie ręcznie ustawić. Będzie też limit ilości sparowanych urządzeń. Przesyłane dane będą szyfrowane (prawdopodobnie AES 256 z osobnym kluczem dla każdej pary). Możliwe, że parowanie będzie realizowane osobno na każdy kanał, a nie na całe urządznie (np. udostępniamy termometr do innego urządzenia, gdzie działa termostat).
Brawo, czekamy:)
https://youtube.com/@tomaszhamer8134?si=_J1cT_QWsXxgt1Fm
https://kryry01.aqi.eco/pl
https://app.weathercloud.net/d4311785603
https://github.com/Soyer79
KaDet
Posts: 52
Joined: Fri Nov 27, 2020 5:06 pm
Location: Dąbrowa Górnicza

Post

klew wrote: Wed Oct 30, 2024 10:08 am Sama komunikacja między urządzeniami będzie kiedyś dodana. Z tym że to będzie wymagało aktualizacji softu każdego urządzenia. Dodatkowo najprawdopodobniej implementacja będzie mocno ograniczona do opcji dostępnych w Cloud, choć tutaj szczegółowa koncepcja tego całego mechanizmu jeszcze nie jest zrobiona.
Osobiście rozważam wariant, że urządzenie będzie innemu udostępniać swój stan (odczyt) lub zezwalać też na modyfikację stanu (zapis). Format prawdopobnie będzie taki sam jak na komunikacji z serwerem, bo nie trzeba będzie tego na nowo wymyślać i implementować.
Parowanie urządzeń między sobą będzie realizowane przez Cloud i każdą parę trzeba będzie ręcznie ustawić. Będzie też limit ilości sparowanych urządzeń. Przesyłane dane będą szyfrowane (prawdopodobnie AES 256 z osobnym kluczem dla każdej pary). Możliwe, że parowanie będzie realizowane osobno na każdy kanał, a nie na całe urządznie (np. udostępniamy termometr do innego urządzenia, gdzie działa termostat).
Jak dla mnie brzmi bardzo rozsądnie. Jak już ktoś napisał - czekamy :)

Co do tego, czy to aplikacja na telefonie ma służyć do sterowania urządzeniami - to już jest dyskusyjne. Jestem (z jednego z moich zawodów) automatykiem i to w większości urządzenia sterują urządzeniami lub przy najmniej odczytują ich stan. Podam przykład (który sobie jakoś tam załatwiłem i w sumie podałeś wyżej) - mam termostat, ale termometr nie może/nie jest przypięty do niego fizycznie, jak i czujnik/i otwarcia okna tez nie są. Powinienem móc zrobić z nich infrastrukturę, gdzie oczywiście elementem kontrolującym jest termostat, ale to czujniki wskazują na rodzaj działania. I w tym wypadku czujniki w ogóle mi w apce nie sa potrzebne. Rozwiązałem to używając direclinków i mojego serwera, ale jak to już parę razy pisałem - nieelegancko. Nie chcę tym wpisem wywoływać dyskusji, ze można to było zrobić jeszcze inaczej, lecz bardziej wskazać na potrzebę, którą jak widzę Supla, jako zespół, jest w stanie zaadresować. Czekamy więc.


No i czekam na KTOP :)

Pozdrawiam serdecznie.
User avatar
Duch__
Posts: 2199
Joined: Wed Aug 24, 2016 7:26 pm
Location: Opole
Been thanked: 6 times

Post

Ja też mam moduł który odpowiada tylko za pomiary z DSów. Wysyła poprzez UDP globalnie dane do innych urządzeń które jak chcą to sobie je obrabiają. Wsród nich jest termostat który na podstawie otrzymanych pomiarów ocenia konieczność grzania w danym pomieszczeniu. Ma przekaźnik od pieca, a sam wysyła też poprzez UDP informacje do siłowników o konieczności otwarcia ich. Żadnych ceregieli, szyfrowań, tylko prosta suma kontrolna. Wszystko jest przesyłane jako Word, jako wartość dodatnia. Np. temperatura -21.2 to mnoże ją przez 100 czyli mam -2120 i do tego dodaje 10000. Mam wartośc 7880.
User avatar
klew
Posts: 13908
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

To inaczej to sformułuję: w Supli to supla-client ma podgląd do stanu wszystkich urządzeń i może sterować. Między innymi aplikacje na telefonie używają tego komponentu;)

U nas te czujniki będą raportowane do serwera, bo z Clouda się to konfiguruje (przypisanie termometru, czy czujnika otwarcie do termostatu)
Najlepsze suple dla Twojego domu :mrgreen:

Return to “supla-dev”