l’Horloge Smart et Connectée avec Notification
Voici la toute nouvelle version du Notif’Heure , l’horloge connectée avec notification , basé sur un WEMOS ( ou compatible ESP8266 ).
Cette nouvelle version ajoute la mise en place d’une API ( format JSON) , afin de la rendre, le plus compatible possible avec un maximum de box domotique , ainsi qu’une toute nouvelle interface WEB , basé sur Bootstrap , et beaucoup d’autres nouvelles options .
Pré requis matériel :
- Un WEMOS D1 , Wemos Mini ( ou compatible ESP8266 ) Environ 3 à 6 € sur sites chinois ( banggood ou gearbest ) , ou environ 8 € sur Amazon.
- Un bloc de 4 matrices LED ( au minimum ) de type max72xx ( certains lecteurs ont mis jusqu’à 8 bloc soit un affichage sur 32 matrices )
Le Notif’heure , dans son fonctionnement minimum , n’a besoin que de ces deux éléments . Mais il est possible d’ajouter des fonctionnalitées optionnels.
En option :
- un module DHT ( pour affichage de la température de la pièce ) . Si vous utilisez un DHT nu ( non monté sur un mini PCB avec resistance inclus ) , pensez à ajouter une resistance entre la sortie data et le +Vcc.
- Une photo résistance et une résistance de 10Ko ( pour la gestion auto de la luminosité )
- Un ou deux boutons poussoir ( pour gérer des actions directement depuis le boitier du Notif’heure )
- Une led et sa résistance ( ic une led blanche avec une résistance de 100 Ω.)
Schéma de câblage :
Ci dessous , un schéma de câblage , pour l’assemblage des différentes options.
Attention aux PIN , en fonction des Wemos utilisés . Utiliser les valeurs GPIO , afin de trouver les bonnes PIN .




Installation ( les pré requis )
Pour installer le logiciel et ces fichiers dans votre module , il va falloir l’interface IDE Arduino , ainsi que toutes ses bibliothèques nécessaires.
Pour l’installation de l’interface IDE , et la gestion des cartes supplémentaires , je vous invite à suivre mon article « Projet wemos D1« .
- Interface IDE
- Paramètre carte supplémentaires esp8266 ( prendre lien ESP8266 Community )
- Bibliothèque nécessaire ( j’ai réalisé un Zip de ma bibliothèque )
- installer outil pour télécharger fichier dans mémoire spiffs
- Télécharger les sources sur mon github
Si vous rencontrez un problème ou si vous avez une question , ne pas hésiter à consulter la FAQ , mis en place sur cette page . Si vous ne trouvez pas votre réponse , laissez moi un commentaire , afin que je complète cette dernière.
Ci dessous un tuto en vidéo , réalisé par Esso1, a voir sur la chaine youtube de Nextdom .
Voici la liste des bibliothèques que j’utilise pour le projet « Notif’heure’ ( cette liste peut être amené à être modifié en fonction des versions ). Elle représente la liste personnelle des bibliothèques dans le dossier mes documents de l’arduino. L’interface arduino , charge en priorité les bibliothèques de ce dossier , si non présente , il va allez vois dans ses bibliothèques systèmes , situé dans le dossier d’installation de l’application.


Afin de vous faciliter , le chargement manuel de toutes ses bibliothèques , j’ai réalisé un ZIP de ces dossiers , que vous pouvez télécharger sur mon drive.
Installer le fichier jar dans le dossier tool de l Arduino , afin de pouvoir transférer le dossier data dans la mémoire SPIFFS ( voir mon article qui traite de ce sujet )
Puis , rendez vous , sur mon Github , pour télécharger les sources du projets ( Dossier notif’heure V3 ) . Vous avez récupéré la structure suivante :


Un dossier data , comprenant toute la structure du serveur WEB , trois fichiers pour le sketch et deux fichiers images pour les icones.
Lancer votre interface Arduino , et ouvrez le projet « notifeur_V31.ino »
Uploader le dossier « data » avec le menu ESP8266 sketch data upload (menu outil ) , puis vous êtes prêt à uploader le fichier ino.
Configuration ( avant installation ) :
Avant de commencer à installer le sketch , sur votre module , il va falloir vérifier ou ajuster quelques paramètres :


Au tout début du sketch , vous allez pouvoir définir sur quel type et nombre de matrice vous allez travailler .
define HARDWARE_TYPE MD_MAX72XX::FC16_HW
define MAX_DEVICES 4 // nombre de matrice
define CLK_PIN D5
define DATA_PIN D7
define CS_PIN D6
Si vous avez suivi , le schéma de câblage , vous n’aurez pas besoin de modifier les numéro des PIN du module.
C’est l’instruction MAX_DEVICES qui va définir le nombre de matrice utilisés.
Le type sera à définir en fonction des matrices utilisés ( plus de détail sur mon article suivant : Gestion des matrices.
//****************************************************
// En fonction de vos matrices , si probléme *
// d'affichage ( inversé , effet miroir , etc .....) *
// ***************************************************
// matrix - decocher selon config matrix ********
#define HARDWARE_TYPE MD_MAX72XX::FC16_HW //***
//#define HARDWARE_TYPE MD_MAX72XX::PAROLA_HW //***
//#define HARDWARE_TYPE MD_MAX72XX::ICSTATION_HW //***
//#define HARDWARE_TYPE MD_MAX72XX::GENERIC_HW //***
// ***************************************************


les « define » suivant indique les numéros de broches ou sont branchés les options comme les boutons , led ou dht … A modifier si nécessaire.
username et password , sont les valeurs par défaut pour se connecter à l’interface d’administration.
Installation
Puis télécharger le sketch via le câble USB. Redémarrer le module esp8266.
Le module va redémarrer et se mettre en mode AP , afin de configurer le wifi pour la première fois. Connecter vous au réseau Notifheure.
Puis redémarrer. À partir de ce moment vous pourrez faire les mises à jour en OTA. Si besoin relancer , l’interface Arduino. ( pour la mode OTA , python doit être installé . Ne pas installer la version 3 ou supérieur , pas géré actuellement par ARDUINO.) Il se peut que sur certains modules , l’OTA ne fonctionne pas tout de suite , installer le tout via le port USB dans un premier temps si il y a un problème.
Sélectionnez le port :


Uploader les fichiers du dossier data avec la commande esp8266 Sketch Data Upload du menu outil de l interface Arduino.


Si l’outil n’apparait pas , vérifier si il à été bien installé. ( voir cet article )
Vous pouvez maintenant vous connecter au notif’heure via son adresse ip ( affiché à la fin de la procédure de démarrage ) ou via le protocole bonjour. Sous Mac , il est activé par défaut , sous Windows il faudra l’installer .
Connectez vous à votre notif’heure : http://Newnotif .local ou si le protocole bonjour n’est pas installé connectez vous via l’adresse IP .
Utilisation :


lors de votre première connexion , vous pouvez tester si tous fonctionne correctement en envoyant une notif , via ce formulaire.
Si tout ok , on va pouvoir passer aux options :
Juste en dessous les options :


Puis en bas de la page , des onglets , dont le premier et un état du système :


Dans le cadre Matériel , vous pourrez voir quels sont les éléments activés ( au premier démarrage , tout est désactivé ) .Pour configurer vos options , il va falloir se rendre dans l’onglet Admin .


Dans l’onglet Admin , il y a un lien vers la page de configuration. Ainsi que la liste de tous les Notif’heure installé sur le réseau. Cliquer sur Page de configuration.
Le login et mot de passe par défaut : admin / notif






Configuration ( après installation )
Il est possible sur cette page de :
- Exporter la configuration ( si elle existe , au premier démarrage le fichier n’existe pas encore ) au format Json.
- Importer un fichier de config ( au format json ) – peut être utile suite à une mise à jour , afin de récupérer ces paramètres.
- Reboot du module si necessaire
- Retour à la page d’accueil
- Paramètrage du système : Nom du module , suffixe hostname , Activer ou non option DEBUG ( si besoin ) et réglage du multi-zone .


- Parametrage Horloge : ( Serveur de temp , TimeZone ( UTC ) , gestion des heures Hiver/été )
- Parametrage Matériel : Activer si présence LED et boutons , en activant le bouton , il sera possible de choisir une action pour un type de clic.
- Simple clic : Affichage des secondes
- Double clic : ON / OFF Horlogeetc …


Pour les boutons , pour chaque type de clic , il est possible de choisir :
- Affichage des secondes
- ON/OFF horloge
- Mode Auto / Manuel
- ON/OFF LED
- Action 1 / Action 2 / Action 3 ( qui permet d’adresser des URL , à une box domotique par exemple )
- Tempo affichage notification : Permet de regler les vitesses d’affichages des notifications.
- Paramètre Box Domotique : Permet de renseigner les URLS pour action , ainsi qu’une URL pour une Mise à jour des infos Modules dans la domotique ( l’update entraine un ralentissement de 1 à 2 secondes sur Jeedom , ce dernier ne gérant pas les websockets réactualise toutes les données ) – Dans un prochain article , j’expliquerai plus en détail le paramétrage du notif’heure et de jeedom.


- Timer systèmes : Pour un réglage personnel des differentes tempo utilisés dans le Notif’Heure.
Sauvegarder et rebooter votre module , afin d’enregistrer vos paramètres de configuration personnel.
Il est aussi possible , de réinitialiser le module à ses réglages par défaut.
De retour sur votre page d’accueil , vous serez en mesure de constater dans les infos systèmes , les options mis en place.
Intégration Jeedom ( ou Box Domotique )
Les anciens scripts de la version 2.6 sont compatibles , pour ceux qui avaient intégrés la 2.6 dans Jeedom. vos scénarios de notification continuerons à fonctionner.
Dans le cadre de la version 3 , je suis en train d »écrire un nouvel article sur l’intégration du Notif’Heure dans Jeedom , afin de prendre en compte les nouvelles Options et autres spécificités.
L’article est disponible , pour le lire cliquer ici.
Mis à jour
Pour les futurs , mis à jour ou toutes modifications , il est conseillé d’exporter son fichier de config , puis de le réinjecter une fois la mise à jour terminé.
Si vous n’avez pas pensé à exporter le fichier , voici un exemple de la Structure d’un fichier config :
{
"Hostname":"Notif",
"Name":"new",
"NTPserver":"pool.ntp.org",
"timeZone":1,
"DLS":true,
"DEBUG":true,
"BOUTON1":true,
"BOUTON2":true,
"LED":true,
"multizone":false,
"DispRight":false,
"LZTime":2,
"speed_time":35,
"pause_time":3,
"interval_lux":15,
"interval_dht":10,
"interval_debug":40,
"AutoIn":true,
"TimeOn":true,
"DisSec":false,
"intensite":0,
"maxdisplay":4,
"btn1":[1,2,3],
"btn2":[4,5,7],
"txtAnim":"Notif",
"URL_Update":"http://ipbox/update",
"URL_Action1":"",
"URL_Action2":"",
"URL_Action3":"",
"JEEDOM":true
}
Historique version : ( a retrouver sur Github )
- V3.1 : Nouvelle Interface et API JSON
- V3.1.1 : Bug DHT , et autres petites améliorations.
- V3.1.2 : quelques petits correctif et prise en charge nouveau script php jeedom
- V3.1.3 : Fix bug affichage en multizone , ajout nouveau type info et fix pour affichage texte court permanent .
- V3.1.4 : Bug fix . Modification mot clé , modification page web interne
- V3.2 : historisation des notifications , effets pour type info , ajsutement interface , nouvelle options config et bug fix.
- V3.3 : Ajout du mode Minuteur
j’ai mis en place une faq dédié au notifheure , disponible à cette adresse .
232 commentaires sur “Notif’Heure V3 ( DIY)”
Hello,
Je me suis lancé hier et ça fonctionne parfaitement ! Me reste plus qu’à m’imprimer un joli boitier.
Merci pour cet excellent travail !!
Par contre, je me suis trouvé des petites matrices 8×8 couleur et je me demandais si il était possible de piloter 2 matrices différentes avec un seul Wemos ? J’imagine un truc style Lametric, avec une zone de notification/heure en 8×32 et une zone en 8×8 pour afficher une petite icone…
Bonjour et merci pour le retour ,
le notifheure peut gérer deux zones de x matrices. On pourra définir la taille des zones au niveau de la page config.Oprion multizone.
Au minimum une zone doit être une matrice de 8×8.
Il existe plusieurs couleurs dans les matrices de type 74xx . Pas de soucis pour avoir une zone en rouge et une autre en bleue par exemple.
Pour afficher des icônes à la place des caractères ascii , il faudra les dessiner pour les définir dans la table de caractère. J en parle dans cet article. Bibliothèque MAX72xx en V3 et MD_Parola V3 ( gestion des matrices 72xx )
Excellent !!!
Mais du coup, vous avez vraiment fait le programme/script ultime pour un afficheur/notifieur !!
Dès que je reçois mes petites matrices couleurs, je teste ça !! Ca plaira à mme pour sa salle de couture/Loisirs créatif.
En attendant, je vais intégrer un notif’heure « simple » dans mon caisson d’impression 3D. Comme il me reste un petit DHT, ça me permettra aussi d’en contrôler la température !
Encore bravo pour ce super taf !
Merci
Bonjour,
En relisant votre réponse, je me rends compte qu’on est peut être pas sur la même longueur d’onde.
Et c’est ma faute, car j’ai parlé de matrice 8×8 couleur… alors que j’aurais du dire RGB, voire même indiquer la référence de la matrice en question.
Il s’agit d’une WS2812B.
Et ensuite j’ai lu un peu vite, trop excité par les possibilités.
Et là du coup, j’imagine que c’est plus compliqué car les bibliothèques doivent être complètement différentes pour une matrice RGB…
En effet pas de gestion du ws2812.
Uniquement les matrices 72xx pour l instant.
Désolé.
Hello Byfeel,
Un grand merci pour ta réponse, ça fonctionne c’est parfait.
Tu viens de m’éviter des heures d’impression à refaire mon boitier !!!
Franchement c’est vraiment un travail magnifique que tu as fait là.
Je te souhaite une belle soirée.
Salutations,
Merci 🙂
Hello,
Je viens de mettre en route mon 2ème notif heure, comme d’hab ça marche au top, encore bravo pour ton job.
Par contre, j’ai fait le boulet… j’ai monté mes matrices LED à l’envers coller dans mon boîtier… est-il possible de faire une rotation de l’affichage ? Je n’ai pas trouvé ce paramètre dans la configuration, et je n’ai pas trop envie de toucher dans le code sans être sur.
Merci d’avance pour ton aide.
Bonjour steve ,
pas de bol .
Je n’ai pas encore prévu la rotation de l’écran , mais tu peux modifier le code en ajoutant ces deux lignes , a la fin de la boucle Setup() ( juste avant la boucle loop() ).
Pour le Zone 0 ( si une zone ) , si plusieurs Zones il faudra aussi faire de même , avec la Zone 1
P.setZoneEffect(0, true, PA_FLIP_UD);
P.setZoneEffect(0, true, PA_FLIP_LR);
La seule chose , c’est que les effets de scroll , vont être inversé ….. il faudra prévoir de changer le scoll left en scroll right , dans la définition du tableau des effets ( textEffect_t effect[] = ) au debut du code.
Hello Byfeel, tout d’abord merci pour tout ton travail !! J’ai deja fais 2 notifheures, un avec 2 x 4 matrices et un avec 4 x 4 matrices ( en une ligne). J’aimerais essayer 8 x 4 matrices mais sur 2 lignes, penses tu que le script puisse etre adapté?
Pas de soucis , il faudra activer l option multizone. La zone 1 pour la ligne 1 et la zone 2 pour la ligne 2 par exemple.
Bonjour a tous,
Avant tout félicitations , très bon tuto et programme.
JaiJ juste un petit soucis , tout fonctionne a part la partie interface web.
Quand je vais sur l’adresse IP la première fois ,j’ai bien l’interface avec la configuration wifi.
Puis une fois le wifi réglé, ok sur le réseau , jai
« FileNotFound »
sur l’adresse
Les commandes http fonctionne mais je n’ai aucune page web :s
Dans le code je n’ai changer que le début pour le nombre et version de mes matrice.
Bonjour , je penses que le dossier data , n’as pas été uploader en memoire.
Les pages Html sont stockés dans la memoire SPIFFS.
voir l’article suivant : https://byfeel.info/utilisation-de-la-memoire-spiffs-sur-esp8266/
C’était bien ça encore merci
Les branchements sont pourtant bon, je réutilise les 8 matrices que j’utilise sur la version 2.6 qui fonctionnait très bien. Je n’ai pas fait de modification de câblage. La seule différence c’est que pour la version 2.6, j’ai utilisé un Wemos Mini et que pour la 3.3.3, j’utilise un Wemos D1. Quand je les rebranche sur le mini, l’affichage fonctionne à nouveau alors que je n’avais rien sur le D1. J’ai regardé les matrice, sur chacune d’elle, les composant sont identiques (des MAX7219CWG)
vraiment bizarre , je suis aussi avec des wemos mini , je vais tester avec un wemos D1. Quel versio de bibliotheque Max72xx et parola tu utilises ?
Bonjour, j’utilise la bibliothèque MD_MAX72XX en version 3.0.2 et la MD_Parola en version 3.0.2 également. Je vais essaye de revenir sur des version plus anciennes pour voir.
Je viens de trouver quelque chose. J’ai modifier mon câblage de l’alimentation 5V des matrices. Je suis passé de la broche 5V se trouvant à coté de la broche reset à celle se trouvant entre le GND et le 3,3V. Depuis cette inversion toutes les matrices fonctionnent. Si je remet le 5V comme je l’avais mis précédemment, j’ai à nouveau un affichage tout pourri. Étrange, j’ai pourtant bien 5V mesuré dessus.
Super , merci pour l’info , en effet sur mon D1 j’utilise ce 5v aussi . C’est bon à savoir , cette broche , ne doit pas avoir assez de puissance en sortie. 🙂
C’est possible effectivement que cette broche ne puisse pas délivrer suffisamment de courant pour alimenter les matrices. Merci à toi pour ton aide. J’espère que mes problèmes pourront aider d’autres personnes qui pourraient se trouver dans la même situation. Encore merci pour tout.
je vais ajouter ce problème à la FAQ du notifheure , merci 🙂
Je viens de refaire un essai. Jusque là, j’utilisai 8 matrice et quelque soit le define que j’utilisais, j’avais le même affichage (des matrice entièrement rouge et certaine ou l’on pouvait voir un semblant de texte illisible car complètement décalé et scintillant). Du coup, j’ai fais un essai avec seulement 4 matrice et là l’affichage est bon quoi qu’encore un peux scintillant. Je pense qu’il doit y avoir un problème de fréquence d’horloge ou de rafraîchissement qui doit pas être bon. J’ai un autre Wemos D1, la prochaine étape seras de faire un essais avec celui là pour voir si j’ai le même problème.
En general , quand c’est tout rouge , c’est soit branché à l’envers le out à la place du In , soit deux matrices differentes ? une en ICS par exemple et l’autre en FC16 , soit une inversion de la broche clock et CS …Pour chaque define different , tu devrais avoir un affichage different .
bonjour,
pour moi , aprés pas mal de galère…j’ai enfin réussi a faire mon notif’ heure.
les pb rencontré essentiellement du à la version 2.5 de la carte ESP. en repassant en 2,4 aucun soucis.
j’ai eu un soucis avec la versions 3.X sur esp8266wifi.h. j’ai recopier la ligne du 2.6 et cela à fonctionné.
pas de pb de librairie avec le pack.
une fois qu’on la fait, cela parait simple . mais quand c’est la 1er fois, cela fait pas mal de manip.
Au passage j’avais pas verifi » le branchement de mon affichage led, il etait branché par défaut sur le OUT..
ce qui ma fait aussi chercher …
si je peux , je te ferais un tuto vidéo, avec Nextdom. mais sacré taff …..
manque que le buzzer pour faire un réveil connecté ; )
merci pour ton retour.
Je vais refaire un point sur les versions de bibliothèque et les versions de l’ide Arduino , afin d’éviter toutes ses galères.
Pour le Buzz , j’y songe …. et peut être un relais si encore de la place ??
bonne idée pour la video .
🙂
j’ai commandé un buzzer, ronfleur non modulable, juste 2 fils . en espérant que c’est pas un truc de 90DB … je verrais bien ( a la place de la led) . je ferais dans les prochain jour un proto vidéo, je te le passerai en lien sur le tchat nextdom . et tu le valideras.. ,
On a sortie la boite de légo, et mon fils , et tout fière de son nouveau réveil… du coup après faudra que je lui branche un bouton pour stoper le buzzer. sinon je mettrait un minuteur.. le temps qu’il ce léve..
pour le relais, qui peut le plus , peut le moins …
Si tu branches sur la led , tu peux programmer un des boutons pour allumer ou eteindre ( réglage dans page config )
cool… faut attendre que les buzzer ronfleur soient livrai .. je t contacter sur discord . je te passerais le lien pour la vidéo, tu me diras ce que tu en pense.
Le buzzer c’est depasse. Fais comme moi un rpi0 et un HP et playlist le matin 😉
je veux pas mettre de RPI dans la chambre de mon ptit 😉 .. par contre on ma dit que le wemos pouvait jouer une play liste sur carte SD. peut etre une piste. .. mais un buzzer a pa rigueur avec « note de musique « . ca peut etre sympa .
un ptit bruit avant chaque annonce ou pas .. on peut le gerer par la domotique ca..
oui , pas chaud non plus , pour rajouter aussi un RPI.
Je me suis commandé un DFPlayer , pour tester une solution tout en un.