Pince coupante et crackkk
Sinon il faudrait lire le registre 133h pour déterminer quelle alarme est activée pour allumer la led. Quand on aura la cause de l alarme on pourra sans doute corriger l erreur à sa source et donc éteindre cette led
Programme non testé pour lire et décoder ce registre de status
Sinon il faudrait lire le registre 133h pour déterminer quelle alarme est activée pour allumer la led. Quand on aura la cause de l alarme on pourra sans doute corriger l erreur à sa source et donc éteindre cette led
Programme non testé pour lire et décoder ce registre de status
Code :
#include <ModbusMaster.h>
// Créer une instance de ModbusMaster
ModbusMaster node;
// Adresse de l'esclave (JSY-MK-333)
#define SLAVE_ID 1
// Broches UART sur ESP32 (adapter selon câblage)
#define RXD2 16
#define TXD2 17
void setup() {
Serial.begin(115200);
Serial2.begin(9600, SERIAL_8N1, RXD2, TXD2);
node.begin(SLAVE_ID, Serial2);
Serial.println("Lecture du registre d'alarme JSY-MK-333...");
}
void loop() {
uint8_t result;
uint16_t alarmReg;
// Lire 1 registre à l'adresse 0x0133
result = node.readHoldingRegisters(0x0133, 1);
if (result == node.ku8MBSuccess) {
alarmReg = node.getResponseBuffer(0); // valeur du registre
Serial.print("Registre 0x0133 = ");
Serial.println(alarmReg, HEX);
// Décode les bits selon manuel
uint8_t highByte = (alarmReg >> 8) & 0xFF;
uint8_t lowByte = alarmReg & 0xFF;
if (highByte & 0x01) {
Serial.println("⚠️ Inversion de phase détectée !");
}
if (lowByte & 0x01) {
Serial.println("⚠️ Surtension phase A !");
}
if (lowByte & 0x02) {
Serial.println("⚠️ Surtension phase B !");
}
if (lowByte & 0x04) {
Serial.println("⚠️ Surtension phase C !");
}
if (lowByte & 0x10) {
Serial.println("⚠️ Surintensité phase A !");
}
if (lowByte & 0x20) {
Serial.println("⚠️ Surintensité phase B !");
}
if (lowByte & 0x40) {
Serial.println("⚠️ Surintensité phase C !");
}
if (alarmReg == 0x0000) {
Serial.println("✅ Pas d'alarme active.");
}
} else {
Serial.print("Erreur Modbus: ");
Serial.println(result, HEX);
}
delay(2000); // lire toutes les 2 secondes
}