Друкарня від WE.UA
Публікація містить рекламні матеріали.

Додаток на Node.js для моніторингу енергоспоживання в смарт-будинку

Автор: Jarek Ceborski. Опубліковано на Unsplash

Зростання популярності смарт-будинків робить актуальним питання раціонального використання енергії. Моніторинг енергоспоживання може допомогти вам ідентифікувати пристрої, які споживають найбільше енергії, і вжити заходів для їх оптимізації.

Node.js – це платформа JavaScript, що ідеально підходить для розробки веб-додатків та програм реального часу. Її асинхронний характер робить її ефективною для роботи з датчиками та потоками даних.

Розробка Node.js-додатку для моніторингу енергоспоживання

1. Збір даних

1.1. Датчики

const SerialPort = require('serialport');

const port = new SerialPort('/dev/ttyUSB0', {
  baudRate: 9600,
});

port.on('data', data => {
  // Parse data from the sensor and store it in a database or file.
});

1.2. API

const axios = require('axios');

const getEnergyData = async () => {
  const response = await axios.get('https://api.example.com/energy');
  const data = response.data;

  // Store the energy data in a database or file.
};

setInterval(getEnergyData, 60000); // Get data every minute

2. Зберігання даних

2.1. База даних

const mongoose = require('mongoose');

mongoose.connect('mongodb://localhost:27017/smart-home', {
  useNewUrlParser: true,
  useUnifiedTopology: true,
});

const EnergyDataSchema = new mongoose.Schema({
  timestamp: {
    type: Date,
    default: Date.now,
  },
  deviceId: String,
  energyConsumption: Number,
});

const EnergyData = mongoose.model('EnergyData', EnergyDataSchema);

// Save energy data to the database
const saveEnergyData = async (data) => {
  const energyData = new EnergyData(data);
  await energyData.save();
};

2.2. Файли

const fs = require('fs');

const saveEnergyDataToFile = async (data) => {
  const date = new Date();
  const filename = `energy-data-${date.getFullYear()}-${date.getMonth() + 1}-${date.getDate()}.json`;

  fs.writeFile(filename, JSON.stringify(data), err => {
    if (err) {
      console.error(err);
    }
  });
};

3. Візуалізація даних

3.1. Графіки

const Chart = require('chart.js');

const ctx = document.getElementById('myChart').getContext('2d');

const chart = new Chart(ctx, {
  type: 'line',
  data: {
    labels: ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec'],
    datasets: [{
      label: 'Energy Consumption',
      data: [100, 120, 150, 180, 200, 220, 250, 280, 300, 320, 350, 380],
    }],
  },
});

3.2. Таблиці

const table = document.getElementById('myTable');

const data = [
  {
    deviceId: '123456',
    energyConsumption: 100,
  },
  {
    deviceId: '654321',
    energyConsumption: 120,
  },
  {
    deviceId: '987654',
    energyConsumption: 150,
  },
];

for (const row of data) {
  const tr = document.createElement('tr');
  const td1 = document.createElement('td');
  const td2 = document.createElement('

Також читайте: Довідник за тегами HTML

Зручний хостинг для ваших сайтів на WordPress

Шукаєте хороший хостинг для ваших сайтів на WordPress? Зверніть увагу на Host4Biz. Це надійний хостинг з сучасними серверами в Європі та українською командою.

А за промокодом MYHOST10 ви отримаєте знижку в 10% на першу оплату. Для цього реєструйтесь за посиланням та введіть код перед оплатою.

Підсумок

Розробка Node.js-додатку для моніторингу енергоспоживання може допомогти вам:

  • Економити кошти: Моніторинг енергоспоживання може допомогти вам зекономити гроші на рахунках за електроенергію.

  • Зменшити вплив на довкілля: Зменшення енергоспоживання може допомогти вам зменшити ваш вплив на довкілля.

  • Підвищити комфорт: Моніторинг енергоспоживання може допомогти вам зробити ваш смарт-будинок більш комфортним, наприклад, регулюючи температуру та освітлення.

Переваги Node.js:

  • Гнучкість: Ви можете створити додаток, який відповідає вашим specific needs.

  • Простота використання: Node.js має зручний синтаксис JavaScript.

  • Ефективність: Node.js використовує асинхронний I/O, що робить його ідеальним для роботи з датчиками та потоками даних.

Приклади коду:

  • Збір даних: З датчиків та API

  • Зберігання даних: В базі даних та файлах

  • Візуалізація даних: Графіки та таблиці

  • Аналіз даних: Виявлення пікових навантажень, порівняння пристроїв

  • Вжиття заходів: Вимкнення пристроїв, заміна старих пристроїв, зміна поведінки

Подальші кроки:

  • Додайте більше функцій до вашого додатку, наприклад, прогнозування енергоспоживання, сповіщення про пікові навантаження, інтеграція з системами домашньої автоматизації.

  • Розгорніть ваш додаток в production.

  • Поділіться своїм кодом з open-source community.

Ресурси

Статті про вітчизняний бізнес та цікавих людей:

  • Як побудована програма Meest China Academy

    Курс про товарний бізнес охоплює різні етапи роботи: від пошуку ідеї до перевірки товару, логістики та масштабування. Програма Meest China Academy містить 17 модулів, які послідовно розкривають ці теми без зведення всього навчання до однієї універсальної поради.

    Теми цього довгочиту:

    Meest
  • Які технології використані в Айфон 17

    Айфон 17 поєднує OLED-дисплей із частотою до 120 Гц, чип A19, дві камери Fusion 48 Мп і швидке заряджання через USB-C. У COMFY можна купити Айфон 17 з накопичувачем на 256 або 512 ГБ, вибравши конфігурацію відповідно до обсягу фото, відео та застосунків

    Теми цього довгочиту:

    Iphone 17
  • Як вибрати вживаний iPhone: коротке керівництво для розумної покупки

    Вторинний ринок смартфонів Apple активно зростає, і питання, як вибрати вживаний iPhone, стає актуальним для дедалі більшої кількості користувачів. Правильний підхід дозволяє отримати бу iPhone з актуальною iOS і доброю камерою за помітно нижчу ціну, ніж у нових пристроїв.

    Теми цього довгочиту:

    Iphone
  • Як подолати жіночу безплідність за допомогою донорських яйцеклітин

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

    Теми цього довгочиту:

    Донорство
  • Як заспокоїти зубний біль і чому самолікування може призвести до операції?

    Раптовий біль у зубі може призвести до порушення сну та ускладненого вживання їжі. Люди часто приймають таблетки, роблять полоскання або лікуються народними засобами. В таких випадках не варто відкладати візит до стоматолога, адже можуть з’явитись ускладнення.

    Теми цього довгочиту:

    Стоматологія
Поділись своїми ідеями в новій публікації.
Ми чекаємо саме на твій довгочит!
Volodymyr Zhyliaev
Volodymyr Zhyliaev@digitalowltop

95Довгочити
14.4KПерегляди
32Підписники
Підтримати
На Друкарні з 7 травня 2023

Більше від автора

  • Why Visitors Leave Your Website: 10 Common Reasons and How to Fix Them

    Getting people to visit your website is only part of the job. They may arrive through Google, social media, paid ads, referrals, or links from other websites, but that traffic has little value if visitors leave before exploring your content, contacting you, or making a purchase.

    Теми цього довгочиту:

    Websites
  • The Hidden Conversion Killers on Digital Agency Websites

    A digital agency website can look polished and still fail to generate serious leads. It may have a modern homepage, strong visuals, case studies, service pages, and a clear “Book a call” button, but visitors still leave without taking action.

    Теми цього довгочиту:

    Conversion Rate

Це також може зацікавити:

  • NVM або чому у тебе має бути декілька версій NodeJS

    Одна і певно найвагоміша причина, чому вам потрібно мати декілька версій NodeJS — підтримка декількох проєктів. Розберемось, як встановити NVM та додати декілька версій NodeJS на твою робочу машину

    Теми цього довгочиту:

    Nodejs
  • λanguage: Написання парсера

    Написання парсера - це досить складне завдання. У сутності, він повинен перетворити фрагмент коду у "абстрактне синтаксичне дерево". Це структуроване представлення програми в пам'яті, воно абстрактне в тому сенсі, що не має значення, з яких саме символів складається вихідний код.

    Теми цього довгочиту:

    Парсер
  • 10 найцікавіших репозиторіїв для JavaScript розробників

    У статті наведено 10 репозиторіїв на GitHub, які охоплюють широкий спектр тем JavaScript від основ до просунутих концепцій, включаючи найкращі практики, патерни, фреймворки тощо.

    Теми цього довгочиту:

    Github

Коментарі (0)

Підтримайте автора першим.
Напишіть коментар!

Це також може зацікавити:

  • NVM або чому у тебе має бути декілька версій NodeJS

    Одна і певно найвагоміша причина, чому вам потрібно мати декілька версій NodeJS — підтримка декількох проєктів. Розберемось, як встановити NVM та додати декілька версій NodeJS на твою робочу машину

    Теми цього довгочиту:

    Nodejs
  • λanguage: Написання парсера

    Написання парсера - це досить складне завдання. У сутності, він повинен перетворити фрагмент коду у "абстрактне синтаксичне дерево". Це структуроване представлення програми в пам'яті, воно абстрактне в тому сенсі, що не має значення, з яких саме символів складається вихідний код.

    Теми цього довгочиту:

    Парсер
  • 10 найцікавіших репозиторіїв для JavaScript розробників

    У статті наведено 10 репозиторіїв на GitHub, які охоплюють широкий спектр тем JavaScript від основ до просунутих концепцій, включаючи найкращі практики, патерни, фреймворки тощо.

    Теми цього довгочиту:

    Github