NEWS
SONOFF NSPanel mit Lovelace UI
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
Danke für die Hilfe vorhin mit der Fußbodenheizung in die Runde.
Eine weitere Frage die ich noch habe ist mit dem anlegen der Media Seite. Habe eben gelesen das es da mit dem Geräte Manager einige Probleme gibt und im Wiki steht, dass man die vorgefertigten Skripte nehmen soll.
Daher meine Frage: Gibt es hier jemanden, der Zuhause ein NSPanel und einen Logitech Media Server einsetzt und dafür ein Skript bereits geschrieben hat, denn über diesen Server kommt man dann ja sowohl an Spotify, als auch an alle Radiostationen. Die Squeezeboxen gibt es ja als Adapter im iobroker.
Ich benutze den in vielen Räumen mit Picoreplayern auf Raspberry Pi Basis oder mit den Fire TV Sticks bzw. Cubes und Android App (Leider geht audible immer noch nicht): Nutze dies auch als Multiroom Lösung.
Würde mich über eine Rückmeldung freuen, evtl. auch über eine Ergänzung im Wiki.
Beste Grüße und Danke an die tolle Arbeit!
Gruß Elluminatus
Was hat denn der "Logitech Media Server" für Datenpunkte? Poste doch bitte mal einen Auszug aus den Objekten
Im Prinzip sind die Skripte ja alle gleich aufgebaut, greifen lediglich auf unterschiedliche Datenpunkte der Adapter zu. Somit sollte die Alias-Verdrahtung zu einem anderen Adapter echt leicht umsetzbar sein.
Im TS-Skript habe ich für diesen Fall auch bereits Optionen hinterlegt, die funktionieren sollten. Das heißt - wenn ein weiterer Adapter seine Arbeit verrichten sollte, als die aufgeführten.
-
@armilar Danke für die weitere Antwort, hier also die Bilder der Datenpunkte:
Und dies gibt es für jedes Abspielgerät. Es wäre also auch
theoretisch möglich, hier für diverse Räume die Lautstärke individuell zu regeln etc...Ich hoffe ich habe das so richtig gemacht?
Beste Grüße
Elluminatus -
Ich schätze mal vor dem piCoreKUE steht noch ein squeezeboxrpc.0., oder? Wir machen uns jetzt erstmal an einen Player...
-
@armilar ja: squeezeboxrpc.0.Players.piCoreKUE
-
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
Versuche das mal auszuführen als JS-Script:
const aliasPath = 'alias.0.NSPanel_1.Media'; // ggfs. Anpassen const aliasDevice = 'SqueezeBoxRPC'; // ggfs. Anpassen //Ergibt alias.0.NSPanel_1.Media.SqueezeBoxRPC const squeezeBoxInstanz = 'squeezeboxrpc.0.Players.'; // Anpasssen, wenn nicht Instanz 0 const squeezeBoxDevice = 'piCoreKUE'; // Anpassen an dein eigenes Device var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom; function createAlias(idDst, idName,idSrc, idRd, idType, idRole, idAliasType) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = idType; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; obj.common.type = idAliasType; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; obj.common.name = idName; obj.common.role = idRole; obj.common.desc = idDst; if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj); } } createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ALBUM', 'ALBUM', squeezeBoxInstanz + squeezeBoxDevice + '.Album', '', 'state', 'media.album', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ARTIST', 'ARTIST', squeezeBoxInstanz + squeezeBoxDevice + '.Artist', '', 'state', 'media.artist', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.TITLE', 'TITLE', squeezeBoxInstanz + squeezeBoxDevice + '.Title', '', 'state', 'media.title', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.NEXT', 'NEXT', squeezeBoxInstanz + squeezeBoxDevice + '.btnForward', '', 'state', 'button.next', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PREV', 'PREV', squeezeBoxInstanz + squeezeBoxDevice + '.btnRewind', '', 'state', 'button.prev', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PLAY', 'PLAY', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'button.play', 'number'); createAlias(aliasPath + '.' + aliasDevice + '.PAUSE', 'PAUSE', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'button.pause', 'number'); createAlias(aliasPath + '.' + aliasDevice + '.STOP', 'STOP', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'button.stop', 'number'); createAlias(aliasPath + '.' + aliasDevice + '.STATE', 'STATE', squeezeBoxInstanz + squeezeBoxDevice + '.POWER', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME', 'VOLUME', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'level.volume', 'number'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME_ACTUAL', 'VOLUME_ACTUAL', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'value.volume', 'number');
Wenn sich der Anlegen lässt sollte eigentlich schon etwas funktionieren. Nur an Play, Pause und Stop müssen wir dann noch arbeiten, weil die alle in einem Datenpunkt "state" enthalten sind. Habe ich so auch noch nicht gesehen...
Da sollten anschließend noch Funktionen rein die entsprechend "0, 1, 2" in "true" und "false" umwandeln.
Edit: Bin dann für heute auch erstmal Offline... Kannst ja noch kurz sagen/zeigen ob etwas funktioniert.
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar Hier noch der Link zum Adapter: Hier und hier
Und noch generell die Frage, kann man eigebtlich überall bei den Karten wo man Eingaben machen muss, auch diese Touch Kreise nutzen bspw. beim Thermostat für die Eingabe der Gradzahl oder eben hier bei der Eingabe der Lautstärke?
Nein, das sieht die HMI von @joBr99 nicht vor. Das ist das Design im Nextion-Editor. Nur wie in den Beispielen abgebildet.
-
@armilar Habe einen Fehler bekommen:
22:59:38.608 error javascript.0 (10558) script.js.common.NSPanel.LMS: ReferenceError: aliasPath is not defined 22:59:38.608 error javascript.0 (10558) at script.js.common.NSPanel.LMS:39:13 22:59:38.608 error javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
-
@armilar Kein Problem, ist ja trotzdem ein Hammer
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar Habe einen Fehler bekommen:
22:59:38.608 error javascript.0 (10558) script.js.common.NSPanel.LMS: ReferenceError: aliasPath is not defined 22:59:38.608 error javascript.0 (10558) at script.js.common.NSPanel.LMS:39:13 22:59:38.608 error javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
Versuche noch mal das... Hatte auch vergessen zu sagen, dass im JavaScript-Adapter aktiviert sein muss.
const aliasPath = 'alias.0.NSPanel_1.Media'; // ggfs. Anpassen const aliasDevice = 'SqueezeBoxRPC'; // ggfs. Anpassen //Ergibt alias.0.NSPanel_1.Media.SqueezeBoxRPC const squeezeBoxInstanz = 'squeezeboxrpc.0.Players.'; // Anpasssen, wenn nicht Instanz 0 const squeezeBoxDevice = 'piCoreKUE'; // Anpassen an dein eigenes Device var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom; function createAlias(idDst, idName,idSrc, idRd, idType, idRole, idAliasType) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = idType; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; obj.common.type = idAliasType; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; obj.common.name = idName; obj.common.role = idRole; obj.common.desc = idDst; if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj); } } createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ALBUM', 'ALBUM', squeezeBoxInstanz + squeezeBoxDevice + '.Album', '', 'state', 'media.album', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ARTIST', 'ARTIST', squeezeBoxInstanz + squeezeBoxDevice + '.Artist', '', 'state', 'media.artist', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.TITLE', 'TITLE', squeezeBoxInstanz + squeezeBoxDevice + '.Title', '', 'state', 'media.title', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.NEXT', 'NEXT', squeezeBoxInstanz + squeezeBoxDevice + '.btnForward', '', 'state', 'button.forward', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PREV', 'PREV', squeezeBoxInstanz + squeezeBoxDevice + '.btnRewind', '', 'state', 'button.reverse', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PLAY', 'PLAY', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PAUSE', 'PAUSE', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.STOP', 'STOP', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.STATE', 'STATE', squeezeBoxInstanz + squeezeBoxDevice + '.Power', '', 'state', 'switch', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME', 'VOLUME', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'level.volume', 'number'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME_ACTUAL', 'VOLUME_ACTUAL', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'value.volume', 'number');
Danach sollte unter alias.0.NSPanel_1.Media dieser Alias stehen.
Wenn das funktioniert, dann aus den Beispielen im TS-Script einfach einen Media-Player nehmen und den Alias unter pageItems eintragen.
Danach kommt das eigentliche Problem des Adapters...
Du suchst in den alias.0.NSPanel_1.Media... Objekten nach den PAUSE, PLAY und STOP und klickst hinten auf den Stift und gehtst dann in den 3. Tab ALIAS. Dort den Haken in "Konvertierungsfunktionen benutzen"
Folgende Werte eintragen:
Das sollte es eigentlich gewesen sein
-
@armilar Ich bekomme einen Fehler. Den Pfad squeezeboxrpc.0.Players.piCoreKUE gibt es aber, habe gerade nachgeschaut, hmm
00:10:22.196 info javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS 00:10:22.207 warn javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist 00:10:22.208 info javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 00:10:22.210 error javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common') 00:10:22.210 error javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35) 00:10:22.210 error javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1 00:10:22.211 error javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
Der Haken bei SetObject ist bereits gesetzt
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar Ich bekomme einen Fehler. Den Pfad squeezeboxrpc.0.Players.piCoreKUE gibt es aber, habe gerade nachgeschaut, hmm
00:10:22.196 info javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS 00:10:22.207 warn javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist 00:10:22.208 info javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 00:10:22.210 error javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common') 00:10:22.210 error javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35) 00:10:22.210 error javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1 00:10:22.211 error javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
Der Haken bei SetObject ist bereits gesetzt
Kopier es nochmal. Habe noch Änderungen in den Rollen gemacht. Kann es ja leider nicht selbst testen
-
@armilar Hab es nochmal kopiert, leider derselbe Fehler:
00:27:57.980 info javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS 00:27:57.991 warn javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist 00:27:57.992 info javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 00:27:57.994 error javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common') 00:27:57.995 error javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35) 00:27:57.995 error javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1 00:27:57.995 error javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
Hier nochmal zur Kontrolle was ich eingefügt habe:
const aliasPath = 'alias.0.Media.WT_KE_HWR'; // ggfs. Anpassen const aliasDevice = 'SqueezeBoxRPC'; // ggfs. Anpassen //Ergibt alias.0.NSPanel_1.Media.SqueezeBoxRPC const squeezeBoxInstanz = 'squeezeboxrpc.0.Players.'; // Anpasssen, wenn nicht Instanz 0 const squeezeBoxDevice = 'piCoreKUE'; // Anpassen an dein eigenes Device var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom; function createAlias(idDst, idName,idSrc, idRd, idType, idRole, idAliasType) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = idType; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; obj.common.type = idAliasType; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; obj.common.name = idName; obj.common.role = idRole; obj.common.desc = idDst; if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj); } } createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ALBUM', 'ALBUM', squeezeBoxInstanz + squeezeBoxDevice + '.Album', '', 'state', 'media.album', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ARTIST', 'ARTIST', squeezeBoxInstanz + squeezeBoxDevice + '.Artist', '', 'state', 'media.artist', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.TITLE', 'TITLE', squeezeBoxInstanz + squeezeBoxDevice + '.Title', '', 'state', 'media.title', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.NEXT', 'NEXT', squeezeBoxInstanz + squeezeBoxDevice + '.btnForward', '', 'state', 'button.forward', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PREV', 'PREV', squeezeBoxInstanz + squeezeBoxDevice + '.btnRewind', '', 'state', 'button.reverse', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PLAY', 'PLAY', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PAUSE', 'PAUSE', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.STOP', 'STOP', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.STATE', 'STATE', squeezeBoxInstanz + squeezeBoxDevice + '.Power', '', 'state', 'switch', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME', 'VOLUME', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'level.volume', 'number'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME_ACTUAL', 'VOLUME_ACTUAL', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'value.volume', 'number');
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar Hab es nochmal kopiert, leider derselbe Fehler:
00:27:57.980 info javascript.0 (10558) Start javascript script.js.common.NSPanel.LMS 00:27:57.991 warn javascript.0 (10558) script.js.common.NSPanel.LMS: Object "squeezeboxrpc.0.Players.piCoreKUE" does not exist 00:27:57.992 info javascript.0 (10558) script.js.common.NSPanel.LMS: registered 0 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 00:27:57.994 error javascript.0 (10558) script.js.common.NSPanel.LMS: TypeError: Cannot read properties of null (reading 'common') 00:27:57.995 error javascript.0 (10558) at createAlias (script.js.common.NSPanel.LMS:15:35) 00:27:57.995 error javascript.0 (10558) at script.js.common.NSPanel.LMS:39:1 00:27:57.995 error javascript.0 (10558) at script.js.common.NSPanel.LMS:51:3
Hier nochmal zur Kontrolle was ich eingefügt habe:
const aliasPath = 'alias.0.Media.WT_KE_HWR'; // ggfs. Anpassen const aliasDevice = 'SqueezeBoxRPC'; // ggfs. Anpassen //Ergibt alias.0.NSPanel_1.Media.SqueezeBoxRPC const squeezeBoxInstanz = 'squeezeboxrpc.0.Players.'; // Anpasssen, wenn nicht Instanz 0 const squeezeBoxDevice = 'piCoreKUE'; // Anpassen an dein eigenes Device var typeAlias, read, write, nameAlias, role, desc, min, max, unit, states, custom; function createAlias(idDst, idName,idSrc, idRd, idType, idRole, idAliasType) { if(existsState(idDst)) log(idDst + ' schon vorhanden !', 'warn'); else { var obj = {}; obj.type = idType; obj.common = getObject(idSrc).common; obj.common.alias = {}; if(idRd) { obj.common.alias.id = {}; obj.common.alias.id.read = idRd; obj.common.alias.id.write = idSrc; obj.common.read = true; } else obj.common.alias.id = idSrc; obj.common.type = idAliasType; if(obj.common.read !== false && read) obj.common.alias.read = read; if(obj.common.write !== false && write) obj.common.alias.write = write; obj.common.name = idName; obj.common.role = idRole; obj.common.desc = idDst; if(min !== undefined) obj.common.min = min; if(max !== undefined) obj.common.max = max; if(unit) obj.common.unit = unit; obj.common.states = states; if(custom && obj.common.custom) obj.common.custom = custom; obj.native = {}; setObject(idDst, obj); } } createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ALBUM', 'ALBUM', squeezeBoxInstanz + squeezeBoxDevice + '.Album', '', 'state', 'media.album', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.ARTIST', 'ARTIST', squeezeBoxInstanz + squeezeBoxDevice + '.Artist', '', 'state', 'media.artist', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.TITLE', 'TITLE', squeezeBoxInstanz + squeezeBoxDevice + '.Title', '', 'state', 'media.title', 'string'); createAlias(aliasPath + '.' + aliasDevice + '.NEXT', 'NEXT', squeezeBoxInstanz + squeezeBoxDevice + '.btnForward', '', 'state', 'button.forward', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PREV', 'PREV', squeezeBoxInstanz + squeezeBoxDevice + '.btnRewind', '', 'state', 'button.reverse', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PLAY', 'PLAY', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.PAUSE', 'PAUSE', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.STOP', 'STOP', squeezeBoxInstanz + squeezeBoxDevice + '.state', '', 'state', 'media.state', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.STATE', 'STATE', squeezeBoxInstanz + squeezeBoxDevice + '.Power', '', 'state', 'switch', 'boolean'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME', 'VOLUME', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'level.volume', 'number'); createAlias(aliasPath + '.' + aliasDevice + '.VOLUME_ACTUAL', 'VOLUME_ACTUAL', squeezeBoxInstanz + squeezeBoxDevice + '.Volume', '', 'state', 'value.volume', 'number');
kommentiere das erste createAlias´mal aus (Zeile 39)
//createAlias(aliasPath + '.' + aliasDevice, '', squeezeBoxInstanz + squeezeBoxDevice, '', 'channel', 'media', 'string');
-
@armilar Das ist jetzt ohne Fehler durchgelaufen. Kannst Du mir kurz helfen, was als nächstes gemacht werden muss? Muss ich jetzt einenAlias mit Media anlegen oder im Vorfeld den Erfolg nochmal überprüfen? Danke für Deinen Einsatz.
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar Das ist jetzt ohne Fehler durchgelaufen. Kannst Du mir kurz helfen, was als nächstes gemacht werden muss? Muss ich jetzt einenAlias mit Media anlegen oder im Vorfeld den Erfolg nochmal überprüfen? Danke für Deinen Einsatz.
Unter Objekte Alias findest du deinen neuen Media-Alias (der im Moment aber keiner ist)
Gehe mal in den Ordner (hier im Bild blau) und klicke auf den Stift am Ende. Im ersten Tab sollte "media" unter Rolle eingetragen werden
Jetzt ist es ein Media-Alias
Im Anschluss folgst du der Beschreibung von gestern:
https://forum.iobroker.net/post/867924Das hatten wir aber auch schon einfacher
-
@armilar Jetzt muss ich doch nochmal nachfragen, also ich habe da in den Alias jetzt die ganzen Einträge wie bspw. Album etc.
Aber ich sehe den von Dir benannten Stift nicht am Ende?
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar Jetzt muss ich doch nochmal nachfragen, also ich habe da in den Alias jetzt die ganzen Einträge wie bspw. Album etc.
Aber ich sehe den von Dir benannten Stift nicht am Ende?
Schalte mal in den Expertenmodus...
Kannst du wahrscheinlich dann auch schon mit klick auf den Bereich erledigen
oder unter Objektdaten wäre es dann in etwa so:
{ "type": "channel", "common": { "name": "", "alias": { "id": "squeezeboxrpc.0.Players.piCoreKUE" }, "type": "string", "role": "media", "desc": "alias.0.NSPanel_1.Media.SqueezeBoxRPC" }, "native": {}, "from": "system.adapter.javascript.0", "user": "system.user.admin", "ts": 1664852646982, "_id": "alias.0.NSPanel_1.Media.SqueezeBoxRPC", "acl": { "object": 1636, "owner": "system.user.admin", "ownerGroup": "system.group.administrator" } }
Dann kannst du auch gleich als type "channel" mitgeben.
-
@armilar
Ich kann leider nichts davon machen, ich habe kein Zahnrad, keinen Stift und kann nicht auf die Objektdaten zugreifen und auch nicht direkt auf den State. Bei den anderen geht es...? -
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar
Ich kann leider nichts davon machen, ich habe kein Zahnrad, keinen Stift und kann nicht auf die Objektdaten zugreifen und auch nicht direkt auf den State. Bei den anderen geht es...?Der ist an?