NEWS
Betatest Adapter NSPanel-lovelace-ui v0.16.x
-
Das Anmeckern der Skriptversion liegt an folgendem:
Update your script and/or resend the configurationDu hast zwar im Javascript-Adapter die Skripte geupdatet - jedoch nicht an den Adapter gesendet. Dadurch wird beim Start des Adapter die Skriptversion als veraltet erkannt.
Ich weiß nicht ob ich das ändern soll. Hat i.d.R. keine Nachteile das nicht zu senden. EDIT: Das Überprüfen der Skriptversion ist schon seit einer großen Anzahl von Monaten teils kaputt gewesen)
Den Potenziel längere Startup kann ich mir gerade nicht erklären. Das passiert, wenn der Tasmota sich nicht im MQTT-Server anmelden kann, dann geht er in einen 10 Sekunden Interval der ansteigt. Oder er verpasst den startup - dann geht der Adapter in einen startup interval mit 5 Sekunden delay. Ist mir auch schon gelegentlich aufgefallen - aber meist hats nicht länger gedauert als meine sehr kurze Lunte :)
-
ah, danke, ja das kann sein, dann starte ich die scripte alle mal durch.. ist ja kein fehler.
Was mir auch noch einfaellt.. ich hatte schon den Fall, dass der nspanel-Adapter beim start hing, weil ich den javascript-Adapter gerade gestoppt hatte.. vielleicht kann man das noch irgendwie schoener abfangen .. probiers mal aus.. javascript adapter stop und dann den nspanel adapter neu starten.. der geigt dann ewig rum.. vielleicht soll er sich dann einfach mit fehler beenden? -
oha em hm wirklich?
Ich wüsste nicht das ich sowas eingebaut habe... Ich teste es mal@tt-tom bitte auch mal testen
-
oha em hm wirklich?
Ich wüsste nicht das ich sowas eingebaut habe... Ich teste es mal@tt-tom bitte auch mal testen
@ticaki sagte in Betatest Adapter NSPanel-lovelace-ui v0.13.x:
oha em hm wirklich?
Ich wüsste nicht das ich sowas eingebaut habe... Ich teste es malKann keinen Fehler feststellen. ohne javascript gestartet, während Start abgeschaltet, nach Start abgeschaltet, alles ohne Probleme.
-
ah, danke, ja das kann sein, dann starte ich die scripte alle mal durch.. ist ja kein fehler.
Was mir auch noch einfaellt.. ich hatte schon den Fall, dass der nspanel-Adapter beim start hing, weil ich den javascript-Adapter gerade gestoppt hatte.. vielleicht kann man das noch irgendwie schoener abfangen .. probiers mal aus.. javascript adapter stop und dann den nspanel adapter neu starten.. der geigt dann ewig rum.. vielleicht soll er sich dann einfach mit fehler beenden?@ilovegym sagte in Betatest Adapter NSPanel-lovelace-ui v0.13.x:
Was mir auch noch einfaellt.. ich hatte schon den Fall, dass der nspanel-Adapter beim start hing, weil ich den javascript-Adapter gerade gestoppt hatte.. vielleicht kann man das noch irgendwie schoener abfangen .. probiers mal aus.. javascript adapter stop und dann den nspanel adapter neu starten.. der geigt dann ewig rum.. vielleicht soll er sich dann einfach mit fehler beenden?
Es gibt nur eine stelle wo javascript.0 erwähnt wird und das ist beim erstmaligen erstellen des Skripts - ansonsten gibts im kompletten Backend code keine Erwähnung des Javascript Adapters:
const script: ioBroker.ScriptObject = { type: 'script', _id: scriptId, common: { name: 'Global page configuration', engineType: 'TypeScript/ts', engine: `system.adapter.javascript.0`, source: file, debug: false, verbose: false, enabled: o?.common.enabled ?? true, }, native: {}, };EDIT - 2 mal sind ja 2 skripts :)
-
Hab mir ein kleines ip/internetadressen überwachungsscript geschrieben. das mir ein Popup aufmacht wenn das gerät down ist
Falls es jemand gebrauchen kann:
Ah braucht linux als os - und exec muß erlaubt sein
async function main() { // Einstellungen const intervalTime = 30000; const id = '0_userdata.0.pve2Online'; // Datenpunkt der geändert online status anzeigt const target = '192.168.179.5'; // Adresse die überprüft werden soll string (Komma separierte Liste) const every = false; // true: jede ip muss online sein - false: eine ip muss online sein const nspanelInstance = 0; // Einstellungen Ende const stateObj: iobJS.StateObject = { _id: id, type: 'state', common: { name: 'Ist PVE2 online', desc: target, type: 'boolean', role: 'indicator', def: false, read: true, write: false, }, native: {}, } const targets: string[] = target.split(',').map(entry => { return entry.trim() }) await extendObject(stateObj._id, stateObj); let status = getState(stateObj._id).val send({state: {val: status}}, true); await sleep(15000) const endlessTask = () => { setTimeout(async ()=> { await checkTargets(); endlessTask(); }, intervalTime) } await checkTargets(); endlessTask(); function execPromise(cmd: string): Promise<string> { return new Promise((resolve, reject) => { exec(cmd, (err, stdout) => { if (err) return reject(err); resolve(stdout); }); }); } async function checkTargets() { const promises = targets.map(t => execPromise('ping -qc 2 ' + t) .then(res => { let should: string|number = res.substring( res.indexOf('statistics ---') + 'statistics ---'.length, res.indexOf(' packets transmitted') ); should = Number(should); let current: string|number = res.substring( res.indexOf('transmitted, ') + 'transmitted, '.length, res.indexOf('received') ); current = Number(current); return should && should === current; }) .catch(() => { log(`${t} is offline`) }) ); const results = await Promise.all(promises); setState(stateObj._id, every ? results.every(Boolean) : results.some(Boolean), true); } on({id: stateObj._id, change: 'ne'}, send) function send(obj, first?: boolean) { if (!first && obj.state.val === status) return; status = obj.state.val sendRetry(); } let timeoutRetry = undefined async function sendRetry() { if (timeoutRetry) clearTimeout(timeoutRetry) try { if (!getState(`system.adapter.nspanel-lovelace-ui.${nspanelInstance}.alive`).val) throw new Error ('adapter offline'); if (!status) await sendToAsync(`nspanel-lovelace-ui.${nspanelInstance}`, 'setPopupNotification', { id: 'PVE2Check', headline: 'Kritischer Fehler', text: 'PVE2 ist offline', priority: 30, colorHeadline: '#FF0000', textSize: 3, type: 'acknowledge', buttonRight: 'Ok' },{timeout:5000}) else await sendToAsync(`nspanel-lovelace-ui.${nspanelInstance}`, 'setPopupNotification', { id: 'PVE2Check', headline: 'Kritischer Fehler', text: 'PVE2 ist online', priority: -1 }, {timeout:5000}) } catch { timeoutRetry = setTimeout(sendRetry, 10000); } } } main() -
Wenn ihr obriges Skript verwendet oder anderweitig popups an den Adapter schickt - (sendTo Befehl
setPopupNotification)Bitte lesen:
In der nächsten Version des Adapters wird
await sendToAsync('adapter', 'setPopupNotification', ... );einen Fehler zurück gegen wenn kein Panel online ist. Heißt das muß zwingend in einemtry {} catch {}Block stehen.Das Skript oben wurde angepasst um (ab Version > 0.15.2)
- zu gucken ob der Adapter überhaupt online ist (beim restart kommt zuerst der Javascript Adapter und dann deutlich später wird erst Nspanel gestartet)
- Abfangen von timeout fehler, weil Adapter doch noch nicht bereit ist
- Abfangen von Panel ist nicht online Fehler, weil Adapter zwar da aber noch keines der Panels überhaupt bereit ist ein Popup anzuzeigen. (sobald 1 online ist, gibts keinen Fehler mehr - speziellere Abfragen bitte selbst über states lösen, siehe die adapter alive abfrage im skript)
- 1 weitere Fehler wurde im Skript behoben.
Wenn das Nicht beachtet wird, wird der "Fehler" bis nach oben im Javascript-Adapter durchlaufen und dort einen Restart auslösen.
Für Leutz die viel mit Javascript machen ist das ne gute Lösung - andere könnten sich ärgern weil "Wieso schießt das Skript meinen Javascript-Adapter ab - was ein Murks" :)
deshalb ne Vorwarnung - wegen dem timeout sollte
await sendToAsync()eh immer in einemtryblock sein.sendToohne await und async ist davon nicht betroffen. -
0.15.4 (2026-04-04)
- (tt-tom17) fixed: iCal / trash page – date display year format (2-digit vs. 4-digit) was swapped for short and long item lists
- (ticaki) fixed: panel rule timer increased from 120 s to 140 s to reduce false "panel disconnected" events after startup
- (ticaki) fixed:
setPopupNotificationnow returns{ error: 'No Panels Online' }via callback when no panel is online instead of silently ignoring the call
Die "panel rule" Begründung von copilot ist quark - hat damit was zu tun das 2 mal die Aktualisierung der Uhrzeit verpasst werden muß bevor er in den "wait for content" geht.
-
0.16.0 (2026-04-09)
- (ticaki) feat: new visual page editor in the admin UI – configure cardGrid, cardGrid2, cardGrid3, cardEntities and cardSchedule pages including their items directly in the admin.
Die Pageitems haben noch bei weitem nicht alle Optionen - aber das kommt noch.
-
Die nächste Version kommt wohl gleich ins latest wird dann im laufe des Tages verfügbar.
Es kommt sehr sehr sehr selten vor das man was an einem vorhandenen Skript ändern muß - nur ab und an muß das Skript updaten, wenn da die Version erhöht wurde (geht per klick) und dann angucken und neu an den adapter schicken - damit nix meckert (aber der Adapter meckert in 99,9% der Fälle nur das die Version falsch ist, ohne Konsequenzen.
Ah noch was - Expert immer an
Wenn du zu diesen Personen gehörst bitte etwas vorsichtig sein und den mal ausschalten - alles was im Admin bei Expert zusätzlich gezeigt wird ist entweder tatsächlich für experten oder experimentell oder entwicklerkram :)
Ahh ok, denke wenn es einmal eingerichtet ist wird es mit dem Adapter wirklich einfacher. Die Seiten Erstellung wird wieder spannend werden, aber wenn ich alles richtig verstanden habe bleiben die Aliase ja gleich. Das hieße dann ich müsste wirklich nur die Seiten neu erstellen. Und von Vorteil eine mqtt Instanz wäre auch weg, was dann der Adapter übernehmen würde.
Die Aliase bleiben teils gleich - jeder State muß die richtige Role haben, das ist wichtiger als die Bezeichnung. Das hat aber den Nebeneffekt das andere Adapter die aliase ebenfalls verwenden können. siehe hier: https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/blob/main/ALIAS.md
Und ich weiß nicht wie beim Script dieses
inSelPopup heißt - im adapter heißt es in der roleselectda bin ich hart geblieben :D.Den großteil der Seiten kannst du kopieren - und die nötigen Anpassungen vornehmen. Der Adapter braucht einen
uniqueNamepro Seite und next prev usw müssen ein String sein und den uniqueName der Zielseite enthalten - gleiches gilt für targetPage.Specialseiten unterscheiden sich aber teils deutlich - heißt Thermo2 / Mediaplayer das weiß ich aus dem Kopf nicht.
Die seiten selbst werden ja auch im Adapter erstellt, also ich brauche kein Script mehr in der Java Instanz?
Das stimmt so nicht - du hast die möglichkeit einige Seiten über den Admin zu konfigurieren, jedoch gibt es zu jedem panel ein Konfigurationsscript das an den Adapter geschickt werden muss. Wenn du ein Panel hinzufügst , wir ein Skript dazu im Scriptadapter angelegt - das muß du wenn das hinzufügen abgeschlossen ist, an den Adapter schicken. Beim ersten Panel kann es sein dass du dann den Adapter neustarten mußt.
Edit: der Adapter hilft aber deutlich mehr bei Fehlkonfigurationen z.B.:


Der Detailsdialog ist das was auch im Skript beim versenden zurück kommt, oder im log steht - im log kann aber noch mehr stehen.
-
Und wenn ich dann schon mal dabei bin so sieht das erstellen der Grid/Entities aus:

Mit:
- verschieben
- copy & paste
- löschen
native ist was für Leute... naja eigentlich nur was für mich und für templates
-
0.16.1 (2026-04-09)
- (ticaki) The native configuration in pageitems is available to everyone. It corresponds exactly to the script configuration for a page item.
War nicht gedacht das es nur für mich ist - jetzt ist es für jeden :D
und wenn ihr das von dem Skript in das Admin-Jsonfeld kopiert braucht ihr den link:
https://jsonlint.com/json-repair
Ohne die Chatbots wäre diese Adminoberfläche nie wirklichkeit geworden :)
-
Die nächste Version kommt wohl gleich ins latest wird dann im laufe des Tages verfügbar.
Es kommt sehr sehr sehr selten vor das man was an einem vorhandenen Skript ändern muß - nur ab und an muß das Skript updaten, wenn da die Version erhöht wurde (geht per klick) und dann angucken und neu an den adapter schicken - damit nix meckert (aber der Adapter meckert in 99,9% der Fälle nur das die Version falsch ist, ohne Konsequenzen.
Ah noch was - Expert immer an
Wenn du zu diesen Personen gehörst bitte etwas vorsichtig sein und den mal ausschalten - alles was im Admin bei Expert zusätzlich gezeigt wird ist entweder tatsächlich für experten oder experimentell oder entwicklerkram :)
Ahh ok, denke wenn es einmal eingerichtet ist wird es mit dem Adapter wirklich einfacher. Die Seiten Erstellung wird wieder spannend werden, aber wenn ich alles richtig verstanden habe bleiben die Aliase ja gleich. Das hieße dann ich müsste wirklich nur die Seiten neu erstellen. Und von Vorteil eine mqtt Instanz wäre auch weg, was dann der Adapter übernehmen würde.
Die Aliase bleiben teils gleich - jeder State muß die richtige Role haben, das ist wichtiger als die Bezeichnung. Das hat aber den Nebeneffekt das andere Adapter die aliase ebenfalls verwenden können. siehe hier: https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/blob/main/ALIAS.md
Und ich weiß nicht wie beim Script dieses
inSelPopup heißt - im adapter heißt es in der roleselectda bin ich hart geblieben :D.Den großteil der Seiten kannst du kopieren - und die nötigen Anpassungen vornehmen. Der Adapter braucht einen
uniqueNamepro Seite und next prev usw müssen ein String sein und den uniqueName der Zielseite enthalten - gleiches gilt für targetPage.Specialseiten unterscheiden sich aber teils deutlich - heißt Thermo2 / Mediaplayer das weiß ich aus dem Kopf nicht.
Die seiten selbst werden ja auch im Adapter erstellt, also ich brauche kein Script mehr in der Java Instanz?
Das stimmt so nicht - du hast die möglichkeit einige Seiten über den Admin zu konfigurieren, jedoch gibt es zu jedem panel ein Konfigurationsscript das an den Adapter geschickt werden muss. Wenn du ein Panel hinzufügst , wir ein Skript dazu im Scriptadapter angelegt - das muß du wenn das hinzufügen abgeschlossen ist, an den Adapter schicken. Beim ersten Panel kann es sein dass du dann den Adapter neustarten mußt.
Edit: der Adapter hilft aber deutlich mehr bei Fehlkonfigurationen z.B.:


Der Detailsdialog ist das was auch im Skript beim versenden zurück kommt, oder im log steht - im log kann aber noch mehr stehen.
Die nächste Version kommt wohl gleich ins latest wird dann im laufe des Tages verfügbar.
Es kommt sehr sehr sehr selten vor das man was an einem vorhandenen Skript ändern muß - nur ab und an muß das Skript updaten, wenn da die Version erhöht wurde (geht per klick) und dann angucken und neu an den adapter schicken - damit nix meckert (aber der Adapter meckert in 99,9% der Fälle nur das die Version falsch ist, ohne Konsequenzen.
Ah noch was - Expert immer an
Wenn du zu diesen Personen gehörst bitte etwas vorsichtig sein und den mal ausschalten - alles was im Admin bei Expert zusätzlich gezeigt wird ist entweder tatsächlich für experten oder experimentell oder entwicklerkram :)
Ahh ok, denke wenn es einmal eingerichtet ist wird es mit dem Adapter wirklich einfacher. Die Seiten Erstellung wird wieder spannend werden, aber wenn ich alles richtig verstanden habe bleiben die Aliase ja gleich. Das hieße dann ich müsste wirklich nur die Seiten neu erstellen. Und von Vorteil eine mqtt Instanz wäre auch weg, was dann der Adapter übernehmen würde.
Die Aliase bleiben teils gleich - jeder State muß die richtige Role haben, das ist wichtiger als die Bezeichnung. Das hat aber den Nebeneffekt das andere Adapter die aliase ebenfalls verwenden können. siehe hier: https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/blob/main/ALIAS.md
Und ich weiß nicht wie beim Script dieses
inSelPopup heißt - im adapter heißt es in der roleselectda bin ich hart geblieben :D.Den großteil der Seiten kannst du kopieren - und die nötigen Anpassungen vornehmen. Der Adapter braucht einen
uniqueNamepro Seite und next prev usw müssen ein String sein und den uniqueName der Zielseite enthalten - gleiches gilt für targetPage.Specialseiten unterscheiden sich aber teils deutlich - heißt Thermo2 / Mediaplayer das weiß ich aus dem Kopf nicht.
Die seiten selbst werden ja auch im Adapter erstellt, also ich brauche kein Script mehr in der Java Instanz?
Das stimmt so nicht - du hast die möglichkeit einige Seiten über den Admin zu konfigurieren, jedoch gibt es zu jedem panel ein Konfigurationsscript das an den Adapter geschickt werden muss. Wenn du ein Panel hinzufügst , wir ein Skript dazu im Scriptadapter angelegt - das muß du wenn das hinzufügen abgeschlossen ist, an den Adapter schicken. Beim ersten Panel kann es sein dass du dann den Adapter neustarten mußt.
Edit: der Adapter hilft aber deutlich mehr bei Fehlkonfigurationen z.B.:


Der Detailsdialog ist das was auch im Skript beim versenden zurück kommt, oder im log steht - im log kann aber noch mehr stehen.
Danke für die Erklärung, ich denke ich werde dann spätestens nächstes we mit den Panels umziehen. Denke die seiten die gehen müssen mit Licht usw. iin den Räumen bekomme ich hin. Sind eigentlich nur jeweils zwei Seiten mit Schaltern. Die müssen gehen weil sonst gibt es Ärger mit der "Regierung" :-). Gibt es eine Beispiel seiten config mit einfachen Schaltern wo man den Script sieht wie er aufgebaut ist? Das würde mir ungemein helfen.
-
Und wenn ich dann schon mal dabei bin so sieht das erstellen der Grid/Entities aus:

Mit:
- verschieben
- copy & paste
- löschen
native ist was für Leute... naja eigentlich nur was für mich und für templates
-
Die nächste Version kommt wohl gleich ins latest wird dann im laufe des Tages verfügbar.
Es kommt sehr sehr sehr selten vor das man was an einem vorhandenen Skript ändern muß - nur ab und an muß das Skript updaten, wenn da die Version erhöht wurde (geht per klick) und dann angucken und neu an den adapter schicken - damit nix meckert (aber der Adapter meckert in 99,9% der Fälle nur das die Version falsch ist, ohne Konsequenzen.
Ah noch was - Expert immer an
Wenn du zu diesen Personen gehörst bitte etwas vorsichtig sein und den mal ausschalten - alles was im Admin bei Expert zusätzlich gezeigt wird ist entweder tatsächlich für experten oder experimentell oder entwicklerkram :)
Ahh ok, denke wenn es einmal eingerichtet ist wird es mit dem Adapter wirklich einfacher. Die Seiten Erstellung wird wieder spannend werden, aber wenn ich alles richtig verstanden habe bleiben die Aliase ja gleich. Das hieße dann ich müsste wirklich nur die Seiten neu erstellen. Und von Vorteil eine mqtt Instanz wäre auch weg, was dann der Adapter übernehmen würde.
Die Aliase bleiben teils gleich - jeder State muß die richtige Role haben, das ist wichtiger als die Bezeichnung. Das hat aber den Nebeneffekt das andere Adapter die aliase ebenfalls verwenden können. siehe hier: https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/blob/main/ALIAS.md
Und ich weiß nicht wie beim Script dieses
inSelPopup heißt - im adapter heißt es in der roleselectda bin ich hart geblieben :D.Den großteil der Seiten kannst du kopieren - und die nötigen Anpassungen vornehmen. Der Adapter braucht einen
uniqueNamepro Seite und next prev usw müssen ein String sein und den uniqueName der Zielseite enthalten - gleiches gilt für targetPage.Specialseiten unterscheiden sich aber teils deutlich - heißt Thermo2 / Mediaplayer das weiß ich aus dem Kopf nicht.
Die seiten selbst werden ja auch im Adapter erstellt, also ich brauche kein Script mehr in der Java Instanz?
Das stimmt so nicht - du hast die möglichkeit einige Seiten über den Admin zu konfigurieren, jedoch gibt es zu jedem panel ein Konfigurationsscript das an den Adapter geschickt werden muss. Wenn du ein Panel hinzufügst , wir ein Skript dazu im Scriptadapter angelegt - das muß du wenn das hinzufügen abgeschlossen ist, an den Adapter schicken. Beim ersten Panel kann es sein dass du dann den Adapter neustarten mußt.
Edit: der Adapter hilft aber deutlich mehr bei Fehlkonfigurationen z.B.:


Der Detailsdialog ist das was auch im Skript beim versenden zurück kommt, oder im log steht - im log kann aber noch mehr stehen.
Danke für die Erklärung, ich denke ich werde dann spätestens nächstes we mit den Panels umziehen. Denke die seiten die gehen müssen mit Licht usw. iin den Räumen bekomme ich hin. Sind eigentlich nur jeweils zwei Seiten mit Schaltern. Die müssen gehen weil sonst gibt es Ärger mit der "Regierung" :-). Gibt es eine Beispiel seiten config mit einfachen Schaltern wo man den Script sieht wie er aufgebaut ist? Das würde mir ungemein helfen.
Sind eigentlich nur jeweils zwei Seiten mit Schaltern.
Vielleicht schaffe ich es bis zum WE eine Kurzanleitung für die neue CardMenue ins Wiki zu stellen.
hier schon mal die allgemeine Erklärung https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki/PageConfig -
Sind eigentlich nur jeweils zwei Seiten mit Schaltern.
Vielleicht schaffe ich es bis zum WE eine Kurzanleitung für die neue CardMenue ins Wiki zu stellen.
hier schon mal die allgemeine Erklärung https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki/PageConfigSind eigentlich nur jeweils zwei Seiten mit Schaltern.
Vielleicht schaffe ich es bis zum WE eine Kurzanleitung für die neue CardMenue ins Wiki zu stellen.
hier schon mal die allgemeine Erklärung https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki/PageConfigin der Wiki finden sich auch beispiele für die Skriptkonfiguration
-
0.16.2 (2026-04-09)
- (ticaki) fixed: channel duplicate error
- (tt-tom17) fixed: ChannelConfigDialog – error messages (datapointErrors, datapointDuplicates, checkResult) are now properly reset when reopening the dialog
-
Sind eigentlich nur jeweils zwei Seiten mit Schaltern.
Vielleicht schaffe ich es bis zum WE eine Kurzanleitung für die neue CardMenue ins Wiki zu stellen.
hier schon mal die allgemeine Erklärung https://github.com/ticaki/ioBroker.nspanel-lovelace-ui/wiki/PageConfig
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen Beiträge zu scrollen? Wenn du dich für ein Konto anmeldest, kommst du immer genau dorthin zurück, wo du zuvor warst, und kannst dich über neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und Beiträge positiv bewerten, um anderen Community-Mitgliedern deine Wertschätzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden 💗
Registrieren Anmelden