v.0.10.0 redesign prj structure, multi dev containers
This commit is contained in:
19
deploy.fish
19
deploy.fish
@@ -1,19 +0,0 @@
|
||||
#!/usr/bin/fish
|
||||
|
||||
echo "=== MicroPython Deployment Script ==="
|
||||
|
||||
# Check if app directory exists
|
||||
if not test -d "app"
|
||||
echo "Error: 'app' directory not found!"
|
||||
exit 1
|
||||
end
|
||||
|
||||
echo "1. Copying app directory to device..."
|
||||
mpremote connect port:rfc2217://localhost:4000 cp -r app :
|
||||
mpremote connect port:rfc2217://localhost:4000 mkdir restapi
|
||||
mpremote connect port:rfc2217://localhost:4000 cp restapi/*.json :restapi/
|
||||
|
||||
echo "2. Starting main.py..."
|
||||
mpremote connect port:rfc2217://localhost:4000 run main.py
|
||||
|
||||
echo "=== Deployment Complete ==="
|
||||
26
diagram.json
26
diagram.json
@@ -1,26 +0,0 @@
|
||||
{
|
||||
"version": 1,
|
||||
"author": "RGB Matrix Pico W Project",
|
||||
"editor": "wokwi",
|
||||
"parts": [
|
||||
{
|
||||
"type": "board-pi-pico-w",
|
||||
"id": "picow",
|
||||
"top": 1014.35,
|
||||
"left": 3.55
|
||||
},
|
||||
{
|
||||
"type": "wokwi-led-matrix",
|
||||
"id": "matrix",
|
||||
"top": -617.6,
|
||||
"left": 1.1,
|
||||
"attrs": { "rows": "64", "cols": "64", "pixels": "[]" }
|
||||
}
|
||||
],
|
||||
"connections": [
|
||||
["matrix:VDD", "picow:VBUS", "red", ["v96", "h-91.4"]],
|
||||
["matrix:VSS", "picow:GND.8", "black", ["v0"]],
|
||||
["matrix:DIN", "picow:GP28", "green", ["v0"]]
|
||||
],
|
||||
"dependencies": {}
|
||||
}
|
||||
@@ -22,7 +22,8 @@
|
||||
"kevinrose.vsc-python-indent",
|
||||
"wayou.vscode-todo-highlight",
|
||||
"charliermarsh.ruff",
|
||||
"wokwi.wokwi-vscode"
|
||||
"wokwi.wokwi-vscode",
|
||||
"humao.rest-client"
|
||||
]
|
||||
}
|
||||
},
|
||||
@@ -37,7 +38,7 @@
|
||||
}
|
||||
},
|
||||
// Use 'postCreateCommand' to run commands after the container is created.
|
||||
"postCreateCommand": "pip3 install -r requirements.txt"
|
||||
"postCreateCommand": "pip3 install -r requirements.txt",
|
||||
// "postCreateCommand": "apt-get update && apt-get install -y git && pip3 install -r requirements.txt"
|
||||
// Uncomment to connect as root instead. More info: https://aka.ms/dev-containers-non-root.
|
||||
// "remoteUser": "root"
|
||||
25
pico-client/deploy.fish
Executable file
25
pico-client/deploy.fish
Executable file
@@ -0,0 +1,25 @@
|
||||
#!/usr/bin/fish
|
||||
|
||||
echo "=== MicroPython Deployment Script ==="
|
||||
|
||||
echo "1. Create pico-client directories on device..."
|
||||
mpremote connect port:rfc2217://localhost:4000 mkdir restapi
|
||||
mpremote connect port:rfc2217://localhost:4000 mkdir classes
|
||||
mpremote connect port:rfc2217://localhost:4000 mkdir display
|
||||
mpremote connect port:rfc2217://localhost:4000 mkdir tryout
|
||||
mpremote connect port:rfc2217://localhost:4000 mkdir utils
|
||||
mpremote connect port:rfc2217://localhost:4000 mkdir web
|
||||
|
||||
|
||||
echo "1. Copying pico-client directories to device..."
|
||||
mpremote connect port:rfc2217://localhost:4000 cp -r restapi/mock :
|
||||
mpremote connect port:rfc2217://localhost:4000 cp -r classes :
|
||||
mpremote connect port:rfc2217://localhost:4000 cp -r display :
|
||||
mpremote connect port:rfc2217://localhost:4000 cp -r tryout :
|
||||
mpremote connect port:rfc2217://localhost:4000 cp -r utils :
|
||||
mpremote connect port:rfc2217://localhost:4000 cp -r web :
|
||||
|
||||
echo "2. Starting main.py..."
|
||||
mpremote connect port:rfc2217://localhost:4000 run main.py
|
||||
|
||||
echo "=== Deployment Complete ==="
|
||||
@@ -1,10 +1,10 @@
|
||||
from machine import Pin # type: ignore
|
||||
from neopixel import NeoPixel # type: ignore
|
||||
from app.utils import char_width
|
||||
from utils import char_width
|
||||
|
||||
from app.display import fonts
|
||||
from app.utils import colors
|
||||
from app.utils.time_utils import (
|
||||
from display import fonts
|
||||
from utils import colors
|
||||
from utils.time_utils import (
|
||||
get_german_timestamp_short,
|
||||
get_datetime_string,
|
||||
get_german_time_ticks,
|
||||
@@ -1,17 +1,17 @@
|
||||
from app.display import NeoPixel_64x64
|
||||
from app.display.fonts import font_5x7
|
||||
from app.tryout import Font_Checker, Weather_Checker, Emoji_Checker
|
||||
from app.utils import show_system_load
|
||||
from app.utils import (
|
||||
from display import NeoPixel_64x64
|
||||
from display.fonts import font_5x7
|
||||
from tryout import Font_Checker, Weather_Checker, Emoji_Checker
|
||||
from utils import show_system_load
|
||||
from utils import (
|
||||
sync_ntp_time,
|
||||
get_datetime_string,
|
||||
get_german_datetime,
|
||||
) # Time-related functions
|
||||
from app.utils import SimpleCounter, colors
|
||||
from utils import SimpleCounter, colors
|
||||
import time
|
||||
from app.utils.digital_clock import DigitalClock
|
||||
from utils.digital_clock import DigitalClock
|
||||
import uasyncio as asyncio # type: ignore
|
||||
from app.web import Wlan
|
||||
from web import Wlan
|
||||
|
||||
CITY_LIST: list[str] = sorted(
|
||||
["Großhansdorf", "Columbus", "London", "Ebeltoft", "Tokio"]
|
||||
@@ -1,9 +1,9 @@
|
||||
from app.display import NeoPixel_64x64
|
||||
from app.display.emoji import emoji_8x8, emoji_16x16
|
||||
from app.utils import colors
|
||||
from display import NeoPixel_64x64
|
||||
from display.emoji import emoji_8x8, emoji_16x16
|
||||
from utils import colors
|
||||
|
||||
class Emoji_Checker():
|
||||
|
||||
class Emoji_Checker:
|
||||
def __init__(self, display: NeoPixel_64x64):
|
||||
self.display = display
|
||||
|
||||
@@ -12,8 +12,8 @@ class Emoji_Checker():
|
||||
|
||||
# try emoji
|
||||
self.display.set_font(emoji_8x8)
|
||||
self.display.write_text('😀😂✅😎💙', 0, 0, color=colors.GREEN)
|
||||
self.display.write_text("😀😂✅😎💙", 0, 0, color=colors.GREEN)
|
||||
|
||||
# try emoji
|
||||
self.display.set_font(emoji_16x16)
|
||||
self.display.write_text('🌙💙🔑', 0, 10, color=colors.ORANGE)
|
||||
self.display.write_text("🌙💙🔑", 0, 10, color=colors.ORANGE)
|
||||
@@ -1,11 +1,11 @@
|
||||
from app.display import NeoPixel_64x64
|
||||
from app.utils import align_font, colors
|
||||
import app.display.fonts as fonts
|
||||
from display import NeoPixel_64x64
|
||||
from utils import align_font, colors
|
||||
import display.fonts as fonts
|
||||
|
||||
class Font_Checker():
|
||||
|
||||
class Font_Checker:
|
||||
font = fonts.font_3x5
|
||||
|
||||
|
||||
def __init__(self, display: NeoPixel_64x64):
|
||||
self.display = display
|
||||
|
||||
@@ -14,28 +14,27 @@ class Font_Checker():
|
||||
print(pretty_font)
|
||||
|
||||
def fonts_check(self, pretty=False) -> None:
|
||||
|
||||
for fnt in fonts.fonts_installed:
|
||||
self.display.clear()
|
||||
self.display.set_font(fnt)
|
||||
|
||||
height = self.display.font_height
|
||||
|
||||
alphanum: str = ''.join(sorted(self.font.keys()))
|
||||
alphanum: str = "".join(sorted(self.font.keys()))
|
||||
|
||||
text_left = alphanum
|
||||
while text_left:
|
||||
# Text entsprechend des Display splitten
|
||||
scr_txt_dict = self.display.screen_text(text=text_left)
|
||||
print(f'scr_txt: {scr_txt_dict}')
|
||||
print(f"scr_txt: {scr_txt_dict}")
|
||||
|
||||
self.display.clear()
|
||||
for idx, row_text in enumerate(scr_txt_dict['visible']):
|
||||
for idx, row_text in enumerate(scr_txt_dict["visible"]):
|
||||
ypos = height * idx
|
||||
# display.clear_row(ypos)
|
||||
self.display.write_text(row_text, 0, ypos, colors.RAINBOW[idx % 6])
|
||||
|
||||
text_left = scr_txt_dict['invisible']
|
||||
text_left = scr_txt_dict["invisible"]
|
||||
|
||||
if pretty:
|
||||
self.font_pretty(self.font)
|
||||
@@ -1,16 +1,16 @@
|
||||
import urequests # type: ignore
|
||||
import json
|
||||
|
||||
from app.classes import (
|
||||
from classes import (
|
||||
Weather,
|
||||
Location,
|
||||
CurrentCondition,
|
||||
WeatherResponse,
|
||||
ResponseStatus,
|
||||
)
|
||||
from app.display import NeoPixel_64x64
|
||||
import app.utils.colors as colors
|
||||
from app.utils import URLEncoder, http_message, get_datetime_string
|
||||
from display import NeoPixel_64x64
|
||||
import utils.colors as colors
|
||||
from utils import URLEncoder, http_message, get_datetime_string
|
||||
|
||||
API_KEY = "3545ce42d0ba436e8dc164532250410"
|
||||
ACTUAL_WEATHER_URL = "http://api.weatherapi.com/v1/current.json?key={API_KEY}&q={city}&aqi=yes&lang={lang}"
|
||||
@@ -1,6 +1,6 @@
|
||||
from app.display.neopixel_64x64 import NeoPixel_64x64
|
||||
from app.utils import get_datetime_string, text_width, find_first_mismatch
|
||||
from app.utils import colors
|
||||
from display.neopixel_64x64 import NeoPixel_64x64
|
||||
from utils import get_datetime_string, text_width, find_first_mismatch
|
||||
from utils import colors
|
||||
|
||||
|
||||
class DigitalClock:
|
||||
Reference in New Issue
Block a user