NEWS
SONOFF NSPanel mit Lovelace UI
-
@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?
-
@armilar ja ist er
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar ja ist er
Bist du von den Berechtigungen limitiert?
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar ja ist er
Könntest du mal versuchen den Alias mit dem Alias-Manager zu öffnen?
Da dürfte es auch gehen
-
@armilar Wie kann ich dies erkennen, bzw. wo kann ich dies überprüfen?
-
@elluminatus Dort ist er nicht angelegt
Das Bild ist dort auch zuende.
Hab jetzt nochmal eine neue Struktur angelegt
Kann aber trotzdem nicht mehr sehen oder machen
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@elluminatus Dort ist er nicht angelegt
Das Bild ist dort auch zuende.
Hab jetzt nochmal eine neue Struktur angelegt
Kann aber trotzdem nicht mehr sehen oder machen
Da bist du richtig. Jetzt nach Aktionen wie in meinem Bild oben "Gewählter Alias". Unter common.role media wählen und dann speichern
-
@armilar So das hat jetzt geklappt wenn ich das richtig sehe:
-
@armilar
vielen Dank. Das probiere ich gleich aus.
Super erklärt und verständlich
Ich melde mich wenn es alles klappt.
Grüße -
@armilar So es ist fast geschafft! Anzeige läuft:
Jetzt ist lediglich noch die letzte Einstellung:
"items": [<PageItem>{ id: "alias.0.Media.LMS.KE_HWR", adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.", speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero'] }]
Was muss ich unten in der Speaker List eintragen? Den Playernamen? piCoreKUE bspw?
Und was hat im Display das Icon mit den drei Strichen und der Note normalerweise für eine Funktion?
-
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar So es ist fast geschafft! Anzeige läuft:
Jetzt ist lediglich noch die letzte Einstellung:
"items": [<PageItem>{ id: "alias.0.Media.LMS.KE_HWR", adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.", speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero'] }]
Was muss ich unten in der Speaker List eintragen? Den Playernamen? piCoreKUE bspw?
Und was hat im Display das Icon mit den drei Strichen und der Note normalerweise für eine Funktion?
Das sieht doch schon ganz ordentlich aus...
Unter Speaker würde ich mal nachsehen, wenn etwas abspielt, welcher Datenpunkt mit sinnvollen Geräten gefüllt ist. Das könntest du dann ebenfalls mal posten. Ebenfalls würde mich interessieren, wie der Wechsel von einem Raum zum anderen funktioniert. Dann könnte der Fall squeezeboxrpc das später korrekt verarbeiten. Aktuell gibt es ja keine Umschaltlogik für squeezebox im TS-Script. Aber ich denke fürs erste könnte da piCoreKUE drinstehen. Falls du so eine Umschaltlogik z.B. in Blockly hast, dann einfach hier posten. Falls du weißt welcher Datenpunkt mit welchem Inhalt gefüllt werden muss, könnte ich dir dabei ebenfalls helfen.
Ja die Note mit einer Liste ist eine Note mit einer Liste. Einfach nur ein Icon ohne Funktion. Bei Spotitfy ist es das SpotifyLogo, bei Alexa gab es auch mal ein icon, heute nicht mehr und das Sonos Logo gibt es auch nicht. Wenn du ein passendes Logo in den 6500 icons findest, könnte ich das reinsetzen.
-
@armilar sagte in SONOFF NSPanel mit Lovelace UI:
@elluminatus sagte in SONOFF NSPanel mit Lovelace UI:
@armilar So es ist fast geschafft! Anzeige läuft:
Jetzt ist lediglich noch die letzte Einstellung:
"items": [<PageItem>{ id: "alias.0.Media.LMS.KE_HWR", adapterPlayerInstance: "squeezeboxrpc.0.Players.piCoreKUE.", speakerList: ['LENOVO-W11-X','Terrasse','Überall','Gartenhaus','Esszimmer','Heimkino','Echo Dot Küche','Echo Spot Buero'] }]
Was muss ich unten in der Speaker List eintragen? Den Playernamen? piCoreKUE bspw?
Und was hat im Display das Icon mit den drei Strichen und der Note normalerweise für eine Funktion?
Das sieht doch schon ganz ordentlich aus...
Unter Speaker würde ich mal nachsehen, wenn etwas abspielt, welcher Datenpunkt mit sinnvollen Geräten gefüllt ist. Das könntest du dann ebenfalls mal posten. Ebenfalls würde mich interessieren, wie der Wechsel von einem Raum zum anderen funktioniert. Dann könnte der Fall squeezeboxrpc das später korrekt verarbeiten. Aktuell gibt es ja keine Umschaltlogik für squeezebox im TS-Script. Aber ich denke fürs erste könnte da piCoreKUE drinstehen. Falls du so eine Umschaltlogik z.B. in Blockly hast, dann einfach hier posten. Falls du weißt welcher Datenpunkt mit welchem Inhalt gefüllt werden muss, könnte ich dir dabei ebenfalls helfen.
Ja die Note mit einer Liste ist eine Note mit einer Liste. Einfach nur ein Icon ohne Funktion. Bei Spotitfy ist es das SpotifyLogo, bei Alexa gab es auch mal ein icon, heute nicht mehr und das Sonos Logo gibt es auch nicht. Wenn du ein passendes Logo in den 6500 icons findest, könnte ich das reinsetzen.
Also das mit den Datenpunkte kläre ich.
Eine Sache ist mir gerade aufgefallen.
- Wenn ich den Pausenbutton drücke stoppt die Wiedergabe, ich kann sie aber nicht wieder starten.
- Weiterhin gibt es auch keinen Wechsel zwischen Play und Pause Icon.
Habe mir den State Zustand angeschaut, er wechselt von 1 auf 0 aber nicht wieder zurück. Allerdings wenn ich das Power Symbol drücke geht es wieder auf 1. Also schaltet das PowerIcon nicht den Player an und aus, sondern ist der Play Modus.
Diese Datenpunkte habe ich da spontan noch gesehen:
- Wäre evtl eine Idee statt der Lautsprecherausgabe unten die einzelnen Player auszuwählen und jeweils auf eine eigenständige Media Player Seite zu kommen?
-
Das hat mich spontan auf die folgende Idee gebracht, gäbe es eine Möglichkeit Playlist Shuffle und Repeat mit einzubauen?
-
Evtl sogar Playlistnamen und -wechsel? Oder kommt so etwas auf die RadioButton Seite äquivalent zur Ansteuerung der Radiostationen?