Skip to content
Snippets Groups Projects
Commit b9773ebe authored by bodzsoaa's avatar bodzsoaa
Browse files

Initial commit

parents
No related branches found
No related tags found
No related merge requests found
# Byte-compiled / optimized / DLL files
__pycache__/
*.py[cod]
*$py.class
# C extensions
*.so
# Distribution / packaging
.Python
build/
develop-eggs/
dist/
downloads/
eggs/
.eggs/
lib/
lib64/
parts/
sdist/
var/
wheels/
share/python-wheels/
*.egg-info/
.installed.cfg
*.egg
MANIFEST
# PyInstaller
# Usually these files are written by a python script from a template
# before PyInstaller builds the exe, so as to inject date/other infos into it.
*.manifest
*.spec
# Installer logs
pip-log.txt
pip-delete-this-directory.txt
# Unit test / coverage reports
htmlcov/
.tox/
.nox/
.coverage
.coverage.*
.cache
nosetests.xml
coverage.xml
*.cover
.hypothesis/
.pytest_cache/
# Translations
*.mo
*.pot
# Django stuff:
*.log
local_settings.py
db.sqlite3
# Flask stuff:
instance/
.webassets-cache
# Scrapy stuff:
.scrapy
# Sphinx documentation
docs/_build/
# PyBuilder
target/
# Jupyter Notebook
.ipynb_checkpoints
# IPython
profile_default/
ipython_config.py
# pyenv
.python-version
# celery beat schedule file
celerybeat-schedule
# SageMath parsed files
*.sage.py
# Environments
.env
.venv
env/
venv/
ENV/
env.bak/
venv.bak/
# Spyder project settings
.spyderproject
.spyproject
# Rope project settings
.ropeproject
# mkdocs documentation
/site
# mypy
.mypy_cache/
.dmypy.json
dmypy.json
# Pyre type checker
.pyre/
\ No newline at end of file
import qrcode
import socket
import sqlite3
from PIL import Image, ImageDraw, ImageFont
def main():
qr = qrcode.QRCode(
version=1,
error_correction=qrcode.constants.ERROR_CORRECT_L,
box_size=10,
border=4,
)
conn = sqlite3.connect("MUEB_register.db")
c = conn.cursor()
# create mueb table
try:
c.execute('''
CREATE TABLE mueb (
mueb_id INTEGER PRIMARY KEY,
mac STRING (17) UNIQUE
NOT NULL
);
''')
except:
pass
s = socket.socket(socket.AF_INET, socket.SOCK_DGRAM)
s.bind(('', 67))
prev_MAC = None
id = 0
print("Listening for MUEB DHCP discover")
print("{:<5} {:<20} {:<5}".format("scan", "MAC", "MUEB id"))
while 1:
# wait for dhcp packet
data = s.recv(1024)
tmp = list(data[28:34])
if(hex(tmp[0]) != '0x54' or hex(tmp[1]) != '0x10' or hex(tmp[2]) != '0xec'):
continue
MAC = ':'.join(["{0:02X}".format(i) for i in list(data[28:34])])
# save to DB
c.execute("INSERT OR IGNORE INTO mueb(mac) VALUES('{}')".format(MAC))
conn.commit()
c.execute("SELECT mueb_id FROM mueb WHERE mac='{}'".format(MAC))
mueb_id = c.fetchall()[0][0]
print("{:<5} {:<20} {:<5}".format(id, MAC, mueb_id))
id += 1
# handle multiple requests
if prev_MAC != MAC:
qr.add_data(MAC)
qr.make(fit=True)
img = qr.make_image(fill_color="black", back_color="white")
width, height = img.size
finalImg = Image.new('RGBA', (width, height), 'white')
finalImg.paste(img)
caption = MAC+"/{}".format(mueb_id)
font = ImageFont.truetype("arial.ttf", 15)
w, h = font.getsize(caption)
draw = ImageDraw.Draw(finalImg)
draw.text((round((width-w)/2), round(height-h-10)),
caption, "black", font)
finalImg.show()
finalImg.save("{}.png".format(mueb_id))
qr.clear()
prev_MAC = MAC
if __name__ == '__main__':
main()
name = "mueb_register"
\ No newline at end of file
setup.py 0 → 100644
import setuptools
with open("README.md", "r") as fh:
long_description = fh.read()
setuptools.setup(
name="mueb_register",
version="0.0.1",
author="Zsombor Bodnár",
author_email="bodnar.zsombor@simonyi.bme.hu",
description="App for registering MUEBs with QR code",
long_description=long_description,
long_description_content_type="text/markdown",
url="https://git.sch.bme.hu/matrix-group/dhcp/matrix-dhcp-tools",
packages=setuptools.find_packages(),
install_requires=[
'qrcode',
'pillow'
],
entry_points = {
'console_scripts': ['mueb_register=mueb_register.MRegister:main'],
},
classifiers=[
"Programming Language :: Python :: 3",
"Operating System :: OS Independent",
],
)
\ No newline at end of file
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment