Salut,
Quelqu’un a essayé ça via Tasmota?
C’est pour le moment moins abouti qu’avec ESP Home, mais le gros avantage est que tout est généré dynamiquement.
Actuellement, les lumières, volets, thermostats, média player ont des cartes sympa, et tout ce qui est switch, input_boolean, sensor, button, scenes, input_button sont gérés de façon sommaire.
Il y à un écran de veille avec date / heure et météo.
Je trouve ça très prometteur, non?
ca semble effectivement prometteur et ouvre un peu les possibilités avec tasmota, car pour l’instant si on voulait un truc vraiment personnalisé, seul ESPHOME le permettait.
Le NSPANEL est encore relativement jeune, les différents projets qui tournent autour vont encore évoluer.
Je n’ai pas encore testé mais… pourquoi pas si je trouve le temps, histoire de voir ce que ça donne
ca a lair pas mal du tout, je vais essayer ca.
jetais deja sous tasmota mais une flemme enorme avec esphome et tte les modif via nextion
edit : j’ai installé et c’est prometteur ! seul petit bémol, je pense qu’on ne peut pas afficher de binary sensor pour le moment.
effectivement, j’avais tenté de fusionner ton code avec le mien mais cela n’a pas fonctionné.
j’ai repris l’intégralité de ton code et c’est passé.
merci pour le coup de main.
Met à jour, c’est rajouté à partir de la v1.7.0 ! il y a pas mal d’activités sur le github, et tant mieux
oui j’ai vu ça ce matin, c’est cool, puis le firmware de l’écran se met à jour tout seul (si on appuie YES :p)
vraiment sympa tout ça
c’est moi ou ESPHOME 2022.3.1 provoque des erreurs :
[json:079] Increasing memory allocation.
dès que je touche un widget (Standard HIM), ça pars en cacahuète et rebooté…
dans le changelog du 2022.3.1 je vois
" * Reserve less memory for json esphome#3289 by @jesserockz"
ca sens pas bon…
vous avez aussi le soucis?
A priori faut attendre la 3.2 :
finalement j’ai supprimé ce nspanel avec appdaemon
il a mis en vrac mon HA, j’ai mis du temps a remarqué que le app daemon bouffait tout mon cpu
Etonnant, je suis en moyenne à environ 6% de CPU, et 2% de ram utilisés par AppDeamon (de 2 à 10% de cpu)
pour info, le fait d’ajouter le git suivant permet de corriger en attendant la 3.2
- source: github://pr#3331
components: ["json"]
La version 3.2 est sortie hier. Attention si vous n’avez pas la mise à jour, vérifiez que vous avez le bon repo
non effectivement, ca vient pas de la… mon HA part en vrille sans ancune raison donc je me suis penché sur le dernier truc installé…
edit : j’ai trouvé ce qu’il n’allait pas… mon bluetooth interne de mon nuc qui fait tout vriller
@Makai :
hello
j’ai encore repris un peu de temps pour intégrer mon nspanel, en repartant de ton code ou de celui de Dean.
j’arrive à intégrer du RGB ou cover
mais hormis, le on/off les autres changements ne passent pas.
quand j’appuie sur une couleur ou sur le slide de brightness, la valeur revient après 1 sec sur celle de HA et n’est donc pas modifiée.
dans la vidéo de Dean à 5 min 30, je crois comprendre qu’il faut catcher quelque chose dans HA pour effectuer le changement.
tu as fait cela? comment?
merci
Hello,
Dans la partie NSPanel: / on_json_message:
on fait appelle à un service HA pour mettre à jour HA. Du coup par la suite, il faut récupérer l’info de HA. Cela se fait dans :
sensor:
- platform: homeassistant
id: entree_light_color_temp
entity_id: light.entree_bulb
attribute: color_temp
filters:
- calibrate_linear:
- 250 -> 254
- 454 -> 0
on_value:
then:
- script.execute: ha_light_entree_update
Qui permet de récupérer la nouvelle valeur puis fait appelle à un script, ici ha_light_entree_update
qui envoi un json à l’écran du NSPanel pour mise a jour de l’interface de l’écran
merci de ta réponse, j’ai bien pourtant cette partie :
- platform: homeassistant
# Light light.living_room_rgb_bright brightness (0-255)
id: living_room_rgb_bright
entity_id: light.cloche
attribute: brightness
on_value:
then:
- script.execute: ha_wled_salon_update
puis le script :
- id: ha_wled_salon_update
# Decode RGB Attribute ((r,g,b) and send to panel
then:
- lambda: |-
if (id(wled_light_salon).state) {
int i_brightness = int(id(living_room_rgb_bright).state / 255 * 100);
std::string s = id(living_room_rgb_rgb).state;
std::string r = "255";
std::string g = "0";
std::string b = "0";
int p1 = s.find(",");
if (p1 > 0) {
int p2 = s.find(",",p1+1);
r = s.substr(1, p1-1).erase(0,s.find_first_not_of(" "));
g = s.substr(p1+2,p2-p1-2).erase(0,s.find_first_not_of(" "));
b = s.substr(p2+2,s.length()-2).erase(0,s.find_first_not_of(" "));
}
id(nspanel1).send_json_command(0x86,"{\"id\":\"wled_salon\",\"params\":{\"switch\":\"on\",\"light_type\":1,\"mode\":1,\"bright\":" + to_string(i_brightness) + ",\"colorR\":" + to_string(r) + ",\"colorG\":" + to_string(g) + ",\"colorB\":" + to_string(b) + "}}");
} else {
id(nspanel1).send_json_command(0x86,"{\"id\":\"wled_salon\",\"params\":{\"switch\":\"off\"}}");
}
mais rien n’y fait, j’ai beau changer la luminosité sur le NSPanel, il n’y a pas de modif coté HA et donc sur mon ampoule. et ensuite cela revient à la valeur initiale.
désolé de faire mon boulet mais l’utilisation de ce composant sans doc c’est pas simple.
il y a des id partout…
je pense que je viens de comprendre.
lors de la définition des widgets, Dean fait un appel à un script HA
on_json_message:
then:
# Widget 2 (type:0x86 id:light.cloche) - Salon RGB
- if:
condition:
lambda: 'return (type == 0x86 && root.containsKey("id") && strcasecmp(root["id"], "wled_salon") == 0);'
then:
- if:
condition:
lambda: 'return (root["params"].containsKey("switch") && root["params"]["switch"] == "on" && !root["params"].containsKey("bright"));'
then:
- homeassistant.service:
service: light.turn_on
data:
entity_id: light.cloche
- if:
condition:
lambda: 'return (root["params"].containsKey("switch") && root["params"]["switch"] == "off");'
then:
- homeassistant.service:
service: light.turn_off
data:
entity_id: light.cloche
- if:
condition:
lambda: 'return (root["params"].containsKey("bright"));'
then:
- homeassistant.service:
service: script.set_light_on_rgb
data:
entity_name: light.cloche
brightness: !lambda 'return int(root["params"]["bright"].as<float>() / 100 * 255);'
red: !lambda 'return root["params"]["colorR"].as<int>();'
green: !lambda 'return root["params"]["colorG"].as<int>();'
blue: !lambda 'return root["params"]["colorB"].as<int>();'
ce script script.set_light_on_rgb est à priori ce qui fait l’appel.
set_light_on_rgb:
alias: ESPHome RGB light set
sequence:
- service: light.turn_on
target:
entity_id: '{{ entity_name }}'
data_template:
brightness: '{{ brightness }}'
rgb_color:
- '{{ red }}'
- '{{ green }}'
- '{{ blue }}'
j’ai vérifié dans ton code @Makai, toi tu passes directement l’info dans la config du widget via brightness et Color_temp :
- if:
condition:
lambda: 'return (root["params"].containsKey("white"));'
then:
- sensor.template.publish:
id: l_entree_ct
state: !lambda 'return int(root["params"]["white"]["ct"].as<float>());'
- homeassistant.service:
service: light.turn_on
data:
entity_id: light.entree_bulb
brightness: !lambda 'return int(root["params"]["white"]["br"].as<float>() / 100 * 254);'
color_temp: !lambda 'return int(id(l_entree_ct).state);'
enfin, je pense. je vais vérifier mon hypothèse dès que je rentre à la maison.
Edit :
je confirme que cela fonctionne avec le script dans HA
je vais essayer ta méthode aussi pour voir
Effectivement j’ai choisi de ne pas faire de script dans HA, pour moi pas de valeur ajoutée. On peut directement passer les valeurs dans l’appel au service HA
Bon pour ceux qui comme moi galère avec les zones de toucher non alignés sur l’écran j’ai trouvé ça sur le forum US:
lcd_dev fffb 0002 0000 0020
à rajouter dans la section programms avant de charger la première page.
Idem pour la largeur préféré des images en 452x320
Hello!
J’ai acheté 4 nspanel que j’aimerais utiliser en temps que thermostat (chauffage électrique controllé par des shelly) et éventuellement, avoir la caméra de la sonnette qui s’affiche (ou en cliquant sur un bouton), quand ça sonne à la porte
Du coup, je suppose que esphome est le mieux? Si oui, j’ai regardé un peu sur le net, et je vois plusieurs github qui en parle.
Etant noob en la matière (HA, et nspanel) je devrais partir sur quoi?
Merci!