Mon problème
C’est comment qu’on fait ?
Le tutoriel d’origine
J’ai reçu une seconde carte zigbee à 2 contact sec, pour automatiser un petit ventilateur portable qui m’a bien servi cet été.
Premier souci, ne pas alimenter le moteur 220 AC avec les deux enroulements.
problème résolu avec le câblage des 2 contacts en série:
le premier relais a le 220 sur le Common et est branché par le NO (Normaly Open) sur le Commun du second relais. en sortie NC (Normaly Closed), je branche l’enroulement basse vitesse et sur la sortie NO l’enroulement haute vitesse.
Ca me donne 2 interrupteurs, le Marche / Arrêt et le réglage Vitesse 1 / Vitesse 2
Content le Benoit, plus besoin d’aller se lever pour allumer ou éteindre cet accessoire bien utile en temps de canicule, le soir pour s’endormir. C’est quand même dommage de le laisser tourner toute la nuit, surtout qu’en principe la température devrait baisser.
c’est alors que je tombe sur le Tuto de la Carte Timer.
Bien fait, avec des images et des pointes d’humour pour détendre l’atmosphère.
En plus, c’est pile ce que je veux !!!
On commence.
et je bloque pas bien loin…
Là, j’ai pas compris de quoi on parle.
c’est un fichier à créer ou un existant à modifier ? je suis passé à la suite en pensant on verra plus tard.
ça ressemble pas à du code Lovelace, c’est plutôt du

au hasard, je collerai ca plus tard au fond de mon fichier
<config>/configuration.yaml
'tain, ca commence bien… Ah oui, c’est marqué « Niveau Intermédiaire »… je suis loin du compte alors… J’ai pas envie de croiser un « Avancé » un soir au coin d’un bois, ca doit faire peur !!!
allez, on continue.
Ah une autre truc à mettre.
mais avec la syntaxe
sensor:
- platform: template
sensors:
ca ressemble a du <config>/configuration.yaml
section sensor
copié coolé, ca roule.
on avance, on avance. tiens des explications !!! dans un tuto ? c’est pas fréquent. on va lire, y’a peut être des trucs à choper là-dedans.
Ah oui mais non, c’est du 100% théorique, j’aurais préféré un truc dans le machin avancé, vous savez, en bas de la colonne, ah oui, les outils de développement, là ou y’a les valeurs d’un script, pour voir si ca baigne… si si ah… les modèles.
ben non. je lis plus ou moins vite, mais comme y’a pas de cambouis, je zappe un peu.
J’aime bien le cambouis, z’auriez du me voir quand j’ai refait ma moto, une 350 2-temps qui (en)fume.
il a fallu 1/2 journée pour que le nuage se dissipe dans le garage de l’immeuble !!!
J’en étais où ???
ah si :
automation, ca me dis quelque chose, mais quand je rajoute ca au bout de mon <config>/automation.yaml
le « studio Code Server » me sort tout un paquet d’insultes, que j’ai bien du mal à analyser.
en fait, j’ai 2 erreurs différentes:
la première est qu’il faut que je vire la première ligne et que je retire 2 espaces sur toutes les lignes,
la seconde est qu’il faut rajouter []
après condition:
à cause de l’évolution de la version.
une bonne heure de perdue, heureusement que le studio code machin signale les erreurs, sinon j’étais pas sorti le cul des ronces. mais de toutes manières, vu où j’en suis je sais toujours pas si je suis dans le vrai…
faudrait pouvoir vérifier si ce qu’on a déjà tapé est bon ou pas…
Et c’est pas fini.
là, je me dis:
Rhoo y’a 2 trucs différents
y’a python_script et python_scripts si si, regardez … (remarquez, j’ai bien des python_tuile pour ma moto, comme ils disent en Alsace) mais alors avec ou sans ‹ s › le script ? faute de frappe, vu ma dyslexie je fais surtout du copier/coller, alors peut etre que les gens normaux n’auraient pas vu la faute ???
je crée donc le répertoire <config>/python_scripts
et je met une entrée du même métal dans mon configuration.yaml.
heureusement qu’a la demande de reboot, j’ai un warning que l’intégration python_scripts n’est pas trouvée (ou qq chose dans le genre). (je lis les messages d’erreurs mais j’ai une toute petite mémoire tampon de 2 octets qui me donne généralement « .CR/LF »)
alors, je modifie le python_scripts en python_script.
et au reboot suivant, j’ai des ralentissements, des erreurs comme quoi y’aurais un problème et que dans python_script y’avais pas ecrire_etat_entite.py
et avec la nouvelle interface 2022-08, va sélectionner les 3 points pour choisir d’arrêter une tache qui te resette l’interface toutes les secondes… (d’ailleurs je l’ai mis toutes les 5 secondes tant que la peinture est pas sèche)
en fait, les gars de chez HA sont farceurs, c’est <config>/python_scripts
et python_script:
dans configuration.yaml c’est des blagues que se font les « Avancés » entre eux !!!
Et c’est pas fini !!!
??? on est où là ??? et c’est ou qu’il faut ecrire l'état de l'entité py
???
faut éditer quoi ?
je lâche l’affaire, une demi journée à éditer les fichiers de config, un coup à flinguer son HA, heureusement que je sauvegarde tous les soirs…
dans un dernier sursaut d’énergie, je tente un mail à un ami… ou plutôt à l’auteur de cette prose pour laquelle je n’ai pas trouvé l’ouvre boite, à savoir Clemalex et je vais me reposer.
deux heures plus tard, je regarde et je vois que j’étais pas loin de la conclusion.
et c’est là que jai découvert la solution, sous la forme d’un petit triangle:
Oh une carte Lovelace !!!
et une méthode inconnue à ce jours, celle des packages ): z’avez vu, je fais bien la méthode packages !!!
1/4 d’heure pour voir qu’il est urgent de ne rien faire et je créée mon interface Lovelace.
bien sur, rien ne marche, j’ai 6 triangles jaunes façon chantier sur un fond grisâtre, c’est pas top.
et pas un message.
le script lovelace est complètement incompréhensible
pourtant j’ai bien mis le fichier transparent là ou il faut, jusqu’à ce que je décide de mettre une image que j’avais déjà dans une autre interface…
image: /local/custom-lovelace/CRW_9840.jpg au lieu de
image: /local/image/transparent/transparent.png (image sans s parce que j’avais déjà un répertoire image et que j’ai créé un répertoire transparent, mais ca ne marchais pas).
et là, ca commence à prendre forme.
je modifie l’entité de la carte pour mettre celle de mon ventilo, je clique un peu partout et je vois qu’il s’agit d’une carte timer, un peu comme dans le titre du tuto, marrant, non?
le lendemain, un petit mot de Clemalex qui me suggère d’épancher ma logorrhée ici, je m’exécute.
c’est la première fin de mon histoire et de mes états d’âme.
Concernant ce tuto, je suis un peu partagé.
il est clair et détaillé mais il manque 3 ou 4 lignes, du genre ca va sans dire, mais ca va mieux en le disant.
Ecrit il y a un an, on peut voir qu’il y en a eu des octets qui ont coulés sous les interfaces.
il aurait fallu mettre un petit passage sur ce qui change dans les fichiers suivant qu’on ait (ou pas) les fameux packages.
il aurait été génial de pouvoir suivre les différentes phases en voyant ce que ca donne depuis une autre interface (par exemple, on ne parle de l’interface Lovelace que dans la conclusion) histoire de voir si on n’est par parti complètement de travers.
et la conclusion, c’aurait été d’expliquer comment intégrer cette superbe carte dans des applications concrètes.
Y parait que tous les fichiers se trouvent dans le résumé
Surtout ne voyez pas ce post comme un coup de gueule, mais plutôt comme celui de mon état d’esprit quand j’ai suivi ce tuto à 99.9% parfait.
parfait pour les intermédiaires, j’aurais aimé en être. soupir.
mais j’ai quand même besoin d’aide:
je veux transformer cette carte timer en interface de commande de mon ventilo en mode timer, à savoir cliquer sur l’icone du ventilateur désactivé pour le passer en activé et lancer le décompte et qu’il s’arrête à la fin du timer.
Pour l’instant, j’arrive à le lancer depuis l’interface, mais je ne lance plus le timer…
et comme je voudrais faire quelque chose de propre, j’ai pensé à vous…
elements:
- type: conditional
conditions:
- entity: fan.ventilateur_parents_right
state_not: idle
elements:
- entity: fan.ventilateur_parents_right
icon: mdi:fan
style:
color: var(--primary-color)
'--paper-item-icon-active-color': green
font-size: 20px
font-variant: small-caps
left: 17%
top: 20%
tap_action:
action: call-service
service: fan.turn_on
service_data:
entity_id: fan.ventilateur_parents_right
type: state-icon
- entity: sensor.timer_1h_temps_restant
style:
color: var(--primary-color)
font-size: 200%
font-variant: small-caps
left: 50%
pointer-events: none
top: 40%
tap_action:
action: none
type: state-label
- type: conditional
conditions:
- entity: timer.timer_1h_temps
state: idle
elements:
- entity: timer.timer_1h_temps
icon: mdi:play
style:
color: var(--primary-color)
'--paper-item-icon-active-color': var(--primary-color)
font-size: 20px
font-variant: small-caps
left: 50%
bottom: 0%
tap_action:
action: call-service
service: timer.start
service_data:
entity_id: timer.timer_1h_temps
type: state-icon
- type: conditional
conditions:
- entity: timer.timer_1h_temps
state_not: idle
elements:
- entity: timer.timer_1h_temps
icon: mdi:pause
style:
color: var(--primary-color)
'--paper-item-icon-active-color': var(--primary-color)
font-size: 20px
font-variant: small-caps
left: 20%
bottom: 0%
tap_action:
action: call-service
service: timer.pause
service_data:
entity_id: timer.timer_1h_temps
type: state-icon
- entity: timer.timer_1h_temps
icon: mdi:close
style:
color: var(--primary-color)
'--paper-item-icon-active-color': red
font-size: 20px
font-variant: small-caps
left: 40%
bottom: 0%
tap_action:
action: call-service
service: timer.cancel
service_data:
entity_id: timer.timer_1h_temps
type: state-icon
- entity: timer.timer_1h_temps
icon: mdi:checkbox-marked-circle-outline
style:
color: var(--primary-color)
'--paper-item-icon-active-color': green
font-size: 20px
font-variant: small-caps
left: 60%
bottom: 0%
tap_action:
action: call-service
service: timer.finish
service_data:
entity_id: timer.timer_1h_temps
type: state-icon
- entity: timer.timer_1h_temps
icon: mdi:play
style:
color: var(--primary-color)
'--paper-item-icon-active-color': var(--primary-color)
font-size: 20px
font-variant: small-caps
left: 80%
bottom: 0%
tap_action:
action: call-service
service: timer.start
service_data:
entity_id: timer.timer_1h_temps
type: state-icon
image: /local/custom-lovelace/transparent.png
type: picture-elements
j’aurais aimé mettre le nom du ventilateur à coté de l’icone et qu’il démarre (enfin le timer + le ventilo) quand on clique dessus ou sur le bouton run en bas et surtout qu’il s’arrête à la fin du timer.
je suppose que si on l’arrête manuellement avec le marche/arrêt (via HA quand même), le timer vivra sa vie pour arriver jusqu’à la fin du décompte.
le ventilo doit avoir sa vie propre et quand on active le timer, il est géré par le timer.
dernière question, si je veux faire un second timer, je suppose que je dois créer tous ces services en double?