/!\ Je n'ai rien inventé, j'ai juste récupéré des infos ci et là pour faire fonctionner le tout /!\
/!\ Je ne suis pas un pro du tuto donc pardonnez moi si c'est pas assez mis en forme, compréhensible...n'hésitez pas commenter pour améliorer/!\
Voilà je débute tout doucement la domotique avec jeedom . Pas facile surtout la partie codage HTML/CSS...
Bref je cherchais une solution DIY (car j'aime bidouiller ) à pas trop cher pour monitorer:
- consommation électrique de la maison
- production électrique des mes panneaux photovoltaïque
Il existe des solutions toutes faites mais soit le prix est trop élevé soit non gérable/interfaçable dans jeedom
Donc on fouinant sur le net j'ai trouvé ce MERVEILLEUX site qu'il est obligatoire de lire pour comprendre le fonctionnement du matériel:
https://openenergymonitor.org/
Mais de base c'est assez compliqué de faire fonctionner le tout avec jeedom
Avec des membre de la communauté d'openenergymonitor on a trouvé une solution :
- 1 - Matériel Nécessaire:
- emonTx Arduino Shield SMT (kit à souder mais juste les composants traversants) Prix : 19.26€
- AC-AC Power Supply Adapter - AC voltage sensor (Euro plug) (sert à mesurer la tension) : Prix : 12.41€
- Pince de mesure d'intensité SCT-013-000 YHDC 100A (on peut en prendre 4 maxi pour 4 points de mesure): Prix : 3.28€/pièce
- Alimentation Secteur 9V 1A pour Arduino : Prix : 8.84€
Total : 49.96€ hors frais de port
https://www.banggood.com/fr/Wemos-UNOWi ... rehouse=CN
https://openenergymonitor.com/emontx-ar ... hield-smt/
https://openenergymonitor.com/ac-ac-pow ... euro-plug/
https://fr.aliexpress.com/item/SCT-013- ... 6c37TdxPOt
https://www.ebay.fr/itm/Alimentation-Se ... 2749.l2649
Donc nous avons maintenant tout ce beau monde :
Pour l'assemblage du emontx shield rien de compliquer on suit les indications de ce lien :
https://wiki.openenergymonitor.org/inde ... ino_Shield
Avec ça on peut :
- acquérir l'intensité
- acquérir la tension
- on en déduit la puissance
- transmettre le tout en wifi esp8266 (alors que la solution proposée par openenergiemonitor il faut passer par d'autres matériels
- 2 - Préparation de la WEMOS UNO R3:
- Sur le arduino uno r3, on place les jumper 3 et 4 sur on et le reste sur off:
- on connecte l'arduino au pc
- Dans arduino IDE on sélectionne Arduino/Genuine UNO et on choisit le bon port com
- On change la vitesse du port série à 115200
- On recopie ce sketch dans arduino IDE et on téléverse:
Code : Tout sélectionner
/*
emonTx Shield 4 x CT + Voltage example
An example sketch for the emontx Arduino shield module for
CT and AC voltage sample electricity monitoring. Enables real power and Vrms calculations.
Part of the openenergymonitor.org project
Licence: GNU GPL V3
Authors: Glyn Hudson, Trystan Lea
Builds upon JeeLabs RF12 library and Arduino
emonTx documentation: http://openenergymonitor.org/emon/modules/emontxshield/
emonTx firmware code explination: http://openenergymonitor.org/emon/modul ... x/firmware
emonTx calibration instructions:
http://openenergymonitor.org/emon/modul ... alibration
THIS SKETCH REQUIRES:
Libraries in the standard arduino libraries folder:
- JeeLib https://github.com/jcw/jeelib
- EmonLib https://github.com/openenergymonitor/EmonLib.git
Other files in project directory (should appear in the arduino tabs above)
- emontx_lib.ino
*/
/*Recommended node ID allocation
------------------------------------------------------------------------------------------------------------
-ID- -Node Type-
0 - Special allocation in JeeLib RFM12 driver - reserved for OOK use
1-4 - Control nodes
5-10 - Energy monitoring nodes
11-14 --Un-assigned --
15-16 - Base Station & logging nodes
17-30 - Environmental sensing nodes (temperature humidity etc.)
31 - Special allocation in JeeLib RFM12 driver - Node31 can communicate with nodes on any network
group
-------------------------------------------------------------------------------------------------------------
emonhub.conf node decoder:
See: https://github.com/openenergymonitor/em ... uration.md
[[6]]
nodename = emonTxShield
firmware =emonTxShield
hardware = emonTxShield
[[[rx]]]
names = power1, power2, power3, power4, Vrms
datacode = h
scales = 1,1,1,1,0.01
units =W,W,W,W,V
*/
#define FILTERSETTLETIME 5000 // Time (ms) to allow the filters to settle before sending data
const int CT1 = 1;
const int CT2 = 1; // Set to 0 to disable
const int CT3 = 1;
const int CT4 = 1;
/*
#define RF_freq RF12_433MHZ // Frequency of RF12B module can be
RF12_433MHZ, RF12_868MHZ or RF12_915MHZ. You should use the one matching the module you
have.
const int nodeID = 6; // emonTx RFM12B node ID
const int networkGroup = 210; // emonTx RFM12B wireless network group -
needs to be same as emonBase and emonGLCD
#define RF69_COMPAT 0 // set to 1 to use RFM69CW
#include <JeeLib.h> // make sure V12 (latest) is used if using RFM69CW
*/
#include "EmonLib.h"
EnergyMonitor ct1,ct2,ct3, ct4; // Create instances for each CT channel
// Note: Please update emonhub configuration guide on OEM wide packet structure change:
// https://github.com/openenergymonitor/em ... uration.md
typedef struct { int power1, power2, power3, power4, Vrms;} PayloadTX; // create structure - a neat way of packaging data for RF comms
PayloadTX emontx;
const int LEDpin = 9; // On-board emonTx LED
boolean settled = false;
void setup()
{
Serial.begin(115200);
//while (!Serial) {
; // wait for serial port to connect. Needed for Leonardo only
//Serial.println("emonTX Shield CT123 Voltage example");
//Serial.println("OpenEnergyMonitor.org");
//Serial.print("Node: ");
/*Serial.print(nodeID);
Serial.print(" Freq: ");
if (RF_freq == RF12_433MHZ) Serial.print("433Mhz");
if (RF_freq == RF12_868MHZ) Serial.print("868Mhz");
if (RF_freq == RF12_915MHZ) Serial.print("915Mhz");
Serial.print(" Network: ");
Serial.println(networkGroup);
// }
*/
if (CT1) ct1.current(1, 60.606); // Setup emonTX CT channel (ADC input,calibration)
if (CT2) ct2.current(2, 60.606); // Calibration factor = CT ratio / burden resistance
if (CT3) ct3.current(3, 60.606); // emonTx Shield Calibration factor = (100A /0.05A) / 33 Ohms
if (CT4) ct4.current(4, 60.606);
if (CT1) ct1.voltage(0, 146.54, 1.7); // ct.voltageTX(ADC input, calibration,phase_shift) - make sure to select correct calibration for AC-AC adapter http://openenergymonitor.org/emon/modul ... alibration. Default set for Ideal Poweradapter
if (CT2) ct2.voltage(0, 146.54, 1.7); // 268.97 for the UK adapter, 260 for the Euro and130 for the US.
if (CT3) ct3.voltage(0, 146.54, 1.7);
if (CT4) ct4.voltage(0, 146.54, 1.7);
/*rf12_initialize(nodeID, RF_freq, networkGroup); // initialize RFM12B
rf12_sleep(RF12_SLEEP);
*/
pinMode(LEDpin, OUTPUT); // Setup indicator LED
digitalWrite(LEDpin, HIGH);
}
void loop()
{
if (CT1) {
ct1.calcVI(20,2000); // Calculate all. No.of crossings, time-out
emontx.power1 = ct1.realPower;
// Serial.print(emontx.power1);
Serial.print("TaskValueSet,1,1,"); Serial.println(emontx.power1);
}
emontx.Vrms = ct1.Vrms*100; // AC Mains rms voltage
if (CT2) {
ct2.calcVI(20,2000); // Calculate all. No.of crossings, time-out
emontx.power2 = ct2.realPower;
// Serial.print(" "); Serial.print(emontx.power2);
Serial.print("TaskValueSet,1,2,"); Serial.println(emontx.power2);
}
if (CT3) {
ct3.calcVI(20,2000); // Calculate all. No.of crossings, time-out
emontx.power3 = ct3.realPower;
// Serial.print(" "); Serial.print(emontx.power3);
Serial.print("TaskValueSet,1,3,"); Serial.println(emontx.power3);
}
if (CT4) {
ct4.calcVI(20,2000); // Calculate all. No.of crossings, time-out
emontx.power4 = ct4.realPower;
// Serial.print(" "); Serial.print(emontx.power4);
Serial.print("TaskValueSet,1,4,"); Serial.println(emontx.power4);
}
// Serial.print(" "); Serial.print(ct1.Vrms);
Serial.print("TaskValueSet,2,1,"); Serial.println(ct1.Vrms);
// Serial.println();
delay(100);
// because millis() returns to zero after 50 days !
if (!settled && millis() > FILTERSETTLETIME) settled = true;
if (settled) // send data only after filters have settled
{
// send_rf_data(); // *SEND RF DATA* - see emontx_lib
digitalWrite(LEDpin, HIGH);
//delay(2000);
// Serial.print("help ");
delay(2); digitalWrite(LEDpin, LOW); // flash LED
delay(2000); // delay between readings in ms
}
}
- On télécharge le firmware ESPEASY https://github.com/letscontrolit/ESPEasy/releases et on décompresse le tout dans un dossier.
- On va dans le dossier bin et on copie le fichier type ESP_easy_mega-XXXXXXX_normal_ESP8266>4046.bin à la racine du dossier précédemment créé
- On déconnecte biensur l'arduino uno r3 et on place les jumper 5,6,7 sur on et le reste sur off:
- Tout en appuyant sur le bouton "esp reboot" de l'arduino on connecte l'arduino au pc
- On lance le fichier FlashESP8266.exe
- On choisit le bon port com où l'arduino est connecté
- On choisit le fichier ESP_easy_mega-XXXXXXX_normal_ESP8266>4046.bin précédemment déplacé
- et on clique sur flasher! Il faut attendre environ 1min
- une fois fini (une fenêtre indique que c'est ok) on débranche l'arduino du pc et on remet les jumper 1,2 sur on et le reste sur off
- 3 - Configuration de l'ESPEASY:
Au premier boot de l'arduino il faut, à l'aide d'une tablette ou d'un téléphone chercher un réseau wifi généralement appelé "espeasy_**". Une fois connecté dessus on pourra voir l'adresse IP de l'arduino.
On peut maintenant saisir cette adresse IP dans un navigateur et rentrer dans les paramètres de la partie ESP de l'arduino:
- Dans l'onglet "config" on va rentrer :
le nom du module arduino
son numéro d'ordre
les paramètres WIFI (très importants il va s'en dire
Config IP (privilégiez une ip fixe )
et on oublie pas de valider avec "submit"
- Dans l'onglet "device":
on clique sur edit du task 1 et on saisi comme ci-dessous (ne pas oublier de cocher les cases )
on clique sur edit du task 2 cette fois:
- Dans l'onglet "controllers" on clique sur "edit Nr1":
Et on saisit les infos suivantes (biensur l'adresse IP à renseigner est celle de jeedom (on n'oublie pas de cocher enable)(oui c'est bien openhab mqtt qu'il faut prendre)
A partir de là dans l'onglet "device", dans la colonne value il devrait y avoir des valeurs s'afficher (si vous avez brancher le matériel bien sur)
Donc la partir Emontx est terminée
- 4 - Configuration de jeedom:
On va ensuite dans jeedom>plugin>protocole domotique>mqtt et on voit apparaitre nos 2 valeurs paramétrées précédemment dans espeasy
On clique dessus et on paramètre comme un autre plugin et magie dans le dashboard la velaur est affichée!!!
Voilà Maintenant j'en suis là il me reste à trouver comment faire des beaux graphique de ce type :
Si des personnes veulent bien finaliser ce tuto en créant une belle interface comme ci-dessus (les graphique de jeedom ne sont vraiment pas agréable visuellement...my2cent) j'en serais très reconnaissant!
Merci de m'avoir lu en espérant avoir intéressé des personnes!