NEWS
SONOFF NSPanel mit Lovelace UI
-
zieh mal das orangefarbene Kabel ab und stecke es neu auf:
Da könnte der Wurm drin sein, wenn die Übertragung zwischen ESP32 und TFT abbricht... Zumal ein anderes ja auch funktioniert...
-
@armilar bringt leider auch nichts.
bleibt beim Update mitFlashNextionAdv0 http://nspanel.de/nspanel-v5.0.0.tft
oder Adv0 oder ohne dem immer bei 4784128 stehen.
-
@armilar oder @australien hat das gleiche problem wie ich mit meinem US panel. Das lässt sich pardou nicht auf diesem Weg mit der 4.95 oder der 5.00 in Landsscape (Porträt geht auch) flashen jede andere Version egal ob US oder EU lässt sich auf diesem Weg flashen nur die neusten nicht daher wähle ich beim Update die Möglichkeit das per Nextion Editor per RX/TX zu flashen das funktioniert ohne Probleme und dauert mit Löten gerade mal 5-10 Minuten.
Dazu einen USB to Serial Adapter nutzen den man auch zum Tasmota flashen nutzt. Dann 5V und GND an den Stromanschluss des Display´s und RX an RX und TX an TX an dem extra RX/TX am TFT nicht an den vom ESP des NS Panels
Und nicht vergessen am Adapter die 5V einstellen das Display brauch 5V
Hier ein Bild vom US-Panel
Und hier eins vom EU Panel
Und hier noch eins vom Adapter
-
hier ist es etwas detaillierter beschrieben, wie das NSPanel-TFT direkt per Nextion Editor geflashed wird:
https://github.com/Blackymas/NSPanel_HA_Blueprint/issues/166#issue-1524561202
-
@armilar
Habe dies jetzt mit den 2 Panels gemacht, mal schauen ob dies den Fehler behebt.
Danke noch mal für den Support. -
-
Guten Morgen, ich habe seit einiger zeit diesen Fehler in meinem Log. Habt ihr eine Idee was das sein könnte?
error: javascript.0 (3090) script.js.NS_Panels.Panel_Erdgeschoss_1_0: existsObject has been called with id of type "object" but expects a string -
@venice
version des scripts? Da müsste auch ne Zeilennummer hinter dem Fehler gestanden haben. -
@venice
Wann tritt der Fehler auf. Bei welcher Seite?
Welche Script Version und welche TFT Version?? -
@armilar,
Wollte dir noch mal Rückmeldung geben und dir sagen dass das Problem nicht mehr vorgekommen ist.
Danke für den Support. -
Meine Card für das Ein-/ Ausschalten des Gäste-WLAN-Zuganges und zur Darstellung des QR-Codes sieht so aus:
let WLAN:PageType= { 'type': 'cardQR', 'heading': 'Gäste WLAN', 'subPage': true, 'parent': Start_Panel1, 'items': [ { id: "alias.0.NSPanel.1.GuestWifi", hidePassword: true, // true = Switch; false = Password hideEntity2: false // true = Switch or Password is hide } ] };
Gibt es eine Möglichkeit, beim Ein-/Ausschalter (hideEntity2) dynamisch festzulegen, ob der Schalter dargestellt werden soll oder nicht?
-
@ticaki sagemal ist es ein Bug oder soll so
{ id: 'alias.0.NSPanel.Garten.horstOnline', name: 'Status', offColor: Red, onColor: MSGreen, useValue: true, fontSize: 3}
der alias klann offline und online sein.. wird auch angezeigt allerdings immer in der Farbe MSGreen.. würde bei offline das ding gerne in Rot haben
so ist der alias definiert
{ "_id": "alias.0.NSPanel.Garten.horstOnline.ACTUAL", "common": { "name": "ACTUAL", "role": "state", "type": "mixed", "read": true, "write": false, "alias": { "id": "worx.0.2019501385029008727F.mower.online", "read": "val==true?\"online\":val==false?\"offline\":null" } }, "native": {}, "type": "state", "acl": { "object": 1638, "state": 1638, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" }, "from": "system.adapter.admin.1", "user": "system.user.admin", "ts": 1758280070290 }
-
Kein Bug - bei dir ist das val = 'online' oder 'offline' das ist laut code... - ok also wenn nicht
true
ist es onColorCodeausschnitt:
case 'info': iconId = pageItem.icon !== undefined ? Icons.GetIcon(pageItem.icon) : Icons.GetIcon('gesture-tap-button'); iconId2 = pageItem.icon2 !== undefined ? Icons.GetIcon(pageItem.icon2) : iconId; buttonText = pageItem.buttonText !== undefined ? pageItem.buttonText : existsState(pageItem.id + '.BUTTONTEXT') ? getState(pageItem.id + '.BUTTONTEXT').val : 'PRESS'; if (existsState(pageItem.id + '.COLORDEC')) { iconColor = getState(pageItem.id + '.COLORDEC').val; } else { if (val === true || val === 'true') { iconColor = GetIconColor(pageItem, false, useColors); } else { iconColor = GetIconColor(pageItem, true, useColors); } }
mit COLORDEC sollte es gehen, da muß aber die dec rein:
/** * Converts an RGB color to a 16-bit 565 color format. * * This function takes an RGB color object and converts it to a 16-bit 565 color format. * * @function rgb_dec565 * @param {RGB} rgb - The RGB color object. * @returns {number} The 16-bit 565 color value. */ function rgb_dec565 (rgb: RGB): number { //return ((Math.floor(rgb.red / 255 * 31) << 11) | (Math.floor(rgb.green / 255 * 63) << 5) | (Math.floor(rgb.blue / 255 * 31))); return ((rgb.red >> 3) << 11) | ((rgb.green >> 2) << 5) | (rgb.blue >> 3); }
Also nen Alias anlegen der COLORDEC heißt und die Farbe vorgeben mit der read Funktion mit schalten.
hm COLORDEC muß beschrieben sein, wenn ACTUAL aktualisiert wird - da ist kein delay auf dem Pfad soweit ich sehe.
-
-
Dann passt es ja, ich hab nicht den Pfad von COLORDEC geguckt sondern nur den von ACTUAL.
das hier sieht aber "ist zwar falsch aber kompatible" aus:
if (val === true || val === 'true') { iconColor = GetIconColor(pageItem, false, useColors); } else { iconColor = GetIconColor(pageItem, true, useColors); }
EDIT:
Welche Rolle hat dein Channel? Vielleicht liegt da schon der Fehler.
da kommt als Wert
online
undoffline
die sind bei einem üblichen true vergleich immer wahr und bei einem=== true
Vergleich immer false. -
die Info rolle unterstütz nur Number und boolean.
-
-
@arteck
So rumwühlen ergebnis - geht nichtÄndere hier den code:
EDIT - das ist Käse drunter ist besser
if (existsState(pageItem.id + '.ACTUAL') && (pageItem.icon2 != undefined || pageItem.useValue)) { // Read Alias Datapoint Objectdata let obj = getObject(pageItem.id + ".ACTUAL"); // Read origin Datapoint Objectdata if (existsState(obj.common.alias.id)) { let obj2 = getObject(obj.common.alias.id); // Register Origin Datapoint RegisterEntityWatcher(obj.common.alias.id); // Check Data-Type (This must be boolean) if (obj2.type === 'state' && obj2.common.type == "boolean") { if (Debug) log(getState(obj.common.alias.id).val, 'info'); if (getState(obj.common.alias.id).val) { if (!pageItem.useValue) iconId = pageItem.icon != un defined ? Icons.GetIcon(pageItem.icon) : iconId; iconColor = pageItem.onColor != undefined ? rgb_dec565(pageItem.onColor) : iconColor; } else { if (!pageItem.useValue) iconId = pageItem.icon2 != undefined ? Icons.GetIcon(pageItem.icon2) : iconId; iconColor = pageItem.offColor != undefined ? rgb_dec565(pageItem.offColor) : iconColor; } } } }
Käse ende
Kopiere den if hier der aktuell oberhalb von ^der funktion steht, einfach drunter und füge das useValue in den If ^ wie da ein.
if (pageItem.useValue) { if (pageItem.fontSize != undefined) { if (pageItem.suffixName == undefined) { iconId = optVal + '¬' + pageItem.fontSize; } else { iconId = optVal + pageItem.suffixName + '¬' + pageItem.fontSize; } } else { iconId = optVal; } }
EDIT2 - das müsste eigentlcih dann doch ein BUG sein - Armilar und TT-Tom sind da mehr drin als ich.
-
@ticaki sagte in SONOFF NSPanel mit Lovelace UI:
if (existsState(pageItem.id + '.ACTUAL') && pageItem.icon2 != undefined) {
die Funktion lauft bei der Konfiguration nicht da kein icon2 definiert ist.
{ id: 'alias.0.NSPanel.Garten.horstOnline', name: 'Status', offColor: Red, onColor: MSGreen, useValue: true, fontSize: 3}
also läuft das normal durch
if (pageItem.useValue) { if (pageItem.fontSize != undefined) { if (pageItem.suffixName == undefined) { iconId = optVal + '¬' + pageItem.fontSize; } else { iconId = optVal + pageItem.suffixName + '¬' + pageItem.fontSize; } } else { iconId = optVal; } }
EDIT: Problem ist wirkliche der Text in ACTUAL
EDIT2 bin jetzt am überlegen warum wir nicht COLORDEC da haben, ist doch die Info-rolle, diese Universell sein sollte. -
Bei dem C&P Vorschlag müsste man noch icon2 definieren - richtig - aber dann würde es halt laufen - zum Colordec hab ich ja schon was im discord geschrieben
Wurde gezwungen im adapter überall colordec und buttontext einzubauen ^^