Domotiser son portail CAME

Salut à vous,

Je vois que plusieurs personnes essayent de domotiser leur portail, je partage ce que j’ai mis en place chez moi si cela peut aider des personnes ayant le même modèle ou permettre à certains d’étudier une autre approche.
Cette installation à deux ans pour le moment et je n’ai jamais eu le moindre problème depuis :slight_smile: et d’une grande fiabilité!

Voici ma démarche pour domotiser mes portails CAME :

Le portail fonctionne avec télécommandes rf433, j’avais donc commencé par brancher la télécommande derrière un contact sec, cela fonctionnait mais j’avais parfois des ratés. J’avais également placé un capteur de porte Xiaomi pour savoir si le portail était ouvert ou fermé, mais là aussi j’avais quelques ratés.

J’ai donc cherché une solution pour pouvoir avoir un retour d’état juste et solide ainsi que de pouvoir déclencher l’ouverture ou la fermeture du portail.

Le choix des composant :

Je tiens déjà à préciser, cela fonctionne en wifi. J’avais ajouté un relais wifi au garage qui porte jusqu’au portail. L’autre solution aurait été de tirer un cable réseau jusqu’au portail, mais comme le wifi passe bien et que je suis flemmard :blush: je suis partit sur le wifi.

Pour récupérer les infos et piloter le tout : un ESP32 ! J’en ai toujours d’avance pour les idées farfelues que je peux avoir, ça ne coute pas cher et c’est costaud. A savoir qu’un wemos D1 aurait été suffisant.

Le portail est alimenté en 230v et fonctionne en 24v. Il me fallait du 5v. Deux solutions : un transfo 230 → 5v ou un 24v → 5v. Là encore le choix c’est porté avec ce que j’avais sous la main, un transfo 230 ->5v

https://www.amazon.fr/HLK-PM01-AC-Interrupteur-dalimentation-module/dp/B00ZUELJ6K?th=1

Après un peu de temps passé sur la carte du portail avec le multimètre, je comprends que c’est une impulsion qui permet le signal pour ouverture/fermeture. Un simple relai fait l’affaire et pareil j’en ai sous la main : https://www.amazon.fr/AZDelivery-Module-Optokoppler-Arduino-1-Relais/dp/B07CNR7K9B/ref=sr_1_7?__mk_fr_FR=ÅMÅŽÕÑ&crid=1U1A2R7MTXJ4K&keywords=relais%2B5v&qid=1650649689&s=computers&sprefix=relais%2B5v%2Ccomputers%2C83&sr=1-7&th=1

Ensuite le portail qui est coulissant fonctionne avec un « téton » (je l’appellerai comme ça, je ne sais pas comment ça s’appel) qui est poussé dans un sens ou dans l’autre suivant si le portail est ouvert ou fermé et reste au milieu si le portail est entre ouvert. Voici une photo du téton :

Le changement de position de ce téton fait basculer des relais sur la carte avec tension de 24v. Le problème c’est que l’ESP32 n’aime pas le 24v. Il me faut donc soit abaisser cette tension afin qu’elle puisse être interprétée par l’ESP32, soit ajouter des relais 24v pour simplement savoir si ils sont ouverts ou fermés.

J’ai choisi la deuxième option (toujours par flemme :slight_smile: ) et j’ai donc acheté des relais 24v. Après une petite recherche j’en trouve qui semblent bien aller pour ce que je veux et de la même marque que ceux déjà présent sur la carte : https://www.amazon.fr/Relais-320R-SPDT-Finder-40-31/dp/B07Z67BCX3/ref=sr_1_1?keywords=Finder+40.31+24v&qid=1650649963&sr=8-1

Maintenant qu’on a tout le matériel place au schéma :

Pour information, j’ai deux portails, l’un avec une carte ZBX7 et l’autre avec une BX74-78. Le branchement est le même pour les deux cartes et le fonctionnement identique (reprendre les mêmes numéros de bornes sur la carte)

Voici une photo du montage :

Pour la partie logicielle je l’ajouterai par la suite si il y a des personnes intéressées.

Cela me permet maintenant d’ouvrir mon portail lorsque je suis proche de la maison et que le portail soit ouvert quand j’arrive en voiture. De le fermer quand je pars. De l’ouvrir à distance. De savoir s’il est ouvert, fermé ou entre ouvert. D’allumer les lumières extérieures lorsque qu’il s’ouvre et qu’il fait nuit. Et de ne pas oublier de le laisser ouvert quand je vais me coucher :blush:.

Pour ceux qui ont des portails de marques différents, je ne saurai que vous conseiller d’utiliser votre meilleur ami dans ce cas : le multimètre!
Votre portail à forcément une commande d’ouverture et il y a de grade chance pour qu’il y ai un capteur de course, il faut simplement réussir à trouver où récupérer ces informations sur la carte. Les manuels des cartes peuvent également être d’une grande aide!

5 « J'aime »

Merci !
il faut que je regarde de plus près cette histoire teton chez moi …

1 « J'aime »

Salut,
Je suis dans le même cas que toi, je viens d’installer un portail CAME et ca doit être le même moteur a peu près.
Moi je voulais installer un Shelly 2.5 pour commander l’ouverture fermeture du portail sur un circuit et sur l’autre les lumières du chemin lorsque j’ouvre ou ferme le portail.

Je sais pas si ca marcherais aussi avec un shelly…Je vais regarder ca

Salut,
Oui avec les Shelly tu devrais pouvoir l’ouvrir et le fermer. Par contre je ne sais pas si les entrées pour interrupteurs du Shelly te permettront d’avoir le retour d’état de l’état d’ouverture/fermeture du portail. En adaptant un peu ça doit être faisable!

hello,
interessante ta méthode.j’ai une passerelle cameconnect reth001 qui me permet de gérer mon portail depuis mon mobile.
J’essaye de trouver un moyen de m’y connecter directement avec l’api mais je n’ai rien réussi a obtenir.
Je regarde si passer par selenium pour envoyer ma requête depuis le site web mais bon pas top :-(. si quelqu’un a une idée je suis preneur.

Bonjour Yul, c’est quoi le principe pour déclencher l’éclairage lors de l’ouverture du portail?
Merci d’avance pour votre réponse

J’ai une automatisation qui fait que si il fait nuit et que le portail s’ouvre alors la lumière s’allume. Elle s’éteint 3 minutes après que le portail soit fermé.

Hello depuis je suis tombé sur ce développement:

J’ai intégré cela dans mon homeassistant via des commandes Rest. J’ai essayé d’en faire une intégration mais je n’ai pas reussi. Mais cela reste efficace mais incomplet.

Bonjour,
Pour domotiser mon portail (moteur BFT), j’ai procédé différemment :
Ouverture : impulsion de 0,5 s sur un relais piloté par une pi (en cours de transformation vers HA :grin: ) en parallèle de la commande de l’interphone ;
Ouverture maintenue: en utilisant le relais: ouvrir, attendre l’ouverture (tempo), lancer la fermeture, et lancer une nouvelle commande pour interrompre la fermeture;
Fermeture: impulsion simple. Si il était fermé, il va s’ouvrir et se refermer 2 min après (prog du moteur de base)

Ça a très bien fonctionné comme ca jusqu’à ce que j’ai besoin de programmer l’ouverture et m’assurer que ce soit effectivement ouvert… (Enfants et seulement 2 télécommandes). Depuis j’ai mis des télécommandes rf433, mais ça rejoint mes problèmes de rflink avec HA…

Et pareil, j’ai réfléchi longtemps pour détourner le signal du « téton » sans cramer mes jouets ni écrouler l’alim du capteur… jusqu’à la lumière ! Il suffit de brancher le téton directement sur « mon » système et reporter cet état au portail! Et il s’avère qu’il existe un système tout fait et qui est robuste, radio, … bref, pas besoin de réinventer la roue! Le fibaro fgbs-001 en zwave fait le job en remontant 2 binaires on/off.

Il y a bien evidemment des solutions alternative. Cepdendant je pense que ce genre de développement permet d’apprendre d’autres maniere de faire. J’ai l’application du constructeur qui le fait tres bien a la limite j’en ai pas besoin.

En faite je pense que je vais passer par un air send duo ca devrait me permettre de l’ouvrir a la voix ou via l’interface.

Je viens de voir le prix de ton air sens duo j’ai failli m’étouffer.
N’importe quel module disposant d’un contact sec te permettra de piloter ton portail aussi bien par home assistant que par l’appli constructeur et même a la voix si le module est compatible Google home ou Alexa voir Siri selon ta préférence

oui, mais avec je vais commander mes 9 volets roulants et mon portail de garage.
J’ai reçu le module ca marche bien mais actuellement je galère a l’intégrer dans HA

Merci beaucoup pour ce tuto. Jai acheté ts les composants électroniques que tu as utilisés, et je me rends compte qu’il manque la partie logiciel :s. Pourrais tu nous fournir le code qui va avec ce montage si il te plait?
Merci beaucoup

Hello,
Pas mal de bonnes idées ici, merci.
Pour ma part, j’ai un contrôleur Came BXV et j’ai utilisé un D1mini avec ESPHome pour en faire un « cover » dans Home Assistant.
Je récupère d’une part l’information des fins de course (ouvert/fermé) ainsi que l’alimentation du moteur (et le sens de rotation) pour pouvoir à coup sûr déterminer l’état et la position du portail, même si on utilise les télécommandes RF pour le piloter.
Les détails matériel et logiciel, ainsi qu’une vidéo de démo sont dans sur mon blog (en Anglais), blog.deconinck.info (désolé, il semble que je ne puisse pas poster de liens…)
Vincent

Merci pour ta solution, elle m’a été d’une grande aide.

Petite remarque : il y a une erreur de câblage dans ton schéma, avec une inversion entre DC et AC pour le transformateur d’entrée (220V → 5V).

Si c’était à refaire, j’opterais plutôt pour un convertisseur 24V->5v, qui est plus sécurisé.

Il manquait le code, mais j’ai utilisé les pins 13 et 15.
Voici ce que j’ai mis en place chez moi :

  • Cela fonctionne parfaitement lorsque le portail est entrouvert.
  • En revanche, lorsqu’il est complètement ouvert ou fermé, je ne détecte pas toujours de tension sur le bon pin. Il serait peut-être judicieux d’ajouter une temporisation dans ce code pour vérifier si on récupère la même valeur à deux reprise. J’ai mis pour l’instant un contrôle coté home assistant avec un système qui vérifie les valeurs précédentes. J’ai un contrôle visuel avec une caméra donc je me suis pas plus embêté :slight_smile:
#include <WiFi.h>
#include <PubSubClient.h>

#define PIN_RELAI 6
#define PIN_CAME1 13 //FC - Tension only = CLOSED - No Tensions on FC and FA = In motion (Between open)
#define PIN_CAME2 15 //FA - Tension only = OPEN - No Tensions on FC and FA = In motion (Between open)

WiFiClient espClient;
PubSubClient client(espClient);

// Configuration
const char* ssid = "TO_DEFINE";                    // Wi-Fi SSID
const char* password = "TO_DEFINE";         // Wi-Fi password
const char* mqtt_server = "TO_DEFINE";         // MQTT broker IP address
const uint16_t mqtt_port = TO_DEFINE;                  // MQTT broker port
const char* mqtt_login = "TO_DEFINE";                  // MQTT broker username
const char* mqtt_password = "TO_DEFINE";      // MQTT broker password
const char* mqtt_topic = "CAME_GATE";          // MQTT topic for controlling the gate
const char* mqtt_topic_db = "CAME_GATE_STATE"; // MQTT topic for reporting gate state
const char* triger_came = "ON";                   // MQTT payload for arming the alarm
const uint16_t send_every = 5000;                 // Milliseconds between level reports
const uint16_t time_between_samples = 1000;       // Milliseconds between each measurement

unsigned long lastMsg = 0;
#define MSG_BUFFER_SIZE (50)
char msg[MSG_BUFFER_SIZE];

void setupWifi();
void callback(char* topic, byte* payload, unsigned int length);
void reConnect();

////////////////////////////////////////////////////////////////////////////////////////////////
//                                  MQTT
////////////////////////////////////////////////////////////////////////////////////////////////

void setupWifi() {
  delay(10);
  Serial.print("Starting connecting WiFi.");
  WiFi.mode(WIFI_STA);  // Set the mode to WiFi station mode.
  WiFi.begin(ssid, password);  // Start Wifi connection.
  while (WiFi.status() != WL_CONNECTED) {
    delay(500);
    Serial.print(".");;
  }
  Serial.println("WiFi connected");
  Serial.println("IP address: ");
  Serial.println(WiFi.localIP());
  delay(2000);
}

void callback(char* topic, byte* payload, unsigned int length) {

  String msg = "";
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
    msg += (char)payload[i];
  }
  if (msg == triger_came) {
    digitalWrite(PIN_RELAI, HIGH);  // Trigger the CAME gate
    delay(500); // 500ms
    digitalWrite(PIN_RELAI, LOW);
    delay(1000);
  }

  client.publish(mqtt_topic_db, "MSG RECEIVED");   
}

void reConnect() {
  
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Create a random client ID.
    String clientId = "CAME Gate ESP32";
    clientId += String(random(0xffff), HEX);
    Serial.print(clientId);
    // Attempt to connect.
    if (client.connect(clientId.c_str(), mqtt_login, mqtt_password)) {
      Serial.print("\nSuccess\n");

      // Once connected, publish an announcement to the topic.
      client.publish(mqtt_topic, "Connect CAME");
      // ... and resubscribe.
      client.subscribe(mqtt_topic);
    } else {
      Serial.print("failed, rc=");
      Serial.print("try again in 5 seconds");
      delay(5000);
    }
  }
}

////////////////////////////////////////////////////////////////////////////////////////////////
//                                  Setup and Loop
////////////////////////////////////////////////////////////////////////////////////////////////

void setup() {
  setupWifi();
  client.setServer(mqtt_server, mqtt_port);
  client.setCallback(callback);  // Sets the message callback function

  pinMode(PIN_RELAI, OUTPUT);  // Relay that triggers the gate action
  pinMode(PIN_CAME1, INPUT);   // Relay closure state
  pinMode(PIN_CAME2, INPUT);   // Relay open state
  
  Serial.begin(115200);
}

bool closing = false;
bool opening = false;

void loop() {

  // Wait a little to not over-compute
  delay(time_between_samples);

  if (!client.connected()) {
    reConnect();
  }
  client.loop();  // This function is called periodically to allow clients to process incoming messages and maintain connections to the server.

  unsigned long now = millis();

  if (now - lastMsg > send_every) {
    lastMsg = now;

    int relayCAME1State = analogRead(PIN_CAME1);
    if (relayCAME1State > 200) //If we are >0v (> to 0.16V)
      closing = true;
    else
      closing = false;

    int relayCAME2State = analogRead(PIN_CAME2);
    if (relayCAME2State > 200) //If we are >0v (> to 0.16V)
      opening = true;
    else
      opening = false;

    int state = 0;
    if(closing && !opening)
       state = 1; //Closed
    else if(!closing && !opening)
       state = 2; //In progress
    else  if(!closing && opening)
       state = 3; //Open
    else
       state = 0; // Unknown should not happen
       
    snprintf(msg, MSG_BUFFER_SIZE, "{\"state\":%d}", state);
    client.publish(mqtt_topic_db, msg);                       // Publishes the sate of the CAME gate to the specified topic
  }
}

bonjour je suis en pleine installation dune ZBX7 et je ne comprend pas tout :sweat_smile: si je n’achete pas les 3 modules cité ci dessus je ne peut pas faire fonctionner normalement mon portail avec la telecommande ouverture /fermeture :stuck_out_tongue: merci a tous bonne journée

Peux tu détailler ce que tu ne comprends pas ?

Mais normalement ton portail peut être commander avec les télécommandes, ou avec une commande externe (bouton, module connecté, esp etc…)

Merci pour ta réponse pascal , J’aide actuellement des gens à installer leur portail, car voilà déjà 20 ans que le portail est en place, mais le moteur n’est pas installé… J’ai simplement la carte et tous les fils de branchement qui arrivent mais je ne trouve pas d’informations concernant les branchements, il n’étende pas spécialiste dedans, je ne sais pas qu’est-ce qui se branche ou alors quand j’ai suivi ce topic sur le forum Je me demande si je dois acheter tous ces modules pour faire fonctionner le portail?

Je pensais qu’il était possible simplement d’alimenter la carte en 230 V et d’utiliser les trois télécommandes programmées pour ouverture, fermeture du portail

Merci de ta réponse. Bonne journée.

Bonjour @Frank_M

Si tu as la télécommande d’origine du portail, cela doit fonctionner sans rien de plus.

Si tu n’as pas la télécommande, il existe des modules wifi, zigbee et RF qui peuvent commander ton portail de façon simple.

Avec la référence exacte de la motorisation tu dois pouvoir trouver la notice sur internet.

Voici ce que j’ai trouvé rapidement pour un zbx7.

https://www.google.com/url?sa=t&source=web&rct=j&opi=89978449&url=https://www.portail-automatique-bordeaux.fr/_media/came-c-zbx7-230v.pdf&ved=2ahUKEwjg0o6HmdWMAxWrcKQEHTJVA_4QFnoECBAQAQ&usg=AOvVaw30pN-_K7tn7cY1_Ss0hAC0