Szablony powiadomień

Masz pomysł na funkcjonalność lub koncepcję na rozwój projektu. Opisz wszystko tutaj.
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

Zibi_007 wrote: Thu Mar 26, 2026 11:15 pm OK. Potestowałem.
Pomysł fajny, wykonanie też, ale nie ma róży bez ognia ;-)
Szkoda, że zamiast wykorzystać rozwiązanie @Fracza (scripts - mam na myśli polecenia i składnię) skorzystano z inja.
Myślę, że wielu osobom (w tym mnie) prościej byłoby przenieść swoje skrypty do cloud.
A tak trzeba przerabiać. Nie jest to trudne. Te proste działają już po chwili, bo już np. mamy numer kanału, odczytywaną wartość i warunki.
I ja niestety przy tych prostych będę musiał pozostać.
Nic bardziej skomplikowanego i rozbudowanego nie przerzucę do cloud, bo... treść wiadomości może zawierać maksymalnie 500 znaków.
Jeden z moich skryptów u Fracza ma tych znaków 2102 :(
....
To by było na tyle. jak znajdę więcej czasu, to spróbuję w tych 500 znakach zrobić coś bardziej zaawansowanego...
Dzięki za feedback!
Szablony powiadomień nie mają zastąpić skryptów (a przynajmniej nie całkowicie :) ). Skrypty mają dość dużo możliwości, ale pisanie logiki scen w języku do tworzenia szablonów tekstu to dość oryginalne rozwiązanie :).
Szablony powiadomień mają służyć w zasadzie tylko tworzeniu powiadomień,
Mam jeszcze jeden pomysł, gdzie te szablony będą wykorzystane poza powiadomieniami - ale to temat jeszcze nie ustalony z nikim. Mianowicie, gdy kiedyś powstanie KTXT, to chciałbym, aby dało się szablonami ustawiać wartość kanału KTXT.

Limit 500 znaków był wzięty z powietrza. Napisz proszę gdzie i do czego potrzeba więcej :). Możesz wkleić też swoje skrypty (szczególnie ten z 2102 znakami :)

No i tutaj szablonami zajmuje się serwer i on ma pod ręką C++. Stąd między innymi wybór padł na inja.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
Zibi_007
Posts: 3985
Joined: Tue Oct 31, 2023 10:06 pm
Has thanked: 10 times
Been thanked: 31 times

Post

klew wrote: Thu Mar 26, 2026 11:33 pm
Zibi_007 wrote: Thu Mar 26, 2026 11:15 pm OK. Potestowałem.
Pomysł fajny, wykonanie też, ale nie ma róży bez ognia ;-)
Szkoda, że zamiast wykorzystać rozwiązanie @Fracza (scripts - mam na myśli polecenia i składnię) skorzystano z inja.
Myślę, że wielu osobom (w tym mnie) prościej byłoby przenieść swoje skrypty do cloud.
A tak trzeba przerabiać. Nie jest to trudne. Te proste działają już po chwili, bo już np. mamy numer kanału, odczytywaną wartość i warunki.
I ja niestety przy tych prostych będę musiał pozostać.
Nic bardziej skomplikowanego i rozbudowanego nie przerzucę do cloud, bo... treść wiadomości może zawierać maksymalnie 500 znaków.
Jeden z moich skryptów u Fracza ma tych znaków 2102 :(
....
To by było na tyle. jak znajdę więcej czasu, to spróbuję w tych 500 znakach zrobić coś bardziej zaawansowanego...
Dzięki za feedback!
Szablony powiadomień nie mają zastąpić skryptów (a przynajmniej nie całkowicie :) ). Skrypty mają dość dużo możliwości, ale pisanie logiki scen w języku do tworzenia szablonów tekstu to dość oryginalne rozwiązanie :).
Szablony powiadomień mają służyć w zasadzie tylko tworzeniu powiadomień,
Mam jeszcze jeden pomysł, gdzie te szablony będą wykorzystane poza powiadomieniami - ale to temat jeszcze nie ustalony z nikim. Mianowicie, gdy kiedyś powstanie KTXT, to chciałbym, aby dało się szablonami ustawiać wartość kanału KTXT.

Limit 500 znaków był wzięty z powietrza. Napisz proszę gdzie i do czego potrzeba więcej :). Możesz wkleić też swoje skrypty (szczególnie ten z 2102 znakami :)

No i tutaj szablonami zajmuje się serwer i on ma pod ręką C++. Stąd między innymi wybór padł na inja.
Z tym KTXT to doskonały pomysł.
Skrypt z dwoma tysiącami znaków jest bardzo prosty, ale dla mnie niezwykle użyteczny.
Nie będę go tutaj w całości zamieszczał, ale napiszę co w nim jest.
Nazywa się: "Co słychać w domu" i po kolei wyrzuca stan najważniejszych dla mnie urządzeń w jednym z moich domów.
A że mam ich tam trochę, to i znaków się zebrało wiele.
Mniej więcej leci to tak:

Code: Select all

Brama jest {{state(4).hi ? "zamknięta" : "otwarta"}},
Ciśnienie wynosi {{state(7).value |number_format(0, '', '')}} hPa,
Temperatura na zewnątrz od frontu {{state(1).temperature|number_format(1)}}°C,
Światło na werandzie jest {{state(7).on ? "zaświecone" : "zgaszone"}},
Garaż jest {{state(4).hi ? "zamknięty" : "otwarty"}},
Temperatura pieca C.O. {{state(9).temperature|number_format(1)}}°C,
Temperatura ciepłej wody {{state(0).temperature|number_format(1)}}°C,
Węgla w zasobniku jest {{(state(2).depth/(0.007))|number_format(1,',', ',')}}% 
({{state(9442).depth*100|number_format(2,',', ',')}} cm),
itd., itp. - łącznie ok. 30 razy.
Skrypt uruchamiam na żądanie, skrótem z pulpitu w telefonie.
Zawsze, wszędzie i o każdej porze mogę sprawdzić co słychać - bez konieczności odpalania Supli i kilkukrotnego przewijania ekranu.
Image Wiesz, że Supla obsługuje Zigbee? Wstąp do Klubu Promila: https://forum.supla.org/viewtopic.php?t=18018
Image Szukasz nowego GG? Jest tutaj: https://forum.supla.org/viewtopic.php?t=18036
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

@klew to w podobnym do powyższego kontekście zapytam o taką rzecz... Bo zrobiłem sobie w reakcjach powiadomienia uruchamiające scenę. Chciałem też coś takiego zastosować dla powiadomienia w przełączniku od bramki Z2S(aby można było je wł/wył z poziomu aplikacji) sugerując się tym co napisałeś na początku tematu, czyli że te komendy można dawać też w tytule wiadomości. I faktycznie to działa i zgodnie z zamierzeniem te akurat komendy można przełącznikiem od bramki wyłączać. Tylko tu pojawia się problem poruszony już przez Zibiego powyżej bo w polu tytułu jest jeszcze mniej możliwych znaków do wpisania i nie mieszczą się nawet dość proste bloki poleceń. I teraz pytanie... Czy da się jakąś komendą inja z pola tytułu uruchomić scenę w której już mam blok inja a który nie mieści się w polu tytułu?
EDIT:
Tak dodam jeszcze na wszelki wypadek że tu chodzi o to że dla przełącznika notification z bramki pole wiadomości jest zablokowane do edycji i tylko w tytule można coś wpisać. A dla Binary, bo do tego to jest to zawsze przychodzi On/Of. Teraz można więcej bo sprawdzałem i z tytułu można wygenerować dowolną treść wiadomości. Ale jak zrobiłem blok na przykładzie bram to już się nie mieści.
User avatar
vajera
Posts: 7290
Joined: Wed Oct 31, 2018 7:58 am
Location: Biedrusko
Has thanked: 289 times
Been thanked: 161 times

Post

zzrr wrote: Fri Mar 27, 2026 8:08 am @klew to w podobnym do powyższego kontekście zapytam o taką rzecz... Bo zrobiłem sobie w reakcjach powiadomienia uruchamiające scenę. Chciałem też coś takiego zastosować dla powiadomienia w przełączniku od bramki Z2S(aby można było je wł/wył z poziomu aplikacji) sugerując się tym co napisałeś na początku tematu, czyli że te komendy można dawać też w tytule wiadomości. I faktycznie to działa i zgodnie z zamierzeniem te akurat komendy można przełącznikiem od bramki wyłączać. Tylko tu pojawia się problem poruszony już przez Zibiego powyżej bo w polu tytułu jest jeszcze mniej możliwych znaków do wpisania i nie mieszczą się nawet dość proste bloki poleceń. I teraz pytanie... Czy da się jakąś komendą inja z pola tytułu uruchomić scenę w której już mam blok inja a który nie mieści się w polu tytułu?
EDIT:
Tak dodam jeszcze na wszelki wypadek że tu chodzi o to że dla przełącznika notification z bramki pole wiadomości jest zablokowane do edycji i tylko w tytule można coś wpisać. A dla Binary, bo do tego to jest to zawsze przychodzi On/Of. Teraz można więcej bo sprawdzałem i z tytułu można wygenerować dowolną treść wiadomości. Ale jak zrobiłem blok na przykładzie bram to już się nie mieści.
Dodając te lokalne powiadomienia do bramki Z2S wybrałem model, w którym treść powiadomienia ustawia bramka a tytuł użytkownik w Cloud. Było to podyktowane prostym faktem - bramka mogła podać stan kanału (np. ON/OFF) a Cloud nie dawał takiej możliwości.
Nie miałem jeszcze okazji przetestować to nowe rozwiązanie, ale jeżeli to działa również z tymi powiadomieniami, to może lepszym rozwiązaniem będzie odblokować możliwość ustawienia treści powiadomień z poziomu Cloud? Ewentualnie dać użytkownikom możliwość zdecydowania o takim rozwiązaniu?
Bramka Zigbee <=> SUPLA
Więcej informacji tutaj:
https://forum.supla.org/viewforum.php?f=127
FAQ https://forum.supla.org/viewtopic.php?t=17277
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

vajera wrote: Fri Mar 27, 2026 8:35 am ...
Dodając te lokalne powiadomienia do bramki Z2S wybrałem model, w którym treść powiadomienia ustawia bramka a tytuł użytkownik w Cloud. Było to podyktowane prostym faktem - bramka mogła podać stan kanału (np. ON/OFF) a Cloud nie dawał takiej możliwości.
Nie miałem jeszcze okazji przetestować to nowe rozwiązanie, ale jeżeli to działa również z tymi powiadomieniami, to może lepszym rozwiązaniem będzie odblokować możliwość ustawienia treści powiadomień z poziomu Cloud? Ewentualnie dać użytkownikom możliwość zdecydowania o takim rozwiązaniu?
Jak najbardziej. Tylko jest tu dwie rzeczy. Bo jeśli da się komendą inja przekierować polecenie na scenę to nie będzie takiej potrzeby żeby to pole odblokowywać. Jeśli nie to wtedy jak najbardziej bo mozna będzie dać komendę do wykonania równą takiej jaką można zrobić w tej chwili na cloud. Ogólnie to jest o tyle fajne że właśnie można raportować stany z różnych kanałów za pomocą jednego wyzwolenia. A wykorzystując np. VB z bramki można dodatkowo włączać wyłączać które chcemy z poziomu aplikacji
EDIT:
Gdyby dało się takim poleceniem uruchomić kod zrobiony w scenie to by było nawet lepiej. Bo załóżmy że mamy kilka kanałów które chcemy zraportować powiadomieniem. Wtedy w każdym wystarczy przy zmianie wpisac odwołanie do jednej sceny. A nie w każdym wpisywać ten sam duży blok do wykonania.
A nawet nie tylko VB bo I VR. W takim kodzie inja wczoraj próbowałem i w scenie dawałem warunek że jeśli VR on wtedy raport tego tego i tamtego :) A przy innym VB można porównywać do innego VR. Czyli faktycznie rozwiązań i możliwości jest bardzo dużo.
Last edited by zzrr on Fri Mar 27, 2026 8:48 am, edited 1 time in total.
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

zzrr wrote: Fri Mar 27, 2026 8:08 am
Dawajcie proszę przykłady - co tam wstawiasz w tytule, że znaków brakuje? :) Ogólne rekomendacje Androida to chyba około 60 znaków maks na tytule i 150 znaków na treści :P.
Rozumiem, że szablon może być dłuższy, bo dochodzi logika.
Zanim zaczniemy kombinować, to można rozważyć możliwość zwiększenia długości tych pól. Tylko chciałbym poznać realne przypadki użycia.

Takie duże szablony mają jeszcze jeden problem. Jak spróbujecie pobrać kanał, który jest offline {{ getChannel(123) }}, to on nie będzie miała prameterów, do których się odwołujecie i wszystko wybucha :P. Także zlepienie powiadomienia z 20 kanałów jest narażone na wysokie ryzyko.
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Fri Mar 27, 2026 8:47 am
zzrr wrote: Fri Mar 27, 2026 8:08 am
Dawajcie proszę przykłady - co tam wstawiasz w tytule, że znaków brakuje? :) Ogólne rekomendacje Androida to chyba około 60 znaków maks na tytule i 150 znaków na treści :P.
Rozumiem, że szablon może być dłuższy, bo dochodzi logika.
Zanim zaczniemy kombinować, to można rozważyć możliwość zwiększenia długości tych pól. Tylko chciałbym poznać realne przypadki użycia.

Takie duże szablony mają jeszcze jeden problem. Jak spróbujecie pobrać kanał, który jest offline {{ getChannel(123) }}, to on nie będzie miała prameterów, do których się odwołujecie i wszystko wybucha :P. Także zlepienie powiadomienia z 20 kanałów jest narażone na wysokie ryzyko.
Taki już się nie mieści

Code: Select all

## set chIds = [29264,29268,29269]
## set names = ["Bin1", "Bin2", "Bin3"]
{% set ch1 = getChannel(29261) %}
## if ch1.on
## for id in chIds
## set ch = getChannel(id)

Bin {{ at(names, loop.index) }} - {% if ch.value == true %} włączony {% else %}wyłączony{% endif %}
## endfor
## endif 
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

zzrr wrote: Fri Mar 27, 2026 8:41 am Gdyby dało się takim poleceniem uruchomić kod zrobiony w scenie to by było nawet lepiej. Bo załóżmy że mamy kilka kanałów które chcemy zraportować powiadomieniem. Wtedy w każdym wystarczy przy zmianie wpisac odwołanie do jednej sceny. A nie w każdym wpisywać ten sam duży blok do wykonania.
Silnik szablonów pozwala na "ładowanie" szablonu z innego źródła. Obecnie jest to wyłączone, bo natywnie ładuje pliki z serwera, a nie o to nam chodzi.
Na penwo nie będzie takiego ładowania z innej sceny, ale może można dodać zakładkę "szablony", które są fragmentami tych "szalonów powiadomień" i aby dało się je załadować w innych powiadomieniach.
Najlepsze suple dla Twojego domu :mrgreen:
User avatar
klew
Posts: 13907
Joined: Thu Jun 27, 2019 12:16 pm
Location: Wrocław
Has thanked: 134 times
Been thanked: 137 times

Post

zzrr wrote: Fri Mar 27, 2026 8:50 am Taki już się nie mieści

Code: Select all

## set chIds = [29264,29268,29269]
## set names = ["Bin1", "Bin2", "Bin3"]
{% set ch1 = getChannel(29261) %}
## if ch1.on
## for id in chIds
## set ch = getChannel(id)

Bin {{ at(names, loop.index) }} - {% if ch.value == true %} włączony {% else %}wyłączony{% endif %}
## endfor
## endif 
Mi to semantycznie wygląda na treść powiadomienia, a nie tytuł :P
Najlepsze suple dla Twojego domu :mrgreen:
zzrr
Posts: 1864
Joined: Wed Oct 26, 2022 7:35 pm
Has thanked: 76 times
Been thanked: 119 times

Post

klew wrote: Fri Mar 27, 2026 8:51 am
zzrr wrote: Fri Mar 27, 2026 8:50 am Taki już się nie mieści

Code: Select all

## set chIds = [29264,29268,29269]
## set names = ["Bin1", "Bin2", "Bin3"]
{% set ch1 = getChannel(29261) %}
## if ch1.on
## for id in chIds
## set ch = getChannel(id)

Bin {{ at(names, loop.index) }} - {% if ch.value == true %} włączony {% else %}wyłączony{% endif %}
## endfor
## endif 
Mi to semantycznie wygląda na treść powiadomienia, a nie tytuł :P
To jest treść ze sceny. Bo w polu tytułu się nie mieści. Dlatego potrzebujemy abyś włączył w inja :) możliwość wykonywania polecenia uruchamiającego scenę.

Return to “Pomysły i koncepcje”