KiwiHC16 / Abeille

Abeille pour Jeedom (Gateway ZiGate)
GNU Affero General Public License v3.0
60 stars 51 forks source link

Weima (Wima) Cylinder Door #990

Closed KiwiHC16 closed 2 years ago

KiwiHC16 commented 4 years ago

"modelId": "TY0A01"

https://zigbee2mqtt.discourse.group/t/support-new-pine-world-lock/188

(See my notes)

KiwiHC16 commented 4 years ago

https://community.smartthings.com/t/wima-vima-xiaomi-cylinder-lock-zigbee/131970

KiwiHC16 commented 4 years ago

https://community.smartthings.com/t/new-xiaomi-anti-theft-door-lock/138200

KiwiHC16 commented 4 years ago

https://easydomoticz.com/forum/viewtopic.php?t=7446

KiwiHC16 commented 4 years ago

Zigbee ID: "lumi.lock.v1"

https://zigbee.blakadder.com/Xiaomi_Vima_A6121.html

KiwiHC16 commented 4 years ago

https://www.youtube.com/watch?v=4ONGgSzKvO0

KiwiHC16 commented 4 years ago

https://community.home-assistant.io/t/xiaomi-vima-smart-lock-support/61494

I have fully tested this cylinder and this is my considerations:

Its a great and really cheap security system: The first line of security is premature detection, and here, the lock produces an alarm if something is inserted (even a picklock) for more than 3 secs that is not an authorized key. Its really cheap because it has similar cost as similar “not smart” lock+5 keys.
The keys seems to have some NFC mechanism
Battery after 3 months (low use) down 3%, so I suppose it can reach more than 2 years (in my case)
If battery is down, the lock works as any not-smart lock: authorized and not-authorized keys can open. and no alarm, manage, etc. is possible.
If gateway is down (i.e. shutdown all electricty due to an atack), smartlock has all the configuration and a timer inside, so authorized and and even temporary authorized keys can open, not-authorized cannot, indepedent of gateway state. Alarms are sended but nobody can receive them. For this reason is so important to has a UPS or battery system to the gateway…
6.The hardware security is like other cylinder. and a tipical force attack can destroy it (as the most robust cylinder) so you need a god external shield to become really secure. See this brute atack here https://www.youtube.com/watch?v=wqfEd-WGL10 135
In general, the system seem with enough quality, and the keys are really robust (at least until now).
Few days ago I installed zigbb2mqtt with the project to replace the Xaomi Gateway that cause me many connection alerts.

I discovered that zigbee2mqtt support VIMA smart cylinder and now it is supported by Home Assistant as a sensor.
Now in HA it show the number ok key used to open the door… 01, 02, 03… etc.

But after it show the number of key it retain persistent.
I wish to reset its state… to null.
How can I do it?
KiwiHC16 commented 4 years ago

https://www.zigbee2mqtt.io/devices/A6121.html

Ici xiaomi: https://github.com/aesedepece/zigbee-shepherd-converters/blob/d6b87435dd82750b5f0f2d4cb27677dcb74bd728/converters/fromZigbee.js

    xiaomi_lock_report: {
        cid: 'genBasic',
        type: 'attReport',
        convert: (model, msg, publish, options) => {
            if (msg.data.data['65328']) {
                const data = msg.data.data['65328'];
                const state = data.substr(2, 2);
                const action = data.substr(4, 2);
                const keynum = data.substr(6, 2);
                if (state == 11 && action == 7) {
                    // wrong key or not success inserted
                    return {keyerror: true};
                }
                if (state == 12) {
                    if (action == 1) {
                        // successful unlock, sets everything to neutral state
                        return {inserted: keynum, keyerror: false, forgotten: false};
                    }
                    if (action == 11) {
                        // forgot the key in the lock
                        return {forgotten: keynum, keyerror: false};
                    }
                }
            }
        },
    },

Avec la version Tuya un read attribut sur FF30 (clusterId=0000&attributId=FF30&Proprio=0000&EP=01) Repond Attribut Unknown.

KiwiHC16 commented 4 years ago
[2020-02-25 22:27:47][AbeilleParser][debug];type; 8043; (Simple Descriptor Response)(Not Processed); dest: Abeille1; SQN : 46; Status : 00; Short Address : 7b9f; Length : 14; endpoint : 01; profile : 0104 (ZigBee Home Automation (ZHA)); deviceId : 0051 (Smart Plug); bitField : 00; InClusterCount : 05
[2020-02-25 22:27:47][AbeilleParser][debug]In cluster: 0000 - General: Basic
[2020-02-25 22:27:47][AbeilleParser][debug]In cluster: 000A - General: Time
[2020-02-25 22:27:47][AbeilleParser][debug]In cluster: 0004 - General: Groups
[2020-02-25 22:27:47][AbeilleParser][debug]In cluster: 0005 - General: Scenes
PHP Notice:  Undefined index: 0xef00 in /var/www/html/plugins/Abeille/core/class/AbeilleParser.php on line 1368
[2020-02-25 22:27:47][AbeilleParser][debug]In cluster: ef00 - 
[2020-02-25 22:27:47][AbeilleParser][debug]OutClusterCount : 01
[2020-02-25 22:27:47][AbeilleParser][debug]Out cluster: 0019 - General: OTA
KiwiHC16 commented 4 years ago

Version Tuya: TY0A01

[2020-02-25 22:27:44][AbeilleParser][debug];Type; 8102; (Attribut Report)(Processed->MQTT); dest: Abeille1; SQN: 55; Src Addr : 7b9f; End Point : 01; Cluster ID : 0000; Attr ID : 0005; Attr Status : 00; Attr Data Type : 42; Attr Size : 0006; Data byte list : ->TY0A01<-
KiwiHC16 commented 4 years ago

https://www.domotique-info.fr/2019/05/tuya-smart-votre-maison-connectee-sans-box-domotique/

Crap pour le zigbee il faut un GW comme "Smart Gateway" TYGWZW-01 Avec ca le lock s'appaire et on le recuperer dans l appli Tuya sur tel.

KiwiHC16 commented 4 years ago

https://m.alibaba.com/product/60794327104/Mijia-Weima-Smart-home-door-lock.html

KiwiHC16 commented 4 years ago

WEIMA electro-mechanical cylinder has joined the App of MI, a supplier of smart home system.By operating the cylinder,you can set different scenes.For example,lamps will be turned on and curtain will be shut when the cylinder is unlocked at night.

http://www.r-weima.com/en/About.asp

KiwiHC16 commented 4 years ago

https://m.youtube.com/watch?v=jqVThVfnkfw

KiwiHC16 commented 4 years ago

http://www.r-weima.com/en/ShowVideo2.asp

KiwiHC16 commented 4 years ago

Gateway: https://www.lesalexiens.fr/labo-test-alexa/test-pont-et-ampoule-zigbee-par-zemismart-simple-rapide-et-peu-gourmand/

rvitch commented 4 years ago

Bonjour kiwiHC16 Un article en parle ici : https://www.dealabs.com/bons-plans/verrou-de-porte-de-securite-connecte-xiaomi-vima-smart-lock-cylindre-de-securite-intelligent-1808195

Dans les commentaires , un certain ZINZIN059 parle de la maniere dont il à intégré la serrure sur jeedom (via les couleurs de la GW) :

"Pour l'intégrer à jeedom, j'utilise un code couleur du Gateway xiaomi. Par exemple, lorsque l'alarme est active sur jeedom (plugin alarme), la couleur du Gateway est d'une couleur définie. Lorsque j'insère une clé, la couleur change et désactive l'alarme immédiatement (et la couleur s'éteint dans le scénario). Si l'alarme est désactivée, aucune couleur ne s'allume. Mais le mode alarme du Gateway peut être géré directement avec la serrure."

IL semble donc déja que la GW xiaomi intégre bien cette notion de clef .

Reponse de Kiwi:

rvitch commented 4 years ago

Je veux dire que la serrure semble bien liée à la GW xiaomi est gerer les clefs sous mihome..

KiwiHC16 commented 4 years ago

Oui il semble que la serrure est prise en compte par l appli Mi Home. Dans les menus je la trouve mais l integration ne fonctionne pas. L appli Mi Home ne le trouve pas alors que je vois que la GW la integrée au réseau ZigBee. Je bloque sur ce point ;-(

Je confirme, il y a deux modeles au moins, un xiaomi et un tuya. Xiomi avec MiHome et Tuya avec App Tuya.

olivr2s commented 4 years ago

Bonjour KiwiHC16, je possède cette serrure et je l'ai ajouté à ma gateway xiaomi et dans l'appli mi home. Quand tu cherches à l'ajouter dans mi home, tu passes par où, car pour cette serrure, c'est un peu différent que pour les autres capteurs... D'ailleurs on peut pas la trouver dans la liste du menu principal de mi home, il faut aller sur la gateway qui est dans mi home, puis faire ajouter un capteur pour l'avoir dans la liste. Si je me rappel, lors de l'intégration sur la gateway, il faut appuyer sur le bouton beige pendant quelques secondes pour que la gateway fasse l'inclusion...

Reponse Kiwi: Oui c'est ce que j'ai fait mais j'ai une Tuya pas compatible avec MiHome d apres mes tests.

KiwiHC16 commented 4 years ago

Voici la méthode que j utilise: IMG_1115 Je choisi la GW IMG_1116 Je vais dans la page appareil IMG_1117 Je fais le plus en bas de page Je choisi la Door Lock IMG_1118 Je choisi la Door Lock IMG_1119 Appuis 5s Et la rien... (mais je vois en suiffant que l appairage zigbee se fait)

KiwiHC16 commented 4 years ago

une idée ?

olivr2s commented 4 years ago

Pourtant tu fais tout comme prévu... Moi j'ai bien réussi à l'inclure... Bizarre... Screenshot_2020-02-27-22-54-03-728_com xiaomi smarthome

KiwiHC16 commented 4 years ago

Que peux tu faire depuis l app ?

olivr2s commented 4 years ago

Voici ce que propose l'application...

Screenshot_2020-02-28-07-43-15-576_com xiaomi smarthome 1 Screenshot_2020-02-28-07-43-53-044_com xiaomi smarthome 1 Screenshot_2020-02-28-07-44-46-999_com xiaomi smarthome 1

olivr2s commented 4 years ago

La capture d'écran de la page des automatisme de l'application mi home ne marche pas, mais dans les déclencheurs en SI, il y a:

olivr2s commented 4 years ago

Il y a aussi la serrure qui sonne si on laisse une clé trop longtemps dedans

frederic34 commented 4 years ago

il y a deux modèles, mija ou tuya, lequel testez vous?

https://github.com/dresden-elektronik/deconz-rest-plugin/issues/1977

https://fcc.report/FCC-ID/2AP8E-A6121

KiwiHC16 commented 4 years ago

Interessant. Celui que j'ai s'annonce sous le nom "TY0A01" et il est livré avec une notice qui fait reference à l'application Tuya. "TY" du nom, pourrait faire reference à "TuYa". Juste une supposition. Ce qui expliquera que l'appli Xiaomi ne le reconnaisse pas.

Dans le premier lien, l equipement a pour nom: "lumi.lock.v1" ce qui est typique des noms Xiaomi: "lumi.xxx"

J'ai l'impression que c est la meme hard mais le soft est legerement different. Sur le site de Weima on peut voir qu ils ont des partenariats alors ils ont peut être des soft adaptés pour chaque.

frederic34 commented 4 years ago

J'ai aussi le TY0A01 version tuya

KiwiHC16 commented 4 years ago

Sur la boite il est indiqué Model: A6121. Ce qui correspond a la certification FCC. Ce qui semble confirmer que c'est le même hard. Et comme il s'associe à la Zigate (probablement) la meme stack zigbee.

KiwiHC16 commented 4 years ago

Dans la certif FCC c'est une doc xiaomi (et pas Tuya): 4033606.pdf

KiwiHC16 commented 4 years ago

J'ai commandé avec la cagnotte une GW Tuya pour pouvoir sniffer les messages... A suivre dans quelques semaines...

frederic34 commented 4 years ago

image

KiwiHC16 commented 4 years ago

Interessant mais j'ai ces infos. Ce qu'il me manque c'est le dialogue entre la clef et l appli quand par exemple il y a une alarme clef,...

frederic34 commented 4 years ago

https://github.com/stas-demydiuk/domoticz-zigbee2mqtt-plugin/issues/127

Kiwi: Pour moi c'est pour la version Xiaomi d'apres le code que j'ai vu dans zigbee2mqtt. Si je fais la meme chose sur la Tuya, elle m'envoie balader.

frederic34 commented 4 years ago

https://github.com/Koenkk/zigbee-herdsman-converters/blob/master/converters/fromZigbee.js#L1353-L1386

Kiwi: xiaomi_lock_report, Tuya ne repond pas a ces demandes.

KiwiHC16 commented 4 years ago

J'ai recu la GW Tuya, associé la serrure, installé l'App et sniffer les messages. Probleme, je ne les decode pas encore. J'espère qu'ils ne sont pas cryptés car ils changent à chaques tests.

KiwiHC16 commented 4 years ago

frederic34, d'où vient la capture d ecran (fond noir) que tu as partagé ?

KiwiHC16 commented 4 years ago

Par exemple a chaque insertion d'une clef non ajouté j'ai un message de 16 bytes. Comment je decode ?

Capture d’écran 2020-03-20 à 13 13 59

KiwiHC16 commented 4 years ago

Zoom sur le 16 bytes: Capture d’écran 2020-03-20 à 13 15 10

rvitch commented 4 years ago

salut ben,

Question bête, qu'en ai t'il quand tu ajoutes un nouvelle clef a l'application ? je vois 2 façons de fonctionnement : J'imagine que la clef renvoie un message d'identification et que ce string est consigné quelque part pour être comparé sur les opérations d'insertion/d'ouverture.. Reste à voir quand l'identification de la clef est encodée. c'est pour ça que je vois 2 modes de fonctionnement possibles: l'identification de la clef peut être encodé directement et le système ne communiquer qu'avec le message encodé ou bien communiquer avec une identification non encodé et encoder seulement pour consigner l'identification .. je pense qu'il faut comparer 3 types de messages qu'une clef peut renvoyer : clef non associé inséree association de clef clef associée insérée J'ai déjà bossé sur de l'encodage binaire et Hexa dans le passé et je veux bien aider pour cette serrure.

KiwiHC16 commented 4 years ago

Demande d'ajout de clef.

Capture d’écran 2020-03-20 à 14 14 31

Essai 1: GW->Ser : 28:f7:ed:b9:e0:ad:62:61:81:3a:ec:c8:ff:b8:cc:0e Ser->GW: ed:0c:a4:cf:96:e5:9d:c4:fe:fa:4e:17:90:7b:74:1d

Essai2: GW->Ser: 40:6c:e4:af:6e:29:09:80:fc:d1:f5:75:37:74:17:df Ser->GW: 63:3b:76:dc:18:17:19:17:64:d9:81:1a:76:f2:ea:85

KiwiHC16 commented 4 years ago

Lors de l inclusion: Capture d’écran 2020-03-20 à 14 43 38

_TYST12_C5IaBuQl

frederic34 commented 4 years ago

frederic34, d'où vient la capture d ecran (fond noir) que tu as partagé ?

de mon raspberry, un module que j'essayes de mettre aupoint

frederic34 commented 4 years ago

Sélection_073

sur 0x0007 c'est date heure après 1 er janv 2000 Sélection_074

KiwiHC16 commented 4 years ago

Oui c est bien le meme...

KiwiHC16 commented 4 years ago

Avec un autre analyseur de protocole. Pas plus d'infos.

Capture d’écran 2020-03-20 à 15 58 07

rvitch commented 4 years ago

Demande d'ajout de clef.

  • GW envoie une commande 0x02 à la serrure avec 16 bytes
  • la serrure repond avec la commande 0x02 et 16 bytes
  • la GW acquitte la reponse
  • bit de la serrure pour demander l insertion de la clef.
  • Je n'insere pas la clef
  • puis apres quelques secondes, un autre echange pour arreter la transaction

Capture d’écran 2020-03-20 à 14 14 31

Essai 1: GW->Ser : 28:f7:ed:b9:e0:ad:62:61:81:3a:ec:c8:ff:b8:cc:0e Ser->GW: ed:0c:a4:cf:96:e5:9d:c4:fe:fa:4e:17:90:7b:74:1d

Essai2: GW->Ser: 40:6c:e4:af:6e:29:09:80:fc:d1:f5:75:37:74:17:df Ser->GW: 63:3b:76:dc:18:17:19:17:64:d9:81:1a:76:f2:ea:85

Ce que j'imagine avec les infos que nous avons : La serrure sécurise les transactions avec une clefs de Cryptage de 128 bits (soucis on ne sais pas sous quelle logique). Avec ce que tu constate : GW->ser : La GW envoie la clef de cryptage en 128 bits Ser->GW reponse avec id serrure crypté Pour le vérifier, il faudait que cet id crypté ressorte lors des transactions après inclusion.

1 er truc rapide : Les deux messages que nous avons sont sur 16 mots hexa et après conversion binaires nous donnes un mots de 128bits..donc toutes les transactions sont bien en 128bits. Reste à trouver sous quelle type de clefs.

KiwiHC16 commented 4 years ago

Inclusion.zip

A dezip, puis ouvrir dans wireshark.

Si tu trouves des trucs...