Lチカ - kotaproj/study_zenpan GitHub Wiki

COLOR_UI_BG = "#101010"
COLOR_UI_BTN_BG = "#1f1f1f"
COLOR_UI_BTN_BORDER = "#3f3f3f"

COLOR_UI_BTN_LED_RED_ON = "#ff1f1f"
COLOR_UI_BTN_LED_RED_OFF = "#5f1f1f"
COLOR_UI_BTN_LED_BLUE_ON = "#1f1fff"
COLOR_UI_BTN_LED_BLUE_OFF = "#1f1f5f"

DICT_PAGE_0 = {
    "oled_room":
    {
        "visible": True,
        "title": "oled_room",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|SoE|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "oled_veranda":
    {
        "visible": True,
        "title": "oled_veranda",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0SoE|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "oled_graph_v_temp":
    {
        "visible": True,
        "title": "oled_graph_v_temp",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1SoE|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "oled_graph_r_temp":
    {
        "visible": True,
        "title": "oled_graph_r_temp",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|SoE|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "oled_graph_r_co2":
    {
        "visible": True,
        "title": "oled_graph_r_co2",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2SoE|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "oled_webmanga":
    {
        "visible": True,
        "title": "oled_webmanga",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|SoE-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "oled_ip":
    {
        "visible": True,
        "title": "oled_ip",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|SoE-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "oled_clear":
    {
        "visible": True,
        "title": "oled_clear",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|SoE-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "led_red_on":
    {
        "visible": True,
        "title": "led_R",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_LED_RED_ON,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|SoE|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "led_red_off":
    {
        "visible": True,
        "title": "led_R",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_LED_RED_OFF,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|SoE|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "led_blue_on":
    {
        "visible": True,
        "title": "led_b",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_LED_BLUE_ON,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3SoE|l_r|s_l-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "led_blue_off":
    {
        "visible": True,
        "title": "led_b",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_LED_BLUE_OFF,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4SoE|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "buzzer_short":
    {
        "visible": True,
        "title": "sp_short",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|s_l-",
                    "4l_b|l_r|SoE-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "buzzer_long":
    {
        "visible": True,
        "title": "sp_long",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3l_b|l_r|SoE-",
                    "4l_b|l_r|s_s-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "motor_forward":
    {
        "visible": True,
        "title": "↑",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6ooo|SXE|ooo-",
                    "7XXX|XXX|XXX-",
                    "8ooo|XXX|ooo-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "motor_back":
    {
        "visible": True,
        "title": "↓",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6ooo|XXX|ooo-",
                    "7XXX|XXX|XXX-",
                    "8ooo|SXE|ooo-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "motor_stop":
    {
        "visible": True,
        "title": "〇",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6ooo|XXX|ooo-",
                    "7XXX|SXE|XXX-",
                    "8ooo|XXX|ooo-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "motor_left":
    {
        "visible": True,
        "title": "←",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6ooo|XXX|ooo-",
                    "7SXE|XXX|XXX-",
                    "8ooo|XXX|ooo-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "motor_right":
    {
        "visible": True,
        "title": "→",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6ooo|XXX|ooo-",
                    "7XXX|XXX|SXE-",
                    "8ooo|XXX|ooo-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "servo_left_raise":
    {
        "visible": True,
        "title": "↑左手",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6SoE|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|oHH-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "servo_left_down":
    {
        "visible": True,
        "title": "↓左手",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8SoE|XXX|oHH-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "servo_right_raise":
    {
        "visible": True,
        "title": "右↑",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|SoE-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|oHH-",
                    "9ooo|ooo|ooo-",
                ],
    },
    "servo_right_down":
    {
        "visible": True,
        "title": "右↓",
        "prefix": "pim:",
        "background_color": COLOR_UI_BTN_BG,
        "border_color": COLOR_UI_BTN_BORDER,
        "page_0": [
                    #0123456789012
                    "0ooo|ooo|ooo-",
                    "1ooo|ooo|ooo-",
                    "2ooo|ooo|ooo-",
                    "3ooo|ooo|ooo-",
                    "4ooo|ooo|ooo-",
                    "5ooo|ooo|ooo-",
                    "6HHo|XXX|oHH-",
                    "7XXX|XXX|XXX-",
                    "8HHo|XXX|SoE-",
                    "9ooo|ooo|ooo-",
                ],
    },
}
import ui
import paho.mqtt.client as mqtt

host = '192.168.11.12'
port = 1883
topic = "topic_1"
TOP_PREFIX = "pim:"
MAX_PAGE = 4

COLOR_UI_BG = "#101010"
COLOR_UI_BTN_BG = "#1f1f1f"
COLOR_UI_BTN_BORDER = "#3f3f3f"

from dp0d import DICT_PAGE_0
#from dp1 import DICT_PAGE_1
#from dp2 import DICT_PAGE_2
#from dp3 import DICT_PAGE_3

REMO_DICT = {}
for key, val in DICT_PAGE_0.items():
    REMO_DICT[key] = val
#for key, val in DICT_PAGE_1.items():
#    REMO_DICT[key] = val
#for key, val in DICT_PAGE_2.items():
#    REMO_DICT[key] = val
#for key, val in DICT_PAGE_3.items():
#   REMO_DICT[key] = val


def publish_msg(topi, msg):
    # print("publish_msg - run", msg)
    client = mqtt.Client(protocol=mqtt.MQTTv311)
    client.connect(host, port=port, keepalive=3)
    client.publish(topi, msg)
    client.disconnect()
    return


def cal_point2frame(pnum, page, width, height):
    find = False
    x = y = -1
    w = h = -1
    phase = 0   # 0:find,x
    for col, line in enumerate(page):
        ref = line.find("S")
        if ref != -1:
            x = ref
            y = col
        ref = line.find("E")
        if ref != -1:
            w = ref - x + 1
            h = col - y + 1
            find = True
            break

    # 実座標への変換
    if len(page) == 0:
        w_unit = 0
        h_unit = 0
    else:
        w_unit = width / len(page[0])
        h_unit = height / len(page)

    return find, ((x*w_unit + pnum*width), y*h_unit, w*w_unit, h*h_unit)


# button action
def OnAction_pim(sender):
    # publish - topic1 , ios:btn_*
    publish_msg(topic, (TOP_PREFIX + sender.name))


vw = ui.View()
# vw.name = "Main"
vw.background_color = COLOR_UI_BG

w,h = ui.get_screen_size()
sv = ui.ScrollView()
sv.width = w
sv.height = h
sv.content_size = (MAX_PAGE*w, 1.0*h)
sv.bg_color = COLOR_UI_BG

# buttons
count = 0
for bname in REMO_DICT:

    propety = REMO_DICT[bname]

    if False == propety["visible"]:
        continue

    button = ui.Button()
    button.title = propety["title"]
    button.name = bname
    button.font = ("<System>", 14)
    button.text_color = "white"
    button.background_color = propety["background_color"]
    button.border_color = propety["border_color"]
    # button.frame = cal_point2frame(propety["point"], vw.width, vw.height)
    for pnum in range(MAX_PAGE):
        try:
            find, button.frame = cal_point2frame(pnum, propety["page_"+str(pnum)], w, h)
        except :
            print("title : ", propety["title"])
        if find:
            break
    button.border_width = 2
    button.action = OnAction_pim

    # add ui
    sv.add_subview(button)
    # vw.add_subview(button)f

vw.add_subview(sv)

# vw.present("sheet")
# vw.present("full_screen")
# vw.present("panel")
vw.present(hide_title_bar=True)
⚠️ **GitHub.com Fallback** ⚠️