
Calendari CalDAV a Home Assistant amb alertes de la IA
Avui un post dels que m'agraden :-), li donarem accés a Home Assistant als nostres calendaris, sigui l' ús que li donem, siguin calendaris personals, corporatius, de cites, sants, partits de futbol… i posteriorment crearem alguna automatització, perquè, al matí quan ens despertem ens digui les cites del dia i per suposat quan arribi alguna cita, ens ho recordi.
En aquest document subscriurem Home Assistant a uns calendaris que tenim ja, en un servidor CalDAV que ja vam veure fa algun temps, anomenat Radicale; podrem subscriure'l per suposat a qualsevol altre servei de calendari que usem. Un cop tinguem accés als calendaris podrem visualitzar-los, crear cites manualment o amb automatitzacions, així com conèixer les cites entre altres. El que s'ha dit, al final del post veurem una automatització que 5 minuts abans de la cita ens ho recordarà pels altaveus de la llar intel·ligent, a més d' una manera random, ja que farem servir la IA d' Ollama per personalitzar els missatges i que cada vegada siguin diferents. Així com una segona automatització que als matins quan arribem a la cuina, a banda de donar-nos els bons dies d'una manera diferent cada dia, ens recordi les cites que tenim durant el dia, fabulós 🙂
A Home Assistant vam anar a “Ajustaments” > “Dispositius i serveis”, i posem en “+ Afegir integració”, i busquem CAlDAV, hi punxem.
Ens demanarà la URL CalDAV del calendari, així com els credencials per poder accedir-hi, posem en “Enviar”,
Perfecte, posem en “Acabar”,
Un cop donats d'alta els veurem com a entitats,
Així com tindrem una vista dels calendaris des del menú esquerre,
Tindrem en compte que els calendaris se sincronitzen cada 15 minuts, si volem forçar una sincronització, sobretot ara per fer alguna prova, doncs anirem a les “Eines per a desenvolupadors” i des de “Serveis”, busquem el servei 'Home Assistant ore Intgration: Tornar a carregar l' entrada de configuració’ i en els objectes seleccionem els calendaris que ens interessin refrescar, per si hi afegim alguna cita…
Automatització notifica pròxim esdeveniment
Aquesta és una automatització que el que farà és notificar per tots els altaveus de la llar si hi ha una cita en algun calendari en 5 minuts, en aquest cas la IA entrarà en joc i manarà un missatge random indicant-nos que tenim tal cita i que no se'ns vagi a oblidar, cada vegada d'una manera diferent i sense usar frases repetitives.
En l' automatització, en el Quan, seleccionarem l' objecte de tipus calendari que ens interessi, indicant que sigui a l' Inici de l' esdeveniment i amb 5 minuts d' antelació, així saltarà aquesta automatització.
I què farà, doncs diverses coses, d'una banda li manarà a la IA d'Ollama el prompt que volem, o sigui, que sigui amable, que li recordi (en aquest cas) a Héctor que té una cita, en 5 minuts.
metadata: {} data: agent_id: xxxxxxxxxxxx: >- Per favor, genera un text per a una notificació que serà enviada a l'smartphone de l'usuari. Ets un agent personal útil que genera text per a l'usuari. Les teves respostes són útils, amables, càlides, perspicaços. Les teves respostes no són tècniques. El missatge que has d'informar és: Que Héctor té una cita al calendari dins de 5 minuts. L'esdeveniment és {{ trigger.calendar_event.summary }}. response_variable: Resposta enabled: true action: conversation.process
La primera acció de processar preguntarà a la IA i obtindrà una resposta en una variable.
metadata: {} data: cache: true media_player_entity_id: media_player.volumio_mpd message: "{{ Resposta.response.speech.plain.speech }}" target: entity_id: tts.piper action: tts.speak
Després de sonar una amable alerta pels altaveus de casa, serà Piper l'encarregat de transformar aquest text de la variable en una veu gairebé humana pels altaveus.
Automatització llegeix cites del dia
I aquesta altra automatització l'utilitzo per quan ens saluda al matí la nostra llar, depèn qui vagi arribant abans a la cuina, doncs a part de saludar-li i dir-li algunes dades que li puguin interessar, doncs li llegim les cites del calendari que tindrà al llarg del dia, indicant com sempre amb la IA d'una manera random tots els dies les frases.
data: start_date_time: "{{ today_at('00:00').strftime('%Y-%m-%d %H:%M:%S') }}" end_date_time: "{{ today_at('23:59').strftime('%Y-%m-%d %H:%M:%S') }}" target: entity_id: - calendar.calendario_hector_personal response_variable: my_agenda_hector action: calendar.get_events
Crearem una primera acció que llegirà tots els esdeveniments del calendari indicat, en aquest horari; els ficarà en una variable.
data: agent_id: 491350952da2d957ebc0eb37da8c24a2 text: >- Per favor, genera un text per a una notificació que serà enviada a l'smartphone de l'usuari. Ets un agent personal útil que genera text per a l'usuari. Les teves respostes són útils, amables, càlides, perspicaços. Les teves respostes no són tècniques, no cal que saluts. Has de recordar les cites que té Hector avui al calendari, que són: {%- if my_agenda_hector['calendar.calendario_hector_personal'].events %} {%- for event in my_agenda_hector['calendar.calendario_hector_personal'].events %} {{ event.summary }} {% if event.start is defined %} a les {{ as_timestamp(event.start)|timestamp_custom('%H:%M',True)}} {% else %} All Day {% endif %} {%- if event.descripton is defined %} - {{ event.description }} Details: {{ event.descripton }} {% endif-%} {%- if event.location is defined %} at {{event.location }} {% endif -%} <br> {%- endfor %} {%- else %} No hi ha cites al calendari avui.{%- endif %} Ordena-les de més recent a menys recent. No posis dobles cometes. La teva resposta en espanyol. response_variable: Resposta action: conversation.process
Posteriorment un segon servei agafarà aquestes dades de la variable i se'ls passarem a la IA d'Ollama perquè ens els interpreti i ens els llegeixi, ens faci un resum i ens digui d'una manera random els esdeveniments del dia.
metadata: {} data: cache: true media_player_entity_id: media_player.volumio_mpd message: "{{ Resposta.response.speech.plain.speech }}" target: entity_id: tts.piper enabled: true action: tts.speak
I ja finalment, amb una tercera acció que agafarà el text generat per la IA i el convertirà a àudio, a veu humana, i el reproduirà per tots els altaveus de la llar.
Espero que us hagi agradat, un post una mica curiós de com anar d'una mica de més intel·ligència a la llar i que vagi agafant forma, aquest post és un exemple amb calendaris, però si ho penses segur que pots fer servir aquestes automatitzacions per a altres coses, ja us aniré donant alguna idea Us aniré donant alguna idea Us aniré donant alguna idea 😉 Us abraço una abraçada, portar-se bé i cuidar-vos!