Добрый день!
Накидал скрипт для получения последнего значения из базы данных postgresql, но что-то перемудрил помогите!
var {Client} = require(‘PG’);
// Настройки подключения к базе данных
var Client = new Client({
user: ‘admin’, // Замените на ваше имя пользователя
host: ‘localhost’, // Замените на хост вашей базы данных
database: ‘SCADA’, // Имя базы данных
password: ‘SCADA’, // Замените на ваш пароль
port: 5432, // Порт по умолчанию для PostgreSQL
});
// Функция для получения последнего значения
function getLastHorQValue() {
client.connect(function (err) {
if (err) {
console.error(‘Ошибка при подключении к базе данных:’, err);
return;
}
// Выполнение запроса
client.query('select "Hour_Q" from hraneniya order by updated_at desc limit 1', function (err, res) {
if (err) {
console.error('Ошибка при выполнении запроса:', err);
} else {
if (res.rows.length > 0) {
console.log('Последнее значение Hour_Q:', res.rows[0].Hour_Q);
} else {
console.log('Нет данных в таблице.');
}
}
// Закрытие подключения
client.end(function (err) {
if (err) {
console.error('Ошибка при закрытии подключения:', err);
}
});
});
});
}
getLastHorQValue();
ошибка: SyntaxError: invalid variable declaration (line 1) duk_js_compiler.c:4653
Добрый день!
Попробуйте изменить код следующим образом:
const { Client } = require('pg'); // Подключение к модулю pg
// Настройки подключения к базе данных
const client = new Client({
user: 'admin', // Замените на ваше имя пользователя
host: 'localhost', // Замените на хост вашей базы данных
database: 'SCADA', // Имя базы данных
password: 'SCADA', // Замените на ваш пароль
port: 5432, // Порт по умолчанию для PostgreSQL
});
// Функция для получения последнего значения
function getLastHorQValue() {
client.connect(function (err) {
if (err) {
console.error('Ошибка при подключении к базе данных:', err);
return;
}
// Выполнение запроса
client.query('SELECT "Hour_Q" FROM hraneniya ORDER BY updated_at DESC LIMIT 1', function (err, res) {
if (err) {
console.error('Ошибка при выполнении запроса:', err);
} else {
if (res.rows.length > 0) {
console.log('Последнее значение Hour_Q:', res.rows[0].Hour_Q);
} else {
console.log('Нет данных в таблице.');
}
}
// Закрытие подключения
client.end(function (err) {
if (err) {
console.error('Ошибка при закрытии подключения:', err);
}
});
});
});
}
getLastHorQValue();
Основные изменения:
- Импорт библиотек
pg
должен быть через const
.
- Присвоение
new Client
должно быть также в переменную объявленную через const
.
- Убедитесь, что названия JSON полей и SQL идентификаторов (таких как
"Hour_Q"
) правильно указывают на существующие столбцы в вашей базе данных.
Не сраслось, может java не поддерживает? у меня релиз 2307. но при попытки обновиться вывело вот это
ошибка.bmp (977,0 КБ)
Добрый день!
Рекомендую обновиться. А так же уточните подробнее, какую именно задачу решаете.
при попытке обновиться вышла ошибка
ошибка.bmp (977,0 КБ)
Хочу данные отправлять в базу данных postgre, ну иногда дёргать по времени
Добрый день
Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.
Обновился до 2501, но проблемам со скриптом не ушла
Добрый день!
Я правильно понимаю, что вы хотите передавать данные из MQTT во внешнюю базу данных PostgreSQL? А точнее в SCADA?
Да, пока задача стоит выдернуть значение из базы, для отправки в телегам( суточные показания тепла)
Добрый день.
Стандартными средствами вашу задачу решить из коробки не выйдет.
Если требуется только получение информации температуры я бы рекомендовал рассмотреть 2 направления
- Прямая интеграция MQTT в SCADA систему
- Интеграция MQTT с Grafana
у нас на предприятии есть scada, вопрос в другом wirenboard может дёргать данные по запросы в базе данных или синтаксис не позволяет? как с вышеуказанным скриптом?
Я просто хотел-бы данные напрямую в базу отправлять а не через скаду
Добрый день!
Технически таких ограничений нет, так как используется стандартный Linux. Однако ранее подобного опыта не было.
Первое, что приходит в голову, — отдельный Python-скрипт, работающий вне WB Rules, для передачи данных из MQTT в PostgreSQL.
Также рассмотрите возможность использования InfluxDB, так как она лучше подходит для оперативной работы с данными. Подробнее: MQTT + InfluxDB.
спасибо за ответ буду побывать, по результатам отпешусь
1 лайк
Совсем недавно решал аналогичную задачу.
Вот пример скрипта который подключается к mqtt и все значения записывает в БД на postgresql
wb_history_agent.py (3,1 КБ)
В нём правда нет обработки ошибок, но основную задачу решает.
Добрый день,
Удалось ли решить вопрос?
Приветствую, я немного переделал чтобы не записывать все значения а необходимые топики.Но в целом годная тема. Спасибо
1 лайк