NEWS
Parser Adapter
-
Помогите разобраться с данным адаптером. Требуется получить данные с температурных датчиков. Есть web страница от Ардуины, на нее заходим по 192.168.25.86/dev и получаем такой результат
T0:2888ADD702000042:23.06;
T1:2814A5D7020000B0:23.62;
T2:2872267B0400002E:7.38;
T3:28CA1A3B040000CD:21.94;
T4:28E6D5D7020000C1:-8.94;
T5:2816B47A0400008A:19.94;
T6:282B86D7020000CF:26.44;
T7:28AB9DD702000029:14.75;
создаю RegEx 28E6D5D7020000C1:(.+?);
и по логике должен получить -8.94….... но НЕ ПОЛУЧАЕТСЯ.....
как и где и что я делаю не так, в Мажордоме это нормально работает
-
Непонятно зачем вопрос там.
28E6D5D7020000C1:([-.\d]+);
Работает
-
неа, не растет какос…. Не показывает температуру. т.е. вообще ни чего не показывает
1308___________.jpg -
И еще в таком варианте рисует ошибку
parser.0 2017-01-31 21:39:00.229 error Cannot read link "http://192.168.0.89/getdev": Error: Parse Error
а если сделать так
тогда parser.0 2017-01-31 21:40:33.533 info starting. Version 0.1.1 in C:/ioBroker/node_modules/iobroker.parser, node: v0.10.25
тогда ошибки нет, но и результата нет
-
И еще в таком варианте рисует ошибку
parser.0 2017-01-31 21:39:00.229 error Cannot read link "http://192.168.0.89/getdev": Error: Parse Error
а если сделать так
тогда parser.0 2017-01-31 21:40:33.533 info starting. Version 0.1.1 in C:/ioBroker/node_modules/iobroker.parser, node: v0.10.25
тогда ошибки нет, но и результата нет `
nodejs обнови, совсем версия старая -
Версию обновил, результат тот же, не кажет темературу
-
Версию обновил, результат тот же, не кажет темературу `
В логе что сейчас? -
эт тока вечером…..
но на сколько я помню - ошибок нет.
-
ну вообщем - не работает
В логе вот это
parser.0 2017-02-01 23:05:46.241 info starting. Version 0.1.1 in C:/ioBroker/node_modules/iobroker.parser, node: v0.10.25
host.GoldFish2 2017-02-01 23:05:45.851 info instance system.adapter.parser.0 started with pid 656
host.GoldFish2 2017-02-01 23:05:45.804 info object change system.adapter.parser.0
host.GoldFish2 2017-02-01 23:05:33.415 info object change system.adapter.parser.0
host.GoldFish2 2017-02-01 23:05:23.679 info instance system.adapter.parser.0 terminated with code null ()
host.GoldFish2 2017-02-01 23:05:23.679 warn instance system.adapter.parser.0 terminated due to SIGTERM
host.GoldFish2 2017-02-01 23:05:23.679 info stopInstance system.adapter.parser.0 killing pid 2164
host.GoldFish2 2017-02-01 23:05:23.679 info stopInstance system.adapter.parser.0
host.GoldFish2 2017-02-01 23:05:23.679 info object change system.adapter.parser.0
-
И по чему вот такое работает:
https://darksky.net/forecast/43.3969,132.1887/si24/de temp swip">(-?\d+)˚<
-
parser.0 2017-02-01 23:23:53.900 error parser.0 Cannot read link "http://192.168.0.89/state": Error: Parse Error
parser.0 2017-02-01 23:23:48.861 error parser.0 Cannot read link "http://192.168.0.89/state": Error: Parse Error
parser.0 2017-02-01 23:23:43.776 error parser.0 Cannot read link "http://192.168.0.89/state": Error: Parse Error
parser.0 2017-02-01 23:23:38.737 error parser.0 Cannot read link "http://192.168.0.89/state": Error: Parse Error
parser.0 2017-02-01 23:23:33.667 error parser.0 Cannot read link "http://192.168.0.89/state": Error: Parse Error
fа если в парсере вбить http://192.168.0.89/state/ - тогда этой ошибки не будет но и значения нет
-
и еще вот такое есть:
parser.0 2017-02-01 23:29:58.630 error at IncomingMessage.g (events.js:180:16)
parser.0 2017-02-01 23:29:58.630 error at IncomingMessage. (C:\ioBroker\node_modules\iobroker.parser\node_modules\request\request.js:1001:12)
parser.0 2017-02-01 23:29:58.630 error at Request.EventEmitter.emit (events.js:95:17)
parser.0 2017-02-01 23:29:58.630 error at Request. (C:\ioBroker\node_modules\iobroker.parser\node_modules\request\request.js:1081:10)
parser.0 2017-02-01 23:29:58.630 error at Request.EventEmitter.emit (events.js:98:17)
parser.0 2017-02-01 23:29:58.630 error at Request.self.callback (C:\ioBroker\node_modules\iobroker.parser\node_modules\request\request.js:186:22)
parser.0 2017-02-01 23:29:58.630 error at Request._callback (C:\ioBroker\node_modules\iobroker.parser\main.js:214:29)
parser.0 2017-02-01 23:29:58.630 error at analyseDataForStates (C:\ioBroker\node_modules\iobroker.parser\main.js:122:5)
parser.0 2017-02-01 23:29:58.630 error at _analyseDataForStates (C:\ioBroker\node_modules\iobroker.parser\main.js:104:9)
parser.0 2017-02-01 23:29:58.630 error at analyseData (C:\ioBroker\node_modules\iobroker.parser\main.js:138:27)
parser.0 2017-02-01 23:29:58.630 error TypeError: Cannot call method 'exec' of undefined
parser.0 2017-02-01 23:29:58.630 error uncaught exception: Cannot call method 'exec' of undefined
parser.0 2017-02-01 23:27:10.091 info starting. Version 0.1.1 in C:/ioBroker/node_modules/iobroker.parser, node: v0.10.25
тока не могу понять с чем это связано
-
и еще вот такое есть:
parser.0 2017-02-01 23:29:58.630 error at IncomingMessage.g (events.js:180:16)
parser.0 2017-02-01 23:29:58.630 error at IncomingMessage. (C:\ioBroker\node_modules\iobroker.parser\node_modules\request\request.js:1001:12)
parser.0 2017-02-01 23:29:58.630 error at Request.EventEmitter.emit (events.js:95:17)
parser.0 2017-02-01 23:29:58.630 error at Request. (C:\ioBroker\node_modules\iobroker.parser\node_modules\request\request.js:1081:10)
parser.0 2017-02-01 23:29:58.630 error at Request.EventEmitter.emit (events.js:98:17)
parser.0 2017-02-01 23:29:58.630 error at Request.self.callback (C:\ioBroker\node_modules\iobroker.parser\node_modules\request\request.js:186:22)
parser.0 2017-02-01 23:29:58.630 error at Request._callback (C:\ioBroker\node_modules\iobroker.parser\main.js:214:29)
parser.0 2017-02-01 23:29:58.630 error at analyseDataForStates (C:\ioBroker\node_modules\iobroker.parser\main.js:122:5)
parser.0 2017-02-01 23:29:58.630 error at _analyseDataForStates (C:\ioBroker\node_modules\iobroker.parser\main.js:104:9)
parser.0 2017-02-01 23:29:58.630 error at analyseData (C:\ioBroker\node_modules\iobroker.parser\main.js:138:27)
parser.0 2017-02-01 23:29:58.630 error TypeError: Cannot call method 'exec' of undefined
parser.0 2017-02-01 23:29:58.630 error uncaught exception: Cannot call method 'exec' of undefined
parser.0 2017-02-01 23:27:10.091 info starting. Version 0.1.1 in C:/ioBroker/node_modules/iobroker.parser, node: v0.10.25
тока не могу понять с чем это связано `
node: v0.10.25 ….. так и не обновил node js? -
Ну похоже что обновил, но не то. Как НОДУ обновить….
С моими хотелками парсера похоже проблемы в коде страницы. Не могу понять.... вот скрины... Может сможешь подсказать куда рыть...
1308_____________.jpg -
и второй
1308_______.jpg -
Ну похоже что обновил, но не то. Как НОДУ обновить…. `
Если Debianapt-get --purge remove node apt-get --purge remove nodejs apt-get autoremove reboot
apt-get update apt-get upgrade apt-get install curl build-essential curl -sL https://deb.nodesource.com/setup_4.x | bash - apt-get install -y nodejs reboot
-
А если это Windows??
-
Подниму тему. Имею аналогичную проблему при попытке получить статичный файл через веб-морду OpenWrt (веб-сервер uhttpd).
На роутере есть текстовый файлик со значениями, ссылка вида http://192.168.0.1/tmp/lastvolt.txt
curl'ом все прекрасно читается, а вот parser adapter ругается, говорит:
Cannot read link "http://192.168.0.1/tmp/lastvolt.txt": Error: Parse Error
Закидываю этот файлик на сервер в интернете - все прекрасно читается и значения получаются.
Запрашиваю веб-морду роутера и пытаюсь её пропарсить:
Адрес: http://192.168.0.1/cgi-bin/luci
Regex: Powered by LuCI ([\d.]+)
Все прекрасно запрашивается и парсится. WGET'ом скачиваю эту страницу в файл и кладу в роутер, parser adapter опять ругается той же ошибкой.
Посмотрел заголовки, которые приходят от серверов:
Запрос веб-морды роутера, удачный парсинг.
curl --head http://192.168.0.1/cgi-bin/luci HTTP/1.1 200 OK Connection: close Transfer-Encoding: chunked Content-Type: text/html Cache-Control: no-cache Expires: 0
Запрос нужного файлика с сайта в интернете, удачный парсинг.
curl --head http://site.ru/lastvolt.txt HTTP/1.1 200 OK Server: nginx Date: Mon, 22 Jan 2018 15:30:54 GMT Content-Type: text/plain Content-Length: 66 Last-Modified: Mon, 22 Jan 2018 14:54:48 GMT Connection: keep-alive ETag: "5a65fb38-42" Expires: Mon, 22 Jan 2018 21:01:00 GMT Cache-Control: max-age=19806 Accept-Ranges: bytes
Запрос нужного файлика с роутера, парсинг не получился.
curl --head http://192.168.0.1/tmp/lastvolt.txt HTTP/1.1 200 OK Connection: close ETag: "6ea9-42-5a6601c5" Last-Modified: Mon, 22 Jan 2018 15:22:45 GMT Date: Mon, 22 Jan 2018 15:22:49 GMT Content-Type: text/plain Content-Length: 66
Похоже, проблема при получении страницы нодой. К сожалению в ноде не силен и не могу проверить что происходит на уровне кода.
-
Нашел, похоже, в чём проблема https://github.com/request/request/issues/2091
Видать сервер отдает немного кривые заголовки и NODE.request их не пропускает.
Что же делать-то? В сфере умных домов куча всяких роутеров, ардуин и пр. с кривыми заголовками.
-
А может можно сделать, в качестве затычки, чтобы в parser adapter можно было указывать не только файл или URL, но и команду, а парсить уже её результат?
Ну или хотя бы сделать возможность использовать CURL/WGET для запроса URL'ов.