Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

implement click on indicator function #1144

Closed
wants to merge 6 commits into from

Conversation

SurfGargano
Copy link

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

@Armilar Armilar self-assigned this Jan 19, 2024
@Armilar Armilar added the hmi Task is releated to HMI Project label Jan 19, 2024
@Armilar
Copy link
Collaborator

Armilar commented Jan 19, 2024

@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
Copy link
Collaborator

Armilar commented Jan 19, 2024

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
Copy link
Owner

joBr99 commented Jan 19, 2024

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
Copy link
Collaborator

Armilar commented Jan 19, 2024

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 added a commit that referenced this pull request Jan 19, 2024
@joBr99
Copy link
Owner

joBr99 commented Jan 19, 2024

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
Copy link
Author

Was hast Du da denn opfern müssen ?

@joBr99
Copy link
Owner

joBr99 commented Jan 19, 2024

image

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

@Armilar
Copy link
Collaborator

Armilar commented Jan 19, 2024

Sieht nach einem sehr guten Kompromiss aus.

@joBr99
Copy link
Owner

joBr99 commented Jan 19, 2024

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
Copy link
Author

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
Copy link
Owner

joBr99 commented Jan 19, 2024

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

@Armilar
Copy link
Collaborator

Armilar commented Jan 19, 2024

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
Copy link
Owner

joBr99 commented Jan 19, 2024

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

@joBr99
Copy link
Owner

joBr99 commented Jan 19, 2024

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

@joBr99
Copy link
Owner

joBr99 commented Jan 19, 2024

so, tsend hat wieder die alte größe

@Armilar
Copy link
Collaborator

Armilar commented Jan 19, 2024

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
Copy link
Collaborator

Armilar commented Jan 20, 2024

image

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

@joBr99
Copy link
Owner

joBr99 commented Jan 20, 2024

fixed :)

@Armilar
Copy link
Collaborator

Armilar commented Jan 20, 2024

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
Copy link
Collaborator

Armilar commented Jan 20, 2024

Änderungen:

27034e4

PR wird als umgesetzt geschlossen...

@Armilar Armilar closed this Jan 20, 2024
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
hmi Task is releated to HMI Project
Projects
None yet
Development

Successfully merging this pull request may close these issues.

3 participants