SONOFF NsPanel : Tuto complet sous Tasmota & NxPanel

Salut à tous,

Contexte :

J’ai récemment reçu mes NsPanel et j’ai voulu les utiliser sous Jeedom, cependant, je n’ai rien trouvé de très précis sur comment faire tout fonctionner. Il a fallu lire un post très très long, avec pleins de pistes différentes qui s’entremêlent et ce n’était vraiment pas évident. J’ai donc décidé de faire des « petits » tutos qui reprennent toutes les informations que j’ai pu trouver à droite et à gauche, ici et sur d’autres forums pour que les prochaines personnes qui se lancent puissent avoir une version agrégée et à jour !

Vous pouvez aussi voir mon autre tuto : SONOFF NsPanel : Tuto complet sous Tasmota & écrans d’origine

Qu’est-ce que nous allons faire dans ce tuto ?
En partant d’un NsPanel sorti du carton nous allons :

  1. Comprendre le fonctionnement (Firmware/Driver/Nextion)
  2. Les prérequis
  3. Ce qui ne fonctionne pas, ou pas bien
  4. Flasher le NsPanel avec le firmware Tasmota
  5. Flasher le nextion avec NxPanel
  6. Modifier le driver pour la date
  7. Configurer le MQTT
  8. Créer l’équipement dans jeedom
  9. Créer les scénarios pour le faire fonctionner
  10. Configurer l’affichage de la page d’accueil
  11. Aller plus loin avec les config d’écran
  12. Installer JMQTT en plus de MQTT manager
  13. Sources et ressources
  14. A l’aide !!!
  15. Conclusion (à voir dans mon autre tuto !)

Le tout agrémenté de tips !

Voila à quoi va ressembler votre NsPanel si vous suivez ce tuto :



7 « J'aime »

1/ Comprendre le fonctionnement (Firmware/Driver/Nextion)

Le NsPanel est en fait un assemblage de deux éléments principaux. Un ESP, qui est un microcontrôleur, une sorte de (très) mini ordinateur qui se connecte à votre réseau en wifi, et d’un écran Nextion qui est un écran tactile. A cela vient s’ajouter deux relais qui vous permettent d’allumer ou d’éteindre des équipements via les boutons physiques.

Quand on parle de firmware pour le NsPanel on parle en quelque sorte de l’OS qui tourne sur l’ESP.
De base il y a celui de Sonoff, mais on peut le remplacer par exemple par ESPhome ou dans notre cas, par Tasmota. Ces deux firmwares (et d’autres également) existent pour toute sorte d’ESP et aussi pour le NsPanel.
L’ESP du NsPanel est ensuite relié à un écran tactile, c’est un modèle Nextion. Lui aussi possède un firmware. Ce dernier contient tous les écrans affichables par le NsPanel. Ce n’est donc pas le firmware de l’ESP qui « dessine » les écrans, ils sont bien déjà présent dans le Nextion. L’ESP va simplement indiquer au Nextion quel écran afficher, et quelles informations compléter dans les « trous » prévus.

Dans ce tuto nous allons flasher le firmware du Nextion avec NxPanel qui est un firmware alternatif. Nous pouvons aussi utiliser celui d’origine (voir SONOFF NsPanel : Tuto complet sous Tasmota & écrans d’origine) ou alors certainement aussi Lovelace-UI que je n’ai pas testé. Qui semble très abouti mais nécessite encore plus de recherches…

L’ESP doit savoir communiquer avec le Nextion, pour ce faire il utilise un driver. Dans notre cas ce sera un fichier d’extension .be qui est écris en langage berry.

Tout ça c’est donc le fonctionnement interne du NsPanel. Mais il peut communiquer avec l’extérieur, en l’occurrence ici nous voulons qu’il communique avec Jeedom.

Il y a plusieurs façon de faire, mais nous allons utiliser le MQTT qui nous permettra de piloter au mieux notre NsPanel.

Je ne vais pas expliquer ici le fonctionnement du MQTT, vous pouvez déjà trouver sur ce forum plein d’explications très claires.

1 « J'aime »

2/ Les prérequis

Pour suivre ce tuto, il vous faudra :

  • Connaitre le fonctionnement de MQTT
  • Un broker MQTT opérationnel
  • Le plugin JMQTT (MQTT manager ne permet pas de faire du json, si vous utilisez MQTT manager il est possible d’installer en plus JMQTT et d’utiliser le broker installé par MQTT manager => Voir plus loin dans le tuto)
  • Un FDTI en 3.3V (Petit appareil qui se branche en USB et qui permet de flasher un ESP par le port série) et le câblage qui va bien. Attention, il en existe en 5v ! Ne vous trompez pas pour ne pas griller le NsPanel
  • Un NsPanel, bien évidemment :wink:
  • De la patience
  • Beaucoup de temps

Pensez aussi à faire un backup du firmware d’origine.
C’est expliqué ici : J'ai testé et flashé le Sonoff NsPanel, cet écran/interrupteur a tout faire ! MQTT TASMOTA - YouTube
Vous pouvez commencer à 18 minutes. C’est à faire juste avant de flasher. Vous pouvez suivre ce tuto et je vous indique quand faire le backup :wink:

ATTENTION, si vous voulez un jour restaurer votre NsPanel avec le firmware d’origine pour le faire fonctionner sous eWeLink, il faut absolument que vous restauriez le backup qui vient de votre propre NsPanel. Il contient son identifiant unique, et si vous restaurez le backup d’un autre NsPanel, vous aurez une erreur 30014 au moment de la synchro wifi. Impossible alors de le faire refonctionner sous eWeLink…

1 « J'aime »

3/ Ce qui ne fonctionne pas, ou pas bien

Certains écran de la documentation.

Je n’ai pas compris/réussi à faire fonctionner tous les écrans. Si vous y arrivez n’hésitez pas à l’expliquer pour que je complète ce tuto

Par exemple l’écran d’alerte ou encore celui de l’alarme.

La modification des températures avec les flèches

Quant on utilise les flèches pour modifier la température, il exécute le scénario associé à chaque appui, créant un décalage, et il ne prend donc pas la dernière valeur.

3 « J'aime »

4/ Flasher le NsPanel avec le firmware Tasmota

Vous pouvez regarder cette vidéo à partir de 4min50 jusqu’à 12min. Les différentes manipulations sont décrites tout de même ci-dessous. (Et si vous voulez faire un backup, regardez avant l’étape 7)

  1. Il faut commencer par démonter le capot arrière avec un tournevis plat. il est simplement clipsé.
    Cela va vous permettre de retirer le transformateur qui se trouve à l’arrière avec les borniers de connexion.

  2. Ensuite démontez la plaque arrière avec un tournevis petit cruciforme. Il y a deux vis à retirer.

  3. Vous accédez à la plaque électronique. Il faut retirer la nappe de l’écran, pour ce faire il faut pousser sur les côtés pour la libérer

  4. Retirez ensuite la plaque électronique (il ne faut pas faire les manipulations suivante sans retirer la plaque, car vous risquez de faire un court circuit comme la partie d’en dessous est métallique)

  5. Une fois la plaque retirée, repérez les connecteurs série :

  6. Branchez votre FDTI sur ces connecteurs 3V3, RX, TX, IO0 et GND
    Attention, il faut croiser les RX et TX, cela veut dire que le RX du FDTI doit être branché au TX du NsPanel et le TX du FDTI doit être branché au RX du NsPanel
    Le port IO0 doit quand à lui être connecté au GND aussi
    Vous pouvez, soit souder les fils sur la plaque, soit maintenir une pression comme dans la vidéo pour faire en sorte qu’ils restent en contact.

ATTENTION
Si vous souhaitez faire un backup du firmware original, c’est maintenant ou jamais !!

ATTENTION, si vous voulez un jour restaurer votre NsPanel avec le firmware d’origine pour le faire fonctionner sous eWeLink, il faut absolument que vous restauriez le backup qui vient de votre propre NsPanel. Il contient son identifiant unique, et si vous restaurez le backup d’un autre NsPanel, vous aurez une erreur 30014 au moment de la synchro wifi. Impossible alors de le faire refonctionner sous eWeLink…

Pour faire un backup suivez cette vidéo à partir de 18minutes et vous pouvez couper et revenir ici à 22m15

  1. Rendez vous ensuite sur Install Tasmota et sélectionnez « Tasmota32 Sonoff-NSPanel (english) » et « All »
    Cela va installer la dernière version de tasmota pour le NsPanel. Pour ma part je suis en 12.4.0 qui est la dernière version à l’heure où j’écris ces lignes.

  2. Branchez le FDTI au PC en USB et cliquez sur Connect, puis suivez les instructions à l’écran.

  3. Si vous avez un message d’erreur, c’est que le contact des pin entre le FDTI et le NsPanel est mal fait, appuyez un peu plus sur les connecteurs pour bien faire contact, et débranchez rebranchez l’USB puis relancez le process.

  4. Voila c’est fait !!! Tasmota est installé sur le NsPanel ! Vous pouvez maintenant remonter votre NsPanel et le brancher normalement. L’écran devrait rester noir et c’est normal ! Rechercher depuis votre téléphone le réseau wifi du NsPanel qui devrait apparaitre avec un nom « TasmotaXXXX ». Connectez vous dessus.

  5. Ouvrez le navigateur de votre téléphone et configurez le NsPanel pour qu’il se connecte à votre réseau wifi domestique.

  6. Une fois cette étape réalisée, allez sur votre navigateur de PC sur l’IP indiquée sur votre mobile lors de la connexion (ou recherchez sur votre box l’ip de votre NsPanel) Vous devriez avoir l’interface de Tasmota

  7. Allez dans Configuration > Configure other puis remplacer le template actuel par :
    {"NAME":"NSPanel","GPIO":[0,0,0,0,3872,0,0,0,0,0,32,0,0,0,0,225,0,480,224,1,0,0,0,33,0,0,0,0,0,0,0,0,0,0,4736,0],"FLAG":0,"BASE":1,"CMND":"ADCParam1 2,11200,10000,3950 | Sleep 0 | BuzzerPWM 1"}
    Cochez Activate

  8. Mettez un Device Name et un Friendly Name 1 identique et validez

Une fois que vous validez, le NsPanel va redemarrer et c’est à ce moment que l’écran devrait s’allumer ! Mais ce n’est pas fini, rendez-vous à l’étape suivante

1 « J'aime »

5/ Flasher le nextion avec NxPanel

Une fois Tasmota opérationnel, nous allons installer NxPanel.
Pour l’instant l’écran n’est toujours pas fonctionnel, c’est normal, nous n’avons toujours pas donné de driver à Tasmota, il ne sait donc pas communiquer avec l’écran Nextion. Nous allons lui donner celui de NxPanel.

  1. Téléchargez le driver à cette adresse : https://github.com/peepshow-21/ns-flash/raw/master/berry/nxpanel.be et renommez le en autoexec.be
  2. Rendez vous dans l’interface web de tasmota dans Consoles > Manage File system
  3. Envoyez le fichier autoexec.be en cliquant sur le bouton Start upload
  4. Redemarrez ensuite votre NsPanel via le Main Menu et Restart

Votre NsPanel redemarre, par contre toujours pas avec l’interface de NxPanel, c’est normal le Nextion n’est toujours pas flashé !

  1. Retournez dans Consoles > Console puis tapez installnxpanel et validez en appuyant sur la touche « entrée » de votre clavier. Il devrait y avoir une barre de progression sur le NsPanel et vous devriez voir que ça avance dans la console de Tasmota.

Voilà en redémarrant, vous voyez l’interface de NxPanel !!
L’heure devrait se mettre à jour ! Si ce n’est pas le cas, voyez l’étape finale pour le problème de vitesse (A l’aide)

2 « J'aime »

6/ Modifier le driver pour la date

Nous allons modifier le driver pour supprimer l’affichage de la date en dessous de l’heure (si le format anglais vous dérange). Pour ma part, je préfère l’afficher en dessous en français comme cela :

image

L’affichage d’origine est celui-ci :

image

Pour supprimer la date, il suffit d’éditer le fichier autoexec.be et remplacer à la ligne 259

var time_payload = '{ "clock": { "date":' + str(nsp_time['day']) + ',"month":' + str(nsp_time['month']) + ',"year":' + str(nsp_time['year']) + ',"weekday":' + str(nsp_time['weekday']) + ',"hour":' + str(nsp_time['hour']) + ',"min":' + str(nsp_time['min']) + ' } }'

par

var time_payload = '{ "clock": { "hour":' + str(nsp_time['hour']) + ',"min":' + str(nsp_time['min']) + ' } }'

N’oubliez pas ensuite de renvoyer le fichier sur Tasmota en passant par Consoles > Manage File system puis vous pouvez redemarrer via le Main Menu et Restart

1 « J'aime »

7/ Configurer le MQTT

  1. Allez ensuite dans Configuration > Configure MQTT et mettez le nom l’adresse IP et le port de votre Broker MQTT (En général l’IP de votre Jeedom et le port 1883)

  2. Dans Client mettez pour simplifier la même chose que vous aviez mis précédemment dans Device Name

  3. Si votre Broker MQTT possède une restriction par login/password remplissez le ici et cochez la case password

  4. Dans Topic mettez la même chose que dans Device Name et dans Full Topic mettez :
    nspanel/%topic%/

Ce réglage vous permet de regrouper tous les éléments sous un même topic, et si vous avez plusieurs NsPanel de les regrouper. Sinon le NsPanel va s’afficher sous plusieurs topic sur votre Broker MQTT et ce sera moins lisible.

Voici ce que j’ai de mon côté :

2 « J'aime »

8/ Créer l’équipement dans jeedom

L’équipement doit obligatoirement être créé dans JMQTT, et pas dans MQTT manager qui ne gère pas bien le JSON.

Si vous avez bien paramétré le MQTT dans Tasmota comme je vous l’ai indiqué, vous devez renseigner le topic de la sorte :

Pour la commande de disponibilité pour le moment vous ne pourrez pas la remplir, nous verrons plus loin dans le tuto comment la créer.

Sauvegardez ensuite l’équipement pour valider.

Allez ensuite dans commandes, c’est là que les choses intéressantes arrivent !!

Nous allons avoir deux types de commandes, (comme toujours :wink: )
Les commandes info, et les commandes action.

Voici comment fonctionne une commande info

nspanel/chambreparents/INFO2 est le nœud sur lequel aller chercher l’information.
[Info2][IPAddress] est le chemin JSON où se trouve l’information.

Je vous conseille d’utiliser MQTT explorer pour fouiller par vous même et trouver toutes les informations qui vous semblerons utiles.

Astuce : Pensez à aller dans les paramètres de la commande pour activer la répétition des valeurs identiques pour les infos qui déclenches des actions. Cela permet par exemple si vous cliquez deux fois de suite sur le même bouton, que l’action associée s’active deux fois !!
Ca sera important par la suite pour la commande info qui lance les scénarios

image

Voici comment fonctionne une commande action

C’est un peu le même principe :

nspanel/chambreparents/cmnd/Screen est le nœud sur lequel poster la commande
{"notifications":{"text":"#message#"}} est le message en JSON à déposer sur le broker (C’est ça qu’on ne peut pas faire avec MQTT Manager)

La case Pub Auto sur les commandes actions permet de publier le JSON sur le broker automatiquement sans lancer l’action dès qu’une commande info présente dans le payload a changé de valeur. Utile pour mettre à jour automatiquement les température par exemple. Pour ma part j’utilise plutôt un scenario pour tout centraliser.

image

Cette commande permet par exemple de déposer des notifications dans le coin haut gauche du NsPanel :

image

Nous verrons dans le chapitre 10 toutes les commandes qui existent pour l’écran d’accueil.

En attendant voici les commandes qui permettent de récupérer l’état des deux boutons/relais physiques, et de les commander :slight_smile:

Vous pouvez voir que les commandes info pour l’état sont en binaire. Pourtant le JSON renvoi les valeurs ON ou OFF. Mais l’astuce réside dans les paramètres de la commande, il faut aller indiquer une valeur calculée de cette manière pour la transformer en binaire :
#value# == 'ON'

C’est comme cela que nous allons faire aussi avec la commande Online qui est à régler dans le panneau « informations »

#value# == "Online"
Et le topic MQTT de la commande info est :
nspanel/chambreparents/LWT

Voici enfin comment régler la luminosité du NsPanel :

{"dim":{"low":5,"normal":20}}

La valeur low est utilisé après quelques secondes sans toucher au NsPanel, et la valeur normal est celle quand vous utilisez l’écran.
Si vous mettez à 0 le low, l’écran s’éteint quand il n’est pas utilisé (après une certain temps d’inactivité), idéal dans une chambre pour la nuit. Vous pouvez donc via des scénarios changer la luminosité en fonction des horaires !
Attention ! Quand vous changez la valeur de normal, l’écran « s’allume » à la valeur normale quelques secondes comme si on venait de le toucher. Vous n’êtes pas obligés de changer les deux valeurs dans la commande, vous pouvez simplement envoyer {"dim":{"low":0}} par exemple.

Enfin, voici le template JMQTT afin que vous puissiez créer l’équipement directement avec toutes mes commandes, cela vous donnera un bon exemple :
NxPanel.json.txt (35,4 Ko)

2 « J'aime »

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

Le fonctionnement est un peu particulier.
Lorsqu’on change de page, le NsPanel poste sur le topic nspanel/chambreparents/RESULT un JSON page avec la page en question, et attend une réponse avec les éléments à afficher.

Et lorsqu’on clique sur un bouton c’est sur le même topic qu’est posté un JSON button

Voici donc les commandes d’info qui permettent de récupérer les éléments renvoyés par le NsPanel :

Pensez à bien activer la répétition des valeurs pour page et button sinon cela ne déclencherai pas le scénario que nous allons créé ensuite lorsque vous faites deux fois la même action de suite.

image

Concernant les pages

Voici ensuite à quoi ressemble le scénario :

Le premier si avec le trigger permet de savoir qui a déclencher le scénario. Je compte utiliser d’autres NsPanel dans d’autres pièces et cela va me permettre d’avoir un seul scénario. Si vous n’avez qu’un seul NsPanel ou que vous souhaitez faire des scénarios différents ce test n’est pas nécessaire.

Les tests d’en dessous permettent de savoir quel page le NsPanel souhaite afficher, et j’appelle ensuite la bonne action pour mettre à jour la page.

Voici les actions concernées :

Et le code JSON :

{"refresh":{"pid":1,"name":"Alarme","format":2,buttons:[
{"bid":1,"label":"Armer","type":2,"state":1,"icon":6},
{"bid":2,"label":"Desarmer","type":2,"state":1,"icon":6}
]}}

Ce code me permet d’afficher deux boutons pour armer ou désarmer l’alarme de nuit.

{
   "refresh":{
      "pid":2,
      "name":"Chauffage chambre",
      "therm":{
         "set":"#[Chambre parents][Chauffage][Consigne]#",
         "temp":"#[Chambre parents][Chauffage][Température]#",
         "heat":"#[Etage][NsPanel_Helper][Etat_Chauff_CHP]#",
         "state":"#[Etage][NsPanel_Helper][Mode_Chauff_CHP]#"
      }
   }
}

Ce code permet de gérer le type de page thermostat.
Vous voyez que j’utilise un équipement qui s’appelle « NsPanel_Helper » il s’agit d’un virtuel qui me permet de convertir en boolean l’état de mon chauffage en utilisant le plugin thermostat de Jeedom.

Concernant les boutons virtuels

Le principe est le même. Voici le scenario :

Comme vous voyez le principe est le même.
Vous pouvez voir ici que j’utilise le buzzer du NsPanel, voici comment on l’utilise :

Vous pouvez indiquer jusqu’à 4 valeurs, dans l’ordre :

  1. Le nombre de bip
  2. La durée du bip en ms
  3. La durée du silence entre les bip en ms
  4. La tonalité.

Voici la documentation : Buzzer - Tasmota
Sous ESPHome il est possible aussi de faire des mélodies en RTTTL, mais à priori pas possible sous Tasmota : Utilisation de melodie de type rtttl - #21 par Bad

Pour les boutons des pages spécifiques
Pour utiliser les boutons qui sont par exemple sur la page thermostat, vous devez créer un scénario à part. Voici ce que j’ai de mon côté :

Scénario d’initialisation
Vous verrez dans la rubrique suivante comment paramétrer chacun des formats de pages.
Mais au démarrage il faut tout de même initialiser le NsPanel avec les premières informations.
Voici le scénario :


Il est provoqué lorsque le NsPanel devient Online !

On attend 10s qu’il soit bien initialisé avant de lui lancer des actions. Sinon j’ai repéré que parfois ça ne fonctionne pas très bien.
Pour le détail des actions vous verrez ensuite dans la rubrique de paramétrage de la page d’accueil.

Scenarios d’update

Il faut bien sûr penser à mettre à jour les informations sur l’écran d’accueil, voici comment j’actualise la date :wink:


Pour toutes les autres infos, j’aurais pu faire cela directement dans les équipements en allant dans les paramètres des commandes infos pour pousser la valeur à chaque changement, mais j’ai préféré centralisé dans un scénario :

Utilisation des 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)

1 « J'aime »

10/ Configurer l’affichage de la page d’accueil

De manière générale pour commander l’affichage de l’écran nous allons envoyer des commandes JSON sur le noeud nspanel/chambreparents/cmnd/Screen

Nous avons déjà vu dans le chapitre 8 comment envoyer des notifications dans l’encart en haut à gauche

image

C’est avec la commande JSON {"notifications":{"text":"Votre message"}}
Attention, il ne faut pas envoyer d’accents ! Ils seraient mal affichés !

A chaque fois que vous postez un nouveau message, une petite cloche apparait jusqu’à temps que l’utilisateur tape dessus avec son doigt :slight_smile:
image

Voyons maintenant comment vider cette zone : c’est avec la commande {"notifications":{"reset":1}}

Pour le coin en haut à droite, tout se fait tout seul ! L’heure est mise à jour automatiquement par le NsPanel.

S’il n’est pas à la bonne heure, vous pouvez vous rendre sur l’adresse IP de votre NsPanel pour atteindre l’interface Tasmota, et ensuite rendez-vous dans la console ( Consoles > Console) pour taper la commande suivante :
timezone +2

Cela règlera votre NsPanel sur le bon fuseau horaire.

A coté de cette cloche il y a aussi 4 zones de notification où vous pouvez afficher des icones de différentes couleurs. Cela s’appelle les Warnings !

image

Voici les icones disponibles avec leurs couleurs :


La commande JSON est donc de la forme : { "warnings":[{"id":x,"type":y,"state":z}] }

Concernant la zone Weather en bas à gauche
Nous pouvons modifier l’icone de météo, la température principale, et une zone de texte en dessous.
Le JSON à envoyer ressemble à ça par exemple :

{"weather": {"temp": x, "icon":x, "feels": x, [or] "summary": x}
{"weather": {"temp": 27, "icon": "04d", "feels": 4}}
{"weather": {"temp": 27, "icon": "04d", "summary": "Humidity 65%"}}

Si on envoi « feels » pour la température ressentie, il sera écris feels sur l’écran, et c’est dommage !
Je vous propose donc d’utiliser plutôt « summary » qui est une zone de texte ! Cela permet d’écrire ce que vous voulez !
Je met ainsi la température intérieure de la pièce qui possède le NsPanel, mais vous pouvez mettre ce que vous voulez !

image

De plus vous n’êtes pas obligés d’envoyer tout le JSON weather complet, j’ai fait deux commandes, la première pour mettre à jour la météo extérieure, et la seconde pour la partie summary avec la température intérieure.

Voici le JSON de ma commande pour la partie météo :

{
	"weather" : {
		"temp" : #[Informations][Météo][Température]#,
		"icon" : #[Systèmes][Script_Icon_meteo][ico_Code]#
	}
}

Il y a une difficulté ici, pour pouvoir changer les icones météo, il faut envoyer le bon code. Il s’agit des codes utilisés par OpenWeatherMap

On a de la chance, le plugin météo officiel de Jeedom s’appuie aussi sur OpenWeatherMap !
Le problème c’est qu’il ne nous donne pas le code d’icone ! Il nous donne juste l’ID des conditions météo au format OpenWeatherMap avec la commande « Numéro condition », c’est déjà super !!!

Nous allons donc devoir convertir cela !
Pour cela il y a plusieurs possibilités, la première déjà présente sur le forum proposée par @TortueGeniale est un peu complexe mais fonctionne et gère les icones jours et nuit.

Pour ma part j’ai opté par l’ajout d’un équipement script avec un petit code PHP qui permet de faire la conversion. Je ne gère pas le jour et la nuit car je n’en ai pas l’utilité, mais c’est très facile de l’ajouter :wink:

ConvertWeatherIcon.php.txt (1,8 Ko)

Mais @seb821 utilise plutôt un bloc code dans un scénario pour faire la conversion…
A vous de voir ce que vous préférez !

Réglage du bouton « Favoris »

image

Ce bouton permet d’ouvrir un écran avec certaines fonctions que vous verrez dans le chapitre 11
Pour le configurer, il faut envoyer la commande JSON suivante :
{"favorite": {"pid": x, "format":y (1-15)}}

pid étant l’ID de la page, et format, le format d’affichage expliqué en chapitre 11

La zone de texte en bas à droite
image

Elle se configure simplement en envoyant ce JSON :
{"summary": {"title": "x", "temp":y, [or] "text": "y"}

Le title s’affiche en plus gros au dessus (lundi dans mon exemple) et temp ou text (il faut choisir l’un ou l’autre) s’écrivent en plus petit en dessous.

J’utilise une commande message pour gérer cela :

Réglage de la page secondaire (swipe à droite)

Lorsque vous swipez depuis la droite vers la gauche, l’écran suivant apparait.
Pour le configurer il faut envoyer le JSON suivant :
‹ {« start »: {« pid »: x, « format »:y (1-15)}} ›

La même chose que pour le bouton favoris mais avec « start »

Ces deux pages sont à configurer une fois après le démarrage du NsPanel. Il suffit d’envoyer la commande JSON et après lors de l’appui sur le bouton, ou lors du swipe vous arriverez sur la page suivante.
Si vous mettez le même pid et le même format, vous aboutirez sur la même page :slight_smile:

.
.
.

Voici un résumé de toutes les commandes de l’écran d’accueil :

Ces images sont tirées de l’excellente doc de OpenHab qui explique tout bien mieux que moi. C’est ici un résumé, mais avec cette doc tout est expliqué dans le détail, mais adapté pour OpenHab et non Jeedom

1 « J'aime »

11/ Aller plus loin avec les config d’écran

Il existe ensuite différentes sortes de pages qu’on peut utiliser sur ne NsPanel avec NxPanel.

Vous pouvez avoir des pages de deux à 8 boutons comme celle ci :

image

Vous avez une liste d’icone disponibles dans différentes couleurs :

Et que chacun de ces boutons renvoient ensuite vers des pages pour gérer l’équipement sélectionné :

image

image

Tout cela est très bien expliqué dans la doc, et je vous laisse regarder les JSON à utiliser pour ces écrans, c’est à partir de la page 35 : https://github.com/alfpf/NSPanel-setup/raw/main/OpenHAB3%20and%20Sonoff%20NSPanel%20v2.9.pdf

Pour ma part vous pouvez voir plus haut comment je gère la page thermostat et la page deux boutons.

1 « J'aime »

12/ Installer JMQTT en plus de MQTT manager

Si vous utilisez déjà le plugin MQTT manager en guise de Broker, pas de panique, il ne vous faudra pas tout changer pour passer sur JMQTT. Vous pouvez utiliser les deux plugins en parallèle.

Pour ce faire installer simplement JMQTT avec ses dépendances et laissez le croire qu’il n’y a pas de broker :

image

Ensuite ajoutez simplement un broker en mettant les paramètres de votre broker sous MQTT manager

image

C’est aussi simple que cela !!

Seule chose importante, mettez bien un client-id unique !!
Si vous mettez aussi jeedom il risque d’y avoir un conflit, car les deux clients vont se battre avec le broker pour prendre la place et se déconnecter l’un l’autre.

2 « J'aime »

13/ Sources et ressources

Pour mes recherches je me suis basé sur :

ATTENTION, si vous voulez un jour restaurer votre NsPanel avec le firmware d’origine pour le faire fonctionner sous eWeLink, il faut absolument que vous restauriez le backup qui vient de votre propre NsPanel. Il contient son identifiant unique, et si vous restaurez le backup d’un autre NsPanel, vous aurez une erreur 30014 au moment de la synchro wifi. Impossible alors de le faire refonctionner sous eWeLink…

1 « J'aime »

A l’aide !!!

J’ai rencontré plusieurs problèmes avec mon NsPanel et voici comment vous en sortir.

Problème de vitesse de communication entre l’ESP et le Nextion

Premièrement, le driver que j’avais déposé de fonctionnait pas complètement, il ne se passait rien j’ai compris que l’ESP ne communiquait pas avec le Nextion.
Pour communiquer ensembles, l’ESP et le Nextion utilisent un port série sur lequel ils se transmettent des informations. Par contre il faut qu’ils communiquent à la même vitesse, hors, pour une raison inconnue, le Nextion était passé sur une vitesse bien plus lente ! Le driver indiquant la vitesse de l’ESP, il était configuré à une vitesse qui n’est pas la bonne, ce n’est pas grave, nous allons corriger cela !

Pour ce faire, éditez le fichier autoexec.be avec un éditeur de texte (notepad suffit) et remplacer toutes les valeurs 115200 par 9600

A ce moment là vous pouvez de nouveau faire communiquer les deux. Par contre c’est beaucoup plus lent et ça engendre des problèmes de communication, vous pouvez voir apparaitre très souvent ce type de message dans le Topic Result :
{"nextion":"bytes('22666F726D6174223A20392C2022706964223A20322C202274797065223A2022...')"}

C’est tout simplement car l’ESP n’arrive pas à comprendre ce que lui envoi le Nextion sur le port serie !

Il faut donc repasser le Nextion sur la bonne vitesse ! (Merci à @seb821 pour l’astuce !)
Pour ce faire nous sommes obligés de passer par un Firmware du Nextion qui le fait repasser à la bonne vitesse.
Pour le flasher, rendez-vous sur l’interface de Tasmota, dans Consoles > Console puis tapez FlashNextion http://nspanel.pky.eu/test.tft

Cela va vous permettre d’afficher un écran blanc avec entre autres, un bouton qui permet de repasser à la vitesse 115200. Cliquez dessus, puis redémarrez le NsPanel.

Retournez sur Tasmota et dans Consoles > Console tapez installnxpanel comme tout à l’heure.
Cela va réinstaller de nouveau le bon Firmware.

N’oubliez pas ensuite de repasser votre driver à la bonne vitesse !!

Voilà pour cette interface NxPanel. Je suis maintenant passé sur l’interface d’origine avec Tasmota que je trouve plus jolie et plus fonctionnelle, je vais vous préparer un tuto avec pleins d’astuces :wink:

Merci d’avance pour vos remarques, ajustements, idées d’améliorations, ou même les remontées de coquilles ou fautes que vous voyez :wink:

Erreur 30014 au moment de la synchro wifi

ATTENTION, si vous voulez un jour restaurer votre NsPanel avec le firmware d’origine pour le faire fonctionner sous eWeLink, il faut absolument que vous restauriez le backup qui vient de votre propre NsPanel. Il contient son identifiant unique, et si vous restaurez le backup d’un autre NsPanel, vous aurez une erreur 30014 au moment de la synchro wifi. Impossible alors de le faire refonctionner sous eWeLink…

Le buzzer ne fonctionne plus correctement

Après la restauration d’un backup Tasmota, le buzzer ne fonctionne plus très bien, il ne fait pas des bip mais des petits bruits étranges.
Pour y remédier il suffit de réappliquer le template.
Allez dans Configuration > Configure other puis remplacer le template actuel par :
{"NAME":"NSPanel","GPIO":[0,0,0,0,3872,0,0,0,0,0,32,0,0,0,0,225,0,480,224,1,0,0,0,33,0,0,0,0,0,0,0,0,0,0,4736,0],"FLAG":0,"BASE":1,"CMND":"ADCParam1 2,11200,10000,3950 | Sleep 0 | BuzzerPWM 1"}

Validez, ça redémarre, et ça refonctionne !!

2 « J'aime »

Bonjour.

Un tutoriel comme je les affectionne càd didactique avec sources documentées.

Bravo.

1 « J'aime »

Déjà un grand merci pour ce super tutoriel très bien fait et qui permet vraiment de gagner du temps. Du coup cela m’a motivé à me lancer sur le NSPanel qui trainait depuis un moment dans un tiroir.

Voici quelques remarques que j’ai pu noter :

Je n’ai pas eu besoin de faire cela. De base l’écran était bien à 115200. J’ai cru comprendre que certains programmes pouvaient faire basculer l’écran en 9600. C’est notamment évoqué dans cette issue. On peut flasher le tft partagé avec la commande suivante dans Tasmota ce qui fait apparaître un bouton pour revenir en 115200 (flash testé mais pas le bouton): FlashNextion http://nspanel.pky.eu/test.tft

Je n’ai pas ce soucis a priori. Mais comme indiqué, c’est peut-être lié à la vitesse en 9600.

Pour information, on peut le faire sans souder comme expliqué dans cette vidéo. Ce n’est pas évident, mais avec un peu de patience on y arrive.

Je n’ai pas réussi à faire fonctionner cette commande, elle n’est pas prise en compte. Par contre la commande complète fonctionne.

Je l’ai fait avec un scénario et un bloc code, ça marche nickel.

Il faut que je me plonge dans les écrans secondaires maintenant mais c’est déjà un bon début :slightly_smiling_face:

Merci beaucoup @seb821 pour tes commentaires !

Je ne sais pas comment j’ai fait pour passer en 9600 du coup, mais j’ai flashé le tft que tu as partagé et ça fonctionne ! Je suis bien repassé en 115200 !

Je vais reflasher le bon tft de NxPanel et voir si j’ai encore mes problèmes de commandes qui passent ma !

Du coup j’étais parti sur le nextion d’origine sur mon deuxième NsPanel et j’ai réussi à faire fonctionner les écrans secondaires ! Je ferai un tuto aussi :wink:

Je vais modifier ici avec tes éléments du coup !!

Concernant le dim low 0, il fonctionne chez moi, après le délai d’attente pour basculer en mode dim, il s’éteint complètement.

Pour ton bout de code dans le scénario pour gérer les icones météo, si tu veux bien le partager je l’ajouterai dans le tuto :wink:

EDIT : Merci @seb821 !! Ca fonctionne !
Je n’ai plus de messages de ce type : {"nextion":"bytes('22666F726D6174223A20392C2022706964223A20322C202274797065223A2022...')"}

Et tout est bcp plus réactif !

Hello @seb821

J’ai adapté le tuto avec tout tes retours !
Merci encore !

Je vais maintenant m’attaquer à celui avec Tasmota et le tft d’origine :wink:

Super, merci.

Pour le scénario pour la météo, j’utilise un bloc code avec ces lignes (adaptation du script proposé) :

// Code météo
$numero_condition = cmd::byString('#[Météo][Météo XXX][Numéro condition]#')->execCmd();
$scenario->setLog('Numéro condition : '.$numero_condition);
switch ($numero_condition) {
  case "200": $code_meteo = "11d"; break;
  case "201": $code_meteo = "11d"; break;
  case "202": $code_meteo = "11d"; break;
  case "210": $code_meteo = "11d"; break;
  case "211": $code_meteo = "11d"; break;
  case "212": $code_meteo = "11d"; break;
  case "221": $code_meteo = "11d"; break;
  case "230": $code_meteo = "11d"; break;
  case "231": $code_meteo = "11d"; break;
  case "232": $code_meteo = "11d"; break;
  case "300": $code_meteo = "09d"; break;
  case "301": $code_meteo = "09d"; break;
  case "302": $code_meteo = "09d"; break;
  case "310": $code_meteo = "09d"; break;
  case "311": $code_meteo = "09d"; break;
  case "312": $code_meteo = "09d"; break;
  case "313": $code_meteo = "09d"; break;
  case "314": $code_meteo = "09d"; break;
  case "321": $code_meteo = "09d"; break;
  case "500": $code_meteo = "10d"; break;
  case "501": $code_meteo = "10d"; break;
  case "502": $code_meteo = "10d"; break;
  case "503": $code_meteo = "10d"; break;
  case "504": $code_meteo = "10d"; break;
  case "511": $code_meteo = "13d"; break;
  case "520": $code_meteo = "09d"; break;
  case "521": $code_meteo = "09d"; break;
  case "522": $code_meteo = "09d"; break;
  case "531": $code_meteo = "09d"; break;
  case "600": $code_meteo = "13d"; break;
  case "601": $code_meteo = "13d"; break;
  case "602": $code_meteo = "13d"; break;
  case "611": $code_meteo = "13d"; break;
  case "612": $code_meteo = "13d"; break;
  case "613": $code_meteo = "13d"; break;
  case "615": $code_meteo = "13d"; break;
  case "616": $code_meteo = "13d"; break;
  case "620": $code_meteo = "13d"; break;
  case "621": $code_meteo = "13d"; break;
  case "622": $code_meteo = "13d"; break;
  case "701": $code_meteo = "50d"; break;
  case "711": $code_meteo = "50d"; break;
  case "721": $code_meteo = "50d"; break;
  case "731": $code_meteo = "50d"; break;
  case "741": $code_meteo = "50d"; break;
  case "751": $code_meteo = "50d"; break;
  case "761": $code_meteo = "50d"; break;
  case "762": $code_meteo = "50d"; break;
  case "771": $code_meteo = "50d"; break;
  case "781": $code_meteo = "50d"; break;
  case "800": $code_meteo = "01d"; break;
  case "801": $code_meteo = "02d"; break;
  case "802": $code_meteo = "03d"; break;
  case "803": $code_meteo = "04d"; break;
  case "804": $code_meteo = "04d"; break;
}
$scenario->setLog('Code météo : '.$code_meteo);
$tags['#codeMeteo#'] = $code_meteo;
  
$scenario->setTags($tags);

Ensuite on récupère l’information avec #codeMeteo# dans le même scénario :