Giter Site home page Giter Site logo

derkalle4 / python3-idotmatrix-client Goto Github PK

View Code? Open in Web Editor NEW
162.0 162.0 34.0 1.04 MB

reverse engineered python3 client to control all your 16x16 or 32x32 pixel displays (experimental)

License: GNU General Public License v3.0

Python 99.20% Shell 0.80%

python3-idotmatrix-client's People

Contributors

derkalle4 avatar heilig avatar jmgraeffe avatar lordrippon avatar tekka007 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  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  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  avatar  avatar  avatar  avatar  avatar

python3-idotmatrix-client's Issues

Displaying text

Some findings for text for a 16x16 display.
The app code is not that clear what to set for other sizes.
I've got some code which works, but needs some more work.

Text generally displays some bitmap data with some text color and background color.

Following is for a 16x16 display, the app code is not very clear what to set in bitmap_header and header for other display sizes, see below.
Need to compare the data, which is sent over bluetooth.

Bitmap data needs to be 8 pixel wide, 16 pixel high (for 16x16 display)

The app generates bitmap data from painting on a canvas. Font size is fixed to 8x12 (???)
The app code also contains data for a 5x8 pixel font (which is not used???).

Font 5x8 bitmap for character 'A' and 'B' (upper 3 bits always 0)

 | b0| b1| b2| b3| b4| b5| b6| b7|   
    -+-------------------------------+
     | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Byte0
     | 0 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte1
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte2
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte3
 A   | 1 | 1 | 1 | 1 | 1 | 0 | 0 | 0 | Byte4
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte5
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte6
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte7
     +-------------------------------+
     | 0 | 0 | 0 | 0 | 0 | 0 | 0 | 0 | Byte8
     | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte9
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte10
 B   | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte11
     | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte12
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte13
     | 1 | 0 | 0 | 0 | 1 | 0 | 0 | 0 | Byte14
     | 1 | 1 | 1 | 1 | 0 | 0 | 0 | 0 | Byte15
     +-------------------------------+

Bitmap data for 16x16 display
One character: bitmap height 16 pixel, width 8 pixel
2 lines of characters with 5x8 pixel font possible

Data per character
bitmap_header per character + bitmap data

bitmap_header = bytearray(
    [
        0x02,   # bitmap height 16 pixel -> 16 bytes per character (not clear for other sizes)
        0xff, 0xff, 0xff, # fixed
    ]
)

Header for complete bitmap

     text_header = bytearray(
            [
                1,   # text length lobyte, number of 8 pixel blocks
                0,   # text length hibyte
                0,   # fixed
                1,   # fixed
                0,   # mode (0=fixed, 1=left scrolling, ...) as per App
                50,  # speed 
                1,   # color mode
                255, # color red
                255, # color green
                0,   # color blue
                8,   # background mode
                0,   # background color red
                0,   # background color green
                0,   # background color blue
            ]
        )

Chunking like in GIF code

     header = bytearray(
            [
                255,    # chunk length
                255,    # 
                3,      # fixed
                0,      # fixed
                0,      # 0 if first chunk, else 2
                255,    # length payload
                255,    
                255,
                255,
                255,    # CRC
                255,
                255,
                255,
                0,      # works for 16x16, not clear for other sizes 
                0,      # works for 16x16, not clear for other sizes 
                12,     # works for 16x16, not clear for other sizes 
            ]
        )

Alarm & Buzzer Support

Hi there,

thanks for the effort. Much appreciated.

I got one of these 16x16 screens recently. Happy to test and contribute to this project.

The roadmap does not list the alarm and buzzer support...

Is this planned or to be added ?

The buzzer particularly is key to notify about incoming messages, or alarms etc.

Cheers,
Greg

Display on/off

Hello,
on the 16x16 display, this worked for me

Display on 5, 0, 7, 1, 1
Display off 5, 0, 7, 1, 0

Text & GIF uploading

Hi team,

I've got one of these devices too, it's quite fun!

I've worked out how to send my own text and GIFs to it and have a very rudimentary Python script to help.

Your project looks much tidier than mine, so I thought I point you at this in case it's useful:

https://github.com/8none1/idotmatrix

Make it work with so called iPixelColor Displays

Hi,
I just received an iPixelColor Display (smaler pitch). The Android app called "iPixelColor" shares some Items with the one from iDotMatrix like the picture and animation editor.

Just out of curiosity I tested the py client on this display and right now I can tell:

Set Screen on/ off works
Send static Image works

Set to clock don't work
Set animation / gif don't work

Other differences are, the iDotMatrix has a power button and a switch button also when switched on you can hear a beep.

cute_animal_chicken_cartoon_icon_260620-ezgif com-resize
IMG_20240125_143157

Is anyone patient enough to do some reverse engineering on this display. I'm sorry I'm far to impatient.

Works in Windows 11 with MS supplied python3

Just a note.
It works on Windows 11 using the Terminal, python installed from Microsoft marketplace (pip is included).
I do not use venv, I just use "pip install ." in the cloned repository. After that I could use the app.py without any problems.
may not the best way to have it run (no venv) but it works inluding vonversion of svg / gif animations.
Thanks !

How to Discover Bluetooth Address of iDotMatrix Display on MacBook Pro M1 Max

Hello,

I'm currently using a MacBook Pro M1 Max with the BCM_4387 Bluetooth chip and I'm trying to connect to an iDotMatrix Display via Bluetooth. However, I'm having difficulty discovering the device's Bluetooth address.

Could you please provide guidance or instructions on how to find the Bluetooth address of the iDotMatrix Display using this specific hardware setup? Is there a common method or a specific procedure I should follow on macOS to ensure the device is correctly identified and paired?

Any help or tips regarding this would be greatly appreciated, as I'm unable to pair the device due to this issue.

Thank you for your help!

The included demo.gif doesn't work without processing

Just noticed that
./run_in_venv.sh --address 00:11:22:33:44:ff --set-gif ./demo.gif
does not result in the display of the GIF image, only
./run_in_venv.sh --address 00:11:22:33:44:ff --set-gif ./demo.gif --process-gif 32
works.

But because the first command line is part of the documentation, I thought it would work.

Bluetooth Connection after command lost

Hello guys.

First, thank you for your work! AWESOME!
But my problem is, after a successful command i cannot send a second command to the Pixel Display.
i must restart my bluetooth daemon (systemctl restart bluetooth) then i can send the second command.

My System:

SYS: ArchLinux
Kernel: 6.6.8-arch1
HW: Asrock x300

Greetz Hera

Some info about how to obtain devices address would be nice.

Could you write some documentation on how to acuire the device's address needed to run the tool?
I received device today and used iphone app and was connected right away....but have no idea where to find the address (the device doen not show up on my laptop either)

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.