Contrôler un Kwikset Smartcode Lock avec un Edison Intel (2 / 6 étapes)

Étape 2: Ajout d’un script de protocole Kwikset

Maintenant, ouvrez un nouveau document et nommez-le kwikset_protocol.py à l’aide de la commande suivante

 #!/usr/bin/python# This is a library for providing access to Kwikset Smartcode Locks via UART # The h/w interface is 3.3V 9600 baud 8N1 standard UART # This is more of a protocol encoder/decoder though# You can find more information at randomwire.bizfrom binascii import hexlify,unhexlifypkt_count = 0NO_DATA = '' LOCK_CMD = 'e703' UNLOCK_CMD = 'e705' INIT_CMDS = ('e707','e74d','e702','e70a','e718','e709','e742','e70f') INIT_DATAS = ('','','','','','','01010101','15031301471205') PARSE_LOOKUP = {'e709':"parse_initack",'e727':"parse_lockstatus",'e729':"parse_newlockcode",'e742':"parse_error"}def generate_packet(cmd,data): global pkt_count pkt_count += 1 length = (len(cmd+data)/2)+2 base_pkt = "%0.2x%0.2x" % (length,pkt_count)+cmd+data pkt = "bd"+base_pkt+calculate_crc(base_pkt) return pktdef calculate_crc(pkt): crc = int("ff",16) #print "Starting crc = %0.2x"%crc while len(pkt)>1: crc ^= int(pkt[0:2],16) #print "After byte 0x%s, CRC = %0.2x, Len=%d"%(pkt[0:2],crc,len(pkt)) pkt = pkt[2:] return "%0.2x"%crcdef validate_crc(pkt): if calculate_crc(pkt) == '00': return True else: return Falsedef parse_packet(pkt): if pkt[0:2] != 'bd': print "Bad packet header" return False if not validate_crc(pkt[2:]): print "Bad packet CRC" return False if ((len(pkt)/2)-2) != int(pkt[2:4],16): print "Bad packet length" return False cmd = pkt[6:10] data = pkt[10:-2] print "Found cmd=%s & data=%s"%(cmd,data) if cmd in PARSE_LOOKUP: parse = globals()[PARSE_LOOKUP[cmd]] return parse(data) return Truedef parse_initack(data): if data == '64': return True else: return False def parse_lockstatus(data): code_used = int(data[2:4],16) status_bits = int(data[4:6],16) if status_bits & 0x80: cause = "Remote Control" elif status_bits & 0x40: cause = "Code %d Entered"%(code_used) elif status_bits & 0x20: cause = "Automatic Lock" else: cause = "Manual/Key" if status_bits & 0x02: lock_state = "Unlocked" elif status_bits & 0x01: lock_state = "Locked" else: lock_state = "Unknown" return (lock_state,cause) def parse_newlockcode(data): return datadef parse_error(data): return datadef generate_init_packet(num): return unhexlify(generate_packet(INIT_CMDS[num],INIT_DATAS[num]))def generate_lock_packet(): return unhexlify(generate_packet(LOCK_CMD,''))def generate_unlock_packet(): return unhexlify(generate_packet(UNLOCK_CMD,'')) 

Dans ce cas, j’ai utilisé vi, mais vous pouvez toujours installer et utiliser nano ou tout autre éditeur de texte de votre choix.

C’est le script qui va contenir toutes les commandes permettant de communiquer avec votre serrure Kwikset sur UART.

Collez le code suivant dans votre fichier, enregistrez votre fichier, puis fermez votre éditeur de texte.

 vi kwikset.py 

Articles Liés

Contrôler les effets d’Halloween avec les télécommandes infrarouges bricolage

Contrôler les effets d’Halloween avec les télécommandes infrarouges bricolage

Halloween est l'occasion parfaite pour le plaisir de créer des effets spéciaux. Lorsque vous voulez être en mesure de commander à distance les accessoires et effets, une bonne option est d'utiliser une télécommande infrarouge. Donc dans ce projet, je
Contrôler la lumière RVB avec la palette de couleur d’ordinateur

Contrôler la lumière RVB avec la palette de couleur d’ordinateur

Salut les gars dans ce instructable je vais vous apprendre à contrôler un RGB léger avec la palette de couleur d'ordinateur...vous pouvez produire presque toutes les couleurs en RVB léger comme votre désir avec l'aide de la palette de couleur...Étape
Contrôler quoi que ce soit avec une seule broche AVR

Contrôler quoi que ce soit avec une seule broche AVR

cette instructable indique comment contrôler un groupe de led avec une sortie de microprocesseur.Le micro, que je vais utiliser est un Atmel Attiny2313.Étape 1: Pièces et outils Parts:Attiny2313 (eu 5 échantillons gratuits de la société Atmel)prise 2
Contrôler vos appareils électroménagers avec télécommande de la TV!!

Contrôler vos appareils électroménagers avec télécommande de la TV!!

J'ai trouvé que certaines personnes sont très paresseux pour se lever aller auprès du Conseil et appuyez sur l'interrupteur pour allumer de lumière ou fan ou tout autre appareil mais Hey!, maintenant il y a une solution plus simple. Maintenant vous p
Arduino Uno et Visuino : contrôler la voiture Smart Robot avec Joystick et L298N moteur

Arduino Uno et Visuino : contrôler la voiture Smart Robot avec Joystick et L298N moteur

Que voiture smart définit lorsqu'il est combiné avec Les Modules des pilotes automobile L298N, offre une des façons plus faciles à rendre les voitures robot. Le L298N Motor Driver Module est facile à contrôler avec Arduino, et avec l'aide de Visuino
Top secret : contrôler un port usb caché avec un aimant !

Top secret : contrôler un port usb caché avec un aimant !

Voici un projet de grande 30 minutes pour vous nerds qui secrètement s'avèrent être en herbe des espions ou sont probablement déjà un.Utiliser cet appareil au lieu de ce vieux truc boiteux de "dossier invisible" que les gens peuvent facilement t
Comment contrôler un moteur pas à pas avec un FPGA

Comment contrôler un moteur pas à pas avec un FPGA

Cette instructable vous guidera dans le processus et certaines connaissances de base sur la façon d'obtenir un moteur pas à pas travailler sur un FPGA. Spécifiquement un moteur de Nema pas à pas, avec les Digilent Basys 3 et Digilent PmodSTEP.Actuell
Contrôler l’interrupteur à distance CoTech avec Arduino (433Mhz)

Contrôler l’interrupteur à distance CoTech avec Arduino (433Mhz)

Tout à l'heure j'ai acheté 3 interrupteurs à distance Co/Tech 51058 x 10 et un 50027 éloignées des Clas Ohlson en Norvège. Ils utilisent l'AM 433mhz bande de communiquer. J'ai voulu contrôler avec un Arduino, et après avoir googler et lu beaucoup de
Contrôler les solénoïdes avec arduino

Contrôler les solénoïdes avec arduino

Dans ce instructable, nous allons construire un circuit simple qui nous permettra de contrôler un solénoïde à l'aide de la physique populaire plate-forme arduinode calcul. Je me suis intéressé dans le contrôle de solénoïdes pour des applications de r
Contrôler un bras robotisé OWI avec Arduino

Contrôler un bras robotisé OWI avec Arduino

OWI le bras robotique de pointe est un formidable et bon marché 5-degré de liberté robotique bras que tout coûte 37 $. C'est un excellent kit pour construire avec un gamin et ne prendra pas plus de quelques heures pour terminer. Out of the box, il pe
Mesurer et contrôler la vitesse du moteur avec un microcontrôleur

Mesurer et contrôler la vitesse du moteur avec un microcontrôleur

parfois, il est vraiment utile de contrôler avec précision la vitesse d'un moteur. Habituellement, il est assez difficile, nécessitant un puissant transistor de puissance pour le moteur et un photochopper pour mesurer la vitesse de passer. Cependant,
Contrôler quoi que ce soit avec Arduino et une télécommande infrarouge

Contrôler quoi que ce soit avec Arduino et une télécommande infrarouge

Salut, ceci est mon premier instructable et j'ai pensé que je montrerais une brève démonstration de comment contrôler quoi que ce soit comme la LED, moteurs à courant continu et un tas d'autres choses avec un arduino et à peu près n'importe quelle té
Tutoriel débutant : contrôler la matrice de LED avec 2 595 registres à décalage et POTENTIOMETRE

Tutoriel débutant : contrôler la matrice de LED avec 2 595 registres à décalage et POTENTIOMETRE

Je viens juste de commencer avec Arduino et les instructables d'amandaghassaei m'a beaucoup aidé. Dans son second tutorialabout entrées et sorties, elle explique comment utiliser des registres à décalage et comment contrôler une matrice de LED par mu
Contrôler toutes les pièces avec un accéléromètre

Contrôler toutes les pièces avec un accéléromètre

environnement de programmation le Scratch est très populaire auprès des enfants. À l'aide de l'Arduino, nous pouvons introduire contrôle accéléromètre pour vos jeux peut réagir à l'inclinaison de l'accéléromètre.J'ai couvert les principes fondamentau