Я пытаюсь воспроизвести этот HTTP API для блоков mPower Ubiquiti с использованием Curb gem и хранилища вывод из этого в файл CSV.
Использование cURL:
curl -X POST -d "username=user&password=pass" -b "AIROS_SESSIONID=01234567890123456789012345678901" 192.168.1.75/login.cgi
curl -b "AIROS_SESSIONID=01234567890123456789012345678901" 192.168.1.75/sensors/1/power
Возвращает:
{"sensors":[{"power":2.740736961}],"status":"success"}
Моя попытка использовать Curb:
require 'curb'
cookie = rand(36**32).to_s(36)
curl = Curl::Easy.new('http://192.168.1.75/login.cgi')
curl.http_post(
Curl::PostField.content('username', 'user'),
Curl::PostField.content('password', 'pass'))
curl = Curl::Easy.new('http://192.168.1.75/sensors/1/power')
curl.cookies = cookie
curl.perform
Добавление puts curl.perform
в конец скрипта напечатает true
.
Используя cURL, я обычно могу получить данные с задержкой от 1 до 3 секунд с момента выполнения curl -b...
из командной строки до появления ответа. Как добиться тех же результатов с помощью Curb и сохранить только данные о мощности в локальной переменной? Есть ли лучший инструмент для выполнения этой задачи, кроме Curb?