NEWS
SONOFF NSPanel mit Lovelace UI
-
@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
-
@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', };
-
@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. -
@armilar
Danke für die schnelle Rückmeldung,
Versuchs mal , neue ist schon unterwegs -
Die Firmware sollte in der Tasmota-Konsole mit (Achtung neue URL)
FlashNextion http://nspanel.de/nspanel-4.5.0.tft
aktualisiert 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