NEWS
Volumio adapter?
-
@muellerra hey, wieder was zum spielen!
werd mal wieder reinlinsen... -
@muellerra hmm, instanz wieder mal gestartet. mal komplett deinstalliert, jetzt neu 0.1.3.
aber nach wie vor:
somit wird mal nix aktualisiert bei einem senderwechsel bei internetradio.
da werden auch die scripts nichts ändern. -
@da_woody Hi, ich glaube ich hab das vergessen zu erwähnen. Mit dem Skript wird der Adapter nicht mehr benötigt. Ich hab mir das mal als alternative zu dem volumio adapter geschrieben.
-
@muellerra AHA! na dann mal schauen wenn ich zeit finde...
kommt ja auch noch dazu:
-
@muellerra so, hab jetzt rumgebastelt. in meiner sturheit latürnich einen eigenen ordner gemacht. in iQontrol auch schon geändert.
soweit alles geändert, fehler in zeile 9 gefunden, war } statt]... kann mir ja halbwegs helfen.
allerdings bekomm ich in 362 einen geklatscht, den ich nicht packe. kannst da mal reinlinsen? hab ja nur einen raspi dran, sollte aber mit den änderungen passen.
Volumio.txt
-
@da_woody Hi, schau mal in Zeile 362 ans Ende, da hab ich vergessen ein
/
zu entfernen...
Habs auch gleich im ursprünglichen post angepasst -
@muellerra dachte ich mir, allerdings bin ich nicht so weit drinnen beim proggen.
Der Rest passt bei meinen Änderungen?
Werden durch den Fehler die DPs nicht komplett angelegt? -
@da_woody ich habs mal kurz gedifft, deine Änderungen sollten ja nur die IP-Adressen und der Ordner sein. Das passt.
@da_woody sagte in Volumio adapter?:
Werden durch den Fehler die DPs nicht komplett angelegt?
lass das Skript am besten 2 mal (erfolgreich) durchlaufen. Dann sind aufjedenfall die DP alle erstellt und die event listener alle scharf.
Ich habs mal kurz mit einem Volumio durchgetestet, sollte alles auch mit einem Volumio funktionieren. Lediglich "Multiroom Features" könnte es sein dass "Müll" in die DP geschrieben wird. aber bei nur einem Volumio sollte das egal sein, im Zweifel einfach die setState auskommentieren.
-
@muellerra den Namen hab ich auch auf Studio geändert. Tögal.
Mach ich nachher, bin grad auf ein gutes AbendBier im Stammlokal.
Multitasking, ioB, 3D-Drucken, im Kopf noch Planung für Kanten Abdeckungen für die Wandvertafelung zuschneiden und fräsen... -
@muellerra autsch...
19:19:22.367 info javascript.0 (521) Start javascript script.js.common.Volumio.Volumio 19:19:22.392 info javascript.0 (521) script.js.common.Volumio.Volumio: registered 22 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 19:19:25.887 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:601:8) 19:19:25.887 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:942:9) 19:19:26.387 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:601:8) 19:19:26.387 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:942:9) 19:19:26.887 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:601:8) 19:19:26.887 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:942:9) 19:19:27.387 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:601:8) 19:19:27.387 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:942:9) 19:19:27.889 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:601:8) 19:19:27.889 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:942:9) 19:19:28.391 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:601:8) 19:19:28.391 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:942:9) 19:19:28.890 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:601:8) 19:19:28.890 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:942:9) 19:19:29.011 info javascript.0 (521) Stop script script.js.common.Volumio.Volumio
ok, da dürfte was nicht passen... rrBroker gibts bei mir ja nicht.
if(getState('ping.1.rrBroker.' + Volumios[ID_Volumio]).val){
warum allerdings 942 motzt...
-
@da_woody hab den Hinweis auf den ping Adapter im Post ergänzt. Danke für den Hinweis!!! Zeile 942 motzt, weil der Fehler in der Funktion
restapiRequest
ist und die in Zeile 942 aufgerufen wird.
Installier mal dem ping Adapter und pass die Zeile an (s. Ursprungspost).
Falls noch was auffällt einfach bescheid sagen, mir fällt es manchmal schwer selbst immer alle Abhängigkeiten in meinen unzähligen Skripten sofort zu finden -
@muellerra okido
zeile 7-9var Folder = 'javascript.0.Volumio.Player.Volumio_Player_' // var Volumios = ["Studio"] //["rStream","workStream","kitchenStream","flurStream"] //muss in beiden Skripten identisch sein var Volumios_IPs = ["210"] //["82","58","48","72"] //192.168.178 wird dann im Skript hart gesetzt -> ggf. abändern!
zeile 601
if(getState('ping.0.Studio.' + Volumios[ID_Volumio]).val){
zeile 942
restapiRequest('192.168.0.' + Volumios_IPs[ID_Volumio],"getState",ID_Volumio)
ping ist schon lange an board, wegen anwesenheit, hinzugefügt Studio
fehler tropsdem noch da... rest-api einstellungen?
ich hau mal die hufe hoch, kopf erledigt für heute... -
if(getState('ping.0.Studio.' + Volumios[ID_Volumio]).val){
ändern zu:
if(getState('ping.0.ioBroker.' + Volumios[ID_Volumio]+ '.alive').val){
er muss auf alle Fälle auf den boolschen State zugreifen, welcher anzeigt ob das Gerät erreichbar ist oder nicht.
Zudem den Volumio Namen, bei dirStudio
nicht rein schreiben, der wird ja über die schleife aus demVolumios
Array ausgelesen. Bei dir entspricht dann
Volumios[ID_Volumio]
gleich"Studio"
Anscheinend hab ich damals bei mir keine erweiterte info im ping adapter eingestellt:
,
daher ohne.alive
-
@muellerra moin. dachte, ich hätte eine eingebung gehabt, dachte ich aber nur...
hatte im 2. scriptvar Volumios = ["Studio"] //["rStream","workStream","kitchenStream","flurStream"] //muss in beiden Skripten identisch sein
nicht angepasst.
dann komplett neu angefangen, da der fehler nach wie vor da war. kurioser weise hat sich durch deine änderung das warning um eine zeile verschoben.09:53:07.452 info javascript.0 (521) Start javascript script.js.common.Volumio.Volumio 09:53:07.473 info javascript.0 (521) script.js.common.Volumio.Volumio: registered 22 subscriptions, 0 schedules, 0 messages, 0 logs and 0 file subscriptions 09:53:10.972 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:10.972 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:11.471 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:11.471 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:11.976 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:11.976 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:12.472 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:12.472 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:12.972 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:12.972 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:13.472 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:13.472 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:13.973 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:13.973 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:14.473 warn javascript.0 (521) at restapiRequest (script.js.common.Volumio.Volumio:602:8) 09:53:14.473 warn javascript.0 (521) at Object.getVolumioStates (script.js.common.Volumio.Volumio:943:9) 09:53:14.800 info javascript.0 (521) Stop script script.js.common.Volumio.Volumio
602 nach deinen angaben ausgebessert
if(getState('ping.0.ioBroker.' + Volumios[ID_Volumio]).val + '.alive'){
der DP ist da und auf true
943 sehe ich auch keinen fehlerrestapiRequest('192.168.0.' + Volumios_IPs[ID_Volumio],"getState",ID_Volumio)
zusätzlich hab ich im states_icons script die zeile 4 geändert, damit ich in den objekten nur mehr player0 bekomme
var names = ['Volumio_Player_0'] //,'Volumio_Player_1','Volumio_Player_2','Volumio_Player_3']
das klappt auch.
ich weis echt nicht mehr weiter... nochmal das neue hauptscript...
Volumio.txt
alle 3 scripte 3x durchsucht ob ich was übersehn habe. (notepad++ mit suchen und ersetzen) -
if(getState('ping.<instance>.<iobrokerHostName>.' + Volumios[ID_Volumio] + '.alive').val){
Das .val ist an falscher stelle. Da wäre ein Syntax highlighting im Forum ganz nett
-
@muellerra
wollte schon am rad drehn. hab ich gestern abend echt nicht mehr mitbekommen. näxter fault dann, hab iobroker getippt statt ioBroker. logischer weise selber fehler.
okido, die 3 scripte laufen jetzt. jetzt kann ich mich um iQontrol kümmern... -
@da_woody das freut mich
Viel Spaß mit dem Skript -
@muellerra jup!
auch schon bißchen in iQontrol gefummelt.
-
Mir kam grad noch in den Sinn, das der im Skript angelegte
javascript.0.Allgemeine_Variablen.Player.Volumio_Player_<VolumioID>.playbackInfo.statusIncomingCall
Datenpunkt durchaus sinnvoll in Verwendung ist. Ich verwende ihn als Merker für den Play/Pause Status. So werden dann z.b. bei einem aus- oder eingehendem Anruf (über Fritz!Box) alle spielenden Volumios pausiert und nach dem auflegen wieder fortgesetzt. Volumios die nicht spielen werden nicht angesteuert. Bei Playern im Multiroomverbund, wird nur der sendende Volumio getriggert.
Die im Ursprungspost geposteten globalen Funktionen werden vorausgesetzt:@muellerra sagte in Volumio adapter?:
und hier noch weitere, vllt nützliche, Funktionen (bei mir global definiert)
function getVolumiosReceiving(VolumiosReceiving,ReturnID){ usw...
var ID_Ringing = "tr-064.0.callmonitor.ringing" var ID_PhoneStatus = "tr-064.0.callmonitor.toPauseState" // connected, end(wenn nichts ist), ring var FolderVolumio = 'javascript.0.Allgemeine_Variablen.Player.Volumio_Player_' on({id: ID_PhoneStatus, change: 'ne'}, function (obj) { var value = obj.state.val; var timestamp = obj.state.ts; var oldValue = obj.oldState.val var Verursacher = obj.id; var VolumiosStatus = getVolumiosStatus([]) var ReceivingVolumiosIDs = getVolumiosReceiving([],true) if(value != 'end' && value != 'connect'){ // connect da sonst nichts ausgeführt wird, wenn der angenommene anruf beendet wird //Aktionen die passieren, wenn jemand anruft oder jemand im gespräch ist //Volumios auf Pause var PlayingVolumiosIDs = getVolumiosPlaying([],true) log(ReceivingVolumiosIDs) for(var iop in VolumiosStatus){ setState(FolderVolumio + iop + '.playbackInfo.statusIncomingCall',VolumiosStatus[iop]) //nur pis die nicht empfangen auf pause setzen, der rest erledigt sich von alleine if(ReceivingVolumiosIDs.indexOf(String(iop)) != -1 ){ // pi empfängt }else{ // pi empfängt nicht setState(FolderVolumio + iop + '.control.pause',true) } } } if(value == 'end' && oldValue != 'end'){ // aktionen, wenn aufgelegt wird oder das telefon nicht mehr klingelt //Volumios auf Play, wenn sie vorher pausiert wurden for(var xbf in VolumiosStatus){ var VolumioStatusHistoric = getState(FolderVolumio + xbf + '.playbackInfo.statusIncomingCall').val if(VolumioStatusHistoric == 'play' || VolumioStatusHistoric == "play"){ // hier aber aich nur die die nicht receiven! //nur pis die nicht empfangen auf play setzen, bzw toggeln if(ReceivingVolumiosIDs.indexOf(String(xbf)) != -1 ){ // pi empfängt }else{ // pi empfängt nicht setState(FolderVolumio + xbf + '.PlayPause',true) //toogle, da play multiroom killt wenn multiroom aktiv ist... } } } } });
-
@muellerra nicht schlecht!
was mir noch gefallen würde, favoriten, sender und co. auswahl...