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
856 stars 187 forks source link

implement click on indicator function #1144

Closed SurfGargano closed 5 months ago

SurfGargano commented 5 months ago

implement click on indicator function The parts are marked with 'gargano'

Armilar commented 5 months ago

@joBr99

Gargano hat im Screensaver2 die 5 Entitäten f1Icon bis f5Icon mit einem "on Click" Ereignis versehen.

Der Hintergrund ist, dass man gezielt von dieser generischen Status-Übersicht in eine spezielle card mit den Details kommen kann. Die Nachfrage nach einer solchen Funktion ist zumindest in der ioBroker Welt vorhanden...

Bitte prüfen...

Falls das für andere Systeme (HA, etc.) ein Problem darstellt, könnte man dem Screensaver 2 auch noch eine optionale Variable mitgeben. Im NSPAnelTS.ts

Armilar commented 5 months ago

Sind irgendwie noch weitere Änderungen im Gargano-File vorhanden. Bezieht sich aber auf diese Indikatoren:

image

Das sind die Änderungen für das entsprechende Klick-Ereignis, exemplarisch für f1Icon:

tSend.txt="event,buttonPress2,"+"f1Icon"+",button"
//send calc crc
btlen tSend.txt,sys0
crcrest 1,0xffff // reset CRC
crcputh 55 bb
crcputs sys0,2
crcputs tSend.txt,0
//send cmd
printh 55 bb
prints sys0,2
prints tSend.txt,0
prints crcval,2
13:58:48.007 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663149636F6E2C6275...')
13:58:48.020 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f1Icon,button"}
13:58:48.107 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663149636F6E2C6275...')
13:58:48.120 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f1Icon,button"}
13:58:50.213 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663249636F6E2C6275...')
13:58:50.227 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f2Icon,button"}
13:58:50.514 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663249636F6E2C6275...')
13:58:50.527 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f2Icon,button"}
13:58:52.220 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663349636F6E2C6275...')
13:58:52.231 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f3Icon,button"}
13:58:52.425 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663349636F6E2C6275...')
13:58:52.437 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f3Icon,button"}
13:58:54.125 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663449636F6E2C6275...')
13:58:54.139 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f4Icon,button"}
13:58:54.325 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663449636F6E2C6275...')
13:58:54.340 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f4Icon,button"}
13:58:55.125 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663549636F6E2C6275...')
13:58:55.140 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f5Icon,button"}
13:58:55.425 NSP: Received Raw = bytes('55BB20006576656E742C627574746F6E5072657373322C663549636F6E2C6275...')
13:58:55.438 MQT: SmartHome/NSPanel_EMU/tele/RESULT = {"CustomRecv":"event,buttonPress2,f5Icon,button"}
joBr99 commented 5 months ago

Ich fänds sauberer, wenn das Panel sich die entityId merkt und die in dem buttonPress wieder ausgibt, so wie auch z.b. auf cardGird. Das könnte auf dem screensaver2 aber am Arbeitsspeicher von dem Panel scheitern.

Armilar commented 5 months ago

Ist ja ausschließlich ein Event auf dem Screensaver2... Verstehe da den Zusammenhang nicht...

Es wird der Screensaver verlasse, ohne dass ein bExit passiert. Über die Zuordnung des ButtonEvent wird eine bestimmte definierte Seite aufgerufen, die als Parameter in der Config eingetragen ist... Funtioniert eigentlich soweit ganz gut...

Würde nur sehr ungerne mit 'nem Fork weiterarbeiten...

joBr99 commented 5 months ago
Parameter Number Category Location Type Field Addional Information
13 Second Forecast Icon Entity Definition type ignored
14 intNameEntity ignored
15 icon
16 iconColor
17 displayName
18 optionalValue

Bei allen anderen Buttons taucht der intNameEntity wieder in dem command vom Panel auf:

tSend.txt="event,buttonPress2,"+entn3.txt+",button"

Macht für mich mehr sinn als ne feste Position, damit brauchst du keine extra logik für die buttons auf dem screensaver.

Ich hab das mal eingebaut, musste aber an anderen Stellen Arbeitsspeicher sparen könnte Nebeneffekte haben und der intNameEntity darf maximal 14 Zeichen haben.

SurfGargano commented 5 months ago

Was hast Du da denn opfern müssen ?

joBr99 commented 5 months ago

image

strCommand strTmp tSend und tTmp sind kleiner um Platz für die 5 neuen entnX Variablen zu machen.

Armilar commented 5 months ago

Sieht nach einem sehr guten Kompromiss aus.

joBr99 commented 5 months ago

ja, meine entity namen sind nur noch 14 zeichen lang, weil die so ne art uuid sind und ich mappe die im hintergrund sowieso schon zu den homeassistant entity namen - früher stand da der ganze entity name und die variable musste viel länger sein

SurfGargano commented 5 months ago

Wird das dann ein Single oder Doppelclick ? Ich würde ein Singleclick bevorzugen, da die Icons klein sind und mit Doppelclick wird es evtl. schwierig richtig zu treffen. Bei meinem Beispiel ist es ein Singleclick.

joBr99 commented 5 months ago

Doppelklick gibt es in Nextion ja grundsätzlich nicht wirklich.

Armilar commented 5 months ago

Habs eben mal getestet

SmartHome/NSPanel_1/tele/RESULT = {"CustomRecv":"event,buttonPress2,screensaver"}

Da fehlt die 1 hinten beim 1x Klick und die 2 beim Doppelklick und das bExit

Ist da jetzt etwas anders oder einfach nur vergessen?

War vorher: 22:20:31.959 MQT: SmartHome/NSPanel_1/tele/RESULT = {"CustomRecv":"event,buttonPress2,screensaver,bExit,1"} 22:20:32.664 MQT: SmartHome/NSPanel_1/tele/RESULT = {"CustomRecv":"event,buttonPress2,screensaver,bExit,2"}

joBr99 commented 5 months ago

da hab ich eigentlich nix dran geändert o.O

joBr99 commented 5 months ago

ah, das ist nen nebeneffekt von dem kleineren tSend, dann muss der wohl wieder größer und was anderes kleiner

joBr99 commented 5 months ago

so, tsend hat wieder die alte größe

Armilar commented 5 months ago

Test erfolgreich

bExit läuft und

tSend.txt="event,buttonPress2,"+entn3.txt+",button"

kommt auch sauber zurück

23:21:55.608 MQT: SmartHome/NSPanel_1/tele/RESULT = {"CustomRecv":"event,buttonPress2,f1Icon,button"}

Ansonsten ist mir nichts aufgefallen, was anders wäre...

Top !!!

Armilar commented 5 months ago

image

kann es sein, dass dieser Code beim f2Icon nicht in Touch Release Event gehört?

joBr99 commented 5 months ago

fixed :)

Armilar commented 5 months ago

v4.3.3.38 NSPanelTs.ts enthält die Änderungen.

Der Parameter ScreensaverEntityNaviToPage (nicht string in items.name) enthält wie im folgenden Beispiel die Seitenvariable:

Ist ScreensaverEntityNaviToPage nicht vorhanden (also undefined) oder null, so wird ein bExit, 2 emuliert und über den Button lässt sich wie gewohnt der Screensaver beenden.

    indicatorScreensaverEntity:
        [
            // indicatorScreensaverEntity 1 (only Advanced Screensaver)
            { 
                ScreensaverEntity: '0_userdata.0.NSPanel.Indicators.Haus',
                ScreensaverEntityFactor: 1,
                ScreensaverEntityDecimalPlaces: 0,
                ScreensaverEntityIconOn: 'window-open-variant',
                ScreensaverEntityIconOff: 'window-closed-variant',
                ScreensaverEntityText: 'Fenster',
                ScreensaverEntityUnitText: '%',
                ScreensaverEntityIconColor: { 'val_min': 0, 'val_max': 1 },
                ScreensaverEntityNaviToPage: Fenster_1
            },
Armilar commented 5 months ago

Änderungen:

https://github.com/joBr99/nspanel-lovelace-ui/commit/27034e4bae4957ad446f14e3b9767a10068a9d8f

PR wird als umgesetzt geschlossen...