Closed SurfGargano closed 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
Sind irgendwie noch weitere Änderungen im Gargano-File vorhanden. Bezieht sich aber auf diese Indikatoren:
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"}
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.
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...
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.
Was hast Du da denn opfern müssen ?
strCommand strTmp tSend und tTmp sind kleiner um Platz für die 5 neuen entnX Variablen zu machen.
Sieht nach einem sehr guten Kompromiss aus.
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
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.
Doppelklick gibt es in Nextion ja grundsätzlich nicht wirklich.
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"}
da hab ich eigentlich nix dran geändert o.O
ah, das ist nen nebeneffekt von dem kleineren tSend, dann muss der wohl wieder größer und was anderes kleiner
so, tsend hat wieder die alte größe
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 !!!
kann es sein, dass dieser Code beim f2Icon nicht in Touch Release Event gehört?
fixed :)
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
},
Änderungen:
https://github.com/joBr99/nspanel-lovelace-ui/commit/27034e4bae4957ad446f14e3b9767a10068a9d8f
PR wird als umgesetzt geschlossen...
implement click on indicator function The parts are marked with 'gargano'