↩️ Назад

Категории

Энерго-Триггер - смотрим качесство электросети

28.06.2026 | Статья из категории: 2040

Как измерить приближение глобального кризиса по синусоиде у себя в розетке
Калужская область Сценарий: НПЗ горит, свет пока есть

«Покупай панели, когда они дешёвые, а ставь — когда график напряжения поплыл. Твой датчик — это анти-СМИ, он не врёт.»

🔍 Какие параметры сети мониторить

Напряжение (V)
Норма: 220-230В
Просадка ниже 210В = перегруз сети. Дефицит газа/угля.
Частота (Hz)
Норма: 50.00 ± 0.2
Плавающая частота = слабая синхронизация, диспетчеры на пределе.
THD (Искажения)
Норма: < 5%
Синусоида в «пилу» — в сеть врубили дешёвые инверторы/майнинг.
Дребезг/Скачки
Отключения веток
Частые пропадания = веерные отключения по графику.

🛠 Железо для датчика (бюджетный вариант)

Итог: ~1500-2000 руб за комплект. Всё паяется на коленке и прячется в бокс на DIN-рейку.

🧠 Структура БД (MySQL)

Создаём таблицу для хранения «сырых» замеров. Чтобы потом рисовать годовые графики и ловить тренды.

-- База: energy_monitor
CREATE TABLE IF NOT EXISTS grid_quality (
    id INT AUTO_INCREMENT PRIMARY KEY,
    timestamp DATETIME DEFAULT CURRENT_TIMESTAMP,
    voltage_rms FLOAT COMMENT 'Среднекв. напряжение (В)',
    frequency FLOAT COMMENT 'Частота (Гц)',
    thd_percent FLOAT COMMENT 'Коэф. гармоник (%)',
    peak_voltage FLOAT COMMENT 'Пиковое напряжение',
    sag_count INT DEFAULT 0 COMMENT 'Счётчик просадок за сутки',
    swell_count INT DEFAULT 0 COMMENT 'Счётчик скачков',
    outage_flag BOOLEAN DEFAULT FALSE COMMENT 'Было отключение',
    raw_adc TEXT COMMENT 'JSON сырых данных для анализа'
);

-- Индекс для быстрых выборок по времени
CREATE INDEX idx_timestamp ON grid_quality(timestamp);
        

🐍 Скрипт для записи (MicroPython / Python)

Код для ESP32, который раз в 5 минут шлёт данные на ваш сервер с MySQL.

import network, urequests, json, time
from machine import ADC, Pin
import mysql.connector  # если на сервере, или API-шлюз

# -------- Заглушка для замера (ADC) --------
adc_voltage = ADC(Pin(34))
adc_voltage.atten(ADC.ATTN_11DB)  # диапазон 0-3.6В

def measure_network():
    # Здесь логика расчёта RMS и частоты через Zero-Crossing
    raw = adc_voltage.read()  # 0-4095
    voltage = (raw / 4095.0) * 3.3 * 100  # примерный калибр
    freq = 50.0  # Заглушка, реально считаем по таймерам
    thd = 2.1    # Заглушка
    return voltage, freq, thd

# -------- Отправка в БД (через API) --------
def save_to_mysql(voltage, freq, thd):
    sql = f"INSERT INTO grid_quality (voltage_rms, frequency, thd_percent) VALUES ({voltage}, {freq}, {thd})"
    # Тут либо прямой драйвер MySQL, либо POST на ваш PHP/Python бэкенд
    print(f"SQL: {sql}")

# Главный цикл
while True:
    v, f, t = measure_network()
    save_to_mysql(v, f, t)
    time.sleep(300)  # 5 минут
        

📊 Аналитика (SQL-запрос для поиска тренда)

Через год запускаешь этот запрос и смотришь: если среднее напряжение упало на 5-10В, а частота стала гулять — пора покупать инвертор.

SELECT 
    DATE(timestamp) as day,
    AVG(voltage_rms) as avg_voltage,
    MIN(voltage_rms) as min_voltage,
    AVG(frequency) as avg_freq,
    STDDEV(frequency) as freq_jitter,
    SUM(sag_count) as total_sags
FROM grid_quality
WHERE timestamp > DATE_SUB(NOW(), INTERVAL 1 YEAR)
GROUP BY day
ORDER BY day;
        

📌 Как понять, что «пора лезть на дерево» (покупать панели)

Страховка от инфопомех: СМИ скажут «всё стабильно», а твой график покажет искажённую синусоиду. Доверяй ферриту и АЦП, а не телевизору.

🗄 Как поднять визуализацию (Grafana + MySQL)

Если хочешь красиво — подними Grafana, подключи к ней твою БД и настрой дашборд:

Это будет выглядеть как настоящий диспетчерский пункт. Идеальный пост для IT-блога.





Категории:

Категории

Комментарии

Пока нет комментариев. Будьте первым!

Оставить комментарий

← Назад к списку статей

Посетителей сегодня: 0
о блоге | карта блога | 📡 Подписаться на RSS

© Digital Specialist | Не являемся сотрудниками Google, Яндекса и NASA