NEWS
[Vorlage] Denon Skript
-
Hallo dslraser und brati,
erst einmal vielen Dank für die schnellen Antworten.
Ich bin in Java absoluter Newbie und völlig blank (bin gerade einmal auf "Hallo Welt"-Niveau :roll: )
Schaffe es nicht mit Euren Vorgaben ein einfaches Power-on/Power-off-Script, das über http den befehl sendet, zu erstellen.
Könnt ihr das für Dummies so erklären, dass ich damit erst einmal anfangen kann? Denn bei den Lautstärke-Skripten wird es mit den Werten ja schon wieder komplizierter, als bei schlichtem An/Aus.
Mein Versuch ein solches Skript zu erstellen endete damit, dass das Skript in einer Endlosschleife durchlief und ich den raspy rebooten musste ….
Über vis klappt es, wenn ich die Schalter betätige, aber ich will ja das ganze nicht über vis steuern, sondern lediglich über Alexa mit dem Kommando "Verstärker an" und "Verstärker aus" den AVR steuern, um dann mit DeRemote die weitere Bedienung vorzunehmen. Die Befehle sollen dann in meinen Szenen" Kino an" (Beamer springt an, Leinwand fährt hinunter, Licht wird gedimmt bzw. ausgeschaltet, etc.) integriert werden, so dass auch der AVR anspringt.
Die Kür ist danach sicherlich noch weitere Sprachbefehle (wie z. B. Lautstärke) hinzuzufügen. Aber so weit bin ich noch lange nicht, zumal ich mit iobroker erst angefangen habe. Java ist zur Zeit noch zu weit weg, zumal ich kein Techniker bin.
Die für Euch wohl sehr einfachen Skripte für die Lautstärke überfordern mich bereits, da ich bisher nur mit an/aus hantiert habe.
Mein Vorgehen war bisher:
1. Skript erstellen.
2. Dann in über icloud das Objekt mit "Smart-Name" versehen.
3. Dann mit Kommando "An" oder "Aus" steuern
@ dslraiser: Das Bild mit dem Script lässt sich leider nicht vergrößern, so dass ich es nicht lesen kann. Sonst hätte och es einmal abgetippt und selbst versucht bzw. nochmal versucht anhand dieses Beispiels ein An/Aus-Skript zu erstellen. Bitte stell es doch noch mals so ins Forum, dass man es vergrößert betrachten kann. Danke vorab.
Sorry, dass ich als absoluter Anfänger mit Eurer Hilfe versuche die ersten Erfolge zu erzielen. Aber viele Foren-Diskussionen verstehe ich schon vom Grunde her nicht, da viele Fachbegriffe fallen, die als Newbie noch unverständlich sind.
Viele Grüße
-
ich war heute morgen nur am Handy, hier das Script für die Lautstärke
! ` > createState('Denon.Denon_Lautstärke', {
type: 'number',
name:'Denon-Lautstärke',
min: 0,
max: 100,
def: 50,
read: true,
write: true,
role: 'level.volume'});
var http = "http://192.168.180.6/goform/formiPhoneAppDirect.xml?";
on({id: "javascript.0.Denon.Denon_Lautstärke", change: "any"},
function (obj) {
var x = obj.state.val;
if (x === 0) {
require("request")(http + 'MUON'); // Bei Befehl "aus" wird Vol. auf Mute gesetzt.
console.log("Lautstärke AVR-4520 auf -MUTE- gesetzt.");
} else {
require("request")(http + 'MV' + x);
console.log("Lautstärke AVR-4520 auf " + x + " gesetzt.");
}}); `
-
@dslraiser: DANKE !!!!
Es klappt mit der Lautstärke!! und ich kann noch weiter über DeRemote steuern!
Wie muss ich das Skript verändern um jetzt noch ein- und ausschalten zu können?
Viele Grüße
-
kann ich jetzt aus dem Kopf leider nicht sagen (bin arbeiten) Leider komme ich auch heute Abend und morgen nicht dazu (unterwegs…)
-
Versuch doch mal mit Blockly.
Main Zone http://<av ip-adresse="">/goform/formiPhoneAppPower.xml?
1+PowerOn http://<av ip-adresse="">/goform/formiPhoneAppPower.xml?1+PowerStandby
Zone 2 http://<av ip-adresse="">/goform/formiPhoneAppPower.xml?
2+PowerOn http://<av ip-adresse="">/goform/formiPhoneAppPower.xml?2+PowerStandby
![](</s><URL url=)<link_text text="https://uploads.tapatalk-cdn.com/201801 ... ff494f.jpg">https://uploads.tapatalk-cdn.com/20180111/4bb1b6aea9e7f3cd0fddba685eff494f.jpg</link_text>" /></av></av></av></av> -
No Problem …
Nochmals 1000 Dank vorab
-
No Problem …
Nochmals 1000 Dank vorab `
Blockly Exporteinschalten Mainzone
! ````
<block xmlns="http://www.w3.org/1999/xhtml" type="request" id="w8WF/@tE%Efnc4`8#{=V" x="-687" y="88"><mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field><value name="URL"><shadow type="text" id="!P`R0]P%}]#3dInn=]?4"><field name="TEXT">http://192.168.180.6/goform/formiPhoneAppPower.xml?1+PowerOn</field></shadow></value></block>
-
Blockly Export Main Zone Standby
! ````
<block xmlns="http://www.w3.org/1999/xhtml" type="request" id="w8WF/@tE%Efnc4`8#{=V" x="-687" y="88"><mutation with_statement="false"></mutation>
<field name="WITH_STATEMENT">FALSE</field><value name="URL"><shadow type="text" id="!P`R0]P%}]#3dInn=]?4"><field name="TEXT">http://192.168.180.6/goform/formiPhoneAppPower.xml?1+PowerStandby</field></shadow></value></block>
hier der "normale Code" brauchst Du nur die Befehle von hier abändern >! ```` try { require("request")('http://192.168.180.6/goform/formiPhoneAppPower.xml?1+PowerStandby').on("error", function (e) {console.error(e);}); } catch (e) { console.error(e); }
Die Befehle findest Du hier
http://blue-pc.net/2013/12/28/denon-av- … p-steuern/
Unten noch ein Beispiel für Alexa mit A.V.R. an (die Punkte im Namen sind wichtig)
3822_denon.jpg
3822_avr.jpg -
Habe es hinbekommen. Mein Skript sieht jetzt wie folgt aus (geht wahrscheinlich eleganter, aber es funktioniert):
createState('Denon.Denon_Power', {
type: 'boolean',
name:'Denon-Power',
read: true,
write: true,
role: 'switch.active'
});
var http = "http://192.1XX.XXX.XX/goform/formiPhoneAppPower.xml?";
on({id: "javascript.0.Denon.Denon_Power", change: "ne"},
function (obj) {
var oldValue = obj.oldState.val;
if (getState("javascript.0.Denon.Denon_Power").val === true) {
require("request")(http + '1+PowerOn');
} else {
require("request")(http + '1+PowerStandby');
}});
Nochmals Danke für die Unterstützung … wahrscheinlich komme ich demnächst wieder angedackelt, weil ich weitere Funktionen hinzufügen möchte :lol: :lol:
-
Habe es hinbekommen. Mein Skript sieht jetzt wie folgt aus (geht wahrscheinlich eleganter, aber es funktioniert):
createState('Denon.Denon_Power', {
type: 'boolean',
name:'Denon-Power',
read: true,
write: true,
role: 'switch.active'
});
var http = "http://192.1XX.XXX.XX/goform/formiPhoneAppPower.xml?";
on({id: "javascript.0.Denon.Denon_Power", change: "ne"},
function (obj) {
var oldValue = obj.oldState.val;
if (getState("javascript.0.Denon.Denon_Power").val === true) {
require("request")(http + '1+PowerOn');
} else {
require("request")(http + '1+PowerStandby');
}});
Nochmals Danke für die Unterstützung … wahrscheinlich komme ich demnächst wieder angedackelt, weil ich weitere Funktionen hinzufügen möchte :lol: :lol: `
Ja, habe es in meiner Mittagspause mal schnell eingebaut, funktioniert..
3822_avr.jpg -
Auch hier sieht man mal wieder was für eine tolle Arbeit durch die Communitiy entsteht - danke an alle beteiligten!
Ich habe gerade zwei neue Vorstufen hier zum Testen. Yamaha CX-A5100 und Maratz AV-7704
Habe im Rahmen des Tests natürlich bei beiden auch gleich die Verbindungsmöglichkeiten zu io.broker getestet
Bei Yamaha lief das über den entsprechenden Adapter hervorragend. Aber der hat einfach den schlechteren Klang
Bei dem Maratz war mein Gedanke das Denon Script zu nutzen, da Denon und Marantz ja bekanntermaßen unter eine Decke stecken und dieselbe Software verwenden.
Ich habe das Script ausgeführt und anschließend die IP Adresse unter "Objekte" eingetragen.
Leider kann ich den Marantz nicht steuern.
Ich dachte erst dass es dann wohl doch nicht funktioniert, jedoch eine Sache ist interessant: Ich bekomme den Namen des Maratz in io.broker angezeigt, ohne dass ich diesen selber eingegeben habe:
Das sagt mir dass die Verbindung eigentlich doch funktionieren sollte?
Hat jemand eine Idee was eventuell noch geändert werden sollte damit die Steuerung klappt?
Hier kommt einmal der Log dazu:
Vielen Dank für eure Hilfe!!
-
Ich habe bei weiteren Recherchen noch folgendes gefunden:
Eine Excel Tabelle mit Marantz IP Commandos.
Vom ersten drüberschauen sind die Befehle wie erwartet analog zu Denon (z.B. "PWON" oder "PWOFF" für Power oder "MVUP" und "MVDOWN" für Master Volume up/down)
Es gibt wohl ein paar unterschiedliche Befehle, klar zum Teil gibts ja auch verschiedene Funktionen, aber das grundlegende sollte doch funktionieren?
Im IP Symcon Forum habe ich noch ein Script gefunden welches Maratz-spezifisch sein soll. Das kann man sicher nicht so einfach 1:1 verwenden, aber lässt sich eventuell daraus ableiten was vielleicht der Knackpunkt sein könnte?
https://www.symcon.de/forum/threads/295 … et-steuern
Laut Fhem Forum ist das Modul für Denon ja ebenfalls für Maratz gebräuchlich.
Wäre ja ziemlich cool wenn das Denon Script auch für alle Marantz User lauffähig wird
3472_marantz_av_sr_nr_protocol_v02.xls -
<size size="150">Vergesst was ich geschrieben habe - es läuft!!!!</size>
Das Script ist Marantz kompatibel. So super.
Ich hab ein bisschen an der IP Adresse hin und her gestellt und den Marantz mal aus und wieder angeschaltet und irgendwann gings dann
Einzig die "Master_Volume" funktioniert nur wenn man die Lautstärke nicht im negativen Bereich ( - 70 bis + 10 ) regelt, sondern im positiven Bereich ( 0 bis + 80 ). Schade, die negative Regelung ist ja eigentlich die Studiotechnisch korrekte
Aber ansonsten: ich bin mega begeistert. Danke für die Arbeit!
-
Leider bleibt bei mir wohl das Script alle paar Tage einfach stehen. AVR3311
Ich kann dann nichts bedienen und bekomme auch keine Rückmeldung wie z.B. OSD Info.
Keine Fehlermeldung im Log. Script sieht aus als würde es laufen.
Wenn ich das Script dann einfach neu starte geht wieder alles.
Ist das was bekannt?
-
Hallo hg6806,
@hg6806:Wenn ich das Script dann einfach neu starte geht wieder alles. `
Den Neustart kann das Script ja auch selbst erledigenIch habe bei mir folgendes am Ende hinzugefügt:
// Nachts um 4:40 neu verbinden... schedule("40 4 * * *", function() { if(getState('javascript.0.Denon.System.Verbunden').val===true) killClient(client); checkIP(getState('javascript.0.Denon.System.IP_Adresse').val); });
Tschau
Uwe
-
Hallo, ich oute mich mal gleich vorweg, damit keine Missverständnisse entstehen und schließ mich dem Autor divepython oben an. (hallo Welt und so)
io.Broker ist neu für mich. Habe ja auch noch nicht all zulange piVCCU im Einsatz. Aber immerhin, io.Broker läuft und ich habe auch ein paar Testversuche bereits absolviert.
Interessanterweise bin ich mehr durch Zufall auf die Denon Steuerung gestoßen, was mich sofort magisch in den Bann gezogen hat. Natürlich gibt es für den AVR (in meinem Fall ein 4300) auch eine Remotesoftware von Denon für das iPad bzw. Android. Aber die Steuerung auch in eine Visualisierung zu bringen erscheint reizvoll.
Also ich habe kurzerhand mal das Scrip nach io.Broker kopiert. Unter Objekte/Javascript.0 erscheint auch das Denon-Script. Aber, das Script hat keinen Connect.
Log 15:37:29.793 [info] javascript.0 Stop script script.js.Denon 15:37:33.601 [info] javascript.0 Start javascript script.js.Denon 15:37:33.602 [error] javascript.0 script.js.Denon: ungültige IP Adresse 15:37:33.603 [info] javascript.0 script.js.Denon: registered 40 subscriptions and 0 schedules
im Script steht dazu folgendes, was mir richtig erscheint.
//Kontakt: s-nolte@htp-tel.de //ioBroker Forum: Lucky var net = require('net'); // System createState('javascript.0.Denon.System.UPDATE', false,{type: "boolean", role: "button"}); createState('javascript.0.Denon.System.Power_System', false,{type: "boolean", role: "Power System"}); createState('javascript.0.Denon.System.System_Ready', false,{type: "boolean", role: "System Ready",write:false}); createState('javascript.0.Denon.System.IP_Adresse', '192.168.0.10',{type: "string", role: "AVR IP Adresse"});
Der Denon hat die IP 192.168.0.10. Netzwerksteuerung ist eingeschaltet im Denon. Ein Aufruf der Webseite des Denon ergibt
Error 403: Forbidden Access Forbidden
Aber dazu habe ich folgende Info:
` > Folgende Antwort habe ich vom Denon Support zu meiner Frage erhalten:Sehr geehrter Herr xxx,
vielen Dank für Ihre Anfrage.
Unsere neuen AV-Receiver mit der Bezeichnung AVR-X..00H unterstützen kein Web-Interface mehr.
Eine Steuerung des Receivers ist via IR, App (Android/IOS) und IP-Steuerung bzw. RS232-Steuerung möglich.
Also ein Test ob die Webseite des AVR erreichbar ist, kann nur fehlschlagen. `
Es wäre also Super, wenn mir hier mal auf die Sprünge geholfen werden könnte.Dank im Voraus
Andreas
-
Moinsen.
Mein erster Beitrag hier im Forum. Vielleicht hilft es jemandem.
Ich habe gerade einige Zeit damit verbracht das Script erfolglos mit meinem Denon AVR X2000 zu testen.
-> Die IP meines Receivers habe ich auf 192.168.0.140 eingestellt.
-> Webinterface funktioniert
-> Telnet Funtioniert
-> Skript unter javascript Common/Denon eingepflegt nund gestartet: Die Objekte werden angelegt, dabei werden Fehler zur IP geschmissen, die ignoriert werden dürfen
Soweit alles OK
Nun trage ich ins Objekt meine korrekte IP im Format 192.168.000.140 ein und es kommt:
10:12:06.918 [error] javascript.0 script.js.common.Denon.DenonControl: ungültige IP Adresse
Trage ich ins Objekt die IP im Format 192.168.0.140 ein kommt folgendes:
10:13:02.203 [info] javascript.0 script.js.common.Denon.DenonControl: Connectig…
10:13:02.215 [info] javascript.0 script.js.common.Denon.DenonControl: Verbunden mit Denon AVR !
10:13:02.216 [info] javascript.0 script.js.common.Denon.DenonControl: Update Start
10:13:02.314 [info] javascript.0 script.js.common.Denon.DenonControl: Anfrage: NSET1 ?
10:13:02.377 [info] javascript.0 script.js.common.Denon.DenonControl: NSET1DHC OFF
10:13:02.412 [info] javascript.0 script.js.common.Denon.DenonControl: NSET1IPA 192.168.000.140
10:13:02.418 [info] javascript.0 script.js.common.Denon.DenonControl: Anfrage: NSFRN ?
10:13:02.429 [info] javascript.0 script.js.common.Denon.DenonControl: Connection closed !
10:13:02.430 [error] javascript.0 script.js.common.Denon.DenonControl: ungültige IP Adresse
Die Verbindung klappt also zu 192.168.0.140.
Die IP wird dann im Objekt auf 192.168.000.140 geändert, was zum Fehler "ungültige IP Adresse" führt.
Ich habe dann Zeile 414 auskommentiert
//setState('javascript.0.Denon.System.IP_Adresse',val=IPstring,akt=true);
und die IP Adresse im Objekt manuell wieder auf 192.168.0.140 geändert.
Siehe da: schon läuft alles wie es soll!
Aus reiner Neugier wüsste ich gerne folgendes:
Gibt es einen Grund, weshalb die IP aus dem Denon wieder zurück ins Objekt geschrieben wird? Immerhin klappt ja die Verbindung zu dem Zeitpunkt bereits mit der vorher bekannten IP.
Vielleicht übersehe ich ja irgendwas wichtiges, aber da es bei mir aktuell läuft bin ich sehr zufrieden und danke allen, die an diesem Skript mitgearbeitet haben!
-
@Hauke: Dein erster Beitrag, und er hat mir sofort geholfen selbiges Problem mit meinem Marantz Reciever zu lösen.
Hatte ja weiter oben schon geschrieben dass ich die Verbindung zwar hinbekommen habe, aber nicht stabil.
Nach der Änderung des Scripts wie du hier geschrieben hast bekomme ich die Verbindung sehr stabil und sofort hergestllt - Danke!
-
@Hauke: Du hast mir meine Woche gerettet! Das war es!
Habe das ganze letzte Wochenende versucht den Skript zum laufen zu bringen und du bringst mit deinem ersten Post die Lösung
-
es wäre so schön gewesen.
Leider funktioniert das bei meinem AVR-X4300 nicht.
var net = require('net'); // System createState('javascript.0.Denon.System.UPDATE', false,{type: "boolean", role: "button"}); createState('javascript.0.Denon.System.Power_System', false,{type: "boolean", role: "Power System"}); createState('javascript.0.Denon.System.System_Ready', false,{type: "boolean", role: "System Ready",write:false}); createState('javascript.0.Denon.System.IP_Adresse', '192.168.000.031',{type: "string", role: "AVR IP Adresse"});
ergibt im Log
13:33:58.018 [info] javascript.0 Stop script script.js.common.Denon 13:33:59.836 [info] javascript.0 Start javascript script.js.common.Denon 13:33:59.837 [error] javascript.0 script.js.common.Denon: ungültige IP Adresse 13:33:59.837 [info] javascript.0 script.js.common.Denon: registered 40 subscriptions and 0 schedules
Auch wenn ich in der IP-Adresse die führenden Nullen entferne, das Ergebnis ist gleich.
Ebenso bei Auskommentierung von Zeile 414
Hat jemand eine Idee dazu? Wäre echt super, wenn das endlich funktionieren täte.