How can initialize relays first time.
-
HI,
I installed this firmware in HAAS and it works fine. It controls my 8 relays without problem and the status remains the same when I restart my nano, it takes the same status.
I have problems only at the start to detect the relays in HASS. I have tried several things but I would like to know how to avoid it if the status has already been detected. In other words, the first initiation.#include <Arduino.h> /** * * REVISION HISTORY * Cette version est fonctionnel et est compatible avec Home Assistant (Sauf l'initialisation) * Utilise le composant 74HC595 pour réduire le nombre de fils. * * DESCRIPTION * Ce firmware utilise 8 sorties pour relais * V_STATUS sert seulement pour le statu de sortie * V_CUSTOM est pour activé les relais. */ // Mettre le mode DEBUG ou l'enlever en commentaire #define MY_DEBUG // Enable and select radio type attached #define MY_RADIO_RF24 //#define MY_RADIO_RFM69 //#define MY_IS_RFM69HW //#define MY_RFM69_NEW_DRIVER // Use new RFM69 Driver (include ATC) //#define MY_RFM69_FREQUENCY RFM69_868MHZ #define MY_REPEATER_FEATURE #include <SPI.h> #include <MySensors.h> #define SN "8_Relais" #define SV "1.2" #define NB_OUTPUTS 8 #define OUTPUT_SER 7 // Serial data comes on this pin #define OUTPUT_RCLK 8 // This is the LATCH pin. Data is released when the pin goes HI #define OUTPUT_SRCLK 4 // Clock pin #define HEARTBEAT_DELAY 3600000 #define pinEnable 6 // C'est dans la conception du board. La pin D6 doit être à 0 pour que le 74HC595 soit enable. byte outputStates; unsigned long lastHeartBeat=0; void changeOutputState(int i, boolean newState){ bitWrite(outputStates, i, newState); // Lock latch digitalWrite(OUTPUT_RCLK, LOW); // Write bits shiftOut(OUTPUT_SER, OUTPUT_SRCLK, MSBFIRST, outputStates); // Unlock latch digitalWrite(OUTPUT_RCLK, HIGH); } void setup() { pinMode( OUTPUT_SER, OUTPUT); pinMode( OUTPUT_RCLK, OUTPUT); pinMode( OUTPUT_SRCLK, OUTPUT); pinMode( pinEnable, OUTPUT); digitalWrite(pinEnable, LOW); // On met ici toujour la pin D6 à LOW } void presentation() { // On envoie ici la version et le nom du Sketch sendSketchInfo(SN, SV); // On présente les relais selon le nombre établi au départ. for (int i=0; i< NB_OUTPUTS; i++){ present(i, S_BINARY ); } } void loop(){ // Send a HeartBeat frequently so Domoticz see us as alive. if (millis() > lastHeartBeat + HEARTBEAT_DELAY){ lastHeartBeat = millis(); sendHeartbeat(); } } void receive(const MyMessage &message){ boolean currentStatus; switch(message.type){ case V_CUSTOM: // Revert output status : currentStatus=bitRead(outputStates, message.sensor); changeOutputState(message.sensor, !currentStatus); break; case V_STATUS: changeOutputState(message.sensor, message.getBool()); break; } // Send new state : currentStatus=bitRead(outputStates, message.sensor); MyMessage msg(message.sensor, V_STATUS); msg.set(currentStatus); send(msg); }Thank if somebody known
-
I never used HAAS but have you looked at this page for how to set initial state? Then you can just send that to the controller.
Hello! It looks like you're interested in this conversation, but you don't have an account yet.
Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.
With your input, this post could be even better 💗
Register Login