Коллеги хочу передавать данные по температуре в гугл таблицу методом POST
Соответсвенно сделать команду через функцию fetch
WB-rules ругается что не знает такой функции
Как использовать метод Post в wb-rules?
Вот мой скрипт
var freezer1 = "Температура в горячем цеху " + dev [“hwmon/CPU Temperature”]
defineRule(“temperatuteInLog”, {
when: cron(“@every 0h1m”),
then: function () {
var str = “Температура отправлена” + freezer1
log (str)
log (typeof (str))
fetch (“https://sb-film.skillbox.cc/films ”, {
method: “POST”,
headers: {
“Content-Type”: “text/html”,
},
body: freezer1
})
}
});
Выдается вот такая ошибка
Apr 04 16:54:36 wirenboard-A7X5EPKR wb-rules[31875]: ERROR: [rule error] ECMAScript error: ReferenceError: identifier ‘fetch’ undefined
duk_js_var.c:1232
anon /etc/wb-rules/temperatureInLog.js:32 preventsyield
call native strict preventsyield
anon /usr/share/wb-rules-system/scripts/lib.js:240 preventsyield
avspnz
04.Апрель.2024 13:01:56
3
Добрый день.
В wb-rules используется стандарт ECMAScript 5, а функция fetch
появилась только в 6 версии.
Вы можете отправить POST-запрос с помощью runShellCommand() и утилиты curl . Вот как пример, аналогичный вашему примеру с fetch
:
curl -X POST -H "Content-Type: text/html" -d "freezer1" https://sb-film.skillbox.cc/films
, где:
-X POST
указывает, что метод запроса должен быть POST.
-H "Content-Type: text/html"
задает заголовок Content-Type
, указывающий тип содержимого как text/html
.
-d "freezer1"
задает тело запроса, которое в вашем случае будет содержать строку "freezer1"
.
https://sb-film.skillbox.cc/films
представляет адрес, куда будет отправлен запрос.
1 лайк
avspnz
04.Апрель.2024 14:25:08
5
Команду необходимо указывать в качестве аргумента cmd
функции runShellCommand
. Вот здесь описано подробнее — https://github.com/wirenboard/wb-rules?tab=readme-ov-file#запуск-внешних-процессов-spawn
напишите ПЖЛ как будет выглядеть код целиком в этой команде, а то непонятно написано
Типичный пример выполнения внешних команд с анализом вывода можно посмотреть тут:
если в консоли: используем команду вида
wb-mqtt-db-cli -h 127.0.0.1 --from '2020-06-16 09:06:30' --to '2020-06-18' --limit 1 -d';' wb-adc/5Vout |tail -1 | cut -f 3 -d';'
для нужного устройства, периода времени (период - можно указывать переменными ессно).
tail -1 | cut -f 3 -d’;’ - вернет третье (среднее значение параметра за период) поле второй (последней) строки
В скрипте пользоваться так:
runShellCommand("wb-mqtt-db-cli -h 127.0.0.1 --from '2020-06-16 09:06:30' --to '2020-06-18' --li…
Пример анализа статуса выполнения можно посмотреть тут: Скрипт для пингования хоста
Так, а что именно непонятно? Что можно улучшить в описании?