Mysql clculate ежедневное потребление кВтч от солнечного инвертора

я читаю данные с солнечного инвертора и сохраняю их в базе данных mysql

таблица имеет 2 поля dtime записывает дату и время, а AC_Output_Apparent_Power записывает текущую нагрузку в ваттах.

мне нужно рассчитать общее дневное потребление мощности следующим образом (пример):

date        kWh
2018-10-24  1.3
2018-10-10 0.700
2018-10-09 2.2

и так далее...

Я пытался:

SELECT date(dtime),hour(dtime),((avg(AC_Output_Apparent_Power) *1)/1000) as kWh 
FROM `logs` 
WHERE AC_Output_Apparent_Power > 0 
GROUP by date(dtime),hour(dtime) 
order by dtime desc 

и результат - почасовое потребление:

date       hour     kWh     
2018-10-25  2   0.20880952
2018-10-25  1   0.23985294
2018-10-24  18  0.29619231
2018-10-23  6   0.11400000
2018-10-22  6   0.13800000
2018-10-22  2   0.13800000
2018-10-18  1   0.13800000
2018-10-16  10  0.09200000
2018-10-15  13  0.09100000
2018-10-14  21  0.13800000
2018-10-13  22  0.13700000
2018-10-13  8   0.09200000
2018-10-12  6   0.18966667
2018-10-12  5   0.17800000
2018-10-12  4   0.13800000
2018-10-10  15  0.25100000
2018-10-10  14  0.61285714
2018-10-09  18  0.13800000
2018-10-09  1   0.15150000
2018-10-04  5   0.14728947
2018-10-04  4   0.15062500
2018-10-04  3   0.14927778
2018-10-04  2   0.14958974
2018-10-04  1   0.14726744
2018-10-04  0   0.14886207

таблица mysql имеет эти значения.

Примечание: как вы видите, данные не считываются регулярно, так как я тестирую

SELECT dtime,AC_Output_Apparent_Power FROM `logs` WHERE AC_Output_Apparent_Power > 0 order by dtime desc 


dtime                  AC_Output_Apparent_Power     
2018-10-24 18:20:25     152
2018-10-24 18:20:02     174
2018-10-24 18:19:50     174
2018-10-24 18:19:38     174
2018-10-24 18:19:26     173
2018-10-24 18:19:03     174
2018-10-24 18:18:51     154
2018-10-24 18:18:04     174
2018-10-24 18:17:53     175
2018-10-24 18:17:46     174
2018-10-24 18:17:29     175
2018-10-24 18:17:17     175
2018-10-24 18:17:05     174
2018-10-24 18:16:53     174
2018-10-24 18:16:48     174
2018-10-24 18:16:18     816
2018-10-24 18:15:54     174
2018-10-24 18:15:42     174
2018-10-24 18:15:30     852
2018-10-24 18:15:18     173
2018-10-24 18:15:07     174
2018-10-24 18:14:55     1084
2018-10-24 18:14:32     174
2018-10-24 18:14:26     173
2018-10-24 18:13:33     176
2018-10-24 18:13:21     152
2018-10-24 18:13:09     175
2018-10-24 18:12:58     174
2018-10-24 18:12:47     939
2018-10-24 18:12:37     174
2018-10-24 18:12:30     175
2018-10-24 18:11:48     815
2018-10-24 18:11:01     880
2018-10-24 18:10:49     924
2018-10-24 18:10:37     753
2018-10-24 18:10:13     154
2018-10-24 18:10:01     176
2018-10-24 18:09:50     174
2018-10-24 18:09:38     175
2018-10-24 18:09:26     176
2018-10-24 18:09:15     176
2018-10-24 18:09:03     176
2018-10-24 18:08:52     154
2018-10-24 18:08:40     176
2018-10-24 18:08:27     176
2018-10-24 18:08:16     176
2018-10-24 18:08:04     928
2018-10-24 18:07:52     176
2018-10-24 18:07:41     177
2018-10-24 18:07:29     176
2018-10-24 18:07:17     177
2018-10-24 18:06:54     178
2018-10-23 06:06:12     114
2018-10-22 06:49:01     138
2018-10-22 02:00:29     138
2018-10-18 01:47:54     138
2018-10-16 10:04:14     92
2018-10-15 13:59:27     91
2018-10-14 21:59:44     138
2018-10-13 22:01:48     137
2018-10-13 08:37:37     92
2018-10-13 08:02:43     92
2018-10-12 06:05:53     190
2018-10-12 06:05:41     190
2018-10-12 06:03:08     189
2018-10-12 05:58:59     166
2018-10-12 05:58:12     190
2018-10-12 04:31:56     138
2018-10-10 15:08:31     241
2018-10-10 15:06:34     370
2018-10-10 15:05:35     239
2018-10-10 15:03:02     154
2018-10-10 14:58:41     864
2018-10-10 14:58:16     456
2018-10-10 14:58:07     415
2018-10-10 14:57:53     545
2018-10-10 14:57:41     714
2018-10-10 14:56:43     1300
2018-10-10 14:56:22     949
2018-10-10 14:55:55     608
2018-10-10 14:55:45     522
2018-10-10 14:54:45     415
2018-10-10 14:54:34     431
2018-10-10 14:54:10     503
2018-10-10 14:53:47     506
2018-10-10 14:53:35     438
2018-10-10 14:53:23     417
2018-10-10 14:45:43     874
2018-10-10 14:45:31     442
2018-10-10 14:45:08     710
2018-10-10 14:44:19     421
2018-10-10 14:44:07     604
2018-10-10 14:40:23     736
2018-10-09 18:05:58     138
2018-10-09 01:05:55     153
2018-10-09 01:05:29     153
2018-10-09 01:05:04     152
2018-10-09 01:04:40     151
2018-10-09 01:04:13     151
2018-10-09 01:03:47     152

Расчет ватт в кВтч Энергия E в киловатт-часах (кВтч) равна мощности P в ваттах (Вт), умноженное на период времени t в часах (hr), деленный на 1000:

E(kWh) = P(W) × t(hr) / 1000

Как рассчитать общее дневное потребление мощности не ежечасно.

любые предложения приветствуются. заранее спасибо.

И вопрос ... ???

Alex 25.10.2018 01:42

Как рассчитать общее дневное потребление мощности, а не ежечасно? мой код делаю ежечасно.

Mohammed Ahmed 25.10.2018 01:48
GROUP by date(dtime) просто удалите вторую группу по полю hour(dtime)
Alex 25.10.2018 01:52

проблема здесь: ((avg (AC_Output_Apparent_Power) * 1) / 1000) поскольку кВтч, 1 - это один час, мне нужно знать общее количество часов. этот код работает для почасовых баз, а не для ежедневных. или если приветствуется какое-либо другое решение для расчета мощности.

Mohammed Ahmed 25.10.2018 02:08
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
Освоение архитектуры микросервисов с Laravel: Лучшие практики, преимущества и советы для разработчиков
В последние годы архитектура микросервисов приобрела популярность как способ построения масштабируемых и гибких приложений. Laravel , популярный PHP...
Как построить CRUD-приложение в Laravel
Как построить CRUD-приложение в Laravel
Laravel - это популярный PHP-фреймворк, который позволяет быстро и легко создавать веб-приложения. Одной из наиболее распространенных задач в...
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
Освоение PHP и управление базами данных: Создание собственной СУБД - часть II
В предыдущем посте мы создали функциональность вставки и чтения для нашей динамической СУБД. В этом посте мы собираемся реализовать функции обновления...
Документирование API с помощью Swagger на Springboot
Документирование API с помощью Swagger на Springboot
В предыдущей статье мы уже узнали, как создать Rest API с помощью Springboot и MySql .
Роли и разрешения пользователей без пакета Laravel 9
Роли и разрешения пользователей без пакета Laravel 9
Этот пост изначально был опубликован на techsolutionstuff.com .
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
Как установить LAMP Stack - Security 5/5 на виртуальную машину Azure Linux VM
В предыдущей статье мы завершили установку базы данных, для тех, кто не знает.
0
4
408
2

Ответы 2

Непонятно, что именно вы хотите получить.

Но вот мой подход:

http://sqlfiddle.com/#!9/6d5bef/6

SELECT date(dtime),(SUM(AC_Output_Apparent_Power)/1000) as kW
FROM `logs` 
WHERE AC_Output_Apparent_Power > 0 
GROUP by date(dtime)
order by dtime desc ;

Предоставьте ожидаемый набор результатов.

это дает неверные результаты: в день 2018-10-24 кВтч = 15.402 это неверно. в 2018-10-24 18:06:54 первое чтение: 178 ватт в 2018-10-24 18:20:25 последнее чтение: 152 ватт, разница составляет 15 минут, и это израсходовано, что в течение 15 минут потребление энергии составляет 15,402 кВтч ???

Mohammed Ahmed 25.10.2018 10:04

@MohammedAhmed, у тебя неправильная логика. Потребление измеряется не в кВтч, а в кВт - это то, что делает мой запрос. С моей точки зрения, ваша попытка получить среднее количество кВтч является ошибочной. Так что, если вы хотите, вы всегда можете разделить его на 24, чтобы получить его в час. Извините, но я не буду тратить время на эти странные вычисления. Это не имеет никакого смысла для меня.

Alex 25.10.2018 13:30
SELECT CONVERT_TZ(`timestamp`, @@session.time_zone, '+00:00') AS `time`,
       AVG(value / 1000) as "value",
       name as "metric" -- phase / line
FROM `power` 
WHERE name IN ("PhaseA_Energy", "PhaseB_Energy", "PhaseC_Energy")
AND $__timeFilter(timestamp)
GROUP BY date_format( timestamp, '%Y-%m-%d %H' ), name

Другие вопросы по теме