Aide sur Floorplan : créer un template pour le chemin d'images .svg à afficher

Mon problème

Hello à tous,

je souhaite charger des images avec leur nom respectif: exemple : bureau.svg ou sejour.svg,

pour cela j’ai trouvé le template {{area_name(trigger.entity_id)}} mais je galère depuis plusieurs jours à l’intégrer dans le code de floorplan:

          rules:
            - name: Room
              entities:
                - entity: light.led_bureau_light
                  element: area.bureau
              tap_action: light.toggle
              state_action:
                action: call-service
                service: floorplan.image_set
                service_data: |
                   >
                     var imageName = '${area_name(trigger.entity_id)}';
                     return '/local/floorplan/' + imageName + '.svg';

est ce quelqu’un saurait comment procéder svp?

j’ai également essayé ça :

service_data: |
   >
     var imageName = '{{area_name(trigger.entity_id)}}';
     return '/local/floorplan/' + imageName + '.svg';

mais ca ne marche pas mieux. Je suis pas très bon en Template…

ca aussi :

service_data:  /local/floorplan/'{{area_name(trigger.entity_id)}}'.svg

error loading image /local/floorplan/‹ {{area_name(trigger.entity_id)}} ›.svg

j’ai charché des exemples et il n’y en a pas beaucoup en template.

j’ai cette autre template qui fonctionne bien pour les images basées sur l’état d’un sensor.time :

                service_data: |
                  >
                   var imageName = ''; 
                   switch (entity.state) { 
                     case 'Dawn': imageName ='18h'; break; 
                     case 'Morning': imageName = '9h'; break; 
                     case 'Midday': imageName = '12h'; break; 
                     case 'Afternoon': imageName = '13h'; break;
                     case 'Dusk': imageName = '6h'; break; 
                     case 'Night': imageName = '21h'; break;
                   } 
                   return '/local/floorplan/maison_' + imageName + '.svg';

mais mon soucis est d’intégrer le {{area_name(trigger.entity_id)}} …vraiment je sèche…si quelqu’un peux aider, merci par avance

Ma configuration


version core-2022.11.4
installation_type Home Assistant OS
dev false
hassio true
docker true
user root
virtualenv false
python_version 3.10.7
os_name Linux
os_version 5.15.74
arch x86_64
timezone Indian/Reunion
config_dir /config
Home Assistant Community Store
GitHub API ok
GitHub Content ok
GitHub Web ok
GitHub API Calls Remaining 4750
Installed Version 1.28.3
Stage running
Available Repositories 1163
Downloaded Repositories 42
Home Assistant Cloud
logged_in false
can_reach_cert_server ok
can_reach_cloud_auth ok
can_reach_cloud ok
Home Assistant Supervisor
host_os Home Assistant OS 9.3
update_channel stable
supervisor_version supervisor-2022.11.2
agent_version 1.4.1
docker_version 20.10.18
disk_total 228.5 GB
disk_used 90.4 GB
healthy true
supported true
board generic-x86-64
supervisor_api ok
version_api ok
installed_addons Samba share (10.0.0), FTP (4.6.1), File editor (5.4.2), Folder Rsync (0.0.9), Glances (0.17.1), HassOS SSH port 22222 Configurator (0.9.1a), Log Viewer (0.14.0), NGINX Home Assistant SSL proxy (3.1.5), Network UPS Tools (0.11.0), SSH & Web Terminal (12.1.3), Samba NAS (10.0.0-nas3), UniFi Network Application (2.4.1), motionEye (0.18.0), Studio Code Server (5.4.1), Zigbee2MQTT (1.28.2-1), Z-Wave JS (0.1.74), VNC Viewer (1.6.0), Mosquitto broker (6.1.3), ESPHome (2022.11.3), Duck DNS (1.15.0), Home Assistant Google Drive Backup (0.109.2), AppDaemon (0.10.1), MariaDB (2.5.1), Asterisk (2.3.3), VLC (0.1.3), Nginx Proxy Manager (0.12.3), Cloudflared (4.0.4)
Dashboards
dashboards 2
resources 28
views 33
mode storage

Salut,

Rapidement comme ça (j’ai pas tout lu en détail) mais tente de remplacer

/local/floorplan/

par

/local/www/floorplan/

le répertoire www est 'visible depuis l’interface web, ce n’est pas le cas des autres arborescences par défaut
Evidement il faut place les images au nouvel endroit

Merci @Pulpy mais ce n’est pas le soucis car comme sur le dernier exemple, ca marche très bien sans www.

le soucis est dans l’interpretation du code template {{area_name(trigger.entity_id)}} je ne sais pas du tout comme m’y prendre pour l’intégrer dans la ligne du chemin des images…

a noter que {{area_name('light.bureau')}} renvoi bien « bureau » dans le modèle sous « outils de développement » qui est la pièce ou est light.bureau

c’est une question de connaissance en template que je ne maitrise absolument pas…merci

{{area_name(trigger.entity_id)}} est censé retourner la pièce quand l’entity_id est déclenchée, comme par exemple light.bureau dans mon code, si j’ai bien tout compris…

Ok, désolé pour la fausse piste, j’ai besoin d’un café :sweat_smile:

J’ai noté dans mes config (celles pour Google Home notamment) que de temps en temps la partie area n’est pas associée sur certaines entités, du coup est tu certain que trigger.entity_id vaut bien light.bureau dans ton cas ?

le message d’erreur dans la console chrome est le suivant :
/local/www/floorplan/{{area_name('trigger.entity_id')}}.svg: Error fetching resource
le code est pas interprété, juste considéré comme un texte, c’est ca le soucis.

Pour te répondre, non , je ne sais pas. comment tester stp?

EDIT : avec service_data: /local/www/floorplan/${area_name('trigger.entity_id')}.svg
l’erreur est différente : area_name is not defined (See console for more info)

donc il y a une interpretation mais je bricole et c’est basé sur l’exemple : service_data: /local/floorplan/light_${entity.state}.svg et qui n’est pas forcément adapté à mon usage…

Etonnant, tu as le www dans le chemin …

je l’ai rajouté pour suivre tes indications, par respect, mais il n’y a pas de différence

1 « J'aime »

ok là comme ça j’ai pas d’idée ‹ lumineuse ›

1 « J'aime »

merci, au moins tu m’as répondu, ce qui est très sympa de ta part, merci.

il faudrait quelqu’un qui soit bien calé en template et jinja…

je pense que là c’est plus du JS que du jinja

1 « J'aime »

oui exact! Json template

Après puisque l’idée c’est de changer l’image de fond, tu peux passer par une carte plutôt qu’une automatisation

Tu as la notion de state pour afficher un truc spécifique

oui j’ai déja exploré cette option mais je dois zapper le dashboard et faire mon floorplan sur cette carte lovelace du coup?

je n’ai pas utilisé floorplan depuis longtemps mais tout est en dashboard avec ce genre de cartes ici

Dans tous les cas c’est looonnng à faire

2 « J'aime »

oui graaaaaaaaaaaave…je commence à me décourager…lol

Les choses simples sont souvent les plus utiles…

j’ai encore l’étage a faire… :slight_smile:

je voulais juste superposer une image allumée de chaque pièce au lieu de mon calque gris dégueulasse…

Ouais, c’est sur que pour le rendu c’est plus sympa !
Perso j’ai jamais réussi à avoir un truc qui plaise avec home3D & co. et j’ai pas tout fini non plus !

Le svg/vectoriel c’est un avantage par contre

1 « J'aime »

juste pour info, j’ai eu une réponse de @petro sur le forum HA officiel :

« les templates js n’ont pas accès aux fonctions jinja. Ainsi, des choses comme area_name ou area_id ne fonctionneront pas dans un modèle js. »

c’est clair, précis et …sans appel : je passe a autre chose :slight_smile: