J'ai un soucis avec le soleil

Salut,

Remplace les device_id et entity_id par les noms réels …
Les 2 ça fait doublons et en plus c’est pas lisible.

Là comme ça ça semble cohérent, partage les traces

Là par contre, je vois pas bien l’intérêt de vérifier les conditions solaires.
Si tu éteins la TV, tu eteins la lampe, et puis c’est tout. Si la lampe est allumée, et s’eteindra, si elle est déjà éteinte, ça ne fera rien. Il faut rester simple
Et du coup ça fait doublon avec

Là aussi des traces pour y voir plus clair, ça serai plus facile

Bonsoir Pulpy-Luke,

Qu’est-ce qu’une trace ?

J’ai saisi les prises par leur nom dans l’éditeur graphique, et j’ai recopié les automatismes depuis l’éditeur yaml.
Dans le code du précédent post, je vais modifier les id alphanumériques par un nom explicite.

Je teste le soleil et la télé pour : allumage ou extinction automatique de la lumière si je regarde la TV et que la nuit arrive ou s’en va :

  • il fait jour :
    – je ne regarde pas la télé : lampe éteinte
    – je regarde la télé : lampe éteinte
  • passage du jour à la nuit :
    – je ne regarde pas la télé : lampe éteinte
    – je regarde déjà la télé : lampe s’allume
  • il fait nuit :
    – je ne regarde pas la télé : lampe éteinte
    – je regarde la télé : lampe allumée
  • passage de la nuit au jour :
    – je ne regarde pas la télé : lampe éteinte
    – je regarde déjà la télé : lampe s’éteint

Donc si je regarde la télé et qu’il fait nuit : lampe est allumée.

Dans mon esprit, tester une condition utilise moins de ressource que de faire inutilement une action.
Il est vrai que (il y a très longtemps) j’ai appris à programmer en optimisant.
Par exemple, la condition « if » est celle qui sera vrai le plus souvent, afin de trouver tout de suite les instructions et ne pas faire le saut jusqu’au « else ».
J’ai quand même mis en commentaire le test inutile pour éteindre la lampe quand j’éteins la télé.

Salut

Regarde en haut à droite de tes automatisations : historique d’execution

Comme ça je comprends que le déclencheur c’est le soleil… Pour moi c’est pas suffisant…
Par exemple :

  • il fait déjà nuit, tu allumes la TV, que doit-il se passer ?
  • idem, il fait nuit, tu éteins la TV, que doit-il se passer ?
  • on bascule en nuit, la TV n’est pas allumé, la lampe est allumée, que doit-il se passer ?

Pour moi, tu devrais avoir 4 automatisations avec les déclencheurs suivants:

  • Déclencheur: Nuit vers jour. Condition: SI TV allumée. Action: éteindre la lampe
  • Déclencheur: Jour vers Nuit. Condition: SI TV allumée. Action:allumer la lampe
  • Déclencheur: TV off vers On. Condition: SI Nuit. Action:allumer la lampe
  • Déclencheur: TV on vers Off. Action: éteindre la lampe

Oui dans la majorité des cas, c’est vrai sauf que là, ton test pour savoir si la lampe est allumé n’est pas un simple test. Très synthétiquement, il appelle la lampe, attends la réponse, et te retourne l’info. Donc c’est aussi long complexe, que donner l’ordre à la lampe de changer d’état.

Tout à fait d’accord aussi (c’est même une partie de mon boulot ce genre de truc). Mais bon, avant de commencer cette optimisation fine, il faut d’abord avoir un truc à la fois fonctionnel et lisible. Essayer d’'optimiser en phase de création, c’est faire des raccourci qui sont souvent mauvais.

Bonjour Pulpy-Luke,

Merci pour le temps à me répondre.

Il va me falloir lire, s’il existe, Home Assistant pour Les NULS !
Les vidéos YouTube me saoulent, pas moyen de mettre un marque-page pour y revenir rapidement.

Chez moi j’ai fait une « maquette » sur une multiprise à 5 prises.
J’y ai branché 2 prises intelligentes, que j’ai nommées : prise_télé, prise_soleil, et un smart switch nomée prise_spot.
Chacun commande une lampe.

En appuyant sur le bouton prise_soleil ou prise_télé, ça sera plus rapide que d’attendre le coucher/lever de soleil et me déplacer du bureau au salon pour voir si le spot s’allume ou pour éteindre ou allumer la télé.
Manuellement pour la télé et le soleil.
Automatiquement pour le spot.

Le résultat des tests prochainement…

Salut,

ça c’est valable pour tout le monde, pas possible de comprendre du 1er coup un truc avec autant de fonctions

Tu peux faire plus simple :
Dans les outils de dev, si tu selectionne l’entité sun.sun, tu peux y définir un état


Et donc forcer le jour et le nuit.
ça marche pour tout :wink:

Bonsoir,

Au final, il me faut (pour l’instant) 4 automatismes :

  1. quand la télé est allumée en journée et que vient la nuit → allumer la lampe
    • trigger : sunset
    • condition : télé courant
    • action : allume la lampe
  2. quand la télé est allumée la nuit et que vient le jour → éteindre la lampe
    • trigger : sunrise
    • condition : télé courant
    • action : éteint la lampe
  3. quand il fait nuit et que j’allume la télé → allumer la lampe
    • trigger : télé courant
    • condition : sunset
    • action : allume la lampe
  4. quand j’éteins la télé → éteindre la lampe
    • trigger : télé courant
    • condition : aucune (merci Pulpy-Luke)
    • action : éteint la lampe
  5. ou plus, voir plus loin …

J’ai choisi la consommation de la télé au statut on/off car quand la prise télé passe sur on, la télé est en veille et je dois l’allumer avec la télécommande.

Pour le 1. et 2., serait-il possible d’optimiser en une seule procédure car il me semble avoir vu un truc du genre trigger : sun before sunset and sun after sunrise aucune condition et action: if else endif

Donc pour l’instant j’en suis là et bien content.
Même si je suis un peu déçu : il y a 5 secondes d’attente quand c’est le soleil qui commande et 30 à 40 quand c’est la prise télé, je préfèrerais que ce soit l’inverse.
Mais quand même, tout ce temps passé pour ça !

Dans le salon, il y a une multiprise classique, sur laquelle sont aussi branchés le magnétoscope et la chaine hifi.
Dans une démarche écologique, je l’éteins manuellement.
Et là rien ne va plus quand je rallume cette multiprise.
En effet, il faut un certain temps (que je n’ai pas encore mesuré), pour que la prise de la télé soit opérationnelle et envoie des data cohérentes avant que je puisse allumer la télé et que la lampe soit gérée.
J’ai cru voir qu’il y a un état inconnu et un autre indéfini, je pense qu’il va me falloir regarder ça pour la prise télé et mettre un while quelque part !

Puisque j’ai réglé les automatismes avec le soleil, sur ma maquette, je vais utiliser cette prise que je vais mettre entre la prise télé et la multiprise de la maquette. Elle représentera le bouton de la multiprise du salon.

C’est tout pour le moment.

Bien évidemment, tous commentaires, toutes remarques et suggestions pour m’aider à avancer sont les bienvenues.

EDIT : en fait, je vais ouvrir un autre sujet, car ce n’est plus lié au soleil…

Pour optimiser il faut voir les vraies automatisations (copie en yaml)… En pseudo code, là c’est pas faisable

ça c’est fortement dépendant de plein de choses :

  • de la fréquence de rafraichissement des valeurs … typiquement la prise n’envoie pas une valeur toutes les secondes…
  • de la fréquence de recalcul des entités par HA (toutes les minutes au plus long si pas d’évènement lié )

Pas compris comment ça marche. Une multiprise classique, c’est pas connecté.
Toujours est-il que si tu coupes l’alim de la prise connectée, forcement il faut le temps que ça démarre, que ça se reconnecte etc… Dépendant du matériel et de la techno

Hello

Je n’ai pas de soucis avec le soleil car j’habite en Bretagne :grin:

Plaisanterie mise à part, si tu as une télé connectée , il serait peut être plus intéressant de voir si il existe une intégration pour celle-ci et utiliser son état remonté dans HA plutôt que ta prise connectée.

@+

Salut,
tout a fait, mais quand la télé mets du temps a actualiser l’entité c’est un peu chiant.
Ma Philips peut mettre 20-30s a changer d’état contre 3s avec une prise connecté :upside_down_face:

Bonjour Pulpy-Luke

Pour optimiser il faut voir les vraies automatisations (copie en yaml)… En pseudo code, là c’est pas faisable

Voici un premier extrait pour exemple :

trigger:
  - 
condition:
  - condition: sun
    before: sunset
    after: sunrise
action:

Il faut que je retrouve la suite (if then else endif pour action: ) dans le forum pour m’en inspirer.

ça c’est fortement dépendant de plein de choses :

  • de la fréquence de rafraichissement des valeurs … typiquement la prise n’envoie pas une valeur toutes les secondes…
  • de la fréquence de recalcul des entités par HA (toutes les minutes au plus long si pas d’évènement lié )

Toujours est-il que si tu coupes l’alim de la prise connectée, forcement il faut le temps que ça démarre, que ça se reconnecte etc… Dépendant du matériel et de la techno

Voilà un sujet de résolu avant que je ne l’ouvre !

Mon matériel est une box tv x96mini+ [X96 min+ : ai-je bien installer Home Assistant sur cette box TV Android? - #9 par lente_reflexion]

Bonjour Krull56

Je n’ai pas de soucis avec le soleil car j’habite en Bretagne :grin:

Fort heureusement, la Bretagne est assez loin du cercle polaire, pour avoir des jours et des nuits.

Plaisanterie mise à part, si tu as une télé connectée , il serait peut être plus intéressant de voir si il existe une intégration pour celle-ci et utiliser son état remonté dans HA plutôt que ta prise connectée.

Ma télé n’a pas la technologie pour être connectée. Tout juste un port usb pour une clé de 8Go maxi.
Si elle l’était, je l’aurais signalé dans le descriptif.

Pareil pour le spot, l’ampoule n’est pas connectée, elle est blanche tout simplement.
Si plus tard, je la remplace par une connectée, ça ne devrait pas être difficile à modifier et jouer sur l’intensité lumineuse.
Mais vu le prix d’achat et l’économie réalisée, l’amortissement est sur plusieurs décennies (si elle ne claque pas avant) et statistiquement, dans 15 ans, je ne serai plus de ce monde.

Salut,

Ce que j’évoque c’est le code de tes 4 automatisations…
La partie théorique de HA c’est pas un vrai souci. Remarque à part, je ne vois pas ce que before/after apporte de plus par rapport à d’autres façon habituelle de coder

Merci Pulpy-Luke pour ton implication.

[mode parano : on]
De nos jours, bons nombres d’entreprises, d’administrations, de particuliers, se font pirater.
A part un virus ou un ransomware, le particulier ne sait pas si son ordi héberge à son insu des données sensibles ou fonctionne comme vpn.
D’autres se contentent de diffuser sur le net, toutes les cameras disponibles (jouets, ordinateurs, télévision, surveillance, interphone, etc.).
Aussi je ne veux partager les id où les noms de mes appareils.
[mode parano : off]

Les 4 automatismes n’ont rien de différent que ce que j’ai déjà indiqué :

  • le soleil en trigger pour déclencher au lever et coucher du soleil avec un test sur la consommation de la télé pour interagir avec la lampe
  • la consommation de la télé avec un test sur le soleil pour savoir s’il fait nuit ou jour pour interagir avec la lampe

Au lieu d’avoir 4 automatismes, je pense qu’il est possible d’en avoir qu’un avec 2 trigger et des conditions dans action.
J’ai lu/vu quelques choses qui y ressembleraient, il me faut retrouver ça sur le forum…
De mémoire il y aurait des id créés dans trigger et un choice dans action, mais c’est confus dans ma tête.

Ce qui me manque, c’est la théorie.
On abordera la syntaxe quand j’aurai déjà essayé de faire quelque chose.

[mode prétentieux : on]
« Il vaut mieux apprendre à pécher que recevoir du poisson (ou pire, le voler) ! »
Je sais pêcher, avec un asticot sur l’hameçon au bout d’un fil au bord de l’étang.
Là, je découvre la pêche en mer, le principe est le même, c’est le contexte qu’il me faut appréhender.
Si ça mord et que je reste bredouille, on étudiera la façon de faire.
[mode prétentieux : off]

En attendant, bonne fin de semaine et

Alors partages ton code en anonymisant les id de tes appareils alors…
Il sera impossible de t’aider sur la structure de ton code si tu ne postes pas ton code…

Et ici tu auras toujours une personne bienveillante pour te signaler que dans ton code/capture d’écran tu as laissé une info sensible en clair (nom, adresse, login, id, etc…) pour te proposer de l’effacer ou de la masquer.

Raison de plus pour partager ton code. Ceux qui « savent pêcher en mer » te montrerons pourquoi ta technique ne marche pas, comment l’améliorer, la faire marcher. Ce sera mieux que d’utiliser un montage clef en main dont tu ne comprendrais pas le principe…

[Edit] Joyeuses Pâques aussi.

1 « J'aime »

Salut,

J’ai pas grand chose à ajouter sur le mode parano de plus que @BBE … Mais j’ai quand même pas l’impression que : switch.tv_salon ce soit une info critique à partager … Et puis bon, en tant que modo, j’ai quand même déjà pas mal de trucs accessibles

Par contre, raisonner sur un exemple que l’on interprète des deux cotés (toi et les membres du forul) et qui est encore soumis à ta réécrire, ça me parait bien compliqué

Par ailleurs comme dit ultérieurement, l’optimisation c’est après la phase de validation… Et 2 automatisations au lieu de 4 c’est pas ce que j’appelle de l’optimisation. Et je ne suis convaincu (mais pas tout !) que ça soit plus simple à comprendre/maintenir au début.

1 « J'aime »

Bonjour BBE,

Mon code actuel fonctionne, comme indiqué + haut.

alias: "télé éteint lampe"
description: éteindre la lampe quand j'éteins la télé
trigger:
  - type: current
    platform: device
    device_id: latélé
    domain: sensor
    below: 10
condition: []
action:
  - type: turn_off
    device_id: lalampe
    domain: switch
mode: single

alias: "télé allume lampe"
description: s'il fait nuit allumer le spot quand j'allume écran
trigger:
  - type: current
    platform: device
    device_id: latélé
    domain: sensor
    above: 10
condition:
  - condition: sun
    after: sunset
    before: sunrise
action:
  - type: turn_on
    device_id: lalampe
    domain: switch
mode: single

alias:  "soleil éteint télé"
description: "si je regarde la télé éteint la lampe quand le jour se lève"
trigger:
  - platform: sun
    event: sunset
condition: []
  - type: is_current
    condition: device
    device_id: latélé
    domain: sensor
    above: 10
action:
  - type: turn_on
    device_id: lalampe
    domain: switch
mode: single

alias:  "soleil allume télé"
description: "si je regarde la télé allume la lampe quand la nuit arrive"
trigger:
  - platform: sun
    event: sunrise
condition: []
  - type: is_current
    condition: device
    device_id: latélé
    domain: sensor
    below: 10
action:
  - type: turn_on
    device_id: lalampe
    domain: switch
mode: single

Maintenant, je cherche à aller plus loin en m’inspirant de ce que j’ai pu lire, mais il faut que je retrouve ces exemples et les « codes » proposés dans le forum, que je les assimile et les applique.
Il n’est pas questions de montages clé en main.

Au passage, tu as anonymisé ce genre de ligne

l’id d’origine c’est un id unique à ton environnement mais le partager n’as pas d’impact.
Par contre c’est juste pas lisible à la fin, perso je préfère utiliser les noms de entités lors de ma création d’automatisation. C’est lisible et partageable directement
image

Concernant les optimisations, là tu en as 4 ultra basiques.
Si on prends le regroupement de 2 d’entre elles :
Aujourd’hui :

  • trigger sunset => déclenche 1 automatisation A (1 fois par jour) => fait 1 action direct
  • trigger sunrise=> déclenche 1 automatisation B (1 fois par jour) => fait 1 action direct

En groupant les 2

  • trigger sunset + trigger sunrise=> déclenche 1 automatisation unique (2 fois par jour) => test si sunrise ou sunset => ) => fait 1 action différente

On voit bien que :

  • ça n’apporte absolument pas de gain en perf : c’est même négatif (on fait le test en plus 2 fois par jour)
  • c’est plus compliqué à debug/maintenir
  • on gagne un peu en nombre d’automatisations
2 « J'aime »

J’ai cru qu’il ne fonctionnait pas… C’était compliqué de débuger sans code…

Rien à dire de plus que @Pulpy-Luke concernant l’optimisation…
Il faut savoir ce qu’on veut optimiser et pourquoi… sur du simple, il faut rester simple…

1 « J'aime »

Bonsoir,

Je fais mes automatismes par l’éditeur graphique déjà disponible.
Quand je passe par yaml pour vous copier le code, c’est remplacé par une suite alphanumérique.
Dans mes messages, j’ai remplacé à la main. C’est fastidieux.

Je n’ai plus les 4 automatismes distincts :

  • quand j’éteins la télé → éteindre la lampe (même si elle est déjà éteinte)
  • quand j’allume la télé et s’il fait nuit → allumer la lampe
  • quand le jour se lève et si je regarde déjà la télé → éteint la lampe
  • quand le jour se couche et si je regarde déjà la télé → allumer la lampe

mais un seul qui teste que :

  • s’il fait nuit et que la télé est allumée → il faut allumer la lampe,
  • sinon → il faut l’éteindre.

C’est le trigger qui a 4 déclencheurs sunset, sunrise, courant > 10, courant <10.

Merci pour vos contributions qui m’ont permis d’avancer.

Salut

ça c’est 100% dependant de la manière de construire son automatisation en mode graphique
id

1 « J'aime »