/python3-idotmatrix-library

This library talks to displays originally used with the iDotMatrix Android & iOS App.

Primary LanguagePythonGNU General Public License v3.0GPL-3.0


Logo

Pixel Display Library

control all your 16x16 or 32x32 iDotMatrix Pixel Displays

Explore the docs »

Report Bug . Request Feature

Downloads Contributors Forks Stargazers Issues License

Table Of Contents

About The Project

This repository aims to reverse engineer the iDotMatrix Android App for pixel screen displays like this one on Aliexpress. The goal is to provide a simple library which you can use to connect to your display(s).

Built With

Getting Started

To get a local copy up and running or use the latest pypi package follow these simple example steps:

Prerequisites

Please install the following for your distribution (Windows may work but it is untested):

  • latest Python3
  • Python3 Virtual Env

Installation

use latest github source code

  1. Clone the repo
git clone https://github.com/derkalle4/python3-idotmatrix-library.git
  1. Install the latest version locally
cd python3-idotmatrix-library/
pip install .

install latest public version via pypi

pip install idotmatrix

Usage

If you want to use the integrated bleak library to talk to your device, you have to initialize the ConnectionManager first. If you omit this step all classes will return the bytecode which you then can send to the device with your own bluetooth implementation.

import asyncio
from idotmatrix import ConnectionManager

async def main():
    # connect to first found iDotMatrix Pixel Display
    conn = ConnectionManager()
    await conn.connectBySearch()
    # do something with this connection afterwards

if __name__ == "__main__":
    try:
        asyncio.run(main())
    except KeyboardInterrupt:
        quit()

Chronograph

The Chronograph has 4 different modes. Using mode 1 will automatically open the Chronograph on the device and start the countdown. This should be the first mode used or otherwise the device may does not respond properly.

  • 0 = reset
  • 1 = (re)start
  • 2 = pause
  • 3 = continue after pause
from idotmatrix import Chronograph

chronograph = Chronograph()
await chronograph.setMode(1)

Roadmap

If you want to contribute please focus on the reverse-engineering part because my personal skills are not that good. Many thanks for all contributions! If you want to dive deep into other issues please check for "#TODO" comments in the source code as well.

  • Reverse Engineering
    • Chronograph
    • Clock
    • Countdown
    • Graffiti Board
    • DIY-Mode
    • Animated Images
    • Display Text
    • Alarm & Buzzer (available according to issue #18)
    • Cloud-API to download images
    • Cloud-API to upload images to device
    • Cloud-Firmware Update possible?
    • Eco-Mode
    • Fullscreen Color
    • MusicSync
    • Scoreboard
    • bluetooth password protection
    • understand the returned byte arrays of the device for better error logs

Contributing

Contributions are what make the open source community such an amazing place to be learn, inspire, and create. Any contributions you make are greatly appreciated.

  • If you have suggestions for adding or removing projects, feel free to open an issue to discuss it, or directly create a pull request after you edit the README.md file with necessary changes.
  • Please make sure you check your spelling and grammar.
  • Create individual PR for each suggestion.
  • Please also read through the Code Of Conduct before posting your first idea as well.

Creating A Pull Request

  1. Fork the Project
  2. Create your Feature Branch (git checkout -b feature/AmazingFeature)
  3. Commit your Changes (git commit -m 'Add some AmazingFeature')
  4. Push to the Branch (git push origin feature/AmazingFeature)
  5. Open a Pull Request

License

Distributed under the GNU GENERAL PUBLIC License. See LICENSE for more information.

Authors

Acknowledgements