Je me suis demandé - où va le courant des fils? Il semble que nous noyions la maison avec du gaz, dans la maison toutes les lampes sont à diode, nous allumons le lave-vaisselle la nuit, il n'y a pas encore de saunas avec une cuisinière électrique, et l'électricité s'éteint tout le temps. Le désordre. Il faudrait le suivre.
Bienvenue au chat…
La première étape est le suivi général de la consommation
Les tâches
J'ai décidé de commencer une chasse à un troupeau de lièvres. Les lièvres ont été sélectionnés:
- Surveillance de l'électricité via Internet. J'ai une surveillance instantanée des paramètres du réseau - dans le couloir, dans le panneau il y a un moniteur d'énergie PZEM061, sur l'écran, vous pouvez voir la tension, le courant et la puissance. Mais au lieu de l'affichage de l'énergie consommée - une sorte d'abstraction, trop peu de décharges. Mais le couloir n'est pas confortable. Je veux sur l'écran du téléphone.
- Graphique de la consommation d'électricité. Je voudrais savoir quand survient une consommation excessive?
- Relevés de compteur sur Internet. Cette douleur est le transfert des relevés de compteurs aux ventes d'énergie. Il faut leur témoigner du 15 au 25 du mois. Je l'oublie souvent et ils commencent à appeler le robot et à écrire du spam. De plus, quand ils se souviennent d'eux-mêmes, je travaille habituellement au travail et j'ai un comptoir sur un poteau dans la rue. Je veux sur l'écran du téléphone.
- Surveillez la température du stabilisateur. Dans notre village en hiver il n'y a pas plus de 200v à l'entrée de la maison, il atteint 140v. Par conséquent, je n'ai pas de stabilisateur de 12 kW, mais avec ces paramètres et une longue charge de 2 kW et compte tenu de l'emplacement du stabilisateur dans la niche du mur, le stabilisateur surchauffe et s'éteint, j'ai dû ajouter quelques ventilateurs (avec eux, la température reste dans des limites acceptables) - ils étaient auparavant allumés constamment, maintenant pétrissage - mettez les thermostats KSD9700 sur 65g, nous attendons l'hiver. Je ne veux pas surveiller ce paramètre, car Je ne peux pas l’influencer. Mais après avoir ajouté des thermostats - vous devez contrôler le résultat.
Le fer
Pour résoudre les tâches, il a été choisi:
- PZEM004T - moniteur d'énergie avec UART. Il vous permet d'obtenir les paramètres du réseau électrique - un paramètre toutes les 0,6 secondes: tension, courant, puissance, énergie consommée, ainsi que la fréquence et le facteur de puissance dont je n'ai pas besoin. Utilisé avec le transformateur de mesure 1: 1000.
- ESP8266 NodeMCU - un microcontrôleur universel avec WiFi, il s'adapte bien avec le PZEM004T - peut être connecté par des racks en utilisant les trous disponibles sur les cartes. Il existe également un bouton Flash utile sur la carte NodeMCU (connectée à GPIO0) - il est pratique de l'utiliser pour contrôler le mode de fonctionnement - par exemple, pour activer SoftAP.
Étant donné que l'appareil sera placé dans le boîtier métallique du stabilisateur - soudé une antenne externe à l'ESP. J'ai essayé d'alimenter l'ESP à partir du PZEM004T (en soudant les fils au condensateur rond - c'est environ 7V dessus) - cela n'a pas fonctionné, quand j'ai connecté l'ESP, la tension tombe à 2V. Mais le stabilisateur a déjà une alimentation 5V - pour les fans, ce qui signifie qu'il sera utilisé (je pensais que c'était 12v, donc j'ai souffert longtemps pour y connecter l'ESP) - cela ne fonctionnait pas du tout, j'ai essayé un tas de convertisseurs DC-DC jusqu'à ce que je le retourne BP et n'a pas lu l'inscription dessus).

Firmware
Regardé disponible sur un réseau. Comme d'habitude, je n'en ai pas trouvé un et j'ai décidé d'écrire le mien.
J'ai pris mon propre projet pour le relais Sonoff comme base (la fonctionnalité la plus simple, elle s'allume et s'éteint via HTTP et via un bouton, ne peut rien faire d'autre; elle est utilisée en conjonction avec
MacroDroid pour alimenter le téléphone avec
parcimonie en permanence - la batterie précédente a explosé par une charge constante et a écrasé l'écran) ) Mais en plus de la fonctionnalité de relais, l'assemblage dispose d'un serveur http, WiFi, paramètres NTP, fonctionne avec le bouton GPIO0 - différentes actions de la durée de la pression, clignotant dans n'importe quelle lumière (par exemple, compter les secondes de pression sur un bouton, reflétant l'état du relais et du WiFi) ...
Naturellement, j'ai légèrement modifié les paramètres:

J'ai regardé la bibliothèque existante pour travailler avec PZEM004T - je ne l'aimais pas. Elle envoie une demande, puis en boucle fermée attend une réponse. Ce n'est pas bien. J'ai écrit ma bibliothèque, asynchrone - je lui dis du programme principal quels paramètres je veux obtenir, puis vérifie périodiquement si les données requises sont reçues:
Codestatic PZEM004Tnb::flags flags = PZEM004Tnb::flags::all; static unsigned long lastReadEnergyTime = 0; if (Pzem004t.isDataUpdated()) { setLedState(3);
J'ai pris en compte que le PZEM004T considère un maximum de 9999 kW * h, puis il est réinitialisé - j'ai implémenté la comptabilité des débordements. Implémentation d'un compte à deux taux. J'ai également mis en œuvre la comptabilisation des valeurs moyennes des paramètres - les lectures sont lues environ toutes les 2 secondes, et sur le
People’s Monitoring il est nécessaire de transmettre des données toutes les 5 minutes, naturellement moyennes.
Ajouté au système de travail avec une gamme de capteurs DS18B20. Les données sont lues tour à tour avec une période de 2 secondes par capteur. C'est-à-dire nous recherchons un capteur, nous avons trouvé - nous recevons des données, après 2 secondes nous recherchons le suivant, etc. Capteurs terminés - recommencez depuis le début. C'est-à-dire lors de l'utilisation d'un seul capteur, sa période d'interrogation est de 4 secondes. Pour ces capteurs, les valeurs moyennes ont également été calculées.
Les données actuelles du moniteur d'énergie peuvent être obtenues via HTTP:

Toutes les données sont stockées dans des nombres entiers si nécessaire (par exemple, lors du transfert vers
People’s Monitoring ) - un point est ajouté à la position souhaitée.
Implémentation de la publication des données en utilisant le
protocole MQTT / UDP . Ajout de la prise en charge de ce protocole et du capteur PZEM004T sur mon
moniteur :

Il s'agit de mon projet de contrôleur de température échoué (
Fiasco. L'histoire d'un produit fait maison IoT ), que j'ai décidé de ne laisser que comme moniteur.
Mise en œuvre de la publication de données sur
la surveillance des personnes :

Les gars du
People’s Monitoring ont beaucoup de respect! Le transfert de données vers le service est élémentaire, il existe un moyen de voir les données entrantes pour déboguer l'interaction, vous pouvez simplement gérer les données du capteur.
Le système peut créer des graphiques de test (ci-dessous est un gâchis des graphiques, juste un exemple):

Il est également possible de notifier l'état des capteurs (transmission de données temporairement désactivée pour le test):

Naturellement, j'ai ajouté des paramètres de publication de données:

Résumé
Grâce à la surveillance en temps réel, il a déjà éteint l'un des deux mini-ordinateurs constamment allumés, configuré l'hibernation sur l'ordinateur du bébé et reconfiguré le mode veille dans le lecteur BD (utilisé uniquement pour le karaoké).
Lorsque des statistiques sont collectées pour les graphiques, je prendrai des mesures supplémentaires.
Qui veut mettre la main sur un tel moniteur d'énergie - dans un compte personnel pour le firmware (Freebie, monsieur!).
PS
Lors du développement de l'appareil, je suis tombé dans le mysticisme - lorsque l'ESP est alimenté par un ordinateur USB, à partir de n'importe quel téléphone, tout fonctionne. Lorsqu'il est alimenté par une alimentation intégrée - ne fonctionne pas. J'ai utilisé un analyseur logique et un
simplecope pour l'enquête - la puissance du bloc bleu semble être en ordre, les signaux de l'ESP sont corrects, et en arrière - silence. Une autre alimentation - tout fonctionne bien.
Par la méthode de piquer scientifique, j'ai réalisé que lorsque j'utilise le bloc d'alimentation intégré, je le connecte à l'alimentation PZEM004T, c'est-à-dire que dans ce cas, deux appareils démarrent simultanément (avec d'autres blocs d'alimentation, une mise sous tension simultanée n'est pas possible). Et j'utilise le matériel UART pour la communication, sur lequel ESP jette beaucoup de déchets au démarrage. PZEM004T ne peut pas digérer cela au démarrage et se bloque. Si PZEM004T est déjà allumé, il démarrera ESP et les ordures dans le port sans aucun problème.
La solution était d'utiliser SoftwareSerial, tout fonctionne bien avec.
PPS
Pour ceux qui veulent se faire un tel appareil (et il y a de tels héros!):
Description dans le catalogue d'appareils de surveillance nationale