Скрипт для подключению к postgresql

Добрый день!
Накидал скрипт для получения последнего значения из базы данных 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();

Основные изменения:

  1. Импорт библиотек pg должен быть через const.
  2. Присвоение new Client должно быть также в переменную объявленную через const.
  3. Убедитесь, что названия JSON полей и SQL идентификаторов (таких как "Hour_Q") правильно указывают на существующие столбцы в вашей базе данных.

Не сраслось, может java не поддерживает? у меня релиз 2307. но при попытки обновиться вывело вот это

ошибка.bmp (977,0 КБ)

Добрый день!

Рекомендую обновиться. А так же уточните подробнее, какую именно задачу решаете.

при попытке обновиться вышла ошибка
ошибка.bmp (977,0 КБ)

Хочу данные отправлять в базу данных postgre, ну иногда дёргать по времени

Добрый день
Для диагностики проблемы пришлите, пожалуйста, архив с диагностической информацией контроллера. Создание архива описано в документации.

Обновился до 2501, но проблемам со скриптом не ушла

Добрый день!

Я правильно понимаю, что вы хотите передавать данные из MQTT во внешнюю базу данных PostgreSQL? А точнее в SCADA?

Да, пока задача стоит выдернуть значение из базы, для отправки в телегам( суточные показания тепла)

Добрый день.
Стандартными средствами вашу задачу решить из коробки не выйдет.
Если требуется только получение информации температуры я бы рекомендовал рассмотреть 2 направления

  1. Прямая интеграция MQTT в SCADA систему
  2. Интеграция MQTT с Grafana

у нас на предприятии есть scada, вопрос в другом wirenboard может дёргать данные по запросы в базе данных или синтаксис не позволяет? как с вышеуказанным скриптом?

Я просто хотел-бы данные напрямую в базу отправлять а не через скаду

Добрый день!

Технически таких ограничений нет, так как используется стандартный Linux. Однако ранее подобного опыта не было.

Первое, что приходит в голову, — отдельный Python-скрипт, работающий вне WB Rules, для передачи данных из MQTT в PostgreSQL.

Также рассмотрите возможность использования InfluxDB, так как она лучше подходит для оперативной работы с данными. Подробнее: MQTT + InfluxDB.

спасибо за ответ буду побывать, по результатам отпешусь

1 лайк

Совсем недавно решал аналогичную задачу.
Вот пример скрипта который подключается к mqtt и все значения записывает в БД на postgresql
wb_history_agent.py (3,1 КБ)

В нём правда нет обработки ошибок, но основную задачу решает.

Добрый день,
Удалось ли решить вопрос?

Приветствую, я немного переделал чтобы не записывать все значения а необходимые топики.Но в целом годная тема. Спасибо

1 лайк