joBr99 / nspanel-lovelace-ui

Custom Firmware for NsPanel with the design of HomeAssistant's lovelace UI in mind, works with Tasmota.
GNU General Public License v3.0
882 stars 191 forks source link

[Feature Request] Alternating entities in the screensaver #790

Open soyxan opened 1 year ago

soyxan commented 1 year ago

FEATURE DESCRIPTION

Implement in the screensaver the option to alternate between 2 entities in the same position (for instance temperature and humidity). This alternating could be defined with a time parameter which could establish how long each entity is shown in a loop.

ADDITIONAL CONTEXT

This is already implemented in ioBorker as per the following post: https://github.com/joBr99/nspanel-lovelace-ui/issues/739#issuecomment-1423287124

PANEL / FIRMWARE VERION

EU

afarago commented 11 months ago

Hey @Armilar - could you share details on the ioBroker implementation / configuration? I cannot seem to find it documented / in the code - would be eager to implement after I check the existing implementation / best practice.

joBr99 commented 11 months ago

It's just sending the update for the screensaver alternating with different entities.

I've started to reimplement the backend without appdaemon. Didn't implement communication though Homeassistent events so far. But besides that it's pretty far.

https://github.com/joBr99/nspanel-lovelace-ui/issues/1058

Armilar commented 11 months ago

Hey @Armilar - could you share details on the ioBroker implementation / configuration? I cannot seem to find it documented / in the code - would be eager to implement after I check the existing implementation / best practice.

Actually everything happens in the HandleScreensaverUpdate() function.

The bottomScreensaverEntity already changes cyclically via the data point 0_userdata.0.NSPanel.1.ScreensaverInfo.entityChangeTime.

The question that now arises is which values should also change cyclically?

The only icons I can think of now are the leftScreensaverEntity in the advanced screensaver or the humidity in the alternative screensaver or the temperature (const weatherEntityPath: string = 'alias.0.Weather';) in the standard screensaver.

For all other values, another change wouldn't really make sense

The screensaver documentation is analogous to HA: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/HMI

If you implement it, please note that all screensaver types (standard, alternative and advanced) must continue to work.

Armilar commented 11 months ago

@joBr99

I've started to reimplement the backend without appdaemon

I saw that in the many thousands of commits ;-) ... AppDaemon seems to be very sluggish

Just to understand this correctly. Nothing will change for ioBroker, right?

afarago commented 11 months ago

Oh, I understand now, awesome idea!

Perhaps for AppDaemon/Homeassistant I would prefer a totally open format instead of hardcoding the entites as such.

I would be happy to implement it for my panel and for the community. @joBr99 let me know your preference. Actually the format below would allow any number of sets to be cycled without any backward-incompatible change.

nspanel-1:
  module: nspanel-lovelace-ui
  class: NsPanelLovelaceUIManager
  config:
    screensaver:
      entities:
        - entity: head
        - entity: left_3_rows
        - entity: left_3_rows
        - entity: left_3_rows
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols_alternative
        - entity: bottom_6_cols_alternative
        - entity: bottom_6_cols_alternative
        - entity: bottom_6_cols_alternative
        - entity: bottom_6_cols_alternative
        - entity: bottom_6_cols_alternative
joBr99 commented 11 months ago

I think the least confusing way to implement this would be something like this:

    screensaver:
      entities:
        - entity: head
        - entity: left_3_rows
        - entity: left_3_rows
        - entity: left_3_rows
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
      entitiesAlt:
        - entity: head
        - entity: left_3_rows
        - entity: left_3_rows
        - entity: left_3_rows
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols
        - entity: bottom_6_cols

@afarago do you have discord?, at the current state of the alternative addon without appdaemon, it's probably better to directly implement this in the new backend - next release will be without appdaemon

joBr99 commented 11 months ago

@Armilar So far my main prio is to create a drop in replacement for the appdaemon app, so no breaking changes for now

afarago commented 11 months ago

Apologies - please let me know if there is a discord server / chat. You will find my discord id in my bio as well.