mirror of
https://github.com/joBr99/nspanel-lovelace-ui.git
synced 2025-12-21 15:04:24 +01:00
implemented server side rendering of alarm page content #81
This commit is contained in:
@@ -129,7 +129,7 @@ The following message can be used to update the content on the cardEntities Page
|
|||||||
|
|
||||||
### cardAlarm Page
|
### cardAlarm Page
|
||||||
|
|
||||||
`entityUpd,*internalNameEntity*,*arm1*,*arm1ActionName*,*arm2*,*arm2ActionName*,*arm3*,*arm3ActionName*,*arm4*,*arm4ActionName*,*icon*,*numpadStatus*`
|
`entityUpd,*internalNameEntity*,*arm1*,*arm1ActionName*,*arm2*,*arm2ActionName*,*arm3*,*arm3ActionName*,*arm4*,*arm4ActionName*,*icon*,*iconcolor*,*numpadStatus*`
|
||||||
|
|
||||||
|
|
||||||
## Messages from Nextion Display
|
## Messages from Nextion Display
|
||||||
|
|||||||
@@ -40,7 +40,10 @@ icons = [
|
|||||||
"shield-home",
|
"shield-home",
|
||||||
"door-open",
|
"door-open",
|
||||||
"door-closed",
|
"door-closed",
|
||||||
"window-closed"
|
"window-closed",
|
||||||
|
"shield-off",
|
||||||
|
"shield",
|
||||||
|
"shield-lock"
|
||||||
]
|
]
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -43,3 +43,6 @@ ID | MD Icon Name | Icon
|
|||||||
36 | door-open | 
|
36 | door-open | 
|
||||||
37 | door-closed | 
|
37 | door-closed | 
|
||||||
38 | window-closed | 
|
38 | window-closed | 
|
||||||
|
39 | shield-off | 
|
||||||
|
40 | shield | 
|
||||||
|
41 | shield-lock | 
|
||||||
|
|||||||
BIN
HMI/nspanel.HMI
BIN
HMI/nspanel.HMI
Binary file not shown.
BIN
HMI/nspanel.tft
BIN
HMI/nspanel.tft
Binary file not shown.
@@ -38,6 +38,9 @@ icons = {
|
|||||||
'door-open': 36,
|
'door-open': 36,
|
||||||
'door-closed': 37,
|
'door-closed': 37,
|
||||||
'window-closed': 38,
|
'window-closed': 38,
|
||||||
|
'shield-off': 39,
|
||||||
|
'shield': 40,
|
||||||
|
'shield-lock': 41,
|
||||||
}
|
}
|
||||||
|
|
||||||
def get_icon_id(ma_name):
|
def get_icon_id(ma_name):
|
||||||
|
|||||||
@@ -252,6 +252,51 @@ class LuiPagesGen(object):
|
|||||||
command = f"entityUpd,|{item}|{heading}|{icon}|{title}|{author}|{volume}|{iconplaypause}|{source}|{speakerlist}"
|
command = f"entityUpd,|{item}|{heading}|{icon}|{title}|{author}|{volume}|{iconplaypause}|{source}|{speakerlist}"
|
||||||
self._send_mqtt_msg(command)
|
self._send_mqtt_msg(command)
|
||||||
|
|
||||||
|
def generate_alarm_page(self, item):
|
||||||
|
if not self._ha_api.entity_exists(item):
|
||||||
|
command = f"entityUpd,{item},Not found,Not found,Check your,Check your,apps.,apps.,yaml,yaml,0,,0"
|
||||||
|
else:
|
||||||
|
entity = self._ha_api.get_entity(item)
|
||||||
|
icon = get_icon_id("shield-off")
|
||||||
|
color = rgb_dec565([255,255,255])
|
||||||
|
supported_modes = []
|
||||||
|
numpad = "enable"
|
||||||
|
if entity.state == "disarmed":
|
||||||
|
color = rgb_dec565([13,160,53])
|
||||||
|
icon = get_icon_id("shield-off")
|
||||||
|
if entity.attributes.get("code_arm_required", "false") == "false":
|
||||||
|
numpad = "disable"
|
||||||
|
bits = entity.attributes.supported_features
|
||||||
|
if bits & 0b000001:
|
||||||
|
supported_modes.append("ARM HOME")
|
||||||
|
if bits & 0b000010:
|
||||||
|
supported_modes.append("ARM AWAY")
|
||||||
|
if bits & 0b000100:
|
||||||
|
supported_modes.append("ARM NIGHT")
|
||||||
|
if bits & 0b100000:
|
||||||
|
supported_modes.append("ARM VACATION")
|
||||||
|
if entity.state == "armed_home":
|
||||||
|
color = rgb_dec565([223,76,30])
|
||||||
|
icon = get_icon_id("shield-home")
|
||||||
|
supported_modes.append("DISARM")
|
||||||
|
if entity.state == "arming":
|
||||||
|
color = rgb_dec565([243,179,0])
|
||||||
|
icon = get_icon_id("shield")
|
||||||
|
supported_modes.append("DISARM")
|
||||||
|
if entity.state == "armed_away":
|
||||||
|
color = rgb_dec565([223,76,30])
|
||||||
|
icon = get_icon_id("shield-lock")
|
||||||
|
supported_modes.append("DISARM")
|
||||||
|
|
||||||
|
# add padding to arm buttons
|
||||||
|
arm_buttons = ""
|
||||||
|
for b in supported_modes:
|
||||||
|
arm_buttons += f",{b},{b}"
|
||||||
|
if len(supported_modes) < 4:
|
||||||
|
arm_buttons += ","*((4-len(supported_modes))*2)
|
||||||
|
command = f"entityUpd,{item}{arm_buttons},{icon},{color},0"
|
||||||
|
self._send_mqtt_msg(command)
|
||||||
|
|
||||||
def render_page(self, page, send_page_type=True):
|
def render_page(self, page, send_page_type=True):
|
||||||
config = page.data
|
config = page.data
|
||||||
page_type = config["type"]
|
page_type = config["type"]
|
||||||
@@ -267,6 +312,9 @@ class LuiPagesGen(object):
|
|||||||
self.generate_thermo_page(page.data.get("item"))
|
self.generate_thermo_page(page.data.get("item"))
|
||||||
if page_type == "cardMedia":
|
if page_type == "cardMedia":
|
||||||
self.generate_media_page(page.data.get("item"))
|
self.generate_media_page(page.data.get("item"))
|
||||||
|
if page_type == "cardAlarm":
|
||||||
|
self.generate_alarm_page(page.data.get("item"))
|
||||||
|
|
||||||
|
|
||||||
def generate_light_detail_page(self, entity):
|
def generate_light_detail_page(self, entity):
|
||||||
entity = self._ha_api.get_entity(entity)
|
entity = self._ha_api.get_entity(entity)
|
||||||
|
|||||||
Reference in New Issue
Block a user