SONOFF NsPanel : Tuto complet sous Tasmota & écrans d'origine

8/ Créer les scénarios pour le faire fonctionner

Pour faire fonctionner votre NsPanel, il va vous falloir plusieurs scénarios :

  1. Un scénario d’init : A lancer lorsque le NsPanel s’allume, il va permettre de lui envoyer votre config par défaut, de paramétrer votre écran menu et votre écran de thermostat
  2. Un scénario d’update : A lancer lorsque que vous souhaitez envoyer un état ou un changement à votre NsPanel. Vous pouvez le faire aussi dans les paramètre avancé de toutes les commandes de équipements qui vous servent sur votre NsPanel, mais c’est plus propre et plus lisible je trouve de tout centraliser.
  3. Un scénario d’action : Il se lancera lorsque vous appuyez sur les boutons de l’interface de votre NsPanel, c’est lui qui lancera les commandes de vos équipements que vous pilotez avec votre NsPanel.
  4. Un scénario pour les boutons physiques : Il se lancera quand vous utilisez vos boutons physique, il permettra d’affecter une fonction dans jeedom à ces boutons.
  5. Un scénario pour gérer les thermostat : Il se lancera lorsque vous interagirez avec les commandes du NsPanel qui concernent le thermostat.
  6. Un scénario pour contourner certains bugs du NsPanel : Et oui, il n’envoi pas toujours du JSON propre, et il faut le nettoyer :wink:

Scénario d’init
Commençons par le début, Il faut détecter le démarrage du NsPanel.
Il est provoqué lorsque le NsPanel devient Online !

Comme j’ai plusieurs NsPanel, je commence par vérifier lequel a lancé le scénario, ensuite je lui envoie ma configuration (location, toujours allumé, et j’initialise la température)

Dans ce scénario, à la suite de ses actions, je configure la page menu et la page thermostat, mais nous verrons cela dans les deux prochains chapitre, je vous laisse pour le moment là dessus :wink:

Scénario d’update
A chaque fois qu’une information change sur votre système il faut prévenir votre NsPanel, voici comment je procède :

Je met en déclencheur toutes les informations qui doivent mettre à jour mes NsPanel, ensuite je vérifie qu’elle info à déclenché le scenario, et je met à jour les NsPanel :


Scénario pour les boutons physiques

Il y a deux boutons physiques sur le NsPanel, vous pouvez biensur brancher des équipements dessus qui s’allumeront avec les relais. Vous pouvez déclencher ces relais à distance via MQTT, et vous pouvez aussi tout simplement ne rien brancher dessus et vous servir de leur état pour lancer des actions sur votre Jeedom. C’est ce que j’ai fait, je les utilise pour piloter les volets de la pièce.

Voici comment cela fonctionne :


Vous voyez que je repasse ensuite les boutons en OFF, c’est pour faire un retour d’état et ne déclencher qu’au moment ou ils passent sur ON. J’aurai pu être moins maniaque et déclencher l’action au changement d’état quel qu’il soit, mais on aurait vu sur l’interface qu’ils sont parfois en état actifs et parfois non actifs… :slight_smile:

Attention, il y a une subtilité ici.
L’état des bouton power est ON et OFF, et pourtant j’utilise un type binaire.
Il faut aller configurer une valeur calculée (comme expliquée avant dans ce tuto)

Scénario pour contourner les bugs

Le NsPanel renvoi parfois du JSON erroné, il n’est dont pas compris par JMQTT et aucune action ne se déclenche, la seule parade que j’ai trouvé c’est de déclencher un scénario qui va scruter toutes les commandes qui passent et corriger celle que j’ai repéré comme non correctes.
Le scénario se déclenche tout simple comme cela :

La commande info est la suivante :

Et le bloc code exécuté est :


Le premier cas concerne le bouton pour passer OFF un bandeau LED
Le second cas se produit quand nous réglons la température du thermostat à 21°C
Je n’ai pas testé toutes les sortes de boutons. A vous de vérifier s’il y a d’autres bugs, et n’hésitez pas à me les indiquer pour mettre à jour le tuto !

Vous voyez ici les erreurs de JSON :
image

image

Le forum n’affiche pas le caractère spécial et je ne peux pas vous copier coller le code ici, voici donc un pastebin pour le récupérer.

Si ce JSON erroné est détecté j’appelle une commande qui publie sur le même topic le JSON corrigé :wink:
Si ce mécanisme vous parait trop lent à cause des échanges MQTT multiples, vous pouvez aussi dans le code appeler plutôt directement la commande d’action prévue…
Ce qui est étrange, c’est que pour la température, ça se produit qu’avec 21°C !! Avec les autres valeurs le JSON est correct !!
Ce bug se produit avec les 3 versions de firmwares nextion (1.0.1 comme 1.2.1 et 1.4.0)

Voici les commandes appelées pour publier le bon JSON :

Les scénarios d’actions et thermostat seront présentés dans les deux prochains chapitres !