Git Product home page Git Product logo

python-dimond's Introduction

Python implementation of Telink Bluetooth mesh protocol

A simple Python API for controlling devices based on the Bluetooth LE mesh protocol from Telink.

This is not an officially supported Google product.

Example use

All mesh networks have a name and a password, and devices have an associated vendor ID. To connect to the mesh:

import dimond

network = dimond.dimond(0x0211, "00:11:22:33:44:55", "Meshname", "Meshpass", callback=callback)
network.connect()

The target address should be any device making up the mesh. Callback is an optional argument for a callback that will be executed whenever the mesh delivers a notification. To send a packet, call:

network.send_packet(target, command, data)

where target is the target device (0 for the device that has been connected to, 0xffff for all devices on the mesh, anything in between for a specific device on the mesh), command is an integer describing the desired command and data is a list of integers providing data to the command.

python-dimond's People

Contributors

mjg59 avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

python-dimond's Issues

ValueError: Data must be aligned to block boundary in ECB mode

Thank you for the library!! I'm trying to get some Zengge lights with telink to work. I'm getting the following error.

Traceback (most recent call last):
  File "<stdin>", line 1, in <module>
  File "/home/pi/.local/lib/python3.7/site-packages/dimond/__init__.py", line 140, in connect
    self.sk = generate_sk(self.name, self.password, data[0:8], data2[1:9])
  File "/home/pi/.local/lib/python3.7/site-packages/dimond/__init__.py", line 47, in generate_sk
    return encrypt(key, data)
  File "/home/pi/.local/lib/python3.7/site-packages/dimond/__init__.py", line 33, in encrypt
    data = reversed(list(k.encrypt(bytes(reversed(data)))))
  File "/home/pi/.local/lib/python3.7/site-packages/Crypto/Cipher/_mode_ecb.py", line 140, in encrypt
    raise ValueError("Data must be aligned to block boundary in ECB mode")
ValueError: Data must be aligned to block boundary in ECB mode

A couple of things, not sure if they are related to the error:

  1. I am looking through the haodeng app code for Zengge lights and I see the default hardcoded username and password (telink_mesh1, 123) replaced with a hardcoded Zengge light username and pw, at least on connect. Would those be the correct ones to use, or would they be potentially replaced after an initial connection or something like that? I haven't run debugging mode with smali or anything.
  2. Any username/pw combo returns the same data2 on the read event (data2: b'\x0e') at least when I print it out.

Any help is appreciated. Thank you!

python test.py I got an error : OSError: [Errno 2] No such file or directory

Hello:

I use python test.py and get an error:

python-dimond (master) โœ— sudo python test.py
[sudo] password for btfz:
Traceback (most recent call last):
File "test.py", line 11, in
network.connect()
File "/home/btfz/Downloads/BLE_PAPER/python-dimond/dimond/init.py", line 113, in connect
self.device = btle.Peripheral(self.mac, addrType=btle.ADDR_TYPE_PUBLIC)
File "/usr/local/lib/python2.7/dist-packages/bluepy-1.3.0-py2.7.egg/bluepy/btle.py", line 391, in init
self._connect(deviceAddr, addrType, iface)
File "/usr/local/lib/python2.7/dist-packages/bluepy-1.3.0-py2.7.egg/bluepy/btle.py", line 426, in _connect
self._startHelper(iface)
File "/usr/local/lib/python2.7/dist-packages/bluepy-1.3.0-py2.7.egg/bluepy/btle.py", line 284, in _startHelper
preexec_fn = preexec_function)
File "/usr/lib/python2.7/subprocess.py", line 394, in init
errread, errwrite)
File "/usr/lib/python2.7/subprocess.py", line 1047, in _execute_child
raise child_exception
OSError: [Errno 2] No such file or directory

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    ๐Ÿ–– Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. ๐Ÿ“Š๐Ÿ“ˆ๐ŸŽ‰

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google โค๏ธ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.