NEWS
Pioneer AVR Skript
-
@sichreid
Möglich, dass sich bereits ein Gerät auf Port 23 am Pioneer angemeldet hat. Dann dürfte mit nem Telnet- Client keine Verbindung auf dem Port mehr möglich sein. Der andere Port sollte der 8102 sein.Frag den VSX nicht zu schnell ab. Ich hatte eine Pause zwischen den Befehlen eingebaut.
@peterfido
Danke für den Tipp, welche Wartezeit wäre angemessen? -
@peterfido
Danke für den Tipp, welche Wartezeit wäre angemessen? -
@sichreid
Weiß ich ad hoc nicht. Wenn ich zu komme, sehe ich mir morgen den Quellcode an. Ich würde in 100ms Schritten probieren, bis es stabil läuft.@peterfido
Ok, werde mal sowas versuchen.
Vielen Dank! -
@peterfido
Ok, werde mal sowas versuchen.
Vielen Dank!Die Verzögerung, wenn ich nach PowerOn alle Werte hole, hatte ich auf 200 ms eingestellt. Ansonsten ist nach jedem Befehl eine Pause von 78 ms drin.
Das Skript habe ich mir angesehen. Auch den "Adapter", welcher sich nicht einfach so pert GitHub-Katze installieren lässt.
Ich werde etwas auf Basis von Node-Red mit den Telnet-Nodes bauen. Das Anfangsgerüst steht und die Werte trudeln alle ein. Das Separieren auf einzelne Datenpunkte erledigt dann ein Function-Node und das Steuern der Befehle kommt danach dran.
Wenn das fertig ist, kann ich das Windows-Tablet gegen ein altes Ipad2 ersetzen. Da heute die Sonne scheint, schalte ich den Rechner nun aus.
Mein Stand:
[ { "id": "643715a7.56ebfc", "type": "tab", "label": "Pioneer", "disabled": false, "info": "" }, { "id": "b47a4fe6.c47dc", "type": "debug", "z": "643715a7.56ebfc", "name": "", "active": true, "tosidebar": true, "console": false, "tostatus": false, "complete": "true", "targetType": "full", "statusVal": "", "statusType": "auto", "x": 1230, "y": 60, "wires": [] }, { "id": "7c58f53f.1b9fac", "type": "inject", "z": "643715a7.56ebfc", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 120, "y": 160, "wires": [ [ "79fdd5ab.3a0b3c" ] ] }, { "id": "8171afa2.7d439", "type": "inject", "z": "643715a7.56ebfc", "name": "", "props": [ { "p": "payload" }, { "p": "topic", "vt": "str" } ], "repeat": "", "crontab": "", "once": false, "onceDelay": 0.1, "topic": "", "payload": "", "payloadType": "date", "x": 120, "y": 220, "wires": [ [ "f8ac3600.47b468" ] ] }, { "id": "79fdd5ab.3a0b3c", "type": "function", "z": "643715a7.56ebfc", "name": "", "func": "msg.payload = 'PF';\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 310, "y": 160, "wires": [ [ "c438e912.8d1e48" ] ] }, { "id": "f8ac3600.47b468", "type": "function", "z": "643715a7.56ebfc", "name": "", "func": "msg.payload = 'PO';\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 310, "y": 220, "wires": [ [ "c438e912.8d1e48" ] ] }, { "id": "67dc95c3.4609cc", "type": "telnet-read", "z": "643715a7.56ebfc", "name": "", "connection": "4cb45c67.1562f4", "x": 810, "y": 160, "wires": [ [ "ac7006c3.aabfe8", "7a0bfe29.84bf2" ] ] }, { "id": "c438e912.8d1e48", "type": "telnet-send", "z": "643715a7.56ebfc", "name": "", "connection": "4cb45c67.1562f4", "x": 590, "y": 160, "wires": [] }, { "id": "ac7006c3.aabfe8", "type": "timeout", "z": "643715a7.56ebfc", "name": "My Timeout", "outtopic": "", "outsafe": "Safe", "outwarning": "Warning", "outunsafe": "Unsafe", "warning": "5", "timer": "10", "repeat": false, "again": true, "x": 930, "y": 40, "wires": [ [] ] }, { "id": "59cc8731.e136d8", "type": "function", "z": "643715a7.56ebfc", "name": "Turnus", "func": "const Abfragen=[\"?P\",\"?AP\",\"?V\",\"?ZV\",\"?M\",\"?TO\",\"?BA\",\"?TR\",\"?F\",\"?FR\",\"?ZS\",\"?L__CLV\",\"?R__CLV\",\"?C__CLV\",\"?SL_CLV\",\"?SR_CLV\",\"?SBLCLV\",\"?SBRCLV\",\"?SW_CLV\",\"?LH_CLV\",\"?RH_CLV\",\"?SPK\",\"?SSF\",\"?IS\",\"?VSB\",\"?VHT\",\"?ATA\",\"?SDA\",\"?SDB\",\"?ATC\",\"?ATD\",\"?ATE\",\"?ATF\",\"?ATG\",\"?ATH\",\"?ATJ\",\"?ATK\",\"?ATL\",\"?ATM\",\"?ATN\",\"?ATO\",\"?ATP\",\"?ATQ\",\"?ATR\",\"?ATS\",\"?ATT\",\"?ATU\",\"?VDP\",\"?ATW\",\"?VWD\",\"?MC\",\"?S\",\"?L\",\"?VTB\",\"?VTD\",\"?VTS\",\"?VTF\",\"?VTR\",\"?VTC\",\"?VTE\",\"?VTG\",\"?VTH\",\"?VTI\",\"?VTJ\",\"?VTK\",\"?VTL\",\"?VTM\",\"?VTN\",\"?VTO\",\"?VTP\",\"?VTQ\",\"?AST\",\"?VST\",\"?ATB\",\"?ILV\",\"?PR\",\"?FR\"];\nvar Pos=flow.get(\"AbfragePos\");\nmsg.payload=Abfragen[Pos];\nPos++;\nif (flow.get(\"PowerOn\")==1 && flow.get(\"PowerOn2\")==1){\n if(Pos>3){\n Pos=0;\n }\n \n}else{\n if(Pos==Abfragen.length){\n Pos=0;\n }\n}\n\nflow.set(\"AbfragePos\",Pos);\nnode.status({text:Pos+\":\"+msg.payload});\n\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "// Code added here will be run once\n// whenever the node is deployed.\nflow.set(\"AbfragePos\",0);\nflow.set(\"PowerOn\",1);\nflow.set(\"PowerOn2\",1);\n", "finalize": "", "x": 410, "y": 80, "wires": [ [ "c438e912.8d1e48", "3cde6738.a05c18" ] ] }, { "id": "e97a984a.5eabf8", "type": "interval", "z": "643715a7.56ebfc", "name": "interval", "interval": "1", "onstart": false, "msg": "ping", "showstatus": true, "unit": "seconds", "statusformat": "YYYY-MM-D HH:mm:ss", "x": 90, "y": 80, "wires": [ [ "59cc8731.e136d8" ] ] }, { "id": "3cde6738.a05c18", "type": "debug", "z": "643715a7.56ebfc", "name": "", "active": false, "tosidebar": true, "console": false, "tostatus": false, "complete": "false", "statusVal": "", "statusType": "auto", "x": 610, "y": 80, "wires": [] }, { "id": "7a0bfe29.84bf2", "type": "function", "z": "643715a7.56ebfc", "name": "", "func": "const Pfad = '0_userdata.0.Pioneer.';\n\nmsg.topic='dummy';\nmsg.stateName='dummy';\nmsg.stateRole='value'; \n//msg.stateType= // boolean //number // string\nmsg.stateReadonly=false;\n//msg.stateUnit\n//msg.stateMin\n//msg.stateMax\n\nvar E=msg.payload;\nvar W=0;\nif(E.substring(0,3)==\"PWR\"){ //Power\n W=parseInt(E.substring(3)); \n flow.set(\"PowerOn\",W); \n msg.topic='PowerOn';\n msg.stateName='PowerOn'; \n msg.stateRole='value';\n msg.stateType='boolean';\n if(W==1){\n msg.payload=false; \n }else{\n msg.payload=true;\n }\n \n}\nif(E.substring(0,3)==\"APR\"){ //Power 2. Zone\n W=E.substring(3);\n W=parseInt(E.substring(3)); \n flow.set(\"PowerOn2\",W); \n msg.topic='PowerOnZ2';\n msg.stateName='PowerOnZ2'; \n msg.stateRole='value';\n msg.stateType='boolean';\n if(W==1){\n msg.payload=false; \n }else{\n msg.payload=true;\n } \n}\n\n\nmsg.topic=Pfad+msg.topic;\nreturn msg;", "outputs": 1, "noerr": 0, "initialize": "", "finalize": "", "x": 1000, "y": 160, "wires": [ [ "d2a16aba.9f9748", "b47a4fe6.c47dc" ] ] }, { "id": "d2a16aba.9f9748", "type": "ioBroker out", "z": "643715a7.56ebfc", "name": "", "topic": "", "ack": "true", "autoCreate": "true", "stateName": "", "role": "", "payloadType": "", "readonly": "", "stateUnit": "", "stateMin": "", "stateMax": "", "x": 1220, "y": 160, "wires": [] }, { "id": "4cb45c67.1562f4", "type": "telnet-connection", "z": "", "name": "AVX-922", "address": "192.168.2.51", "port": "8102", "inDelimiter": "", "outDelimiter": "\\r", "timeOut": "1500", "clearOut": "", "openTries": "1" } ] -
schade, bei meinem vsx510 (slim) scheint es nicht zu funktionieren `
Beim VSX510 ist der Port auch 8102, als Script läuft das ganze auch bei mir, man kann nur keinen festen Lautstärke wert übergeben. Glaube das geht aber bei einigen Modellen nicht.
Gruß
@beboe @schroeder1 @Tom10web
Ich habe mich jetzt auch mal mit dem Thema beschäft. Auch bei mir (VSX-S510) lässt sich die Lautstärke nur ändern, aber nicht auf einen bestimmten Wert setzen.
Aber auch die Input-Belegung ist anders, als im auf github zum Adpater verlinkten Dokument. Das Internet-Radio (Anzeige NETWORK) erreicht ich z.B. über 38FN.Aber ich habe hier entdeckt, dass es wohl zahlreiche unterschiedliche Implementierungen der Befehle gibt.
Dafür konnte ich auch gut sehen, dass, obwohl im Dispaly des VSX-S510 kaum etwas steht, alle Daten die auf einem Bildschirm angezeigt würden, abrufbar sind bzw. der Receiver diese automatisch sendet (Bitrate, Titel, Sendername, ...)
Ich habe hier eine neue Implementierung eines Adapters gefunden, der auch darauf eingeht, dass Geräte offline gehen (weil sie im Standby die Netzwerkverbindung nicht aufrecht erhalten), Timeout-Fehler abfängt und sich automatisch neu verbindet.
Außerdem werden die State mit Key/Value-Paaren belegt, so dass man keine kryptischen Werte eintragen muss sondern sprechende Namen (TV, NETWORK, ...) auswählen kann.
Ich habe den Adapter mal unter https://github.com/Sneak-L8/ioBroker.pioneer_sc_vsx geforkt und versuche ihn nun zu erweitern. Z.B. Anzeige der Internet-Radiodaten oder Push-Buttons für Volumeup/down.