Страница 9 из 12

Re: Вывод показаний от счетчиков воды.

Добавлено: Чт фев 01, 2018 7:04 am
ser009
В АМС есть готовое решение по обработке дискретных входов. Его можно немного доработать для счетчика воды
SPOILERSPOILER_SHOW

Код: Выделить всё

/*
  Modul Contacts
  part of Arduino Mega Server project
*/

#ifdef CONTACTS_FEATURE

#define cont1pin 27 // Вход счетчика

#define OPEN  1
#define CLOSE 0

char cont1object[] = "Hot Woter";

char cont1openMess[] = "Open"; char cont1closeMess[] = "Closed";

// states
  // 0 - open
  // 1 - close
  // 2 - not defined
  // 3 - not defined and not contXstatus
byte cont1state = 2; byte old_cont1state = 3; byte cont1objectState = 2;

void contactsInit() {
  pinMode(cont1pin, INPUT);
  modulContacts = MODUL_ENABLE;
  started("Contacts", true);
}

void printAndSend(char obj[], char mess[]) {
  #ifdef EVENTS_CONTACTS
    timeStamp();
    Serial.print(obj);
    Serial.print(": ");
    Serial.println(mess);
  #endif
}

void contactsWorks() {
 
cont1state = digitalRead(cont1pin);
  if (cont1state != old_cont1state) {
      old_cont1state = cont1state;
        if (cont1state == 0) {
        cont1objectState = OPEN;
        counter1();
        printAndSend(cont1object, cont1openMess);
        #ifdef MAJORDOMO_FEATURE
        sendRequestM(cont1object, OPEN);
        #endif
      } else {
        cont1objectState = CLOSE;
        printAndSend(cont1object, cont1closeMess);
        #ifdef MAJORDOMO_FEATURE
        sendRequestM(cont1object, CLOSE);
        #endif
      }
 }
 // contactsWorks()

#endif // CONTACTS_FEATURE


Вызванная функция counter1(); суммирует входные импульсы
SPOILERSPOILER_SHOW

Код: Выделить всё

/*
  Modul Counter
  part of Arduino Mega Server project
*/

unsigned long counter1_all;  // общий накопительный счетчик

void counter1(){
  counter1_all++;
}
 
Далее обрабатывая общий накопленный счетчик можно получать часовые, суточные и месячные значения

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 12:21 am
serghei
Alex77 писал(а):Кто на чем остановился?
Вот уже год реализую данное решение и пока пришел к таким выводам.
1. Считать импульсы можно любым кодом на любой ардуине или ESP.

Это НЕ работает по причине сброса счетчиков при зависании или открытия сериал - порта.

2. На прямую AMS считать импульсы бесполезно по этой же причине.

3. Считать сенсором с батарейным питанием ( можно в качестве резервного хотя бы на сутки ). Сенсор передает значения в AMS , тот в свою очередь в МД.
Ближе к истине , но ограничение по времени работы от батарейки.

4 Самое правильное - счетчик - 1WIRE мост DS2324. 2 счетчика , батарейки хватает на год работы.

Цена вопроса - 1200 рублей готовое изделие на 2 счетчика. Цена микрухи очень не адекватная на АЛИ. Ссылки выше.

Готовый код для сенсора AMS
SPOILERSPOILER_SHOW

Код: Выделить всё

/*
   YF-S201 Hall Effect Water Flow Meter / Sensor
   http://www.hobbytronics.co.uk/yf-s201-water-flow-meter
   
   Read Water Flow Meter and output reading in litres/hour


Тупо регистрируем замыкания контактов
*/
  #ifdef YFS201_FEATURE



  int pin3 = 3;       // 3-й цифровой пин, первое прерывание
  long counter = 0;  // счётчик импульсов


  int pin2 = 2;       // 2-й цифровой пин, 0 прерывание
  long counter1 = 0;  // счётчик импульсов
 
  long vol1_last ;    // полезные переменные

  long vol2_last ;

  void yfs201Init()


  {
  // Настраиваем последовательный интерфейс, для вывода информации 
  //  Serial.begin(9600);    // кажется ,это лишнее
  
  //Настраиваем цифровой вход
    pinMode(pin3, INPUT);      // Сюда будем подключать подтягивающий резюк
    digitalWrite(pin3, HIGH);  // "Подключаем" подтягивающий резистор (реализован внутри ATmega)
    attachInterrupt(1, count1, FALLING); // задаём обработчик прерывания 1 (3-й пин). 
                                      // прерывание будет при изменении уровня с HIGHT на LOW
                                      // вызывать функицю count 1


    pinMode(pin2, INPUT);      // Сюда будем подключать подтягивающий резюк
    digitalWrite(pin2, HIGH);  // "Подключаем" подтягивающий резистор (реализован внутри ATmega)

     attachInterrupt(0, count0, FALLING); // задаём обработчик прерывания 0 (2-й пин). 
                                      // прерывание будет при изменении уровня с HIGHT на LOW
                                      // вызывать функицю count 0
   }


    void yfs201Works ()  


   {
  
  
  // основной рабочий цикл
    
   vol1 = (counter /430); //430 оборотов на литр первый счетчик

   vol2 = (counter1 / 430); //430 оборотов на литр( можно подключить электросчетчик и изменить коэффициент)
    
    // vol1 = (counter /1600); // 1600 импульсов KWT/час первый счетчик

  // vol2 = (counter1 / 2000); // 2000 импульсов KWT/час второй счетчик
    
  
   
 /* 
   #ifdef YFS201_FEATURE                 // без этого вроде работает
    if (vol1NeedSend) {
      sendPacket(DTA_VOL_1);
    }
  #endif
 */
   // checkTemp();  //   ?????????????????????????????????????????????????

   

    #ifdef SERIAL_PRINT

    if (vol1>vol1_last) { // выводит объем когда следуюшее значение больше предыдущего

    Serial.print(F("Volume 1: "));// вывод литров . Надо дописать условие - выволить при изменении на 1 литр
    Serial.println(vol1);
    
     Serial.print(F("V_1: ")); // для проверки работы счетчика каждый импульс
    Serial.println(counter);
 
  vol1_last=vol1;
  } 
    if (vol2>vol2_last) {
        Serial.print(F("Volume 2: "));// вывод литров . Надо дописать условие - выволить при изменении на 1 литр
    Serial.println(vol2);
    
     Serial.print(F("V_2: ")); // для проверки работы счетчика
    Serial.println(counter1);

    
  vol2_last=vol2;
  } 
    
    #endif
  }


   void count0(){
  // вызывается прерыванием 0 от 2-го цифрового входа
     counter++;  // ясен перец, увеличиваем переменную. Утекло ещё 2 грамма
    
   }

    void count1(){
  // вызывается прерыванием 1 от 3-го цифрового входа
     counter1++;  // ясен перец, увеличиваем переменную. Утекло ещё 2 грамма
    
  }
 
   #endif  
Это же можно вставить напрямую в Мегу или Дую ( с прерываниями не уверен). Еще раз - в этом нет смысла.

Ну и в догонку. Внутри счетчика YFS201 стоит датчик Холла , поэтому нет дребезга контактов. Считает от 2-х грамм , видно утечку воды через кран.

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 8:19 am
alexsis_76
все это преодолимо,можно записывать данные счетчика через интервал времени в файловую систему в JSON формате для удобства использования,для минимизации потребления энергии использовать режим сна с просыпанием по перифрии,в перерыве между посылками отключать WIFI.

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 9:44 am
ученик
serghei писал(а): Цена вопроса - 1200 рублей готовое изделие на 2 счетчика.
А где такой продается, за такие деньги, я видел блок за 2500 и выше .

Я сделал предзаказ, у них на сайте добавил счетчик на ХВС и ГВС. счетчик обошелся за 4300
SPOILERSPOILER_SHOW
1-wire & WiFi
Russian Russian
Рубль
КОРЗИНА ПОКУПОК
Товаров: 1 (4300.00 р.)Поиск
RS-485 & ETHERNET
WI-FI МОДУЛИ
1-WIRE МОДУЛИ
РАДИОДАТЧИКИ 433МГЦ

Главная » Оформление заказа
ОФОРМЛЕНИЕ ЗАКАЗА
Корзина Покупатель Способ доставки Способ оплаты Оплата
Фото Наименование товара Модель Кол-во Цена Итого
WiFi счетчик воды RS-25 WiFi счетчик воды RS-25
- счетчик холодной воды: счетчик холодной вод..
- версия ПО: обычная версия
- счетчик горячей воды: счетчик горячей воды
WiFi счетчик воды RS-25
1
4300.00 р. 4300.00 р.
Сумма: 4300.00 р.
Итого: 4300.00 р.
Второй счетчик без wifi стоит дороже 4700
SPOILERSPOILER_SHOW
ОФОРМЛЕНИЕ ЗАКАЗА
Корзина Покупатель Способ доставки Способ оплаты Оплата
Фото Наименование товара Модель Кол-во Цена Итого
Модуль счетчик воды Модуль счетчик воды
- счетчик холодной воды: счетчик холодной вод..
- счетчик горячей воды: счетчик горячей воды
Модуль счетчик с воды
1
4700.00 р. 4700.00 р.
Сумма: 4700.00 р.
Итого: 4700.00 р.
года три назад можно было купить вот здесь https://hobbyboards.com/ за 1,500 руб с пересылкой
год назад они закрылись, сейчас ссылка обновилась можно попробовать написать им?
Rто силен в англичанском?
Напишите, может ценник будет адекватный почему бы и не купить?

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 9:59 am
serghei
Совсем беда ....Еще 2 недели назад точно было 1200..Вот тут.
Эти микрухи уже не выпускают...кроме Китайцев. Где то видел альтернативу из часов , но не могу найти.

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 10:03 am
ученик
ученик писал(а):
serghei писал(а): Цена вопроса - 1200 рублей готовое изделие на 2 счетчика.
А где такой продается, за такие деньги, я видел блок за 2500 и выше .

Я сделал предзаказ, у них на сайте добавил счетчик на ХВС и ГВС. счетчик обошелся за 4300
SPOILERSPOILER_SHOW
1-wire & WiFi
Russian Russian
Рубль
КОРЗИНА ПОКУПОК
Товаров: 1 (4300.00 р.)Поиск
RS-485 & ETHERNET
WI-FI МОДУЛИ
1-WIRE МОДУЛИ
РАДИОДАТЧИКИ 433МГЦ

Главная » Оформление заказа
ОФОРМЛЕНИЕ ЗАКАЗА
Корзина Покупатель Способ доставки Способ оплаты Оплата
Фото Наименование товара Модель Кол-во Цена Итого
WiFi счетчик воды RS-25 WiFi счетчик воды RS-25
- счетчик холодной воды: счетчик холодной вод..
- версия ПО: обычная версия
- счетчик горячей воды: счетчик горячей воды
WiFi счетчик воды RS-25
1
4300.00 р. 4300.00 р.
Сумма: 4300.00 р.
Итого: 4300.00 р.
Второй счетчик без wifi стоит дороже 4700
SPOILERSPOILER_SHOW
ОФОРМЛЕНИЕ ЗАКАЗА
Корзина Покупатель Способ доставки Способ оплаты Оплата
Фото Наименование товара Модель Кол-во Цена Итого
Модуль счетчик воды Модуль счетчик воды
- счетчик холодной воды: счетчик холодной вод..
- счетчик горячей воды: счетчик горячей воды
Модуль счетчик с воды
1
4700.00 р. 4700.00 р.
Сумма: 4700.00 р.
Итого: 4700.00 р.
года три назад можно было купить вот здесь https://hobbyboards.com/ за 1,500 руб с пересылкой
год назад они закрылись, сейчас ссылка обновилась можно попробовать написать им?
Rто силен в англичанском?
Напишите, может ценник будет адекватный почему бы и не купить?
Российские продаваны готовы привезти эти микросхемы, примерно за 400 руб за микруху если заказ будет от 200 шт.

*** Сообщение запрещено. Сообщение похоже на спам. ***

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 10:13 am
ученик
serghei писал(а):Совсем беда ....Еще 2 недели назад точно было 1200..Вот тут.
Эти микрухи уже не выпускают...кроме Китайцев. Где то видел альтернативу из часов , но не могу найти.
Эта альтернатива, на микрухе PCF8583
Но только у нею одна проблема она считает до опред момента вроде до 999 импульсов А потом вроде перезагружать надо или сама обнуляется. дальше разбираться не стал

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 10:32 am
serghei
Ну тогда остается одно - покупать 5 штук за 20 баксов и городить огород самим. Ссылка на Али. Кто бы взялся нарисовать плату ? За вознагрождение , конечно.

*** Сообщение запрещено. Содержит контактную информацию. Сообщение похоже на спам. ***

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 10:35 am
serghei
Забанили ссылку. Повторюсь - придется покупать 5 микрух за 20 баксов. ( На Украине не нахожу). Другой альтернативы не вижу.

Re: Вывод показаний от счетчиков воды.

Добавлено: Пт фев 02, 2018 2:53 pm
ser009
за эти деньги клиента проще nrf24 + Arduino32mini собрать