Witam,
mam problem z poprawnym połączeniem ESP32-S3-4848S040 z zainstalowanym firmware openHASP do mojego HomeAssistanta. ESP32 ma sterować kilkoma urządzeniami i wyświetlać na wyświetlaczu kilka danych.
Zainstalowałem na esp openhasp i skonfigurowałem wifi, mqtt (broker jest uruchomiony na HA) oraz dodałem podstawowy (na razie, potem chciałbym go rozszerzyć o kilka funkcjonalności) pages.jsonl:
{"id":0,"bg_color":"#111111"}
{"page":1,"id":0,"bg_color":"#111111"}
{"page":2,"id":0,"bg_color":"#111111"}
{"page":3,"id":0,"bg_color":"#111111"}
// Strona startowa
{"page":1,"id":8,"obj":"img","src":"L:/bg1d.png","w":480, "h":480}
{"page":1,"id":1,"obj":"label","x":30,"y":120,"w":360,"h":180,"text":"--:--","text_color":"#000000","text_font": 160}
{"page":1,"id":2,"obj":"label","x":40,"y":30,"w":70,"h":70,"text":"\uE596","text_color":"#ffffff","text_font": 64}
{"page":1,"id":3,"obj":"label","x":120,"y":50,"w":70,"h":50,"text":"--°C","text_color":"#ffffff","text_font": 48}
{"page":1,"id":4,"obj":"label","x":40,"y":90,"w":330,"h":32,"text":"--","text_color":"#ffffff","text_font": 32}
{"page":1,"id":5,"obj":"label","x":320,"y":30,"w":40,"h":40,"text":"\uE6A1","text_color":"#ffffff","text_font": 32}
{"page":1,"id":6,"obj":"label","x":380,"y":30,"w":60,"h":40,"text":"--°C","text_color":"#ffffff","text_font": 32}
{"page":1,"id":7,"obj":"label","x":390,"y":60,"w":60,"h":40,"text":"--%","text_color":"#ffffff","text_font": 32}
{"page":1,"id":12,"obj":"label","x":50,"y":340,"w":64,"h":64,"text":"\uE456","text_color":"#ffffff","text_font": 64}
{"page":1,"id":13,"obj":"label","x":40,"y":400,"w":80,"h":40,"text":"Sceny","text_color":"#ffffff","text_font": 32}
{"page":1,"id":11,"obj":"obj","x":20,"y":320,"w":220,"h":144,"radius":15,"click":true,"border_side":0,"bg_color":"#1c1c1c","action":"p2","opacity":0}
{"page":1,"id":22,"obj":"label","x":320,"y":340,"w":64,"h":64,"text":"\uE335","text_color":"#ffffff","text_font": 64}
{"page":1,"id":23,"obj":"label","x":280,"y":400,"w":160,"h":40,"text":"Oświetlenie","text_color":"#ffffff","text_font": 32}
{"page":1,"id":21,"obj":"obj","x":240,"y":320,"w":220,"h":144,"radius":15,"click":true,"border_side":0,"bg_color":"#1c1c1c","action":"p3","opacity":0}
// Strona scen
{"page":2,"id":1,"obj":"img","src":"L:/bg2d.png","w":480, "h":480}
{"page":2,"id":3,"obj":"label","x":0,"y":8,"w":480,"h":40,"text":"Sceny", "text_font": 32,"align":"center"}
{"page":2,"id":4,"obj":"label","x":8,"y":4,"w":32,"h":48,"text":"\uE141", "text_font": 48}
{"page":2,"id":5,"obj":"obj","x":0,"y":0,"w":64,"h":64,"click":true,"action":"back", "opacity":0}
{"page":2,"id":10,"obj":"obj","x":16,"y":90,"w":216,"h":90,"click":true,"opacity":0}
{"page":2,"id":20,"obj":"obj","x":16,"y":217,"w":216,"h":90,"click":true,"opacity":0}
{"page":2,"id":30,"obj":"obj","x":16,"y":344,"w":216,"h":90,"click":true,"opacity":0}
{"page":2,"id":40,"obj":"obj","x":248,"y":90,"w":216,"h":90,"click":true,"opacity":0}
{"page":2,"id":50,"obj":"obj","x":248,"y":217,"w":216,"h":90,"click":true,"opacity":0}
{"page":2,"id":60,"obj":"obj","x":248,"y":344,"w":216,"h":90,"click":true,"opacity":0}
// Stona oświetlenia
{"page":3,"id":1,"obj":"img","src":"L:/bg3d.png","w":480, "h":480}
{"page":3,"id":3,"obj":"label","x":0,"y":8,"w":480,"h":40,"text":"Oświetlenie", "text_font": 32,"align":"center"}
{"page":3,"id":4,"obj":"label","x":8,"y":4,"w":32,"h":48,"text":"\uE141", "text_font": 48}
{"page":3,"id":5,"obj":"obj","x":0,"y":0,"w":64,"h":64,"click":true,"action":"back", "opacity":0}
// light 1
{"page":3,"id":10,"obj":"slider","x":24,"y":80,"w":432,"h":60,"value":50, "min":1, "max":255,"bg_opa00":20, "bg_opa20":0, "bg_color10":"#FAAC1B","bg_color00":"#1c1c1c"}
{"page":3,"id":11,"obj":"obj","x":32,"y":88,"w":44,"h":44,"radius":22,"border_side":0,"bg_color":"#181c18"}
{"page":3,"id":12,"obj":"label","x":32,"y":94,"w":44,"h":44,"text":"\uE335", "text_font": 24,"align":"center","click":0,"text_color":"#747474"}
{"page":3,"id":13,"obj":"label","x":92,"y":94,"w":300,"h":60,"text":"Żyrandol Salon", "text_font": 24,"click":0}
// light 2
{"page":3,"id":20,"obj":"slider","x":24,"y":156,"w":432,"h":60,"value":50, "min":1, "max":255,"bg_opa00":20, "bg_opa20":0,"bg_color10":"#FAAC1B","bg_color00":"#1c1c1c"}
{"page":3,"id":21,"obj":"obj","x":32,"y":164,"w":44,"h":44,"radius":22,"border_side":0,"bg_color":"#181c18"}
{"page":3,"id":22,"obj":"label","x":32,"y":170,"w":44,"h":44,"text":"\uE335", "text_font": 24,"align":"center","click":0,"text_color":"#747474"}
{"page":3,"id":23,"obj":"label","x":92,"y":170,"w":300,"h":60,"text":"Kiniket Salon", "text_font": 24,"click":0}
// light 3
{"page":3,"id":30,"obj":"slider","x":24,"y":232,"w":432,"h":60,"value":50, "min":1, "max":255,"bg_opa00":20, "bg_opa20":0,"bg_color10":"#FAAC1B","bg_color00":"#1c1c1c"}
{"page":3,"id":31,"obj":"obj","x":32,"y":240,"w":44,"h":44,"radius":22,"border_side":0,"bg_color":"#181c18"}
{"page":3,"id":32,"obj":"label","x":32,"y":246,"w":44,"h":44,"text":"\uE335", "text_font": 24,"align":"center","click":0,"text_color":"#747474"}
{"page":3,"id":33,"obj":"label","x":92,"y":246,"w":300,"h":60,"text":"Kinkiet TV", "text_font": 24,"click":0}
// light 4
{"page":3,"id":40,"obj":"slider","x":24,"y":308,"w":432,"h":60,"value":50, "min":1, "max":255,"bg_opa00":20, "bg_opa20":0,"bg_color10":"#FAAC1B","bg_color00":"#1c1c1c"}
{"page":3,"id":41,"obj":"obj","x":32,"y":316,"w":44,"h":44,"radius":22,"border_side":0,"bg_color":"#181c18"}
{"page":3,"id":42,"obj":"label","x":32,"y":322,"w":44,"h":44,"text":"\uE335", "text_font": 24,"align":"center","click":0,"text_color":"#747474"}
{"page":3,"id":43,"obj":"label","x":92,"y":322,"w":300,"h":60,"text":"Kinkiet Kuchnia", "text_font": 24,"click":0}
{"page":1,"id":0,"prev":3}
{"page":3,"id":0,"next":1}
tak to wygląda:
W HomeAssistant zainstalowana integracja openHASP, w configuration.yaml dodana linijka:
openhasp: !include openhasp.yaml
oraz dodany plik openhasp.yaml:
plate:
objects:
- obj: "p1b1" # czas
properties:
"text": '{{ now().strftime("%H:%M") }}'
- obj: "p1b4" # data
properties:
"text": '{{ now().strftime("%A %d %b") }}'
- obj: "p1b6" # temperatura w salonie
properties:
"text": '{{ int(states("sensor.salon_temperature")) }}°C'
- obj: "p1b7" # wilgotność w salonie
properties:
"text": '{{ states("sensor.salon_humidity") }}%'
- obj: "p1b3" # temperatura zewnętrzna
properties:
"text": '{{ int(state_attr("weather.forecast_dom", "sensor.zewnetrzna_temperature")) }}°C'
- obj: "p1b2" # ikona forecast
properties:
"text": >-
{% set icons = {"cloudy":"\uE590", "fog":"\uE591", "hail":"\uE592", "lightning":"\uE593", "clear-night":"\uE594", "partlycloudy":"\uE595", "pouring":"\uE596", "rainy":"\uE597", "snowy":"\uE598", "sunny":"\uE599", "windy":"\uE59D", "windy-variant":"\uE59E", "lightning-rainy":"\uE67E", "snowy-rainy":"\uE67F", "exceptional":"\uE957"} %}
{{ icons[states("weather.forecast_dom")] | default("\uE957") }}
- obj: "p3b10" # Jasność oświetlenia
properties:
"val": "{{state_attr('light.lampastol', 'brightness') if state_attr('light.lampastol', 'brightness') != None else 0 }}"
event:
"changed":
- service: light.turn_on
data:
entity_id: light.lampastol
brightness: "{{ val }}"
"up":
- service: light.turn_on
data:
entity_id: light.lampastol
brightness: "{{ val }}"
- obj: "p3b11" # przycisk oświetlenia
properties:
"bg_color": "{{ '#181c18' if states('light.lampastol') == 'on' else '#262626' }}"
event:
"up":
- service: light.toggle
data:
entity_id: light.lampastol
- obj: "p3b12" # ikona żarówki
properties:
"text_color": "{{ '#FAAC1B' if states('light.lampastol') == 'on' else '#747474' }}"
Niestety nie potrafię sobie poradzić z problemem pobierania danych (czas, temperatury itd) z HA.