devicehive / esp8266-firmware

DeviceHive esp8266 firmware. Control hardware via clouds with DeviceHive!
MIT License
165 stars 48 forks source link

Проблема с использованием adc/read, ошибка base64 #10

Closed Ryo-Zi closed 8 years ago

Ryo-Zi commented 8 years ago

Пытаюсь считать данные с ADC, в панели управления данные нормально отображаются. При попытке модифицировать стандартный JS скрипт для работы, после успешного считывания данных с датчика (в панели управления) и передачи ответа сервера в функцию:

function datarecevied(base64) {
    var data = atob(base64);
    print("ADS = " + data, "green");
    measure();
}

Сам запрос:

xmlhttp.send(JSON.stringify({"command":"adc/read", "parameters":{"0":"read"}}))

В консоли браузера получаю ошибку:

Uncaught InvalidCharacterError: Failed to execute 'atob' on 'Window': The string to be decoded is not correctly encoded.

Я делаю что-то не так или данные с сервера приходят "битые"?

Nikolay-Kha commented 8 years ago

С ADC данные приходят в json внутри которого числа с плавающей запятой напротив каждого входа ADC(у esp8266 он один). т.е. данные в результате команды будут ввида {"0":"0.554"}. В функции которая зовет datarecevied(base64) нужно убрать извление поля "data", а вместо этого извлечь поле "0". Полученное число с плавающей запятое - напряжение на входе ADC в Вольтах. На ADC можно подавать от 0 до 1 Волта. Дискретность ADC - 10 бит.

Ryo-Zi commented 8 years ago

Спасибо за помощь ;)