NEWS
SONOFF NSPanel mit Lovelace UI
-
Habe alle Flash's mit Tasmota 14.4.1 gemacht.
Hast du es mal versucht mit:
Feste (statische) IP des NSPanels merken
Jetzt alles weitere in der Tasmota-Konsole ausführen:
backlog savedata 1; ipaddress1 0.0.0.0; savedata 0; restart 1nach dem Neustart
FlashNextion http://nspanel.de/nspanel-4.5.0.tftund dann, wenn durchgelaufen, wieder mit der gemerkten statischen IP einstellen
ipaddress1 192.168.X.X
@armilar Ich hab in den letzten Wochen nicht alle Updates von hier mitbekommen. Ich habe allerdings gestern den Scriptadapter auf 8.9.0 hochgezogen. Beim Start des NS-Scripts bekomme ich beim compilen folgenden Fehler:
TypeScript compilation failed: SendToPanel({ payload: 'dimmode~' + getState(NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness').val + '~' + getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val ?? 80 + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); ^ ERROR: Right operand of ?? is unreachable because the left operand is never nullish. SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessDay + '~' + getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val ?? 80 + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); ^ ERROR: Right operand of ?? is unreachable because the left operand is never nullish. SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessNight + '~' + getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val ?? 80 + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); ^ ERROR: Right operand of ?? is unreachable because the left operand is never nullish.code_textSchon bekannt oder muss/soll ich erstmal die letzte Version von hier einbauen?
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
FlashNextion http://nspanel.de/nspanel-4.5.0.tft
ja, hab ich auch versucht, meine haben gar keine statische IP, bekommen reservierte vom dhcp server (unifi udm pro).
Kommt immer wieder der
10:46:28.953 CMD: FlashNextion http://nspanel.de/nspanel-4.5.0.tft 10:46:28.965 MQT: SmartHome/NSPanel1/stat/RESULT = {"FlashNextion":"Done"} 10:46:28.992 FLH: host: nspanel.de, port: 80, get: /nspanel-4.5.0.tft 10:46:32.294 FLH: Send (High Speed) flash start 10:46:32.645 BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'und im Display dann
USART Update....
921600
SIZE:
0
writing DATA.....
ein langer Balken und das wars...Könntest du für einen Test mal:
Backlog UrlFetch https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1durchführen und danach nochmal das
FlashNextion http://nspanel.de/nspanel-4.5.0.tft -
@armilar Ich hab in den letzten Wochen nicht alle Updates von hier mitbekommen. Ich habe allerdings gestern den Scriptadapter auf 8.9.0 hochgezogen. Beim Start des NS-Scripts bekomme ich beim compilen folgenden Fehler:
TypeScript compilation failed: SendToPanel({ payload: 'dimmode~' + getState(NSPanel_Path + 'ScreensaverInfo.activeDimmodeBrightness').val + '~' + getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val ?? 80 + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); ^ ERROR: Right operand of ?? is unreachable because the left operand is never nullish. SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessDay + '~' + getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val ?? 80 + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); ^ ERROR: Right operand of ?? is unreachable because the left operand is never nullish. SendToPanel({ payload: 'dimmode~' + timeDimMode.brightnessNight + '~' + getState(NSPanel_Path + 'ScreensaverInfo.activeBrightness').val ?? 80 + '~' + rgb_dec565(config.defaultBackgroundColor) + '~' + rgb_dec565(globalTextColor) + '~' + Sliders2 }); ^ ERROR: Right operand of ?? is unreachable because the left operand is never nullish.code_textSchon bekannt oder muss/soll ich erstmal die letzte Version von hier einbauen?
-
Könntest du für einen Test mal:
Backlog UrlFetch https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1durchführen und danach nochmal das
FlashNextion http://nspanel.de/nspanel-4.5.0.tft@armilar sagte in SONOFF NSPanel mit Lovelace UI:
Backlog UrlFetch https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1
Asche ueber mein Haupt... ich habs gefunden.. das Teil war noch fuers Internet geblockt.. oh Mann... oh Mann..
SIZE 0 hat mich drauf gebracht.. dass er da kein Zugriff auf die Datei hat.. und die Tasmota-URL hab ich in der Firewall als rule drin..
verflixte Technik.. -
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
Backlog UrlFetch https://raw.githubusercontent.com/joBr99/nspanel-lovelace-ui/main/tasmota/autoexec.be; Restart 1
Asche ueber mein Haupt... ich habs gefunden.. das Teil war noch fuers Internet geblockt.. oh Mann... oh Mann..
SIZE 0 hat mich drauf gebracht.. dass er da kein Zugriff auf die Datei hat.. und die Tasmota-URL hab ich in der Firewall als rule drin..
verflixte Technik.. -
@armilar Läuft wieder. Jetzt bietet das Display ein TFT-Firmware-Update von 53 auf 54 an. Wie krieg ich das drauf?
FlashNextion http://nspanel.de/nspanel-4.5.0.tftDas ist die 54
Aktuell "nicht" über das Servicemenü... Da muss noch eine Anpassung rein... Nur über die Tasmota-Konsole
-
FlashNextion http://nspanel.de/nspanel-4.5.0.tftDas ist die 54
Aktuell "nicht" über das Servicemenü... Da muss noch eine Anpassung rein... Nur über die Tasmota-Konsole
@armilar Sind die Änderungen gravierend, dass ich das per Konsole machen sollte?
Bei dem Versuch über das Servicemenü fehlt "alias.0.NSPanel.1.Config.Update.UpdateNextion.SET" und "alias.0.NSPanel.1.Config.Update.UpdateNextion.ON_SET". Aber das wisst ihr sicher und seid dran, -
@armilar Sind die Änderungen gravierend, dass ich das per Konsole machen sollte?
Bei dem Versuch über das Servicemenü fehlt "alias.0.NSPanel.1.Config.Update.UpdateNextion.SET" und "alias.0.NSPanel.1.Config.Update.UpdateNextion.ON_SET". Aber das wisst ihr sicher und seid dran,Nein, die sind nicht gravierend... Ist nur der Part mit dem EasyView screensaver3 und der cardGrid3
Sofern du die nicht nutzt, geht auch die alte TFT53
Und deshalb habe ich ja auch geschrieben, dass das Update aktuell "nicht" über das Servicemenü stattfinden soll, sondern über die Tasmota-Konsole

-
Nein, die sind nicht gravierend... Ist nur der Part mit dem EasyView screensaver3 und der cardGrid3
Sofern du die nicht nutzt, geht auch die alte TFT53
Und deshalb habe ich ja auch geschrieben, dass das Update aktuell "nicht" über das Servicemenü stattfinden soll, sondern über die Tasmota-Konsole

-
@armilar Danke für die Info. Das Ding läuft bei mir auch nur so nebenbei. Ich warte ja eigentlich auf den Adapter (weil mich die Aliase furchtbar nerven), weiß aber nicht, wie ich ticaki dabei helfen könnte.
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
React lernen

Wir sind dran...
Ich weiß nicht in wieweit Rene react kann, aber der macht da immer mit web zeugs rum wovon ich keine Ahnung habe. Helfen könnte er wohl schon - aber dann müsste ich meine letzte Alias idee wieder in die Tonne kloppen sonst streikt er

@Rene55
Ich hab ne sehr komplizierte Konfiguration gebaut, in der Annahme das ich schon ne Mögliichkeit finde das nachher umzusetzen und da sind wir.Im Adapter kann man aktuell zu jedem "pageItem" jeden einzelnen Datenpunkt(6-8) als id, fester wert oder triggernd ausführen - das sieht dann zum Bespiel so aus:
//const pageGridTest4: pages.PageBaseConfig = { //type: 'sonstiges', //card: 'cardGrid', dpInit: '', alwaysOn: 'none', uniqueID: 'grid4', useColor: false, config: { card: 'cardGrid', data: { headline: { type: 'const', constVal: 'Überschrift2', }, }, }, items: undefined, pageItems: [ { role: 'text.list', type: 'input_sel', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Green }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entityInSel: { value: { type: 'const', constVal: true, }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'account' }, color: { type: 'const', constVal: Color.Green }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'const', constVal: true, }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, ], //};Hab ein kleines als Bespiel genommen
Oder was komplexeres:
const pageThermoTest: pages.PageBaseConfig = { //card: 'cardThermo', uniqueID: 'thermo1', dpInit: '', alwaysOn: 'none', pageItems: [ { role: '', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'arrow-right' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'triggered', dp: '0_userdata.0.example_state', }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'button', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'arrow-up' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'const', constVal: true, }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, ], config: { card: 'cardThermo', data: { headline: { type: 'const', constVal: 'headline', }, mixed2: { value: { type: 'const', constVal: '20', }, }, unit: { type: 'const', constVal: '°C', }, mixed1: { value: { type: 'const', constVal: 'H1', }, }, mixed3: { value: { type: 'const', constVal: 'H2', }, }, minTemp: { type: 'const', constVal: '10', }, maxTemp: { type: 'const', constVal: '60', }, tempStep: { type: 'const', constVal: '5', }, set1: { type: 'state', dp: '0_userdata.0.number1' }, mixed4: { value: { type: 'const', constVal: '20', }, }, }, }, items: undefined, useColor: false, };oder was einfaches von @TT-Tom
const pageFahrplanRoutes: pages.PageBaseConfig = { card: 'cardEntities', dpInit: 'fahrplan.0.0', uniqueID: 'fahrplanrouten', template: 'entities.fahrplan.routes', }; -
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
React lernen

Wir sind dran...
Ich weiß nicht in wieweit Rene react kann, aber der macht da immer mit web zeugs rum wovon ich keine Ahnung habe. Helfen könnte er wohl schon - aber dann müsste ich meine letzte Alias idee wieder in die Tonne kloppen sonst streikt er

@Rene55
Ich hab ne sehr komplizierte Konfiguration gebaut, in der Annahme das ich schon ne Mögliichkeit finde das nachher umzusetzen und da sind wir.Im Adapter kann man aktuell zu jedem "pageItem" jeden einzelnen Datenpunkt(6-8) als id, fester wert oder triggernd ausführen - das sieht dann zum Bespiel so aus:
//const pageGridTest4: pages.PageBaseConfig = { //type: 'sonstiges', //card: 'cardGrid', dpInit: '', alwaysOn: 'none', uniqueID: 'grid4', useColor: false, config: { card: 'cardGrid', data: { headline: { type: 'const', constVal: 'Überschrift2', }, }, }, items: undefined, pageItems: [ { role: 'text.list', type: 'input_sel', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Green }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entityInSel: { value: { type: 'const', constVal: true, }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'account' }, color: { type: 'const', constVal: Color.Green }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'const', constVal: true, }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, ], //};Hab ein kleines als Bespiel genommen
Oder was komplexeres:
const pageThermoTest: pages.PageBaseConfig = { //card: 'cardThermo', uniqueID: 'thermo1', dpInit: '', alwaysOn: 'none', pageItems: [ { role: '', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'arrow-right' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'triggered', dp: '0_userdata.0.example_state', }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'text.list', type: 'input_sel', dpInit: '', data: { entityInSel: { value: { type: 'triggered', dp: '0_userdata.0.statesTest', }, decimal: undefined, factor: undefined, unit: undefined, }, headline: { type: 'const', constVal: 'Test', }, /** * valueList string[]/stringify oder string?string?string?string stelle korreliert mit setList {input_sel} */ //valueList: { type: 'const', constVal: 'home?butter' }, /** * setList: {id:Datenpunkt, value: zu setzender Wert}[] bzw. stringify oder ein String nach dem Muster datenpunkt?Wert|Datenpunkt?Wert {input_sel} */ //setList: { type: 'const', constVal: '0_userdata.0.test?1|0_userdata.0.test?2' }, }, }, { role: 'button', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'arrow-up' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'const', constVal: true, }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, { role: 'indicator', type: 'button', dpInit: '', data: { color: { true: { type: 'const', constVal: Color.HMIOn, }, false: undefined, scale: undefined, }, icon: { true: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Blue }, }, false: { value: { type: 'const', constVal: 'fan' }, color: { type: 'const', constVal: Color.Red }, }, scale: undefined, maxBri: undefined, minBri: undefined, }, entity1: { value: { type: 'state', dp: '0_userdata.0.example_state' }, decimal: undefined, factor: undefined, unit: undefined, }, text: { true: undefined, false: undefined, }, }, }, ], config: { card: 'cardThermo', data: { headline: { type: 'const', constVal: 'headline', }, mixed2: { value: { type: 'const', constVal: '20', }, }, unit: { type: 'const', constVal: '°C', }, mixed1: { value: { type: 'const', constVal: 'H1', }, }, mixed3: { value: { type: 'const', constVal: 'H2', }, }, minTemp: { type: 'const', constVal: '10', }, maxTemp: { type: 'const', constVal: '60', }, tempStep: { type: 'const', constVal: '5', }, set1: { type: 'state', dp: '0_userdata.0.number1' }, mixed4: { value: { type: 'const', constVal: '20', }, }, }, }, items: undefined, useColor: false, };oder was einfaches von @TT-Tom
const pageFahrplanRoutes: pages.PageBaseConfig = { card: 'cardEntities', dpInit: 'fahrplan.0.0', uniqueID: 'fahrplanrouten', template: 'entities.fahrplan.routes', };@ticaki Ich hatte deinen "Hilferuf" schon gesehen. Habe aber noch keinen Schimmer von React - bin aber gerade dabei, mich schlau zu machen. Aber hier werden dann komplette Sites behandelt, die mit ioBroker nichts zu tun haben. Daher so schleppend, mich auf Stand zu bringen.
Und streiken tu ich so schnell auch nicht - eher Flinte ==> Korn.
Wenn ich klüger bin müssen wir uns nochmal unterhalten, damit ich deine Idee vom Frontend auch so ein bisschen reinkriege. -
@ticaki Ich hatte deinen "Hilferuf" schon gesehen. Habe aber noch keinen Schimmer von React - bin aber gerade dabei, mich schlau zu machen. Aber hier werden dann komplette Sites behandelt, die mit ioBroker nichts zu tun haben. Daher so schleppend, mich auf Stand zu bringen.
Und streiken tu ich so schnell auch nicht - eher Flinte ==> Korn.
Wenn ich klüger bin müssen wir uns nochmal unterhalten, damit ich deine Idee vom Frontend auch so ein bisschen reinkriege.@rene55
Hab dich mal im Discord angeschrieben, wegen Teammeeting heute
Geht um die Richtung, also nix zu spezifisches. -
Sieht tatsächlich nach einem Hardwaredefekt aus. Die Original Firmware kannst du nicht zurückflashen. Mir ist zumindest kein Weg bekannt...
Würde es dennoch zurücksenden als defekt...
-
Update v4.5.0

Nachdem es heute zu einem Bug mit dem "BETA"-JS-Adapter v8.9.0 heute kam, haben wir uns kurzfristig entschlossen, das Release v4.5.0 mit dem Bugfix und einer Erweiterung der TFT zu veröffentlichen.
Wer also diese JS-Adapter Version geladen hat, kommt nicht an diesem Update vorbei.
https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts
Unteren Teil austauschen ab:

Das Service Menü hat einen weiteren Eintrag erhalten. Mit diesem kann der Einfache Screensaver (siehe Bilder unten) umgeschaltet werden.
Zeilen 425 bis 822 austauschen
Die Firmware sollte in der Tasmota-Konsole mit (Achtung neue URL)
FlashNextion http://nspanel.de/nspanel-4.5.0.tftaktualisiert werden.
Der neue "Einfache Screensaver":

ist eine Version mit stark vergrößerten Elementen. Die beiden Relais sind hierbei nur noch als Balken (keine Icons) im unteren Teil zu sehen.Außerdem gibt es eine cardGrid3 mit 4 Steuerelementen:

Die Variable unterscheidet sich lediglich durch den
typecardGrid3 und das max. 4 pageItems möglich sindlet Buero_Seite_2: PageType = { 'type': 'cardGrid3', 'heading': 'Büro 2', 'useColor': true, 'items': [ { id: 'alias.0.NSPanel_1.Schreibtischlampe', name: 'Schreibtisch'}, { id: 'alias.0.NSPanel_1.Deckenbeleuchtung', name: 'Deckenlampe'}, { id: 'alias.0.NSPanel_1.TestFenster', offColor: MSGreen, onColor: MSRed, name: 'Büro Fenster'}, { id: 'alias.0.NSPanel_1.Luftreiniger', icon: 'power', offColor: MSRed, onColor: MSGreen}, ] };
Es gibt noch eine weitere Neuerung, in der ein 3. Icon im pageItem für die Rollos (Alias Channel: blinds) genutzt werden kann. Diese wird jedoch im Wiki beschrieben.
Viel Spaß mit dem neuen Release
-
Die Firmware sollte in der Tasmota-Konsole mit (Achtung neue URL)
FlashNextion http://nspanel.de/nspanel-4.5.0.tftaktualisiert werden.
Hi,
gibt es auch ein Update für die US Version Portrait und Landscape ?Du könntest es durchführen, dann hast du aber nur die 53 als 54
Die GUI - Änderungen sind noch nicht in der US... Der Bug durch den JS-Adapter jedoch behoben...
Irgendwie musste es gestern alles etwas schneller gehen als sonst

-
Die Firmware sollte in der Tasmota-Konsole mit (Achtung neue URL)
FlashNextion http://nspanel.de/nspanel-4.5.0.tftaktualisiert werden.
Hi,
gibt es auch ein Update für die US Version Portrait und Landscape ?@chris_71 sagte in SONOFF NSPanel mit Lovelace UI:
gibt es auch ein Update für die US Version Portrait und Landscape ?
ist hinzugefügt (54/v4.5.0):
TFT EU
FlashNextion http://nspanel.de/nspanel-v4.5.0.tftTFT US-L
FlashNextion http://nspanel.de/nspanel-us-l-v4.5.0.tftTFT US-P
FlashNextion http://nspanel.de/nspanel-us-p-v4.5.0.tft -
Habe alle Flash's mit Tasmota 14.4.1 gemacht.
Hast du es mal versucht mit:
Feste (statische) IP des NSPanels merken
Jetzt alles weitere in der Tasmota-Konsole ausführen:
backlog savedata 1; ipaddress1 0.0.0.0; savedata 0; restart 1nach dem Neustart
FlashNextion http://nspanel.de/nspanel-4.5.0.tftund dann, wenn durchgelaufen, wieder mit der gemerkten statischen IP einstellen
ipaddress1 192.168.X.X
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
Habe alle Flash's mit Tasmota 14.4.1 gemacht.
Hast du es mal versucht mit:
Feste (statische) IP des NSPanels merken
Jetzt alles weitere in der Tasmota-Konsole ausführen:
backlog savedata 1; ipaddress1 0.0.0.0; savedata 0; restart 1nach dem Neustart
FlashNextion http://nspanel.de/nspanel-4.5.0.tftund dann, wenn durchgelaufen, wieder mit der gemerkten statischen IP einstellen
ipaddress1 192.168.X.X
Hi Armilar, ich hatte ebenfalls das Problem dass der Flash mit dieser Fehlermeldung stehengeblieben ist.
BRY: Exception> 'type_error' - unsupported operand type(s) for <: 'nil' and 'int'Mit deinem Vorschlag die feste Ip mit dem Befehl temporär zu deaktivieren hat es ohne Problem funktioniert.
Könntest du mir erklären warum der Flash mit einer fest zugewiesenen IP fehlschlägt?Vielen Dank vorab
Foradh