NEWS
ESP8266 TDA7313 iobroker
-
Появилась необходимость в усилителе с сетевым управление.
В качестве усилителя был куплен на запчасти автомобильный магнитофон Prology CMD-120 без панельки.
Вскрытие показала, что внутри стоит усилитель на TDA7386 и цифровой темброблок на PL2313 (аналог TDA7313) управление по I2C.
Тут и пришла мысль управлять ей (pl2313) через ESP8266 с прошивкой homes-smart GET-запросами.
За основу была взята схема от CMD-125 так как на 120 я не нашел (да и отличается 120 от 125 тем, что в 120 нет AUX входа)
Из prology был удален CD привод, выпаян процессор, так как "рулить" теперь будет ESP8266.
Установил внутрь плату ESP и подпаялся к PL2313 и ключам управления.
На скорую руку написал Вот такой скрипт и сделал страницу.
! var request = require('request');
! createState('ESPmusic.Volume', ''); //создаем переменную в iobroker
! createState('ESPmusic.Power', ''); //т.д…
! createState('ESPmusic.Switch', '');
! createState('ESPmusic.Bass', '');
! createState('ESPmusic.Treble', '');
! createState('ESPmusic.SpeakerLF', '');
! createState('ESPmusic.SpeakerRF', '');
! createState('ESPmusic.SpeakerLR', '');
! createState('ESPmusic.SpeakerRR', '');
! createState('ESPmusic.Loudness', '');
! createState('ESPmusic.dB', '');
! var IP = getState ("javascript.0.ESPmusic.IP"/ESPmusic.IP/).val; // берем ip ESP8266 из iobroker
! on({id: "javascript.0.ESPmusic.Power"/ESPmusic.Power/, change: 'any'}, function (obj) { // включаем усилителя (значение может быть от 0 (выкл) и 1 (вкл))
! if (obj.newState.val ==1){
! request("http://"+IP+"/gpio?st=1&pin=5", function(error, response, body){ // отправляем на ESP (использую GPIO5 ESP)
! if(error) {
! log(error);
! }
! });
! // инициализация при запуске, считываем все значения из iobroker от предыдущей сессии и отправляем на ESP
! var Volume = getState ("javascript.0.ESPmusic.Volume"/ESPmusic.Volume/).val;
! if(Volume === ""){
! Volume = 30; // среднее значение есть не указана в iobrokere
! }
! var hexVolume = Volume.toString(16); // преобразуем из десятичного (dec) в шестнадцатеричный (hex)
! var a=hexVolume.length;
! if(a==1){
! hexVolume= "0"+hexVolume;
! }
! Volume = hexVolume;
! log("Volume = "+Volume);
! var Bass = getState ("javascript.0.ESPmusic.Bass"/ESPmusic.Bass/).val;
! if(Bass === ""){
! Bass = 8; // среднее значение есть не указана в iobrokere
! }
! var hexBass;
! if(Bass<=7){ //преобразование
! Bass = 60 + Bass;
! }else {
! Bass = 111 + 8 - Bass;
! hexBass = Bass.toString(16);
! Bass = hexBass;
! }
! log("Bass = "+Bass);
! var Treble = getState ("javascript.0.ESPmusic.Treble"/ESPmusic.Treble/).val;
! if(Volume === ""){
! Treble = 8; // среднее значение есть не указана в iobrokere
! }
! var hexTreble;
! if(Treble<=7){ //преобразование
! Treble = 70 + Treble;
! }else {
! Treble = 127 + 8 - Treble;
! hexTreble = Treble.toString(16);
! Treble = hexTreble;
! }
! log("Treble = "+Treble);
! var Switch = getState ("javascript.0.ESPmusic.Switch"/ESPmusic.Switch/).val;
! if(Switch === ""){
! Switch = 3; // среднее значение есть не указана в iobrokere
! }
! log("Switch = "+Switch);
! var Loudness = getState ("javascript.0.ESPmusic.Loudness"/ESPmusic.Loudness/).val;
! if(Loudness === ""){
! Loudness = 0; // среднее значение есть не указана в iobrokere
! }
! switch (Loudness) {
! case 0:
! Loudness = 4;
! break;
! case 1:
! Loudness = 0;
! break;
! default:
! Loudness = 4;
! }
! log("Loudness = "+Loudness);
! var dB = getState ("javascript.0.ESPmusic.dB"/ESPmusic.dB/).val;
! if(dB === ""){
! dB = 0; // среднее значение есть не указана в iobrokere
! }
! switch (dB) {
! case 0:
! dB = 0;
! break;
! case 1:
! dB = 8;
! break;
! case 2:
! dB = 16;
! break;
! case 3:
! dB = 24;
! break;
! default:
! dB = 24;
! }
! log("dB = "+dB);
! var AudioSwitch = 64+dB+Loudness+Switch;
! var hexAudioSwitch = AudioSwitch.toString(16);
! AudioSwitch=hexAudioSwitch;
! var SpeakerLF = getState ("javascript.0.ESPmusic.SpeakerLF"/ESPmusic.SpeakerLF/).val;
! if(SpeakerLF === ""){
! SpeakerLF = 0; // среднее значение есть не указана в iobrokere
! }
! SpeakerLF = 128 + SpeakerLF;
! var hexSpeakerLF = SpeakerLF.toString(16);
! SpeakerLF = hexSpeakerLF;
! var SpeakerRF = getState ("javascript.0.ESPmusic.SpeakerRF"/ESPmusic.SpeakerRF/).val;
! if(SpeakerRF === ""){
! SpeakerRF = 0; // среднее значение есть не указана в iobrokere
! }
! SpeakerRF = 160 + SpeakerRF;
! var hexSpeakerRF = SpeakerRF.toString(16);
! SpeakerRF = hexSpeakerRF;
! var SpeakerLR = getState ("javascript.0.ESPmusic.SpeakerLR"/ESPmusic.SpeakerLR/).val;
! if(SpeakerLR === ""){
! SpeakerLR = 0; // среднее значение есть не указана в iobrokere
! }
! SpeakerLR = 192 + SpeakerLR;
! var hexSpeakerLR = SpeakerLR.toString(16);
! SpeakerLR = hexSpeakerLR;
! var SpeakerRR = getState ("javascript.0.ESPmusic.SpeakerRR"/ESPmusic.SpeakerRR/).val;
! if(SpeakerRR === ""){
! SpeakerRR = 0; // среднее значение есть не указана в iobrokere
! }
! SpeakerRR = 192 + SpeakerRR;
! var hexSpeakerRR = SpeakerRR.toString(16);
! SpeakerRR = hexSpeakerRR;
! setTimeout(function() {
! request("http://"+IP+"/i2cgo?adr=44&set="+AudioSwitch+SpeakerLF+SpeakerRF+SpeakerLR+SpeakerRR+Treble+Bass+Volume, function(error, response, body){
! if(error) { // устанавливаем значение tda7313 от предыдущей сессии
! log(error);
! }
! });
! },500);
! }else{
! request("http://"+IP+"/gpio?st=0&pin=5", function(error, response, body){ // выключаем усилитель
! if(error) {
! log(error);
! }
! });
! }
! });
! on({id: "javascript.0.ESPmusic.Switch"/ESPmusic.Switch/, change: 'any'}, function (obj) {
! var Switch = obj.newState.val; // подписываемся на изменения переменной ESPmusic.Switch (значение может быть от 0 (Stereo 1), 1 (Stereo 2) и 2 (Stereo 3))
! if(Switch === ""){
! Switch = 3; // среднее значение есть не указана в iobrokere
! }
! var Loudness = getState ("javascript.0.ESPmusic.Loudness"/ESPmusic.Loudness/).val;
! if(Loudness === ""){
! Loudness = 0; // среднее значение есть не указана в iobrokere
! }
! switch (Loudness) {
! case 0:
! Loudness = 4;
! break;
! case 1:
! Loudness = 0;
! break;
! default:
! Loudness = 4;
! }
! var dB = getState ("javascript.0.ESPmusic.dB"/ESPmusic.dB/).val;
! if(dB === ""){
! dB = 0; // среднее значение есть не указана в iobrokere
! }
! switch (dB) {
! case 0:
! dB = 0;
! break;
! case 1:
! dB = 8;
! break;
! case 2:
! dB = 16;
! break;
! case 3:
! dB = 24;
! break;
! default:
! dB = 24;
! }
! log("dB = "+dB);
! var AudioSwitch = 64+dB+Loudness+Switch;
! var hexAudioSwitch = AudioSwitch.toString(16);
! AudioSwitch=hexAudioSwitch;
! log(AudioSwitch);
! request("http://"+IP+"/i2cgo?adr=44&set="+AudioSwitch, function(error, response, body){
! if(error) {
! log(error);
! }
! });
! });
! on({id: "javascript.0.ESPmusic.Loudness"/ESPmusic.Loudness/, change: 'any'}, function (obj) {
! var Loudness = obj.newState.val; // подписываемся на изменения переменной ESPmusic.Loudness (значение может быть от 0 (выкл) и 1 (вкл))
! if(Loudness === ""){
! Loudness = 0; // среднее значение есть не указана в iobrokere
! }
! switch (Loudness) {
! case 0:
! Loudness = 4;
! break;
! case 1:
! Loudness = 0;
! break;
! default:
! Loudness = 4;
! }
! var Switch = getState ("javascript.0.ESPmusic.Switch"/ESPmusic.Switch/).val;
! if(Switch === ""){
! Switch = 3; // среднее значение есть не указана в iobrokere
! }
! var dB = getState ("javascript.0.ESPmusic.dB"/ESPmusic.dB/).val;
! if(dB === ""){
! dB = 0; // среднее значение есть не указана в iobrokere
! }
! switch (dB) {
! case 0:
! dB = 0;
! break;
! case 1:
! dB = 8;
! break;
! case 2:
! dB = 16;
! break;
! case 3:
! dB = 24;
! break;
! default:
! dB = 24;
! }
! var AudioSwitch = 64+dB+Loudness+Switch;
! var hexAudioSwitch = AudioSwitch.toString(16);
! AudioSwitch=hexAudioSwitch;
! log(AudioSwitch);
! request("http://"+IP+"/i2cgo?adr=44&set="+AudioSwitch, function(error, response, body){
! if(error) {
! log(error);
! }
! });
! });
! on({id: "javascript.0.ESPmusic.dB"/ESPmusic.dB/, change: 'any'}, function (obj) { //доп. усиление
! var dB = obj.newState.val; // подписываемся на изменения переменной ESPmusic.dB (значение может быть от 0 (+11.25dB), 1 (+7.5dB), 2 (+3.75dB) и 3 (0dB))
! if(dB === ""){
! dB = 0; // среднее значение есть не указана в iobrokere
! }
! switch (dB) {
! case 0:
! dB = 0;
! break;
! case 1:
! dB = 8;
! break;
! case 2:
! dB = 16;
! break;
! case 3:
! dB = 24;
! break;
! default:
! dB = 24;
! }
! var Loudness = getState ("javascript.0.ESPmusic.Loudness"/ESPmusic.Loudness/).val;
! if(Loudness === ""){
! Loudness = 0; // среднее значение есть не указана в iobrokere
! }
! switch (Loudness) {
! case 0:
! Loudness = 4;
! break;
! case 1:
! Loudness = 0;
! break;
! default:
! Loudness = 4;
! }
! var Switch = getState ("javascript.0.ESPmusic.Switch"/ESPmusic.Switch/).val;
! if(Switch === ""){
! Switch = 3; // среднее значение есть не указана в iobrokere
! }
! var AudioSwitch = 64+dB+Loudness+Switch;
! var hexAudioSwitch = AudioSwitch.toString(16); //переводим из dec в hex
! AudioSwitch=hexAudioSwitch;
! log(AudioSwitch);
! request("http://"+IP+"/i2cgo?adr=44&set="+AudioSwitch, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });
! on({id: "javascript.0.ESPmusic.Volume"/ESPmusic.Volume/, change: 'any'}, function (obj) { //регулировка громкости общая
! var volume = obj.newState.val; // подписываемся на изменения переменной ESPmusic.Volume (значение может быть от 0 - 63)
! var hexvolume = volume.toString(16);
! var a=hexvolume.length; // кол.сим
! if(a==1){
! hexvolume= "0"+hexvolume; //если символ один добавлеем "0" к значению
! }
! request("http://"+IP+"/i2cgo?adr=44&set="+hexvolume, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });
! on({id: "javascript.0.ESPmusic.Bass"/ESPmusic.Bass/, change: 'any'}, function (obj) { //регулировка НЧ
! var bass = obj.newState.val; // подписываемся на изменения переменной ESPmusic.Bass (значение может быть от 0 - 15)
! var hexbass;
! if(bass<=7){ // преобразование
! bass = 60 + bass;
! }else {
! bass = 111 + 8 - bass;
! hexbass = bass.toString(16); //переводим из dec в hex
! bass = hexbass;
! }
! request("http://"+IP+"/i2cgo?adr=44&set="+bass, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });
! on({id: "javascript.0.ESPmusic.Treble"/ESPmusic.Treble/, change: 'any'}, function (obj) { //регулировка ВЧ
! var treble = obj.newState.val; // подписываемся на изменения переменной ESPmusic.Treble (значение может быть от 0 - 15)
! var hextreble;
! if(treble<=7){ // преобразование
! treble = 70 + treble;
! }else {
! treble = 127 + 8 - treble;
! hextreble = treble.toString(16); //переводим из dec в hex
! treble = hextreble;
! }
! request("http://"+IP+"/i2cgo?adr=44&set="+treble, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });
! on({id: "javascript.0.ESPmusic.SpeakerLF"/ESPmusic.SpeakerLF/, change: 'any'}, function (obj) { //Регулировка громкости канала SpeakerLF
! var SpeakerLF = 128 + obj.newState.val; // подписываемся на изменения переменной ESPmusic.Treble (значение может быть от 0 - 30)
! var hexString = SpeakerLF.toString(16); //переводим из dec в hex
! log(hexString);
! request("http://"+IP+"/i2cgo?adr=44&set="+hexString, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });
! on({id:"javascript.0.ESPmusic.SpeakerRF"/ESPmusic.SpeakerRF/, change: 'any'}, function (obj) { //Регулировка громкости канала SpeakerRF
! var SpeakerRF = 160 + obj.newState.val; // подписываемся на изменения переменной ESPmusic.SpeakerRF (значение может быть от 0 - 30)
! var hexString = SpeakerRF.toString(16); //переводим из dec в hex
! log(hexString);
! request("http://"+IP+"/i2cgo?adr=44&set="+hexString, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });
! on({id:"javascript.0.ESPmusic.SpeakerLR"/ESPmusic.SpeakerLR/, change: 'any'}, function (obj) { //Регулировка громкости канала SpeakerLR
! var SpeakerLR = 192 + obj.newState.val; // подписываемся на изменения переменной ESPmusic.SpeakerLR (значение может быть от 0 - 30)
! var hexString = SpeakerLR.toString(16); //переводим из dec в hex
! request("http://"+IP+"/i2cgo?adr=44&set="+hexString, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });
! on({id:"javascript.0.ESPmusic.SpeakerRR"/ESPmusic.SpeakerRR/, change: 'any'}, function (obj) { //Регулировка громкости канала SpeakerRR
! var SpeakerRR = 224 + obj.newState.val; // подписываемся на изменения переменной ESPmusic.SpeakerRR (значение может быть от 0 - 30)
! var hexString = SpeakerRR.toString(16); //переводим из dec в hex
! request("http://"+IP+"/i2cgo?adr=44&set="+hexString, function(error, response, body){ //отправляем на ESP
! if(error) {
! log(error);
! }
! });
! });Экспортированная страница.
! {
! "settings": {
! "style": {
! "background_class": ""
! },
! "theme": "vader",
! "sizex": "",
! "sizey": "",
! "gridSize": ""
! },
! "widgets": {
! "e00001": {
! "tpl": "tplJquiSlider",
! "data": {
! "oid": "javascript.0.ESPmusic.Volume",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "min": "0",
! "max": "63",
! "step": "1",
! "inverted": true
! },
! "style": {
! "left": "346px",
! "top": "116px"
! },
! "widgetSet": "jqui"
! },
! "e00002": {
! "tpl": "tplJquiRadio",
! "data": {
! "oid": "javascript.0.ESPmusic.Power",
! "visibility-cond": "==",
! "visibility-val": 1,
! "off_text": "Выкл",
! "on_text": "Вкл",
! "padding": "5",
! "gestures-offsetX": 0,
! "gestures-offsetY": 0
! },
! "style": {
! "left": "74px",
! "top": "135px"
! },
! "widgetSet": "jqui"
! },
! "e00003": {
! "tpl": "tplJquiRadioList",
! "data": {
! "oid": "javascript.0.ESPmusic.Switch",
! "visibility-cond": "==",
! "visibility-val": 1,
! "values": "0;1;2",
! "texts": "1;2;3",
! "gestures-offsetX": 0,
! "gestures-offsetY": 0
! },
! "style": {
! "left": "74px",
! "top": "360px"
! },
! "widgetSet": "jqui"
! },
! "e00004": {
! "tpl": "tplJquiSliderVertical",
! "data": {
! "oid": "javascript.0.ESPmusic.Bass",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "min": "0",
! "max": "15",
! "step": "1",
! "inverted": false
! },
! "style": {
! "left": "584px",
! "top": "198px"
! },
! "widgetSet": "jqui"
! },
! "e00005": {
! "tpl": "tplJquiSliderVertical",
! "data": {
! "oid": "javascript.0.ESPmusic.Treble",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "min": "0",
! "max": "15",
! "step": "1",
! "inverted": false
! },
! "style": {
! "left": "647px",
! "top": "198px",
! "width": "23px",
! "height": "160px"
! },
! "widgetSet": "jqui"
! },
! "e00006": {
! "tpl": "tplJquiSliderVertical",
! "data": {
! "oid": "javascript.0.ESPmusic.SpeakerLF",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "min": "0",
! "max": "30",
! "step": "1",
! "inverted": true
! },
! "style": {
! "left": "342px",
! "top": "198px",
! "width": "23px",
! "height": "160px"
! },
! "widgetSet": "jqui"
! },
! "e00007": {
! "tpl": "tplJquiSliderVertical",
! "data": {
! "oid": "javascript.0.ESPmusic.SpeakerRF",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "min": "0",
! "max": "30",
! "step": "1",
! "inverted": true
! },
! "style": {
! "left": "393px",
! "top": "198px",
! "width": "23px",
! "height": "160px"
! },
! "widgetSet": "jqui"
! },
! "e00008": {
! "tpl": "tplJquiSliderVertical",
! "data": {
! "oid": "javascript.0.ESPmusic.SpeakerLR",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "min": "0",
! "max": "30",
! "step": "1",
! "inverted": true
! },
! "style": {
! "left": "444px",
! "top": "198px",
! "width": "23px",
! "height": "160px"
! },
! "widgetSet": "jqui"
! },
! "e00009": {
! "tpl": "tplJquiSliderVertical",
! "data": {
! "oid": "javascript.0.ESPmusic.SpeakerRR",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "min": "0",
! "max": "30",
! "step": "1",
! "inverted": true
! },
! "style": {
! "left": "495px",
! "top": "198px",
! "width": "23px",
! "height": "160px"
! },
! "widgetSet": "jqui"
! },
! "e00010": {
! "tpl": "tplJquiRadio",
! "data": {
! "oid": "javascript.0.ESPmusic.Loudness",
! "visibility-cond": "==",
! "visibility-val": 1,
! "off_text": "Выкл",
! "on_text": "Вкл",
! "padding": "5",
! "gestures-offsetX": 0,
! "gestures-offsetY": 0
! },
! "style": {
! "left": "74px",
! "top": "251px"
! },
! "widgetSet": "jqui"
! },
! "e00011": {
! "tpl": "tplJquiRadioList",
! "data": {
! "oid": "javascript.0.ESPmusic.dB",
! "visibility-cond": "==",
! "visibility-val": 1,
! "values": "0;1;2;3",
! "texts": "+11.25dB; +7.5dB; +3.75dB; 0dB",
! "gestures-offsetX": 0,
! "gestures-offsetY": 0
! },
! "style": {
! "left": "304px",
! "top": "410px"
! },
! "widgetSet": "jqui"
! },
! "e00012": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "Питание"
! },
! "style": {
! "left": "100px",
! "top": "188px",
! "width": "109px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00013": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "Loudness"
! },
! "style": {
! "left": "100px",
! "top": "303px",
! "width": "140px",
! "height": "32px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00014": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "Switch"
! },
! "style": {
! "left": "104px",
! "top": "409px",
! "width": "140px",
! "height": "32px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00015": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "Громкость"
! },
! "style": {
! "left": "371px",
! "top": "144px",
! "width": "137px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00016": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "НЧ"
! },
! "style": {
! "left": "582px",
! "top": "372px",
! "width": "41px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00017": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "ВЧ"
! },
! "style": {
! "left": "640px",
! "top": "372px",
! "width": "41px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00018": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "RF"
! },
! "style": {
! "left": "392px",
! "top": "372px",
! "width": "41px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00019": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "LF"
! },
! "style": {
! "left": "340px",
! "top": "372px",
! "width": "41px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00020": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "LR"
! },
! "style": {
! "left": "444px",
! "top": "372px",
! "width": "41px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! },
! "e00021": {
! "tpl": "tplValueString",
! "data": {
! "oid": "nothing_selected",
! "visibility-cond": "==",
! "visibility-val": 1,
! "gestures-offsetX": 0,
! "gestures-offsetY": 0,
! "test_html": "",
! "html_prepend": "RR"
! },
! "style": {
! "left": "494px",
! "top": "372px",
! "width": "41px",
! "height": "33px",
! "color": "#000000",
! "font-weight": "bold",
! "font-size": "x-large"
! },
! "widgetSet": "basic"
! }
! },
! "name": "Тест",
! "rerender": false,
! "filterList": []
! }Работает все довольно быстро и не плохо, на веб морду вывел кнопку включения, выбор аудио входа, переключатель доп. усиления ползунок громкости, тембра, и раздельная регулировки каждого канала.
Из минусов только то, что радиоприемник аналоговый (и нужно городить синтезатор частоты для его управления), ну или под искать тюнер с цифровым управление. Хотя тут уже другой вопрос: нужен ли он!?
Вот не большое видео работы веб морды.
П.Ы. динамик подключен только один.