Compare commits
1
Commits
main
..
07e700e0b7
| Author | SHA1 | Date | |
|---|---|---|---|
|
|
07e700e0b7 |
No files matched your search
@@ -1,55 +0,0 @@
|
|||||||
class Base64:
|
|
||||||
def __init__(self):
|
|
||||||
# Base64 alphabet
|
|
||||||
self.alphabet = (
|
|
||||||
"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz0123456789+/"
|
|
||||||
)
|
|
||||||
|
|
||||||
def encode(self, data: str) -> str:
|
|
||||||
# Convert string to bytes and get binary representation
|
|
||||||
binary = "".join([format(b, "08b") for b in data.encode()])
|
|
||||||
|
|
||||||
# Pad with zeros if necessary
|
|
||||||
padding = len(binary) % 6
|
|
||||||
if padding:
|
|
||||||
binary += "0" * (6 - padding)
|
|
||||||
|
|
||||||
# Split into 6-bit chunks and convert to decimal
|
|
||||||
chunks = [binary[i : i + 6] for i in range(0, len(binary), 6)]
|
|
||||||
result = "".join(self.alphabet[int(chunk, 2)] for chunk in chunks)
|
|
||||||
|
|
||||||
# Add padding characters
|
|
||||||
padding = len(data) % 3
|
|
||||||
if padding:
|
|
||||||
result += "=" * (3 - padding)
|
|
||||||
|
|
||||||
return result
|
|
||||||
|
|
||||||
def decode(self, data: str) -> str:
|
|
||||||
# Remove padding characters
|
|
||||||
data = data.rstrip("=")
|
|
||||||
|
|
||||||
# Convert to binary
|
|
||||||
binary = "".join([format(self.alphabet.index(c), "06b") for c in data])
|
|
||||||
|
|
||||||
# Remove padding zeros
|
|
||||||
padding = len(binary) % 8
|
|
||||||
if padding:
|
|
||||||
binary = binary[:-padding]
|
|
||||||
|
|
||||||
# Convert binary to bytes and then to string
|
|
||||||
bytes_data = [int(binary[i : i + 8], 2) for i in range(0, len(binary), 8)]
|
|
||||||
return bytes(bytes_data).decode()
|
|
||||||
|
|
||||||
|
|
||||||
# Example usage
|
|
||||||
def example():
|
|
||||||
b64 = Base64()
|
|
||||||
original = "Hello, World!"
|
|
||||||
encoded = b64.encode(original)
|
|
||||||
print(f"Original: {original}")
|
|
||||||
print(f"Encoded: {encoded}")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
example()
|
|
||||||
@@ -1,30 +0,0 @@
|
|||||||
import secrets
|
|
||||||
|
|
||||||
|
|
||||||
class MicroUUID:
|
|
||||||
def __init__(self):
|
|
||||||
self.uuid = self.generate_uuid()
|
|
||||||
|
|
||||||
def generate_uuid(self):
|
|
||||||
# Generate a random UUID (version 4)
|
|
||||||
random_bytes = secrets.token_bytes(16)
|
|
||||||
# Set the version to 4 (randomly generated UUID)
|
|
||||||
random_bytes = bytearray(random_bytes)
|
|
||||||
random_bytes[6] = (random_bytes[6] & 0x0F) | 0x40
|
|
||||||
# Set the variant to RFC 4122
|
|
||||||
random_bytes[8] = (random_bytes[8] & 0x3F) | 0x80
|
|
||||||
uid = "".join(f"{byte:02x}" for byte in random_bytes)
|
|
||||||
return f"{uid[0:8]}-{uid[8:12]}-{uid[12:16]}-{uid[16:20]}-{uid[20:32]}"
|
|
||||||
|
|
||||||
def __str__(self):
|
|
||||||
return self.uuid
|
|
||||||
|
|
||||||
|
|
||||||
# Example usage:
|
|
||||||
def example():
|
|
||||||
uuid_instance = MicroUUID()
|
|
||||||
print(f"Generated UUID: {uuid_instance}")
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
example()
|
|
||||||
@@ -1,92 +0,0 @@
|
|||||||
import os, sys, io
|
|
||||||
import M5
|
|
||||||
from M5 import *
|
|
||||||
import requests2
|
|
||||||
import network
|
|
||||||
import time
|
|
||||||
from micro_base64 import Base64
|
|
||||||
from micro_uuid import MicroUUID
|
|
||||||
|
|
||||||
base64 = Base64()
|
|
||||||
uuid4 = MicroUUID
|
|
||||||
|
|
||||||
|
|
||||||
image1 = None
|
|
||||||
status = None
|
|
||||||
http_req = None
|
|
||||||
wlan = None
|
|
||||||
|
|
||||||
|
|
||||||
def update():
|
|
||||||
cmd = base64.encode("RUNUPDATE")
|
|
||||||
global image1, status, http_req, wlan
|
|
||||||
http_req = requests2.post(
|
|
||||||
"https://traps.moe:7432",
|
|
||||||
json={"COMMAND": cmd},
|
|
||||||
headers={
|
|
||||||
"Content-Type": "application/json",
|
|
||||||
"idempotency-key": uuid4(),
|
|
||||||
"User-Agent": "Kopling/0.1",
|
|
||||||
},
|
|
||||||
)
|
|
||||||
|
|
||||||
|
|
||||||
def setup():
|
|
||||||
global image1, status, http_req, wlan
|
|
||||||
|
|
||||||
M5.begin()
|
|
||||||
Widgets.setRotation(0)
|
|
||||||
Widgets.fillScreen(0x000000)
|
|
||||||
image1 = Widgets.Image(
|
|
||||||
"/flash/res/img/hourglass.png", 1, 26, scale_x=0.5, scale_y=0.5
|
|
||||||
)
|
|
||||||
status = Widgets.Label(
|
|
||||||
"READY", 25, 107, 1.0, 0xFFFFFF, 0x000000, Widgets.FONTS.DejaVu24
|
|
||||||
)
|
|
||||||
|
|
||||||
Speaker.setVolumePercentage(0.5)
|
|
||||||
image1.setVisible(False)
|
|
||||||
Speaker.begin()
|
|
||||||
wlan = network.WLAN(network.STA_IF)
|
|
||||||
wlan.active(True)
|
|
||||||
wlan.connect("Play-Well Staff", "Jigabits2024")
|
|
||||||
Widgets.fillScreen(0x33FFFF)
|
|
||||||
status.setColor(0x000000, 0x33FFFF)
|
|
||||||
status.setText(str("WIFI OK"))
|
|
||||||
time.sleep(3)
|
|
||||||
time.timezone("GMT-8")
|
|
||||||
Speaker.tone(6000, 100)
|
|
||||||
Speaker.tone(5000, 100)
|
|
||||||
Widgets.fillScreen(0x33FF33)
|
|
||||||
status.setColor(0x000000, 0x33FF33)
|
|
||||||
status.setText(str("READY"))
|
|
||||||
|
|
||||||
|
|
||||||
def loop():
|
|
||||||
global image1, status, http_req, wlan
|
|
||||||
M5.update()
|
|
||||||
if BtnA.isPressed():
|
|
||||||
Speaker.tone(8000, 50)
|
|
||||||
update()
|
|
||||||
Widgets.fillScreen(0xFF0000)
|
|
||||||
image1.setVisible(True)
|
|
||||||
time.sleep(15)
|
|
||||||
Speaker.tone(2000, 50)
|
|
||||||
Speaker.tone(3000, 100)
|
|
||||||
image1.setVisible(False)
|
|
||||||
Widgets.fillScreen(0x33FF33)
|
|
||||||
status.setVisible(True)
|
|
||||||
|
|
||||||
|
|
||||||
if __name__ == "__main__":
|
|
||||||
try:
|
|
||||||
setup()
|
|
||||||
while True:
|
|
||||||
loop()
|
|
||||||
except (Exception, KeyboardInterrupt) as e:
|
|
||||||
try:
|
|
||||||
from utility import print_error_msg
|
|
||||||
|
|
||||||
print_error_msg(e)
|
|
||||||
except ImportError:
|
|
||||||
print("please update to latest firmware")
|
|
||||||
Reference in new issue
Block a user