Vos retours sur les claviers RFID WEIGANT (ou équivalent)

Bonjour
Je commence petit à petit à installer mon système d’alarme sous HA.
Je trouve pratique de la mettre et l’arrêter avec des badges RFID (et code en secours)

Je recherche un clavier que je pourrais mettre à la place du bouton de ma sonnette, qui aurait deux fonctions :

  • Le remplacement de ma sonnette (via un bip en TTS sur les enceinte de la maison)
  • La mise en route et l’arrêt de l’alarme depuis l’extérieur.

Il faut qu’il soit prévu pour l’extérieur, pratique et design ; et si je le met à la place de mon bouton de sonnette il faut qu’il ait cette fonctionnalité en plus de la commande d’alarme.

J’ai vu que les claviers WIEGAND S5 pourraient faire l’affaire, mais en avez vous déjà intégrés? il ne semblent pas être intégrables par radio ou wifi, alors peut être faudrait il passer par un petit module communicant « perso ».

Avez vous déjà intégré ce genre de produit ? et quels sont vos retours? et si oui comment les avez vous raccordés?

Mon plan B sera ne ne pas toucher la sonnette, et de mettre un clavier intérieur…

J’utilise un clavier de ce type avec badge RFID pour mettre en marche ou arrêter mon système d’alarme.
Le mien possède le Wifi, il reconnu par Tuya, sous HA le clavier apparait, mais n’a aucune entité. il n’est donc pas utilisable directement dans HA.

Pour pouvoir l’utiliser, j’ai raccordé la sortie impulsionnel du clavier sur un shelly uni, afin de pouvoir récupérer l’information et l’utiliser sous HA

C’est plus de la bidouille que de l’intégration, mais sa fonctionne comme j’ai besoin…

Moi, j’ai ça Wiegand – lecteur de carte esclave pour contrôle d'accès aux portes, étanche IP65, 26 34 cartes, Rfid IC, KR602E | AliExpress connecté sur un arduino.
Le code envoyé depuis le clavier est emis avec MQTT.

J’ai un sketch perso.
Mais, esphome permet d’inclure du wiegand désormais (pas encore intégré mais une « issue » sur github) décrit comment faire.

Hello,

Pourrais-tu partager ton expérience avec ce clavier s’il te plait ? Cela m’intéresse beaucoup

Merci

Le clavier marche très bien. Dans mon cas, il est connecté à un arduino. Je n’y ai pas touché depuis quelques années. J’ai écrit mon propre sketch. Ca envoie le code du badge ou le code tapé en MQTT. Après, on fait ce que l’on veut.
Je pense que le plus simple maintenant est de passer en esphome. Les wiegand sont officieusement intégrés.

Hello
Je viens de passer sous Home Assistant et j’ai déjà le même clavier avec un Arduino et j’aimerais conserver cette configuration. Pourrais-tu me partager ton sketch s’il te plait ?

Merci d’avance

Le voici… C’est un arduino en Ethernet. Il faut adapter le code à la puce ethernet que tu as.
Il faut bien entendu mettre à jour les infos d’@IP. Etc.
Ca doit donner une base correcte :slight_smile:

#include <SPI.h>
#include <Ethernet.h>
#include <Wiegand.h>

#define LUMIERE 9

String wgPINCODE ="";

// Enter a MAC address for your controller below.
// Newer Ethernet shields have a MAC address printed on a sticker on the shield
byte mac[] = { 0x0E, 0xBE, 0xAA, 0xBB, 0xBA, 0x19 };

#include <PubSubClient.h>
long stayon = 1500;

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

const char* mqtt_server = "192.168.1.224";
const char* mqtt_input = "garage/input";
const char* mqtt_output = "garage/output";
IPAddress ipEth(192, 168, 1, 223);
IPAddress ipDNS(192, 168, 1, 254);
IPAddress subnet(255, 255, 255, 0);

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

WIEGAND wg;
EthernetClient ethClient;
PubSubClient client(mqtt_server, 1883, callback, ethClient);
long lastMsg = 0;

char message_buff[100];

void setup() {
  Serial.begin(115200);
  setup_eth();
  client.setServer(mqtt_server, 1883);
  client.setCallback(callback);
  wg.begin(2,3);
  pinMode(LUMIERE, OUTPUT);
  digitalWrite(LUMIERE, HIGH);  
}

void setup_eth() {

  delay(10);
  if (Ethernet.linkStatus() == LinkOFF) {
      Serial.println("Ethernet cable is not connected.");
  }
  Ethernet.begin(mac, ipEth, ipDNS);

  Serial.println(Ethernet.localIP());
  
}

void callback(char* topic, byte* payload, unsigned int length) {
  payload[length] = '\0';
  Serial.print("Message arrived [");
  Serial.print(topic);
  Serial.print("] ");
  for (int i = 0; i < length; i++) {
    Serial.print((char)payload[i]);
  }
  Serial.println();
  String message((char*)payload);

  if (message == "open") {
    digitalWrite(LUMIERE, LOW);   
    delay(stayon);
    digitalWrite(LUMIERE, HIGH);   
  } 
  if (message == "confirm") {
    digitalWrite(LUMIERE, LOW);   
    delay(stayon);
    digitalWrite(LUMIERE, HIGH);   
  }
}

void reconnect() {
  // Loop until we're reconnected
  while (!client.connected()) {
    Serial.print("Attempting MQTT connection...");
    // Attempt to connect
    if (client.connect("GarageWiegand")) {
      Serial.println("connected");
      // Once connected, publish an announcement...
      client.subscribe(mqtt_input);
    } else {
      Serial.print("failed, rc=");
      Serial.print(client.state());
      Serial.println(" try again in 5 seconds");
      // Wait 5 seconds before retrying
      delay(5000);
    }
  }
}
void loop() {
  if (!client.connected()) {
    reconnect();
  }
  if(wg.available()) {
    if ( wg.getWiegandType() == 8 || wg.getWiegandType() == 4 )
       {
          unsigned long wgCODE = wg.getCode();
          if  (wgCODE == 13 )
            {
              char wgCodeChar[16];
//              sprintf(wgCodeChar, "%s", wgPINCODE);
              wgPINCODE.toCharArray(wgCodeChar, 16);
              client.publish(mqtt_output,wgCodeChar);
              Serial.println(wgPINCODE);
              Serial.println(wgCodeChar);
              wgPINCODE = "";
            }
          else if ( wgCODE == 27 )
            {
              wgPINCODE = "";
            }
          else
          {
            wgPINCODE+= String(wgCODE);
            if (wgPINCODE.length() > 15 )
              wgPINCODE = "";
          }
       }
       else
       {
          unsigned long wgCode = wg.getCode();
          char wgCodeChar[16];
          sprintf(wgCodeChar,"%lu",wgCode); 
          Serial.println(wgCodeChar); 
          Serial.println(wg.getCode());
          client.publish(mqtt_output,wgCodeChar);
       }
  }
  client.loop();
}

1 « J'aime »

Salut

Merci beaucoup. Je vais regarder ça

Salut @golfvert ,

Ca y est j’ai réussi à envoyer le code via MQTT, j’ai réussi à le récupérer sur HA. En revanche, impossible de l’intégrer dans une automatisation pour déclencher ou arrêter l’alarme…

Faisant toutes mes automatisations avec nodered, je ne peux guère aider…

Ca marche je vais me mettre à nodered alors :wink:

Pas forcément la peine. Il faut comprendre comment se gère l’alarme que tu utilises. Certaines s’interfacent avec MQTT…