NEWS
Скрипт для счётчика
-
` > Можно данные взять и за прошлый период из базы данных.
Вообщем не понятна задача `
Мне нужны данные которые показывает счётчик, т.е. КВт*час, у меня есть данные по мощности Вт, и времени съёма мощности, каждую секундуЯ хочу в итоге получить то, что показывает счётчик, т.е. потреблённую энергию в КВт*часах
идея такова:
P=мощность Вт
t = время c
E =P*t потреблённая энергия энергия
программа
E=начальное значение энергии
цикл. каждую секунду
E=E+P*t - потреблённая энергия за всё время
Теперь более понятно? `
Понятно что ничего не понятно, если сервер перезагрузить или драйвер то у тебя уже будут расхождения показаний. Считать все-таки надо в независимом устройстые, а из него уже отдавать данные в иоб. у меня счетчик правда импульсы выдает но тебе тоже нужно что-то подобное http://blog.instalator.ru/archives/140 -
instalator: Подскажи как забрать данные от счетчика по MQTT, Счетчик дает импульсы, значит твой скрипт и используем. Пока буду проверять на MEga2560
-
instalator: Подскажи как забрать данные от счетчика по MQTT, Счетчик дает импульсы, значит твой скрипт и используем. Пока буду проверять на MEga2560 `
Не совсем я тебя понимаю. Что значит как забрать? Считать данные со счетчика ардуиной например и по MQTT отдавать.А какой именно мой скрипт используем?
Вот https://github.com/instalator/Counter_MQTT считает импульсы и отдает данные по MQTT
-
что-то подобное http://blog.instalator.ru/archives/140
Ну вот, а говоришь не понимаешь… ссылочка что надо. Ща попробую проверить.....
-
что-то подобное http://blog.instalator.ru/archives/140
Ну вот, а говоришь не понимаешь… ссылочка что надо. Ща попробую проверить..... `
Имей ввиду что там Ethernet на W5500 и библиотека под нее же. -
у меня 5100
-
#include <ethernet2.h>- вот эта для 5500</ethernet2.h>
-
такк… Вопрос. Как я понял ты собрал отдельный контроллер для этого, я жеж использую MEGA2560, я правильно понимаю что сигнал от счетчика надо подавать на А0 и желательно с подтяжкой 10кОм
-
Залил код на Ардуину, в ЙоБе, записи появились, но результаты по 0…... Где грабли.....
и еще, подключаю ко входу счетчик Энергомера СЕ101 3200имп.кВТ.ч.....
Похоже что то не так делаю... Прошу помощщи....
-
Залил код на Ардуину, в ЙоБе, записи появились, но результаты по 0…... Где грабли.....
и еще, подключаю ко входу счетчик Энергомера СЕ101 3200имп.кВТ.ч.....
Похоже что то не так делаю... Прошу помощщи.... `
Не могу сказать где грабли не видя кода. -
Код использовался https://github.com/instalator/Counter_MQTT от сюда, соответственно поменял IP а все остальное как было.
-
для проверки использую Arduino 2560 и сетевуху 5100, там же стоит SD
-
Код использовался https://github.com/instalator/Counter_MQTT от сюда, соответственно поменял IP а все остальное как было. `
Так ты изменил код то? Сконфигурирован его для входов не намур? И вообще он не для электросчётчиков.Для электросчётчиков тут https://github.com/instalator/Electro_C … /README.md
-
Что то не прет компиляция….Electro_Counter2, код взят с Githuba
! Arduino: 1.8.2 (Windows 7), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino:6:0: warning: "PWR_CTRL" redefined
! #define PWR_CTRL A0
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:7:0: note: this is the location of the previous definition
! #define PWR_CTRL A2 //Контроль напряжения
! ^
! count:14: error: conflicting declaration 'volatile long unsigned int cnt'
! volatile unsigned long cnt = 1 ;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:34:15: note: previous declaration as 'long unsigned int cnt'
! unsigned long cnt = 0;
! ^
! count:15: error: conflicting declaration 'volatile long unsigned int prev_cnt'
! volatile unsigned long prev_cnt = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:35:15: note: previous declaration as 'long unsigned int prev_cnt'
! unsigned long prev_cnt = 2;
! ^
! count:16: error: conflicting declaration 'volatile long unsigned int pwr'
! volatile unsigned long pwr = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:36:15: note: previous declaration as 'long unsigned int pwr'
! unsigned long pwr = 0;
! ^
! count:17: error: conflicting declaration 'volatile long unsigned int prev_pwr'
! volatile unsigned long prev_pwr = 1;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:37:15: note: previous declaration as 'long unsigned int prev_pwr'
! unsigned long prev_pwr = 2;
! ^
! count:18: error: conflicting declaration 'long unsigned int chk'
! unsigned long chk = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:44:5: note: previous declaration as 'int chk'
! int chk = 0;
! ^
! count:19: error: redefinition of 'int num'
! int num = 3200;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:40:5: note: 'int num' previously defined here
! int num = 0;
! ^
! count:21: error: redefinition of 'int amp'
! int amp = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:38:5: note: 'int amp' previously defined here
! int amp = 0;
! ^
! count:22: error: redefinition of 'int prev_amp'
! int prev_amp = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:39:5: note: 'int prev_amp' previously defined here
! int prev_amp = 2;
! ^
! count:23: error: redefinition of 'int bounce'
! int bounce = 1;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:42:5: note: 'int bounce' previously defined here
! int bounce = 10;
! ^
! count:31: error: redefinition of 'String cmd'
! String cmd = "";
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:50:8: note: 'String cmd' previously declared here
! String cmd = "";
! ^
! count:32: error: redefinition of 'bool strComplete'
! bool strComplete = false;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:51:6: note: 'bool strComplete' previously defined here
! bool strComplete = false;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void setup()':
! count:35: error: redefinition of 'void setup()'
! void setup() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:67:6: note: 'void setup()' previously defined here
! void setup() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void loop()':
! count:60: error: redefinition of 'void loop()'
! void loop() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:265:6: note: 'void loop()' previously defined here
! void loop() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void serialEvent()':
! count:129: error: redefinition of 'void serialEvent()'
! void serialEvent() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:111:6: note: 'void serialEvent()' previously defined here
! void serialEvent() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void save()':
! count:139: error: redefinition of 'void save()'
! void save() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:175:6: note: 'void save()' previously defined here
! void save() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void EEPROMWriteLong(int, long unsigned int)':
! count:150: error: redefinition of 'void EEPROMWriteLong(int, long unsigned int)'
! void EEPROMWriteLong(int p_address, unsigned long p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:195:6: note: 'void EEPROMWriteLong(int, long unsigned int)' previously defined here
! void EEPROMWriteLong(int p_address, unsigned long p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'long unsigned int EEPROMReadLong(int)':
! count:161: error: redefinition of 'long unsigned int EEPROMReadLong(int)'
! unsigned long EEPROMReadLong(int p_address) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:206:15: note: 'long unsigned int EEPROMReadLong(int)' previously defined here
! unsigned long EEPROMReadLong(int p_address) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void EEPROMWriteInt(int, int)':
! count:169: error: redefinition of 'void EEPROMWriteInt(int, int)'
! void EEPROMWriteInt(int p_address, int p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:214:6: note: 'void EEPROMWriteInt(int, int)' previously defined here
! void EEPROMWriteInt(int p_address, int p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'unsigned int EEPROMReadInt(int)':
! count:175: error: redefinition of 'unsigned int EEPROMReadInt(int)'
! unsigned int EEPROMReadInt(int p_address) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:220:14: note: 'unsigned int EEPROMReadInt(int)' previously defined here
! unsigned int EEPROMReadInt(int p_address) {
! ^
! Несколько библиотек найдено для "SPI.h"
! Используется: C:\Users\5\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\libraries\SPI
! Не используется: C:\Program Files (x86)\Arduino\libraries\SPI
! Несколько библиотек найдено для "PubSubClient.h"
! Используется: C:\Users\5\Documents\Arduino\libraries\PubSubClient
! Не используется: C:\Program Files (x86)\Arduino\libraries\PubSubClient
! Несколько библиотек найдено для "EEPROM.h"
! Используется: C:\Users\5\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\libraries\EEPROM
! Не используется: C:\Program Files (x86)\Arduino\libraries\EEPROM
! exit status 1
! conflicting declaration 'volatile long unsigned int cnt'
! Этот отчёт будет иметь больше информации с
! включенной опцией Файл -> Настройки ->
! "Показать подробный вывод во время компиляции" -
Что то не прет компиляция….Electro_Counter2, код взят с Githuba
! Arduino: 1.8.2 (Windows 7), Плата:"Arduino/Genuino Mega or Mega 2560, ATmega2560 (Mega 2560)"
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino:6:0: warning: "PWR_CTRL" redefined
! #define PWR_CTRL A0
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:7:0: note: this is the location of the previous definition
! #define PWR_CTRL A2 //Контроль напряжения
! ^
! count:14: error: conflicting declaration 'volatile long unsigned int cnt'
! volatile unsigned long cnt = 1 ;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:34:15: note: previous declaration as 'long unsigned int cnt'
! unsigned long cnt = 0;
! ^
! count:15: error: conflicting declaration 'volatile long unsigned int prev_cnt'
! volatile unsigned long prev_cnt = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:35:15: note: previous declaration as 'long unsigned int prev_cnt'
! unsigned long prev_cnt = 2;
! ^
! count:16: error: conflicting declaration 'volatile long unsigned int pwr'
! volatile unsigned long pwr = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:36:15: note: previous declaration as 'long unsigned int pwr'
! unsigned long pwr = 0;
! ^
! count:17: error: conflicting declaration 'volatile long unsigned int prev_pwr'
! volatile unsigned long prev_pwr = 1;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:37:15: note: previous declaration as 'long unsigned int prev_pwr'
! unsigned long prev_pwr = 2;
! ^
! count:18: error: conflicting declaration 'long unsigned int chk'
! unsigned long chk = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:44:5: note: previous declaration as 'int chk'
! int chk = 0;
! ^
! count:19: error: redefinition of 'int num'
! int num = 3200;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:40:5: note: 'int num' previously defined here
! int num = 0;
! ^
! count:21: error: redefinition of 'int amp'
! int amp = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:38:5: note: 'int amp' previously defined here
! int amp = 0;
! ^
! count:22: error: redefinition of 'int prev_amp'
! int prev_amp = 0;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:39:5: note: 'int prev_amp' previously defined here
! int prev_amp = 2;
! ^
! count:23: error: redefinition of 'int bounce'
! int bounce = 1;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:42:5: note: 'int bounce' previously defined here
! int bounce = 10;
! ^
! count:31: error: redefinition of 'String cmd'
! String cmd = "";
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:50:8: note: 'String cmd' previously declared here
! String cmd = "";
! ^
! count:32: error: redefinition of 'bool strComplete'
! bool strComplete = false;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:51:6: note: 'bool strComplete' previously defined here
! bool strComplete = false;
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void setup()':
! count:35: error: redefinition of 'void setup()'
! void setup() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:67:6: note: 'void setup()' previously defined here
! void setup() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void loop()':
! count:60: error: redefinition of 'void loop()'
! void loop() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:265:6: note: 'void loop()' previously defined here
! void loop() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void serialEvent()':
! count:129: error: redefinition of 'void serialEvent()'
! void serialEvent() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:111:6: note: 'void serialEvent()' previously defined here
! void serialEvent() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void save()':
! count:139: error: redefinition of 'void save()'
! void save() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:175:6: note: 'void save()' previously defined here
! void save() {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void EEPROMWriteLong(int, long unsigned int)':
! count:150: error: redefinition of 'void EEPROMWriteLong(int, long unsigned int)'
! void EEPROMWriteLong(int p_address, unsigned long p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:195:6: note: 'void EEPROMWriteLong(int, long unsigned int)' previously defined here
! void EEPROMWriteLong(int p_address, unsigned long p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'long unsigned int EEPROMReadLong(int)':
! count:161: error: redefinition of 'long unsigned int EEPROMReadLong(int)'
! unsigned long EEPROMReadLong(int p_address) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:206:15: note: 'long unsigned int EEPROMReadLong(int)' previously defined here
! unsigned long EEPROMReadLong(int p_address) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'void EEPROMWriteInt(int, int)':
! count:169: error: redefinition of 'void EEPROMWriteInt(int, int)'
! void EEPROMWriteInt(int p_address, int p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:214:6: note: 'void EEPROMWriteInt(int, int)' previously defined here
! void EEPROMWriteInt(int p_address, int p_value) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\count.ino: In function 'unsigned int EEPROMReadInt(int)':
! count:175: error: redefinition of 'unsigned int EEPROMReadInt(int)'
! unsigned int EEPROMReadInt(int p_address) {
! ^
! F:\Arduino MDM\Electro_Counter2-master\mqtt\mqtt.ino:220:14: note: 'unsigned int EEPROMReadInt(int)' previously defined here
! unsigned int EEPROMReadInt(int p_address) {
! ^
! Несколько библиотек найдено для "SPI.h"
! Используется: C:\Users\5\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\libraries\SPI
! Не используется: C:\Program Files (x86)\Arduino\libraries\SPI
! Несколько библиотек найдено для "PubSubClient.h"
! Используется: C:\Users\5\Documents\Arduino\libraries\PubSubClient
! Не используется: C:\Program Files (x86)\Arduino\libraries\PubSubClient
! Несколько библиотек найдено для "EEPROM.h"
! Используется: C:\Users\5\AppData\Local\Arduino15\packages\arduino\hardware\avr\1.6.19\libraries\EEPROM
! Не используется: C:\Program Files (x86)\Arduino\libraries\EEPROM
! exit status 1
! conflicting declaration 'volatile long unsigned int cnt'
! Этот отчёт будет иметь больше информации с
! включенной опцией Файл -> Настройки ->
! "Показать подробный вывод во время компиляции" `
Потому что там два разных скетча.Один непосредственно для счетчика, второй для второго мк который для связи
-
Таааак…. А вот с этого места поподробнее... Если я правильно понимаю, одна сборка снимает показания и передает их другой сборке, которая по MQTT их публикует.... Эт получается надо пару ардуин вешать?? А как обмен между ними организован??
Сечас я использую одну 2560 для обработки температуры, датчиков освещения и контроля за насосом и промсетью, а на второй 2560 пытаюсь сделать счетчик КВт.....
и возможно на нее же посажу управление вентиляцией и освещением...
-
И еще, хотелось бы схемку, подключения счетчика…..
Да, по отдельности оба скетча скомпилились без проблем...
-
Обновил информацию по статье на твоем Блоге, но не дружу с UART, как это выглядит для домохозяек….
-
Таааак…. А вот с этого места поподробнее... Если я правильно понимаю, одна сборка снимает показания и передает их другой сборке, которая по MQTT их публикует.... Эт получается надо пару ардуин вешать?? А как обмен между ними организован??
Сечас я использую одну 2560 для обработки температуры, датчиков освещения и контроля за насосом и промсетью, а на второй 2560 пытаюсь сделать счетчик КВт.....
и возможно на нее же посажу управление вентиляцией и освещением... `
Импульсы считает отдельный МК, сделано для того чтобы не пропускались импульсы и ни на что другое не влияло. Выдает данные на уарт, второй МК принимает эти данные и шлёт уже по mqtt.Возьми для счётчика например ардуиной про мини и ей считай только импульсы. А вся остальная логика - mqtt, датчики и ТД и тп
-
Попробовал залить скетч Count в 2560…. Результат отрицательный, в сериал ни чего не летит.... ПРверял Монитором порта от IDE Arduino 1.6.13.
Я правильно понимаю что один выход счетчика подключаем к А0, второй к GND или я не прав.
Вот типовая схема счетчика
1308_watermarked-shema-se101.png.jpg