# Jak to zrobić (szablon)

**URL:** <https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132>\
**Category:** Uncategorized\
**Created:** [22 Wrzesień 2021 17:23 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132 "2021-09-22T17:23:05Z")\
**Posts on this page:** 18\
**Page:** 1

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [22 Wrzesień 2021 17:23 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/1 "2021-09-22T17:23:05Z")

</div>

```auto
{{ state_attr('sensor.darek_last_notification', 'android.text') }} wynik = Ogród (E71160330) Motion Detection Alarm(2021-09-22 16:25:34)

{{ is_state('sensor.darek_last_notification', 'Ogród (E71160330) Motion Detection Alarm(2021-09-22 16:25:34)') }} wynik = True

{{ is_state('sensor.darek_last_notification', '(E71160330)')}} wynik False

```

Mam Trzy kamery do których integracja nie działa(EZVIZ) tylko strumień RTSP.  
I chciałbym wykorzystać encje z aplikacji mobilnej który daje sensor last\_notification. Problem polega na tym że info które przychodzi zawsze zawiera datę i czas przez co nie potrafię określić która to z kamer alarmuje. Jaki szablon zrobić aby wyciągał tylko numer kamery? lub ograniczał wyświetlanie daty i czasu??  
Treści wysyłania powiadomienia z aplikacji Ezviz zmienić nie mogę.

Edit: Znalazłem coś takiego ale nie mam pojęcia jak to zastosować i czy zadziała

 ![Screenshot_20210922_200059_com.android.chrome](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/2/2ac2096b2614044aa68b1a3d82bf66c3fafb945f.jpeg)

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [22 Wrzesień 2021 18:46 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/2 "2021-09-22T18:46:14Z")

</div>

Generalnie dużo da się zrobić. Napisz co byłoby najlepszym rozwiązaniem, a postaram się przybliżyć ciebie do potencjalnych możliwości.

1. można stworzyć np. sensor.darek\_last\_motion\_detection\_area
2. można napisać warunki które uzupełnisz akcjami w zależności od tego jaka to kamera
3. mozna stworzyć sensor.darek\_last\_motion\_detection\_time  
pytanie co chcesz zrobić?

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [22 Wrzesień 2021 19:03 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/3 "2021-09-22T19:03:13Z")

</div>

Styknie szablon który określi mi numer kamery, z resztą sądzę że sobie poradzę. Tzn: aby z powiadomienia potrafiłem wyszczególnić tylko dany text

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [22 Wrzesień 2021 19:48 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/4 "2021-09-22T19:48:09Z")

</div>

Sorki ale nadal trochę się gubię w tym co piszesz. Bazując na pierwszym i tym poście wnioskuję, że coś takiego wystarczy:

```auto
{% if('E71160330' in states('sensor.darek_last_notification')) -%}
Jolka, Jolka,
Pamiętasz lato ze snu,
...
{%- endif -%}

```

Albo to:

```auto
{{ states('sensor.darek_last_notification') | regex_findall_index(find='[A-Z]\d{8}') }}

```

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [22 Wrzesień 2021 20:08 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/5 "2021-09-22T20:08:55Z")

</div>

```auto
alias: Nowa automatyzacja
description: ''
trigger:
  - platform: template
    value_template: '{{ if(''E71160330'' in states(''sensor.darek_last_notification'')) -}}'
condition: []
action:
  - service: ais_ai_service.mob_notify
    data:
      device_id: 5eeca49373d76e8fda3145658c003953
      message: 'Udana próba '
      title: Kamera
      say: true
mode: single

```

Pierwszy szablon

```auto
alias: Nowa automatyzacja2
description: ''
trigger:
  - platform: template
    value_template: >-
      {{ states('sensor.darek_last_notification') |
      regex_findall_index(find='[A-Z]\d{8}') }}
condition: []
action:
  - service: ais_ai_service.mob_notify
    data:
      device_id: 5eeca49373d76e8fda3145658c003953
      message: Drugi
      title: Forum
mode: single

```

Drugi szablon

Oba niestety w automatyzacji nie działają. Sam się zgubiłem w tym wszystkim, szablony sprawdzałem przed każdą zmianą wywoływałem detekcję na kamerę.

Edit : Sablon zadziałał po dodaniu nawiasów w tekscie …

{% if(’ _**(’'E71160330)**_ ’ in states(‘sensor.darek\_last\_notification’)) -%}  
Jolka, Jolka,  
Pamiętasz lato ze snu,  
…  
{%- endif -%}

dziękuję za pomoc 🍻

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [23 Wrzesień 2021 10:36 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/7 "2021-09-23T10:36:25Z")

</div>

Jednak czas wysłania powiadomienia z aplikacji ezviz jest potrzebny aby użyć tych szablonów do automatyzacji bo jeśli ta sama kamera wykryje kilka razy ruch to dane powiadomienia się nie zmieniają i automatyzacja nie jest ponownie wyzwalana. potrzebny by tu chyba był kolejny szablon sprawdzający stan ostatniego powiadomienia o której ono godzinie było i jeśli jest inna godzina to ma wykonać automatyzację dobrze myślę ?? i jak takie coś stworzyć ?

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [23 Wrzesień 2021 12:01 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/8 "2021-09-23T12:01:07Z")

</div>

To proponuję jednak przejść na coś takiego:  
 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/5/51f8e5e05500e30452225a126e9386feb350f943.png)

Plik templates.yaml

```auto
- sensor:
  - name: darek_last_notification_time
    state: '{{ states.sensor.darek_last_notification.state | regex_findall_index(find="[A-Z]\d{8}") }}'
    attributes:
      date: '{{ states.sensor.darek_last_notification.state | regex_findall_index(find="\d{4}-\d{2}-\d{2}") }}'
      time: '{{ states.sensor.darek_last_notification.state | regex_findall_index(find="\d{2}:\d{2}:\d{2}") }}'

```

Wpis do configuration.yaml jeśli jeszcze nie masz:

```auto
template: !include templates.yaml

```

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [23 Wrzesień 2021 12:54 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/9 "2021-09-23T12:54:57Z")

</div>

No ładnie to wykreowałeś dzięki tobie będę o kilka siwych włosów mniej 😁. W relu postawił bym Ci 🍺🥃.  
Wielkie dzięki. A generalnie zastanawiam się w jaki sposób dobierasz składnie tego szablonu??

regex\_findall\_index(find="\d{2}:\d{2}:\d{2}")

Bo czarów chyba nie używasz… 😆?

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [23 Wrzesień 2021 13:05 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/10 "2021-09-23T13:05:59Z")

</div>

To jest regex. Np. \d to dowolna cyfra, zapis \d{2} oznacza że chcesz dokładnie 2 cyfry, dalsza analiza tego przypadku jest prosta. 🙂  
Możesz sobie testować składnię np. tutaj:

> **[regex101: build, test, and debug regex](https://regex101.com/)**
>
> Regular expression tester with syntax highlighting, explanation, cheat sheet for PHP/PCRE, Python, GO, JavaScript, Java. Features a regex quiz & library.

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [23 Wrzesień 2021 13:14 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/11 "2021-09-23T13:14:52Z")

</div>

Bardzo interesujące, będę miał zabawę na jesienne długie wieczory… 🤔👍

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [24 Wrzesień 2021 10:15 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/12 "2021-09-24T10:15:06Z")

</div>

![szablony11](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/2/21bebc2527fbc20c9472eeebd93f2f6926bc8028.jpeg)

Chyba coś nie do końca to funguje jak powinno bo sensor.darek\_last\_notification nie aktualizuje czujnika który stworzyłeś sensor.darek\_last\_notification\_time chyba że ja coś spierniczyłem ?  
w tym zdj stan kamery E71160330 powiniem być= true  
a stan kamery E75829693 = false

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [24 Wrzesień 2021 10:35 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/13 "2021-09-24T10:35:57Z")

</div>

Edytowałem powyższy wpis - brakowało “.state” przez to sensor nie wpinał się w event aktualizacji sensora kamery.

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [24 Wrzesień 2021 10:39 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/14 "2021-09-24T10:39:08Z")

</div>

Dzięki za szybką odpowiedź, już sprawdzam jak teraz się to zachowa.

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [24 Wrzesień 2021 10:48 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/15 "2021-09-24T10:48:20Z")

</div>

Wygląda teraz poprawnie 👍  
tylko zachodzę w głowę jak teraz poprawnie sformułować automatyzację, że numer kamery z darek\_last\_notification\_time ma wyzwalać akcję ale jeśli jest inna data i czasz niż porzednio.  
date: ‘{{ states.sensor.darek\_last\_notification.state | regex\_findall\_index(find="\d{4}-\d{2}-\d{2}") }}’  
time: ‘{{ states.sensor.darek\_last\_notification.state | regex\_findall\_index(find="\d{2}:\d{2}:\d{2}") }}’

człowiek się uczy ale cały czas brakuje czegoś.

Edit: Albo jeśli jest data i czas inny w darek\_last\_notification\_time to wykona akcję ale warunkiem będzie numer kamery ?

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [24 Wrzesień 2021 10:59 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/16 "2021-09-24T10:59:13Z")

</div>

Pytanie co chcesz osiągnąć, kiedy faktycznie chcesz coś zrobić?  
Ustawienie triggera na encję sensor.darek\_last\_notification\_time będzie reagować na każdą zmianę - każde wykrycie ruchu, a zakładam że ponowne wykrycie ruchu na kamerze X zmieni stan encji sensor.darek\_last\_notification tylko z innym czasem niż poprzednio, ale sensor.darek\_last\_notification\_time się zmieni i trigger się wywoła. Jeśli to jest spodziewane zachowanie to lecisz z tematem 🙂

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [24 Wrzesień 2021 11:04 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/17 "2021-09-24T11:04:47Z")

</div>

Właśnie nie potrafię zastosować warunku coś takiego jak if the condition is different from the previous.  
albo  
if the time is different from the previous time z sensora darek\_last\_notification\_time to wykonaj akcję pod warunkiem że kamera x jest w powiadomieniu…

---

<div class="post-metadata">

Autor: ![Stravi](https://avatars.discourse-cdn.com/v4/letter/s/e9c0ed/32.png) [@Stravi](https://ai-speaker.discourse.group/u/Stravi)\
Data publikacji: [24 Wrzesień 2021 11:15 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/18 "2021-09-24T11:15:31Z")

</div>

Taki trigger będzie uruchamiał się za każdą, dowolną zmianą, nie ważne czy to będzie stan (numer kamery) czy też data/czas(założyłbym nawet że czas będzie się zmieniał zawsze).

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/0/09f28c15a9552ebdcae2658a309c9457e9c17622.png)

To teraz przycięcie do zmian tylko w jednej kamerze:

 ![image](https://global.discourse-cdn.com/free1/uploads/ai_speaker/original/2X/5/5fd93216765de4e18cc5999bf1514168af24298d.png)

O coś takiego chodziło?

---

<div class="post-metadata">

Autor: ![Mdk](https://yyz2.discourse-cdn.com/free1/user_avatar/ai-speaker.discourse.group/mdk/32/8754_2.png) [@Mdk](https://ai-speaker.discourse.group/u/Mdk)\
Data publikacji: [24 Wrzesień 2021 11:43 UTC](https://ai-speaker.discourse.group/t/jak-to-zrobic-szablon/2132/19 "2021-09-24T11:43:29Z")

</div>

W życiu bym nie wpadł na to że do trigera nie trzeba podawać jakiejś wartości zmiennej, zawsze coś wklepywałem jako stan z tąd moje zdziwienie 😲 i niemoc w tym temacie haha 🤦‍♂️
