Защита от протечек с блекджеком и счетчиками

    Приветствую. Есть такая штука — гидролок\нептун\авквасторож — системы перекрытия подачи воды, если происходит не контролируемая утечка. Принцип простой — датчик воды + автоматика + пара кранов с электроприводами. Но дьявол как обычно в деталях: как устроены краны, как устроены датчики протечки и почему один стоит 50 рублей, а другой 500р. На все это дело навернут килограм макетингового булшита, упаковка вырви глаз и т.д.

    В рассказе пройдусь по кирпичикам системы, чем руководствовался в выборе. Вся система строится на заводских датчиках и самодельном контроллере на базе Particle (ex.Spark) Photon (такая esp8266 у которой облачная IDE на wiring из коробки), база девайса stm контроллер + wifi модуль от броадкома. Все это завязано на openhab сервер на Orange Pi One.



    Почему не готовая система?

    — Потому что могу сам и это в кайф
    — У готовых систем хромает интеграция с внешними системами.
    — У готовых систем нет вспомогательных функций — учет показаний счетчиков, датчики температуры воды, нотификация об отключениях воды и прочие пешие эротические фантазии.

    Начем с кранов


    Выбирал тупо в лоб по крутящему моменту. Некоторое время проживал в подмосковье, где качество воды (как наверно везде в замкадье) оставляет желать лучшего. Так шаровые краны на 1\2 дюйма если год не трогать — повернуть очень тяжело. А на полотенцесушителе 1 дюймовые я даже и не пытаюсь шевелить — только если усилить плечо ключем разводным, а тут и сорвать чего-нибудь можно. Проблема в отложениях кальциево-хзчего, «зарастают» одноим словом.

    Соответсвенно выбор пал на проф серию от гидролока — 21Н*м крутящего момента по ощущениям не рекламный треп, кран просто огромный — оцените место его установки перед покупкой.



    Кран герметизирован, по периметру резиновый уплотнитель, вход под винтовым сальником.
    Снимаем крышку.



    Перед нами верхняя часть платы и шаговый двигатель. Питается все это от 12 вольт. Замыкание контрольного кабеля на землю переводит кран в закрытое положение. На плате видим простенький контроллер PIC 12f629. Дожили, контроллер в приводе крана.

    Сзади платы самое интересное.



    L293 драйвер шаговика и фотопара (излучатель + фотоприемник). Она смотрит на основную шестерёнку привода, которая раскрашена на части — белая и черная, закрыто\открыто.



    Кран вращается все время в одну сторону, логика контроллера простая — крутим вал, пока не переключимся на нужный цвет. Вращение крана в одну сторону, это меньше износ, а бесконтактный способ определения положения — меньше шансов закисания\сбоя переменного резистора или концевика.

    Для монтажа можно открутить кран от привода — держится на 2 гайках. Между приводом и краном теплоизоляционная прокладка.



    Ремонт у меня был полтора года назад. Кран покупал года три назад — разобрать, посмотреть внутри, купить еще и накрутить во время ремонта. Ага, сейчас… максимум чего успел в этом ацком цирке — заложить в сборку водоразводки грязевик с переспективой заменить его на кран.
    И вот только спустя полтора года — докупил второй кран и накрутил их.

    В итоге мы наблюдаем странное и редкое явление(читать голосом Дроздова) — вся информация с сайта производителя подтвердилась. Причем описание своеобразное, как будто писали технари, а потом маркетинг полирнул для народа, но все равно мало кто поймет все фишки. Не хватает раздела на сайте — для интеграторов с техподробностями внутри. Даже на счет повышенного крутящего момента на старте не соврали — кран на старте бухтит движком в 1,5А и через 2-3 сек начинает уже гундеть в обычном (ток 0,7 А) режиме. На закрытие уходит секунд 25-30.

    Еще из опыта: на счет крутящего момента — он избыточный для Мск, тут вода вполне ОК, за полтора года в 100мкм фильтре пара окалин и никакого зарастания. За большой крутящий момент приходится платить и ценой, и временем открытия, и местом в шкафу. Думаю тут обычных приводов хватит от Гидролока Ультимэйт, Нептуна или Аквасторожа. За два последних не поручусь — не разбирал, лет 5 назад у них были частично пластиковые шестерни, сейчас вроде это исправили.

    Еще есть гидролок виннер с прямым подключением датчиков к приводу — это если вам не надо все что я наворотил. Там питание автономное от 4 батареек, а база похоже от ультимэйт привода. Вообще, он потенциально интересен и для контроллера самопального — питание 5 вольт, не надо две шины на 5 и 12 вольт городить и можно выбросить опторазвязку.

    Датчики протечки


    Купил датчики той же контроры WSU — универсальные. У них два выхода «открытый коллектор», один тянет на землю только при наличии воды, второй — если вода попала, то тянет на землю все время, пока питание не рубанешь. Только первый выход использую, остальная логика в контроллере, но похоже этот выход может пригодиться для каких более кондовых систем диспечеризации.

    Провода в комплекте метра три где то. Цвет проводов — Адъ_и_Израиль. Зацените цитату:

    красный (коричневый) провод (Vcc) питание от +5 до +30 вольт.
    черный(белый) провод (OUT2)
    зеленый провод (OUT1)
    желтый провод (GND)

    Вот что мешало сделать белый\черный землей? На приводе крана тоже кстати провода по цвету с логикой не але. Первый датчик стоит на кухне, под раковиной рядом с посудомойкой.



    Второй в ванной в специальной водоотводной канаве. Когда делал стяжку — не довел ее до стены. Получился этакий зумпф для сбора воды с ванной и туалета.



    Из опыта эксплуатации — ужу было одно ложное срабатывание датчика у посудомойки. Судя по логу на один цикл опроса (500мс) было замыкание, модифицировал код — смена состояния теперь происходит при 10 подряд одинаковых значениях с датчика.

    Контакты датчика покрыты позолотой. У товарища подобные датчики уже несколько лет, окисления не замечено.

    Датчики давления


    Практически — показометры. Точность +- 0,5 атм меня полностью устроила. На основе датчиков приходит оповещении по отключению воды. Покупал на Али тут.

    Датчики температуры


    А почему бы и не добавить? Из полезного — сможет раз в год оповестить об отключении горячей воды. Используются банальные ds18b20.

    Счетчики


    Самые обычные Itelma, раз в 10 литров замыкают контакты. На стороне контроллера выход подтянут к + 3,3v, счетчик тянет его на землю.

    Контроллер




    Внутри



    На базе Particle Photon, подробнее тут. Есть у них версия с 2G или 3G модулем (Electron). Первые прошивки был полный шлак, поморгать диодами ОК, но как только начинаешь чето сложное колбасить, играть с i2c и прерываниями может терять wifi. Сейчас жить можно. В принципе можно выкинуь датчики давления из схемы и замутить все на ESP8266 — дерзайте. Первым делом photon надо привязать к аккаунту particle (делается через App на мобиле или через консоль Particle CLI — пользую только второй метод) и прописать wifi-сеть. После привязки тут в разделе устройств появляется контроллер и его статус подключения к облаку.



    У меня все ноды подключаются к облаку только для обновления прошивки. Не то что бы я параноил — просто работа с облаком жрет не богатые ресурсы контроллера. IDE поддерживает работу с библиотеками, буквально десяток поддерживается самой контрой, остальные — сообществом. По моему наблюдению все распространенное давно портировали, еще фишка — в IDE сразу вижно сколько проектов используют библитеку.

    Исходный код прошивки
    // This #include statement was automatically added by the Particle IDE.
    #include "Adafruit_SSD1306/Adafruit_SSD1306.h"
    
    // This #include statement was automatically added by the Particle IDE.
    #include "MQTT/MQTT.h"
    
    // This #include statement was automatically added by the Particle IDE.
    #include "OneWire/OneWire.h"
    
    SYSTEM_THREAD(ENABLED);
    SYSTEM_MODE(MANUAL);
    STARTUP(WiFi.selectAntenna(ANT_EXTERNAL));
    STARTUP(System.enableFeature(FEATURE_RETAINED_MEMORY));
    
    struct counter_struct {
      float value;
      byte state;
      int pin;
    };
    struct valve_struct {
      byte state;
      int pin;
    };
    struct sensor_struct {
      int timeout;
      byte state;
      int pin;
    };
    
    unsigned long currentMillis = 0;
    unsigned long previous_conected = 100000; //финт ушами 
    unsigned long previous_wifi_uptime = 100000; //финт ушами 
    unsigned long previous_counter_read = 0; //финт ушами 
    unsigned long wifi_uptime;
    unsigned long start_temp_timer = 0;
    unsigned long read_temp_timer = 0;
    byte display_timeout = 0;
    
    //temp onewire 
    OneWire ds0 = OneWire(D2);
    OneWire ds1 = OneWire(D3);
    byte addr0[8];
    byte addr1[8];
    bool presense0 = false;
    bool presense1 = false;
    byte data[12];
    
    #define OLED_RESET A7
    Adafruit_SSD1306 display(OLED_RESET);
    
    
    //valve control
    retained valve_struct valve[2] = { {0, D4}, {0, D5} };
    
    //counter control
    retained counter_struct counter[2] = { {0, 1, A0}, {0, 1, A1} };
    volatile int pressure[2] = {A2, A3};
    #define SENSOR_TIMEOUT 10
    volatile sensor_struct sensor[2] = { {0, 1, D6}, {0, 1, D7} };
    
    void callback(char* topic, byte* payload, unsigned int length);
    
    byte server[] = { 192,168,2,101};
    MQTT client(server, 1883, callback);
    
    bool publish_message(const char* t, const char* p, bool retain) 
    {
        return client.publish(t, (uint8_t*)p, sizeof(p), retain);
    }
    
    bool publish_message(const char* t, int p, bool retain) 
    {   
        char buf_d[12];
        int n = sprintf(buf_d,"%d",p);
        return client.publish(t, (uint8_t*)buf_d, n, retain);
    }
    
    bool publish_message(const char* t, float p, bool retain) 
    {   
        //char buf_f[18];
        String s(p, 4);
    //    dtostrf(p, 9, 4, buf_f);
        //int n = sprintf(buf_f,"%f",p);
        return client.publish(t, (uint8_t*)s.c_str(), s.length(), retain);
    }
    
    // recieve message
    void callback(char* topic, byte* payload, unsigned int length) {
        char p[length + 1];
        memcpy(p, payload, length);
        p[length] = NULL;
        String message(p);
        String t(topic);
        if (t.equals("home/water_count/spark/set"))
        {
            if (message.equalsIgnoreCase("1"))
            {
                Particle.connect();
                if (waitFor(Particle.connected, 10000)) 
                    {publish_message("home/water_count/spark", 1, false);}
                else
                    {Particle.disconnect(); publish_message("home/water_count/spark", 0, false);}
            }
            else
            {
                Particle.disconnect();
                publish_message("home/water_count/spark", 0, false);
            }
        }
        else if (t.startsWith("home/water_count/valve/"))
        {
            int m = message.toInt();
            int x = t.substring(23,24).toInt();
            if (m > -1 && m < 2 && x > -1 && x <2) 
            {
                set_valve(x, m);
            }
            else
            {
                publish_message("home/water_count/valve/" + t.substring(23,24),  valve[x].state , true);
            }
        }
        else if (t.startsWith("home/water_count/counter/"))
        {
            float m = message.toFloat();
            int x = t.substring(25,26).toInt();
            if (m > -1 && m <= 999999 && x > -1 && x <2) 
            {
                counter[x].value = m;
            }
            publish_message("home/water_count/counter/" + t.substring(25,26),  counter[x].value , true);
        }
    }
    
    void setup() {
    //Serial.begin(9600);
        WiFi.on();
        WiFi.connect();
        if (waitFor(WiFi.ready, 5000)) {mqtt_connect();}
        for (int i=0; i < 2; i++) 
        {
            pinMode(valve[i].pin, OUTPUT);
            digitalWrite(valve[i].pin, valve[i].state);
            pinMode(counter[i].pin, INPUT);
            pinMode(sensor[i].pin, INPUT);
            counter[i].state = digitalRead(counter[i].pin);
            pinMode(pressure[i], AN_INPUT);
        }
        pinMode(A4, INPUT_PULLUP);
    
        display.begin(SSD1306_SWITCHCAPVCC, 0x3C);  // initialize with the I2C addr 0x3C (for the 128x64)
        display.clearDisplay();   // clears the screen and buffer
    
        //Particle.connect();
    }
    
    void loop() 
    {
        currentMillis = millis();
        // проверяем наличие сети и подключения к MQTT брокеру
        if (currentMillis - previous_conected >= 30000 || previous_conected > currentMillis)
        {
            previous_conected = currentMillis;
            if (!client.isConnected() & wifi_uptime > 60)
            {
                mqtt_connect();
            }
            publish_message("home/water_count/rssi", WiFi.RSSI(), true);
        }
        if (currentMillis - previous_wifi_uptime >= 1000 || previous_wifi_uptime > currentMillis)
        {
            previous_wifi_uptime = currentMillis;
            WiFi.ready() ? wifi_uptime++ : wifi_uptime = 0;
            //work with button and display
            int fg = digitalRead(A4);
            if (display_timeout > 0)
            {
                display_timeout -= 1;
                if (display_timeout == 0) 
                { 
                    display.clearDisplay();
                    display.display();
                } 
            }
            if (fg == 0)
            {
                if (display_timeout == 0)
                {
                    display.clearDisplay();   // clears the screen and buffer
                    display.setTextSize(2);
                    display.setTextColor(WHITE);
                    display.setCursor(0,0);
                    display.print("C=");
                    display.println(counter[0].value, 4);
                    display.setCursor(0,16);
                    display.print("H=");
                    display.println(counter[1].value, 4);
                    display.setCursor(0,32);
                    display.print("Valve=");
                    display.print(valve[0].state);
                    display.print("|");
                    display.println(valve[1].state);
                    display.setCursor(0,48);
                    display.print("Sensor=");
                    display.print(sensor[0].state);
                    display.print("|");
                    display.println(sensor[1].state);
                    display.display();
                }
                display_timeout = 10;
            }
        }
        //counter check
        if (currentMillis - previous_counter_read >= 500 || previous_counter_read > currentMillis)
        {
            previous_counter_read = currentMillis;
            for (int i=0; i < 2; i++) 
            {
                byte count_state = digitalRead(counter[i].pin);
                if (count_state != counter[i].state)
                {
                    counter[i].state = count_state;
                    if (count_state == 0)
                    {
                        counter[i].value += 0.01;
                        char buf18[30];
                        sprintf(buf18,"home/water_count/counter/%d", i);
                        publish_message(buf18 , counter[i].value, true);
                    }
                }
                // работаем с датчиком протечки
                byte sensor_state = digitalRead(sensor[i].pin);
                if (sensor_state != sensor[i].state) //
                {
                    sensor[i].state = sensor_state;
                    sensor[i].timeout = SENSOR_TIMEOUT; 
                }
                if (sensor[i].timeout > 0) 
                {
                    sensor[i].timeout -= 1;
                    if (sensor[i].timeout == 0)
                    {
                        char buf18[30];
                        sprintf(buf18,"home/water_count/sensor/%d", i);
                        publish_message(buf18 , sensor[i].state, true);
                        if (sensor[i].state  == 0)
                        {
                            set_valve(0, 1); //close both valve
                            set_valve(1, 1); //close both valve
                        }
                    }
                }
            }
        }
    
        // temp onewire
        if (currentMillis - start_temp_timer >= 299000 || start_temp_timer > currentMillis)
        { //стартуем расчет
            start_temp_timer = currentMillis;
            presense0 = start_temp0();
            presense1 = start_temp1();
        }
        if (currentMillis - read_temp_timer >= 300000 || read_temp_timer > currentMillis)
        {//считывваем темп
            read_temp_timer = currentMillis;
            start_temp_timer = currentMillis;
            if (presense0) read_temp0();
            if (presense1) read_temp1();
            //preasure calc and send
            char buf18[30]; 
            for (int i=0; i < 2; i++)
            {
                sprintf(buf18,"home/water_count/pressure/%d", i);
                float read_val = analogRead(pressure[i]);
                float value = (read_val - 600.0) / 300.0 ;
                publish_message(buf18 , value, false);
            }
        }
        //Particle.process();
        client.loop();
    }
    
    void mqtt_connect()
    {
        if (client.connect("water_count"))
        { //подпись на spark и публикуем послднее состояние
            client.subscribe("home/water_count/spark/set");
            publish_message("home/water_count/spark", Particle.connected() ? 1 : 0, true);
            client.subscribe("home/water_count/valve/+/set");
            client.subscribe("home/water_count/counter/+/set");
            
        }
    }
    
    bool start_temp0()
    {
        
        if ( !ds0.search(addr0)) { ds0.reset_search(); return false;}
        ds0.reset_search();
        if (OneWire::crc8(addr0, 7) != addr0[7]) { return false;}
        
        ds0.reset();
        ds0.select(addr0);
        ds0.write(0x44, 0);
        return true; 
    }
    bool start_temp1()
    {
        
        if ( !ds1.search(addr1)) { ds1.reset_search(); return false;}
        ds1.reset_search();
        if (OneWire::crc8(addr1, 7) != addr1[7]) { return false;}
        
        ds1.reset();
        ds1.select(addr1);
        ds1.write(0x44, 0);
        return true; 
    }
    
    bool read_temp0()
    {
        //delay(1000);
        ds0.reset();
        ds0.select(addr0);
        ds0.write(0xBE, 0);
    
        for (int i = 0; i < 9; i++) 
        {
            data[i] = ds0.read();
        }
        int16_t raw = (data[1] << 8) | data[0];
        float celsius = (float)raw * 0.0625;
        if (celsius < 0 || celsius > 100) return false;
        publish_message("home/water_count/temp/0", celsius, false);
        //Serial.println(celsius);
        ds0.reset_search();
        return true;
    }
    bool read_temp1()
    {
        //delay(1000);
        ds1.reset();
        ds1.select(addr1);
        ds1.write(0xBE, 0);
    
        for (int i = 0; i < 9; i++) 
        {
            data[i] = ds1.read();
        }
        int16_t raw = (data[1] << 8) | data[0];
        float celsius = (float)raw * 0.0625;
        if (celsius < 0 || celsius > 100) return false;
        publish_message("home/water_count/temp/1", celsius, false);
        //Serial.println(celsius);
        ds1.reset_search();
        return true;
    }
    
    void set_valve(int vlv, byte state)
    {
        valve[vlv].state = state;
        digitalWrite(valve[vlv].pin, state);
        char buf26[26];
        sprintf(buf26,"home/water_count/valve/%d", vlv);
        publish_message(buf26 , state , true);
    }
    


    Через MQTT подключаемся к брокеру. Мониторим датчики и шлем в соответствующие ветки mqtt события и значения. Например home/water_count/valve/0 — привод хол воды. home/water_count/counter/0 — показания счетчика хол воды.

    Подписываемся на команды изменения состояния привода и установки текущего значения счетчика (холодной и горячей воды ):

    client.subscribe("home/water_count/valve/+/set");
    client.subscribe("home/water_count/counter/+/set");

    На устройстве одна кнопка — по нажатию включаем экран, рисуем текущие показания счетчиков, сенсоров и кранов. Экран OLED, быстро выгорает если делать включенным все время.

    STARTUP(System.enableFeature(FEATURE_RETAINED_MEMORY));

    Это интересная пограммно-аппаратная фишка контроллера stm, в reference Particle называют ее BackupSRAM. У Photon есть вывод vbat — это не батарейное питание и не зарядка. Пока есть напряжение на этой ноге, содержимое 4кбайт SRAM сохраняется при полной обесточенности контроллера. Таким образом отпадает проблема износа EEPROM.

    В коде переменные, которые надо загнать в эту память объявляют с указанием: retained. Аппаратно я реализовал подпитку от суперконденсатора на 1,5F. По даташиту память сдохнет на 1,6v, по моим стендовым опытам на протоборде это настанет через 2 недели примерно с моим конденсатором. Логика закрытия кранов при срабатывании датчиков «автономна» и не зависит от подключения к openhab. Есть 3 ходовый переключатель прямого управления приводами — автоматика, OFF (открытые краны), Close (закрываем).

    Схема платы ниже:



    Проект Eagle вместе с кастомными либами можно скачать тут.

    Плата делалась ЛУТ, в дорожках не мельчил.

    Водяная баня лучшый друг ЛУТ


    Блок питания. Нам надо и 12 и 5 вольт. Донор ищется на ebay по строке: «hard drive power adapter 5v 12v», типа такого.

    Корпус


    Распечатывался пластиком PLA на 3d принтере (Tarantula Tevo). Сопло 0.4мм, слой 0,25мм. Крышка является заодно и базой для крепления платы контроллера. База с блоком питания крепится к стене. База с крышкой не скрепляются винтами, хватает натяжения крышки (как у бабушки крышки на банках с вареньем) и работает слоистая структура стенок.

    3D модель в архиве.





    Вот как это все выглядить смонтированное на водоразводке.



    Openhab


    Развернут на Orange Pi One под Armbian.

    Конфиг Item
    Без картинок - если оставить теги картинок, Хабр ломается.
    Number	watercount_temp1	"T cool [%.1f °C]"			(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/temp1:state:default]" }
    Number	watercount_temp2	"T hot [%.1f °C]"			(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/temp2:state:default]" }
    Number	watercount_count0	"Count cool [%.2f М³]"					(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/counter/0:state:default]" }
    Number	watercount_count1	"Count hot [%.2f М³]"				(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/counter/1:state:default]" }
    Number	watercount_pressure0	"P cool [%.2f Атм.]"			(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/pressure/0:state:default]" }
    Number	watercount_pressure1	"P hot [%.2f Атм.]"				(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/pressure/1:state:default]" }
    Number	watercount_sensor0	"Sensor0 is [MAP(water_sensor.map):%s]"		(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/sensor/0:state:default]" }
    Number	watercount_sensor1	"Sensor1 is [MAP(water_sensor.map):%s]"		(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/sensor/1:state:default]" }
    Number	watercount_valve0	"Valve cool"		(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/valve/0:state:default], >[mqtt_bro:home/water_count/valve/0/set:command:*:default]" }
    Number	watercount_valve1	"Valve hot"				(gWaterCount)		{ mqtt="<[mqtt_bro:home/water_count/valve/1:state:default], >[mqtt_bro:home/water_count/valve/1/set:command:*:default]" }
    String	watercount_sendStr "LastVol:[%s]"						(gWaterCount)
    Number	watercount_sendCool "Send cool [%.2f М³]"		(gWaterCount)
    Number	watercount_sendHot "Send hot [%.2f М³]"			(gWaterCount)
    Number	watercount_sendSwitch "Autosend" 	(gWaterCount)
    Number	watercount_rssi	"WaterCount [%d dB]"	(gSpark_RSSI)		{ mqtt="<[mqtt_bro:home/water_count/rssi:state:default]" }
    Number	watercount_spark_state	"WaterCount Spark"		(gSpark)		{ mqtt="<[mqtt_bro:home/water_count/spark:state:default], >[mqtt_bro:home/water_count/spark/set:command:*:default]" }


    Нужно небольшое правило трансформации для показаний датчика протечки.

    Конфиги transform
    transform\water_sensor.map
    1=dry
    0=wet
    undefined=undefined

    Формируем страницу для управления:

    Конфиги Sitemap
    Sitemap
    Text label=«Водоподготовка» icon=«water»
    {
    Frame
    {
    Text item=watercount_temp1
    Text item=watercount_count0
    Text item=watercount_pressure0
    Switch item=watercount_valve0 mappings=[1=«Close», 0=«Open»]
    }
    Frame
    {
    Text item=watercount_temp2
    Text item=watercount_count1
    Text item=watercount_pressure1
    Switch item=watercount_valve1 mappings=[1=«Close», 0=«Open»]
    }
    Frame
    {
    Text item=watercount_sensor0
    Text item=watercount_sensor1
    }
    Frame
    {
    Switch item=watercount_sendSwitch mappings=[0=«OFF», 1=«ON»]
    Text item=watercount_sendStr
    Text item=watercount_sendCool
    Text item=watercount_sendHot
    }
    }

    И правила обработки:

    Конфиги Rules
    rule "Check watercount_sensor0"
    	when
    		Item watercount_sensor0 received update
    	then
    		if ((watercount_sensor0.state as DecimalType) == 1)
    		{
    			if ((watercount_sensor0.historicState(now.minusSeconds(3)).state as DecimalType) == 1)
    			{
    				sendTelegram("****_bot", "Sensor0 was wet less than 5 seconds")
    			}
    			else
    			{
    				sendTelegram("****_bot", "Sensor0 become dry")
    			}
    		}
    		else
    		{
    			if ((watercount_sensor0.historicState(now.minusSeconds(3)).state as DecimalType) == 0)
    			{
    				sendTelegram("****_bot", "Sensor0 was dry less than 5 seconds");			
    			}
    			else
    			{
    				sendTelegram("****_bot", "Sensor0 become wet! Valves will be closed!")
    			}
    		}
    	end
    rule "Check watercount_sensor1"
    	when
    		Item watercount_sensor1 received update
    	then
    		if ((watercount_sensor1.state as DecimalType) == 1)
    		{
    			if ((watercount_sensor1.historicState(now.minusSeconds(3)).state as DecimalType) == 1)
    			{
    				sendTelegram("****_bot", "Sensor1 was wet less than 5 seconds")
    			}
    			else
    			{
    				sendTelegram("****_bot", "Sensor1 become dry")
    			}
    		}
    		else
    		{
    			if ((watercount_sensor1.historicState(now.minusSeconds(3)).state as DecimalType) == 0)
    			{
    				sendTelegram("****_bot", "Sensor1 was dry less than 5 seconds");			
    			}
    			else
    			{
    				sendTelegram("****_bot", "Sensor1 become wet! Valves will be closed!")
    			}
    		}
    	end
    	
    rule "Check watercount_temp2"
    	when
    		Item watercount_temp2 received update
    	then
    		if ((watercount_temp2.state as DecimalType) < 37 )
    		{
    			sendTelegram("****_bot", String::format("Hot water temp drop to %s", watercount_temp2.state.toString));
    		}
    	end
    
    rule "Check watercount_pressure0"
    	when
    		Item watercount_pressure0 received update
    	then
    		if ((watercount_pressure0.state as DecimalType) < 1 && (watercount_pressure0.historicState(now.minusSeconds(3)).state as DecimalType) >= 1)
    		{
    			sendTelegram("****_bot", String::format("Cool pressure drop to %s", watercount_pressure0.state.toString));
    		}
    		if ((watercount_pressure0.state as DecimalType) > 1 && (watercount_pressure0.historicState(now.minusSeconds(3)).state as DecimalType) <= 1)
    		{
    			sendTelegram("****_bot", String::format("Cool pressure rise to %s", watercount_pressure0.state.toString));
    		}
    	end
    rule "Check watercount_pressure1"
    	when
    		Item watercount_pressure1 received update
    	then
    		if ((watercount_pressure1.state as DecimalType) < 1 && (watercount_pressure1.historicState(now.minusSeconds(3)).state as DecimalType) >= 1)
    		{
    			sendTelegram("****_bot", String::format("Hot pressure drop to %s", watercount_pressure1.state.toString));
    		}
    		if ((watercount_pressure1.state as DecimalType) > 1 && (watercount_pressure1.historicState(now.minusSeconds(3)).state as DecimalType) <= 1)
    		{
    			sendTelegram("****_bot", String::format("Hot pressure rise to %s", watercount_pressure1.state.toString));
    		}
    	end
    
    rule "Generate send string counters" //every 24 day of mounth  in 00.01 minutes
    	when
    		Time cron "0 0 1 24 1/1 ?" 
    	then
    		
    		var float deltaCool = (watercount_count0.state as DecimalType).floatValue() - (watercount_sendCool.state as DecimalType).floatValue()
    		var float deltaHot = (watercount_count1.state as DecimalType).floatValue() - (watercount_sendHot.state as DecimalType).floatValue()
    		
    		if (deltaCool >= 0 && deltaHot >= 0)
    		{
    			watercount_sendStr.postUpdate(String::format(" %.2f / %.2f м3", deltaCool, deltaHot))
    			watercount_sendCool.state = watercount_count0.state
    			watercount_sendHot.state = watercount_count1.state
    			sendTelegram("****_bot", String::format("Лизюкова 23, корп 5, кв. 23. Счетчик №2560097 (хол.вода) = %.2f м3. Cчетчик №2538996 (гор.вода) = %.2f м3. %s", (watercount_sendCool.state as DecimalType).floatValue(), (watercount_sendHot.state as DecimalType).floatValue(), watercount_sendStr.state.toString()))
    		}
    		else
    		{
    			watercount_sendSwitch.postUpdate(0)
    			sendTelegram("****_bot", "Current counters value less than sended last time. Turn off autosend.")
    		}
    end
    rule "Send string counters" 
    	when
    		Time cron "0 0 23 24 1/1 ?"
    	then
    		if (watercount_sendSwitch.state == 1)
    		{
    			sendMail("uk@uk.ru", "Лизюкова 23, корп 5, кв. 23", String::format("Лизюкова 23, корп 5, кв. 23. Счетчик №2560097 (хол.вода) = %.2f м3. Cчетчик №2538996 (гор.вода) = %.2f м3", (watercount_sendCool.state as DecimalType).floatValue(), (watercount_sendHot.state as DecimalType).floatValue()));
    			sendTelegram("****_bot", "Send email with watercount values");
    		}
    		else
    		{
    			sendTelegram("****_bot", "Can't send email with watercount values - autosend is OFF.");
    		}
    end
    rule "Rotate valves" 
    	when
    		Time cron "0 0 05 25 1/1 ?"
    	then
    		if (watercount_valve0.state == 0 && watercount_valve1.state == 0)
    		{	
    			watercount_valve0.postUpdate(1)
    			Thread::sleep(1000)
    			watercount_valve1.postUpdate(1)
    			Thread::sleep(1000)
    			watercount_valve0.postUpdate(0)
    			Thread::sleep(1000)
    			watercount_valve1.postUpdate(0)
    			sendTelegram("****_bot", "Valves was rotated.");
    		}
    		else
    		{
    			sendTelegram("****_bot", "Can't rotate valves, it's closed.");
    		}
    end


    Для отправки сообщений не пользуюсь встроенным функционалом андроид приложения openhab, как и иинтеграцией с их облаком. Мне по душе бот Телеграмм. Как настроить и подлючить бота можно подсмотреть на wiki. Для отправки писем с почтового ящеика gmail, если у вас двухфактораная аутентификация, надо включить разовый пароль для почтового приложения и прописать именно этот пороль в конфиге openhab.

    Пройдусь по правилам.

    Check watercount_sensor — контроллер отправляет новые значения сенсора протечки только при смене значения или если было ложное срабатывание (менее 10 циклов). Анализируем пришедшее и историческое значение, формируем информационные сообщения. Есть нюанс — попытка получить prevoiusItem постоянно отдает текущее значение, решения не нашел — беру значение "-3 сек", если кто поборол — отпишите в коменты или в личку.

    Check watercount_temp2 — проверяем, если меньше 37, значить горячая вода стала холодной, надо по приходу включить проточный нагреватель.

    Check watercount_pressure — анализируем текущее и предыдущее значение, реагируем сообщением на падение ниже 1 атм и росту выше нее.

    Generate send string counters — стартует по cron 24 числа каждого месяца в 1 час ночи. Проверяем, что значения сейчас больше отправленных в прошлый раз. Если меньше — выключаем автоотправку и формируем оповещение. Если ОК — запоминаем значения счетчиков для отправки в УК, отправляем в телеграмм будущее тело письма. Заодно в watercount_sendStr сохраняем, сколько мы потребили за прошлый месяц.

    Generate send string counters — стартует по cron 24 числа в 23.00. Проверяет включена ли автоотправка, если вкл — шлем на почту кправляющей компании значения счетчиков. Получается у меня есть 24 числа весь день, что то исправить или просто вырубить автоотправку, если в телеграм пришла ошибка.

    Update by comment. Rotate valves — правило для закрытия\открытия крана раз в месяц против закипания. 25 числа в 5 утра — что бы не попасть на работу посудомойки или стиралки, но даже если и попадет — не критично, перекрытие воды будет около 3-4 секунд.

    И только тут начинается умный дом...
    Объединение систем в единой точке (openhab) позволяет строить логику, не доступную набору автономных систем. Например: пришло событие увеличения счетчика воды — система безопасности активна, замки входной двери закрыты, потребление электроэнергии посудомойкой и стиралкой менее 5 Вт — значит зафиксирована протечка мимо датчиков. Формируем команду на закрытие кранов, отправляем сообщение боту в Телеграмм. Но этом как нить потом.
    AdBlock похитил этот баннер, но баннеры не зубы — отрастут

    Подробнее
    Реклама

    Комментарии 117

      +1
      Так как у вас MQTT уже используется, то советую вместо Rules в OpenHAB сделать всю логику в Node-Red — там программировать и отлаживать такие сценарии на порядок проще и по опыту скажу, что по сравнению с OH он вообще не глючен. А OpenHAB использовать только для перевода различных интерфейсов к MQTT — веб, телеграмы и т.д.
        +2

        Спасиб, покурю статью — как то прошла мимо, вообще не в курсе.
        Тут еще такое дело — делать автоматизацию можно на чем угодно, хоть на скриптах — тут кому что удобнее и привычнее. Если кто то реализует подобное моему на своем "каркасе" и запилит ответную статью будет вообще прекрасно.

          0
          При использовании телефона с OS Android и для работы с MQTT рекомендую всем приложение MQTT Dash.

          Приложение бесплатное, стабильное, простое в настройках и управлении, кушает минимум ресурсов, автор всегда на связи.
            0
            У меня на андроидных панелях стоит Commandfusion iViewer с MQTT скриптом — бесплатно на один скрин и графических возможностей больше. Работает в 24/7 уже месяцев 6 как.

            Но Dash-приложение с MQTT интерфейсом все равно нужно, только слегка в другом виде — я всех девелоперов прошу об этом:
            — сделайте его на iOS и на Android
            — сделайте возможность посылать MQTT сообщения с заблокированного экрана, чтобы не нужно было долго разблокировать телефон, потом искать и открывать нужное приложение. Надо чтобы просто взял телефон, два раза на ощупь нажал и все, как в Homekit на Apple.
            Тогда из телефона получится идеальный пульт управления любой MQTT автоматизацией. Я даже за такое бы приложение заплатил пару баксов. Передайте разработчику, если можно.
              0
              а как Commandfusion iViewer взаимодействет с домашним сервером, когда вы не дома? порты пробрасываются как-то через домашний роутер?
          +3
          Дожили, контроллер в приводе крана.
          А шаговый двигатель (он реально шаговый? ) для того чтобы изредка крутить на небольшой угол, да еще и в одну сторону, уже никого не удивляет? действительно- «дожили»: контроллеры, WiFi и Bluetouch где надо и не надо, облака, управление с планшета/айфона/часов. Показательный пример- контроллер для регулирующего клапана (для промышленного применения) с кучей «плюшек» на борту- беспроводной интерфейс (зачем, если кабели к нему так и так тянуть?), графический дисплей (почему не сенсорный?) и прочие «преимущества» в основном не нужные потребителю, но увеличивающие цену. И назначение упомянутого контроллера- управлять приводом задвижки. Мне (да и всей системе отопления в целом) глубоко фиолетово на сколько мм переместился шток за последние пол-часа: задача регулятора- поддерживать заданный расход, а это может быть и 5, и 20 и 90 % хода. Дисплей и прочая «светомузыка» нужны практически только при наладке. Вот и выходит для связи с центральным контроллером по протоколу «Супер-ПуперBus» нужен какой-то микроконтроллер, PIC16 вполне бы справился, но «как-то не круто, давайте ARM 7 поставим», а после- «осталось куча незадействованных входов/выходов, да и ресурсов процессора еще дофига- давайте прикрутим пинание кошки по сигналу от марсианского вездехода».
            0
            >А шаговый двигатель (он реально шаговый? )
            Да, конечно.
            0
            А подскажите, что за кран таки выбрали? Есть у него опознавательные знаки? :)
              0
              В статье есть — гидролок профессиональный, именно его фото внутренностей в статье используется.
                0
                Спасибо, не понял, что «гидролок» — название производителя.
                http://gidrolock.ru/production/sharovoy-kran-s-elektroprivodom-gidrolock-professional/
                Спасибо.
                  0
                  Тут похоже так же петрушка, как у Ксерокса и копировального аппарта. Встречал такую фразу — «у меня гидролок от Аквасторожа».
              0
              Вот смотрю на фотографию и не понимаю — зачем байпас между коллекторами холодной и горячей воды? У вас еще и бойлер «на всякий» есть? А то у меня разрыв шаблона произошел…
                0
                Какой именно байпас? :)
                Их два:
                1) между фильтром и редуктором давления — он для промывки фильтра обратным потоком воды (холодный промывается горячей и наоборот).
                2) в конце коллектра — это отводы на проточный водонагреватель. На него оба крана открываются и вход гор воды закрывается.
                0
                Из не-IT — можно было сделать шланги от стока фильтров в канализацию, чтобы при промывке обратным током воды не париться c ведрами.

                Ответ на комментарий выше:
                Вот смотрю на фотографию и не понимаю — зачем байпас между коллекторами холодной и горячей воды?

                Обычно так делают, чтобы обратным током воды мыть фильтры.
                  0
                  Спасиб. Задумка именно такая — причем решил просто засвелить сверху 110мм трубу фрезой и вставить 12мм носик для садовых шлангов (есть такие для врезки в платиковые бочки), а не городить из пластика вставку с 50мм отводом, потом в нее через пару переходников отвод как на стиралку.
                  Пока не было необходимости промывать, подозрительно чистая вода, поэтому доработка вытесняется в backlog более приоритеными.
                    0
                    Только главное не забыть, что по хорошему на эти шланги надо ставить сухой гидрозатвор. Многие считают неправильным прямое подключение канализации в стояк питьевой воды) Даже если там есть кран на фильтре… я просто надел две трубки и сливаю через них в унитаз. Заодно есть бонус, видно сколько шлака с фильтра вымылось.
                      0
                      >>>Многие считают неправильным прямое подключение канализации в стояк питьевой воды)
                      Тоже слышал, но ИМХО перебор. Если так заморачиваться, то нельзя и канализационный слив посудомойки подключать без сухого сифона.
                        0
                        Посудомойка обсыхает после рабочего цикла, плюс высокая температура и моющее средство.
                        А тут прямая дорога для бактерий.
                        В мануалах производителей все подобные сливы исполняются через воздушный разрыв.
                          0
                          >>>Посудомойка обсыхает после рабочего цикла
                          В поддоне снизу все время есть какое то количество воды, насос начисто все не выкачивает, влажность в машинке некислая.
                          Мало того — шланг сливной идет снизу вверх до уровня подключения к сифону раковины. И он все время заполнен водой.
                          Фото воды, вытекшей из снятого только что шланга


                          Вода не стекает обратно из-за обратного клапана в машинке. Причем это чистая вода, оставшаяся в машинке после полоскания посуды, в ней уже нет химии. И этот обратный клапан ну совсем не преграда для бактерий.
                          >>>А тут прямая дорога для бактерий.
                          То есть прямая дорога это — забраться по трубке до шарового крана внизу фильтра (допустим ОК), затем надо как то найти дырку, куда батерия пролезет и самая вишенка — эта супербактерия должна преодолеть 6 атм давления вырывающихся молекул воды.
                          Ну ОК — если такая бактерия найдется и все предолеет, я готов ее честно выпить — судя по фильмам после такого про меня будут снимать фильмы Марвел.

                          Вы сами сравните варианты сверху — посудомойка явно на порядок стремнее.
                          Ох, не люблю ссылки на мануалы, опыт отцов и т.д. Это прямой путь к ремесленичеству и каргокульту. Все должно иметь логичное объяснение.
                          У меня есть оно конечно для мануалов — про микроволновку и «не сушить кошку» все наверно в курсе. Ведь можно открыть кран промывочный, сбросить давление и уехать на месяц в отпуск. Наверно от такого выстрела в ногу спасет сухой сифон.
                          Хотя есть еще более невероятная версия — компания производит и сухие сифоны и фильтры. Ничего личного, только расширение рынка сбыта.
                            0
                            Фраза про фильмы Marvel сделала мне день, спасибо :)
                          0
                          Для производственных моек (общепита) это прописано в СанПиН кстати. См. СанПиН 2.3.6.1079-01
                          (Измененная редакция. Изм. № 2)

                          3.8. Производственное оборудование и моечные ванны присоединяются к канализационной сети с воздушным разрывом не менее 20 мм от верха приемной воронки. Все приемники стоков внутренней канализации имеют гидравлические затворы (сифоны).
                            0
                            ценизм снипов и методичек по расчету потерь с военной кафедры местами радует.
                            Моечная ванна — это большая раковина. К домашней раковине требования нет, ибо тут только 1-2 человека продрищется :)?
                            Судя по этому санпин кстати для слива дренажа достаточно сделать U колено шлангом для затвора, но так как слив не постоянный он будет пересыхать, поэтому городят сухой сифон. Но логика выше говорит что это лишнее для напорных сливов
                            0
                            у меня на сифоне под раковиной кухни обнаружили «коннекторы» для подключения посудомойки и стиралки, куда и воткнул их
                            опять же содержимое сифона раковины промывается ацкой химией из посудомойки
                              0
                              А вот если такой малореальный, но возможный случай.
                              Вот собираетесь промыть фильтры. Открываете краны, а тут внезапно воды нету, и еще эффект обратной тяги. То есть холодная вода вместо того что бы приходить начинает убывать (к примеру потому что сосед внизу тоже открыл кран). И получается что начнет подсасываться содержимое из канализации?
                                0
                                >>>И получается что начнет подсасываться содержимое из канализации?
                                У нас в стране практически нет напорной канализации. То есть подсасывать может только воздух.
                                Этот подсос воздуха — вполне реально может произойти, но совпасть должны факторы с вероятностью уровня «встретить вчера динозавра в Нью-Йорке».
                              0
                              Правильно считают, бактериальное заражение не нужно.
                              Судя по комплектации, вдохновлялись работами Игоря Иващенко?
                                +1
                                >>>вдохновлялись работами Игоря Иващенко
                                Впервые слышу, гугл выдает картинки с водоразводкой, похоже какой то сантехник прошаренный.
                                А по комплектации:
                                far — был очень положительный опыт на прошлой квартире по кое какой арматуре
                                rehau трубы\фиттинги — просто посмотрел как устроена гильза обжимная, это гениально
                                бугатти краны — тоже опыт с прошлой квартиры.
                            0
                            у данного запорного крана какая логика, у меня сейчас стоит нептун на 12 вольт, там три провода, (земля + два), при подачи напряжения кран либо закрывается, либо открывается, стоят концевики

                            нашел на сайте производителя

                            Управление.
                            Соединение черного провода с синим проводом (GND): закрытие шарового электропривода.
                            Отсоединение черного провода от синего провода (GND): открытие шарового электропривода.
                              0
                              Там есть 2 варианта (помимо деления на 220/12в):
                              1. Нормально-открытый, когда в разомкнутом состоянии контактов кран открыт, в замкнутом — закрыт. Вы про него и написали.
                              2. «С пропорциональным управлением» — когда при подключении к нулю одного из 2 проводов соответственно меняется и состояние крана.
                                0
                                С пропрциональным — был еще третий вариант — там надо была кодовой посылкой задавать значение 0-255 градус открытия, сейчас не нашел на сайте.
                                Но это все не совсем правильно — это же шаровый кран, а не регулирующий вентиль. Нельзя его в полуоткрытом состоянии использовать. То есть 1 вариант самый правильный для использования по прямому (отсечному) назначению ИМХО.
                                Про регулировку — отдельно напишу, на отоплении использую.
                                0
                                Тут напряжние на кране должно быть всегда по хорошему.
                                Черный провод — это фактически подтянутый к + вывод контроллера внутри крана.
                                Замыкаем на землю — контроллер внутри привода читает с этого порта 0 и закрывает кран.
                                В принципе можно коммутировать чем угодно — реле, или как в статье оптопарой, или простом слаботочным транзистором, типа 2N3904. Но лучше оптопарой, стоимость такая же, а по напряжению развязка надежнее.
                                0
                                На подобном фильтре (Honeywell) я сетку поменял на 50мкм, и что характерно, не забивается, а вот следующий за ним полипропиленовый, тоже 50мкм, стабильно меняется раз в два месяца. И вот еще, интересно, зачем шаговый двигатель, ведь шаровый клапан не сможет нормально дросселировать поток. А для гидролока, была идея: применить модульную серву и 555 таймер, но так и осталась идеей.
                                  0
                                  >>>И вот еще, интересно, зачем шаговый двигатель, ведь шаровый клапан не сможет нормально дросселировать поток.
                                  Могу только предпологать. Я там выше написал — в этой проф серии года три назад был привод с управлением посылкой байта в прямом и обратном порядке бит. Привод выставлял эти 255 значений угла поворота крана. Возможно двигатель пошел из-за унификации на все проф модели, крутящего момента с счетом пары шестерен редуктора в нем до дури.
                                  >>>ведь шаровый клапан не сможет нормально дросселировать поток.
                                  Полностью согласен, поэтому наличие кранов с пропорциональным управлением в этой серии считаю совсем лишним.
                                    0
                                    скорей всего для профилактики, с некоторой периодичностью:
                                    пример 1 раз в месяц — крутнуть туда обратно на 25 %
                                      0
                                      Тут все проще с профилактикой, шар в одну сторону вращается.
                                      В стандартном контроллере гидролока есть правило раз в месяц замыкать\размыкать линию. Шар соответсвенно делает полоборота (проходит полностью открытие и закрытие)
                                        0
                                        Спасибо. Не знал
                                    0
                                    И вот еще, интересно, зачем шаговый двигатель

                                    Шаговый двигатель позволяет точно позиционировать кран в положении открыто/закрыто и не имеет инерции.
                                      0
                                      Тут инерция не критична — с учетом редуктора перемещение штора на оборот минимальное.
                                      А позоционирование идет по фотопаре, она определяет положение крана.
                                      Поэтому да, зачем шаговый — это интересный вопрос.
                                    0
                                    Когда-то думал себе систему противопротечки поставить — но почитал форумы, пользователи жалуются на то, что краны ломаются — неожиданно и непредсказуемо.
                                      0
                                      Угу — и обратной связи нет, пользователь узнает о поломке после затопа.
                                      Мой контроллер шлет показания уровня сигнала wifi каждые 30 сек, центральный сервер Openhab мониторит и если нет ссобщения больше 2 минут — отправляет нотификацию мне.
                                        0
                                        Механическую часть мониторить всё равно не получится.
                                          0
                                          Про поломавшиеся краны гиролок проф еще ни разу не слышал, с его крутящим моментом перегрузить его — нереально ИМХО.
                                          Но для праноиков можно и тут кое что допилить — надо вывести наружу сигнал с фотопары, и аналоговым входом проверять, что при подачи сигнала на закрытие синал меняется. Можно это делать и раз в месяц при профилактическом обороте крана в правиле «Rotate valves»
                                            0
                                            Можно тупо задублировать, поставить две штуки (или более, в зависимости от паранойи) последовательно :)
                                              0
                                              Это уже не параноя, а шизофрения :), это к докторам.
                                        0
                                        любые? или определённых моделей?
                                        –2
                                        Объединение систем в единой точке (openhab) позволяет строить логику, не доступную набору автономных систем.

                                        Тут важные момент, что система должна работать без «единой точки» (в данном случае OH), а у вас получается если упадет опенхаб или отключат электричество то все старания на защиту от протечек потрачены зря. Приемущество автономных именно в их автономности.
                                        Я себе поставил аквасторож из-за автономности и прикрутил к нему управление и мониторинг состояния на сервер.
                                          0
                                          Я как понял у автора реализованно и автономность, а OH просто обьединяет все!
                                            +2
                                            Вот ты прям в душу плюнул.
                                            Логика срабатывания по показаниям датчиков протечки внутри контроллера.
                                            Openhab не принимает в ней участия, он дает логику второго уровня, нотификации меня и отправку показаний счетчика в УК.
                                              0
                                              А как сделал мониторинг состояния и управление? Куда подключался — не поделишься?
                                                0
                                                Пока что сделал тупо, внутри блока управления поставил Ардуино мини и подпаялся к кнопкам и светодиодам. Управляю через NRF2.
                                                На плате есть RXTX хочу посмотреть что там бегает, но пока руки не доходят до этого.
                                                  0
                                                  Жестко :) Там еще есть «разъем для подключения расширений» — лучше подключаться через него (выглядит, как LAN-разъем).

                                                  На этом разъеме есть питание (5В), информация о срабатывании (если «авария», на линии 0, если все штатно — 1), есть две линии, которые при подаче на них 0 — откроют или закроют кран (в зависимости от того, на какую линию).

                                                  Только вот не нашел я там сигнала, который бы однозначно говорил, что кран открыт или закрыт :(
                                                    0
                                                    Вариантов много, поэтому сделал на скорую руку, работает год уже.
                                                    Веб морда управления аквасторожом
                                                    image
                                            • НЛО прилетело и опубликовало эту надпись здесь
                                                0
                                                Пробовал отключить — все с ними ок.
                                                Ппм и см слили воду и заморгали ошибкой (мои siemens по крайней мере)
                                                  0
                                                  Не доверяете аквастопу от сименса? Они вроде гарантию от протечек дают и даже обещают возместить расходы на ремонт, если таки протечка случится.
                                                    0
                                                    Не-не — этим доверяю, решение по защите в том числе гибкой подводки у них очень правильное.
                                                    Датчики больше нужны для зажиты от гибкой подводки в смесители на кухне и в ванной много всего окромя стиралки.
                                                +1
                                                Так шаровые краны на 1\2 дюйма если год не трогать — повернуть очень тяжело.

                                                Удивлён что никто не написал. Аварийная запорная система должны по расписанию раз в месяц должна ночью перекрыть-открыть кран. Ибо кран который год никто не крутил может и перекрыть не до конца, и покрытие задраться, и вообще сломаться шар может(он хрупок и вверху его паз для отвёртки которая вентилем крутится).
                                                  0
                                                  Эта фраза была про обычные краны на входе любой квартиры.
                                                  У гидролока контроллер крутит краны раз в месяц.
                                                  У меня эта логика в правиле на openhab, в статье его нет, оно совсем простое. Добавлю попозже, сейчас с мобилы
                                                    0
                                                    Добавил в статью правило openhab Rotate valves.
                                                    0
                                                    Помимо openhub рассматривали что-то для интеграции? Или просто пальцем в небо?
                                                    Лирика
                                                    Вот уже несколько лет тема умного дома мусолится и прогрессирует. Приятно видеть, что от простого описания кусочков мы перешли именно к вопросу объединения в одно целое. И отдельное спасибо за схемы/код и за то что поделились своим опытом.
                                                      +1
                                                      Думаю тут основная интеграция идет через mqtt на транспортном уровне. Как написали в самом первом коменте, можно openhab заменить на node red, или еще чем подобным. Можно вообще обойтись подписками mqtt одних нод на события других нод, исключив любую прослойку (кроме самого mqtt сервера).
                                                      Но я выбрал опенхаб за счет расширяемости плагинами и гибкости.
                                                      Это сейчас все на mqtt, а завтра надо будет прикрутить девайс с rs485 или еще чем то — опенхаб тут рулит
                                                        0
                                                        Сейчас этих интеграционных софтов вагон и маленькая тележка. Вот примерный список самых популярных.
                                                        Трудно сказать, какой из них выстрелит, а какой загнется. Поэтому надо на чем-то остановиться, но сделать так, чтобы при случае можно было легко перелезть на что-то другое.
                                                        0
                                                        Датчики давления
                                                        Практически — показометры. Точность +- 0,5 атм меня полностью устроила.

                                                        эти +- со временем гуляют, или просто ошибка калибровки? получится по разности показаний датчиков до и после загрязненность фильтра отслеживать (поймать изменение как раз на те самые 0,5 атм )?
                                                          0
                                                          Ну я с запасом дал. Реально +- 0,08 у меня получилось на диапазоне 0-6 атм расхождение от Far манометра. Вопрос — насколько правильно показывает Far :).
                                                          Поидее да — можно поставить два датчика и мониторить загрязнение фильтра, хорошая идея.
                                                          0
                                                          Спасибо за статью! Сам реализую подобную систему и тоже на openhab, только помимо водоснабжения прикрутил еще электроснабжение, мониторинг климата и освещение. Изначально пробовал несколько систем можордомо, iobroker (в самом начале его пути), остановился на openhab по причине множества биндингов, можно подключить практически любое устройство, ну и мануалов на момент освоения было больше :) Из подходов автора понравилось, что модуль управления шариками автономный, openhab лишь дополняет систему, в случае протечки и неактивности openhab вода все равно перекроется, сам придерживаюсь такого же принципа. Из пожеланий, все же рекомендую перходить с MQTT на что-нибудь другое (по крайней мере для важных компонент, таких как водоснабжение и электричество) например на ModBus и соответственно переводить эти системы на проводную шину, у меня нечасто, но бывали траблы с MQTT. У себя еще хочу реализовать автономные счетчики для воды на PCF8583 (питаются от обычной часовой батарейки, подключаются к контролеру по i2c), что бы разгрузить основной контроллер и openhab от подсчета и хранения количества воды.
                                                            0
                                                            >>>только помимо водоснабжения прикрутил еще электроснабжение, мониторинг климата и освещение
                                                            А у тебя это все на одном контроллере?
                                                            >>>все же рекомендую перходить с MQTT на что-нибудь другое
                                                            Пока с mqtt у меня все железо-бетонно. Для москито мои 0,5 сообщения в сек не нагрузка. Провода заложены, сам конечно больше провод уважаю, wifi всегда лотерея — но пока живет.
                                                            Тут еще такая фигня — я закопал 800 метров витой пары на 56 кв метрах и все равно находятся точки, где нафакапил — и придется по wifi идти однозначно.
                                                            >>>еще хочу реализовать автономные счетчики для воды на PCF8583
                                                            Тоже мысли такие были, пока обошелся суперконденсатором на пару недель, посмотрим как себя поведет.
                                                            У меня нет такого — сделал и живет, все время чешется — контроллер управления светом 4-ую итерацию сейчас будет переживать.
                                                              0
                                                              Не, у меня дома такой зоопарк, что мама не горюй))) все это делалось постепенно, но все отлично внедряется в openhab, соответственно для всего можно писать правила)
                                                              Учет электроснабжения реализован на SDM220MT (покупал на алиэкспресс) в openhab заведен по ModBus, счетчик ставится сразу после вводного меркурия (к нему нереально подключится, все опломбировано и объяснить электрикам что-то нереально), второй счетчик поставил на одну из вводных линий (для мониторинга определенных устройств), на сервере торчит обычный копеечный USB ModBus адаптер, счетчик в регистрах выдает полную, активную, реактивную мощности, напряжение, ток, частоту, косинус фи и еще кажется что-то.
                                                              Свет делал очень давно и реализован через noolite-ские контроллеры и пульты, в openhab есть биндинг, через который можно рулить как контроллерами, так и принимать команды с пультов.
                                                              Всевозможные датчики (температура, влажность, освещенность и т.д.) реализованы через esp8266, заводятся в openhab через MQTT.
                                                              Бесперебойник как обычно через USB -> NUT -> Network UPS Tools Binding.
                                                              Прелесть ModBus в том что одна шина (фактически 2 провода витой пары) в длину может достигать до 1,2 км, и на одну шину можно вешать кучу устройств, плюс время отклика достаточно малое.
                                                              Если интересно чуть позже выложу скриншоты с графиков от счетчика SDM220MT.
                                                              Кстати, я так понял, что датчики давления обычные аналоговые, подключаются к АЦП? Какой там макс уровень 5в или 3,3в?
                                                                0
                                                                >>>SDM220MT.
                                                                По нему была статья тут не так давно.
                                                                >>>датчики давления обычные аналоговые, подключаются к АЦП?
                                                                Угу. Там +5в, земля и сигнальная линия.
                                                                  0
                                                                  Кстати, у вас на скриншоте давления 4 и 6 атм, не многовато? может редукторами понизить до 2,5 — 3 атм, всяко гибкие подводки сохранее будут. Или датчики стоят до редукторов?
                                                                    0
                                                                    Это до редукторов давление, на фильтре 100мкм. После редукторов 2,5.
                                                                    И это я на 10 этаже, простая формула говорит, что на 1 этаже 9 очков в холодном стояке и кто то выбрасывает редукторы при ремонте :)
                                                                      0
                                                                      а в доме какая водоразводка — снизу вверх, или сверху вниз?
                                                                        0
                                                                        Гравитация на нашей планете одинаковая при любой подаче воды :).
                                                                        Водоразводка — с 1 по 10 этаж — все подача снизу.
                                                                        С 11 по 19 этаж — горячая сверху, холодная снизу.
                                                                    +1
                                                                    Кстати, если будите реализовывать учет электроэнергии, то не советую неинвазивные методы, точность крайне низкая, до установки SDM220MT, собирал неинвазивные датчики тока из проекта опенэнерджимониторинг, заколебался его настраивать, напряжение еще более-менее, а ток измеряет очень грубо, SDM220MT измерения через шунт, точность намного выше.
                                                                    0
                                                                    Слегка путаете, протокол и интерфейс. ModBus у вас работает скорее всего поверх RS485. А если использовать ModBusTCP то он не лучше в плане надежности, чем тот же MQTT.
                                                                  0
                                                                  Из пожеланий, все же рекомендую перходить с MQTT на что-нибудь другое (по крайней мере для важных компонент, таких как водоснабжение и электричество) например на ModBus и соответственно переводить эти системы на проводную шину, у меня нечасто, но бывали траблы с MQTT

                                                                  И чем вас Modbus тогда спасет? Странно слышать о ненадежности MQTT — этот протокол сам по себе рассчитан на высокую надежность передачи в любых средах, в том числе Wi-Fi и сотовых сетях. Каждое сообщение подтверждается, также есть QoS, гарантирующие доставку сообщений и периодические ping-опросы, чтобы знать, если устройство отвалилось. Если у вас были с ним траблы, то либо какое-то из устройств не реализовало поддержку этого протокола полностью, либо были проблемы с физическим каналом передачи, но это уже вопрос не к MQTT. То, что провода лучше радио, это понятно. Но если это будет Ethernet c MQTT, то по надежности это будет не хуже, чем тот же Modbus TCP.
                                                                    0
                                                                    Вполне возможно, что проблемы на аппаратном уровне, MQTT поднимал на esp8266, периодически раз в несколько месяцев какой то из датчиков отваливается, именно не реагирует на MQTT запросы, хотя GET запросами инфа получается. У себя пока реализовал правила, если uptime через MQTT не меняется 2 мин, то посылается GET команда на перезагрузку esp8266 (костыль я знаю, но времени пока нет нормально сделать).
                                                                      0
                                                                      А на чем программируешь?
                                                                      У меня есть две ноды на esp8266 wemos d1 mini — скетчи на ардуино ide, ни разу не отваливались за полгода.
                                                                        0
                                                                        Изначально начинал на arduino ide, но чем больше система становилась, тем больше понимал, что программист с меня так себе))) и время на программирование уходит гораздо больше, чем на железную составляющую, в общем перешел на готовые прошивки от хоумс смарт, сейчас ковыряю есп изи
                                                                          0
                                                                          В этом и может быть проблема. Все эти сборники — попытка впихнуть невпихуемое. Там и вебсервера и поддержка кучи датчиков, это все жрет память, а ее гулькин фиг.
                                                                          Библитеки mqtt и ip стек на esp8266 ардуино ide вылизывается ацкой толпой народа, посмотри сколько народа комитится на гитхабе в этом проекте, это не сравнимо с поделками кулибиных, какими бы крутыми они не были.
                                                                          Попробуй написать тестовую ноду в arduino ide и посмотри как у нее будет с отваливанием
                                                                            0
                                                                            на счет впихнуть невпихуемое согласен )) за свободной памятью слежу, все лишнее стараюсь обрубать, на счет тестовой ноды, нужно будет в одну есп залить посмотреть на стабильность
                                                                  –2
                                                                  Чем сложнее система — тем ниже её надёжность.
                                                                    0
                                                                    Не по теме, конечно. Но в принципе — да.

                                                                    По мне так поставить два запорных крана с управлением от ВЫКЛЮЧАТЕЛЯ. Уходишь из дома — выключаешь не только весь свет (все же это делают, да?), но и воду.
                                                                    Стоимость в разы ниже. Надёжность — не меньше.
                                                                      0
                                                                      Звонок на телефон: Чувак, тут такие девушки — развратные и доступные, давай к нам?
                                                                      А ты в ответ: Не могу, у меня стиралка еще не постирала. :)
                                                                      Шутка конечно, но с долей правды. Такой кондовый сценарий предполагает, что ты не будешь пользоваться этим выключателем при включенной ПММ и СМ. А это человеческий фактор, он всегда стреляет.
                                                                        0
                                                                        СМ имеется с незапамятных времён. ПмМ была до преезда (в новую кухню не стали ставить — нет смысла при семье из 3 человек). Ни разу не оставляли включёнными эти приборы, когда уходили из дома. Не знаю почему. Может недоверие ко всей бытовой технике*. Может ещё что-то. Тем не менее ни разу такой ситуации не возникало.
                                                                        * — родители, уходя из дома, выключают телевизор из розетки. Наверное наследственное :))
                                                                    0
                                                                    Что за шланги использовали для разводки воды?
                                                                      0
                                                                      Шланги??? Трубы наверно — это Rehau Stabil
                                                                        0
                                                                        Спасибо!
                                                                        Был незнаком c ними, обычно ПП или МП трубы белые, серые — шланги.
                                                                          0
                                                                          У рехау каждая серия труб своего цвета, для отопления например розовые :).
                                                                          Они ощутимо дороже обычного металопласта и требуют спец инструмента для натяжки гильз — но по надежности трубы и соединения несравнимы с обычными.
                                                                      0
                                                                      И только тут начинается умный дом…
                                                                      Объединение систем в единой точке (openhab) позволяет строить логику, не доступную набору автономных систем. Например: пришло событие увеличения счетчика воды — система безопасности активна, замки входной двери закрыты, потребление электроэнергии посудомойкой и стиралкой менее 5 Вт — значит зафиксирована протечка мимо датчиков.

                                                                      Вот вот. Все на датчики надеются. А если труба лопнула где нет датчика. При вашей схеме можно просто считать потребление на каждой точке и сумму сравнивать с входным расходом.
                                                                      — появился расход на входе в квартиру, значит мониторим потребители. Суммируем все потребители за определенный промежуток времени и сравниваем сумму с той что прошла на вход за тот же период времени.
                                                                      Если совпадают — все ок. Если разница, значит куда то еще уходит. Датчики молчат — проблема в трубе.
                                                                        0
                                                                        Принцип понят правильно, а реализация понята не правильно :).
                                                                        Я меряю потребление электричества, а не воды у двух приборов (стиралка и посудомойка).
                                                                        То есть если меня нет дома, а работает посудомойка — то тикающий счетчик — это нормально.
                                                                        А вот если меня нет дома, посудомойка и стиралка не потребляют электричество — это уже беда.
                                                                          0
                                                                          Я то как раз и имел ввиду недостаток вашей логики. Пример. Вы дома. Посудомойка не арбайтен. Стирлку сдали в ремонт. Никакого потребления электричества. Вода расходуется! В чем дело? Ну конечно же унитаз. Или кран в раковине.
                                                                          А если вы дома, но спите. а лопнула труба. Датчики далеко. Стиралка и посудомойка электричество не кушают. Значит все ок??? Спим дальше. Как в этом случае определить кто расходует воду? Кран в ванной или в раковине.
                                                                          А если считать все потребители то сразу станет ясно. Если вода пошла, но нет расхода на конечных потребителях — тревога. А еще лучше считать сумму. Так как где тонко там и рвется. Лопнула труба в момент открытия крана. Если просто смотреть есть расход или нет. То не определишь. А если утекло 3л, а с крана выбежал всего 1, то вопрос — куда убежали еще 2?
                                                                          вот именно это и имел ввиду.
                                                                            0
                                                                            А — понял. Это совсем идеальный, но нереальный вариант — его проблема вот тут:
                                                                            >>> если считать все потребители то сразу станет ясно
                                                                            Несуществует кранов и унитазов с встроенными счетчиками воды (может и к лучшему :) ).
                                                                            Если бы они были — да, можно вообще отказаться от датчиков.
                                                                            Проблема лопнувшей трубы у меня минимизируется по другому:
                                                                            1) примение труб рехау с натяжными гильзами. Это ипически надежное решение.
                                                                            2) в туалете и ванной полы сделаны с уклоном в сторону зумпфа (см фото), где бы ни лопнула труба — вода потечет в зумпф и замкнет датчик. Проблема только на кухне — там нет уклона.
                                                                            3) практически нет гибкой подводки (только от смесителя на кухне).
                                                                            Полностью пока нельзя застраховаться, можно только минимизировать риски.
                                                                              0
                                                                              Даже ваше решение — это уже много. Я лишь подсказал как бы это хотелось видеть в идеале.
                                                                              А в чем проблема со счетчиками на кранах и унитазах. Их ведь можно и установить. Согласен это деньги. Но на будущее. Вдруг под вами будет квартира олигарха ))) с крутым ремонтом.
                                                                              Я ванной сделал пассивную систему безопасности. Так же как и у вас уклон к вертикальной канализационной трубе. а в нее врезал сифон (по примеру как в отелях душ и сифон вделан в пол). Получается если что… то все бежит и сливается как раз в этот сифон и канализацию.
                                                                              Один минус. Время от времени (месяца3-4) там высыхает вода. И тогда приходится устраивать потоп в ручную. Что бы был гидрозамок от запаха. Ну а поскольку полы в ванной моем, то Достаточно плеснуть лишнего и пусть туда сбегает.

                                                                                0
                                                                                >>>А в чем проблема со счетчиками на кранах и унитазах.
                                                                                Пороблема не в деньгах. Посмотрите любой кран — у него есть гибкая или медная подводка диаметром 8-11мм. Ваш счетчик все равно будет до нее. И если порвет эту подводку, вода польется не в раковину, но будет считаться и в вашем алгоритме все будет ОК, хотя протекли. Надо счетчик прям внутрь крана встраивать или в его выпуск, а это очень сложно технически.
                                                                                >>>Время от времени (месяца3-4) там высыхает вода.
                                                                                Залейте туда 2 столовых ложки растительного масла и премешайте, что бы оно «всплыло» с обоих сторон сифона. Это исключит испарение воды из сифона. Аналогично совветую делать, когда едете в отпуск с любым сифоном.
                                                                                  0
                                                                                  за масло спасибо, не подумал.
                                                                                  а насчет счетчика. Именно поэтому датчик протечки там и нужен. Так как «последняя миля» не защищена. А так согласен — были бы встроенные то меньше возни. Зато если неконтролируемая утечка и будет то только здесь. И здесь как раз датчик.
                                                                          0
                                                                          ИМХО проблема надумана и это оверинжиниринг. Мокрых точек в квартире 2-3-4, обычно не больше. Мне кажется, раскидать по ним датчиков не должно быть проблемой.
                                                                          0
                                                                          Выбирал тупо в лоб по крутящему моменту.… Так шаровые краны на 1\2 дюйма если год не трогать — повернуть очень тяжело

                                                                          А не легче их просто запрограммировать на цикл закрытие-открытие ну, скажем, раз в неделю? Тогда и запас по крутящему моменту не понадобится. А значит — краны и подешевле будут, и габаритами поменьше.
                                                                            0
                                                                            Так и сделано — см правило Rotate valves, только крутит раз в месяц.
                                                                            0
                                                                            del
                                                                              0
                                                                              расскажите подробнее про датчик протечки? где покупали у нас? я сейчас делаю подобную систему, только на wemos плате, датчик пока стоит самый простой ардуиновский с цифровым выводом.
                                                                                0
                                                                                Датчики — http://gidrolock.ru/production/datchiki-protechki-vody-gidrolock/, у меня WSU.
                                                                                Покупал в Мск в плеер.сру или в stelmarket — точно уже не помню, цена около 600р каждый.
                                                                                Учитывай — что у этих активных датчиков выход «открытый коллектор». То есть он по срабатыванию подтянет вывод контроллера к земле и этот вывод должен быть предварительно подтянут к питанию через резистор 4,7к-10к.
                                                                                Это все есть на моей схеме, смотри картинку — выводы D6 и D7.
                                                                                  0
                                                                                  а почему вы не использовали встроенную подтяжку пинов? их нет в плате или недостаточно такой подтяжки?
                                                                                  и зачем r1 и r2?
                                                                                    0
                                                                                    Встроенная подтяжка есть в контроллер, но она довольно слабая — около 40к сопротивление подтягивающего резистора.
                                                                                    r1\2 — токоограничение сопротивлением 200-300 Ом. Когда ток маленький — падение напряжения на них минимальное, но с ростом тока — падение растет, пассивная защита портов контроллера от больших токов.
                                                                                      0
                                                                                      А согласование уровней не нужно в данном случае? Питание датчика-то 5v, а логические пины по идее 3.3 на плате
                                                                                        0
                                                                                        Это зависит от контроллера, насколько его входы чувствительны к перенапряжению.
                                                                                        Для STM32F205, который под крышкой photon — цифровые входы толерантны к 5в, а вот аналоговые нет — погорят.
                                                                                          0
                                                                                          На wemos d1 r2 как раз 10к на подтяжке пина, сделал через модуль согласования уровней — работает(датчик от 3.3в не взлетел, чуда не случилось).
                                                                                          спасибо! Существуют аналогичные промышленные датчики пламени и утечки газа(дыма)? а то в свой блок я воткнул обычный ардуиновский датчик пламени и MQ-2 датчик газа, на изменение состава в плане дыма/газа кое-как реагирует.
                                                                                          И ещё: у вас есть нотификация о том, что данные перестали поступать от системы?
                                                                                            0
                                                                                            >>Существуют аналогичные промышленные датчики пламени и утечки газа(дыма)?
                                                                                            Да, гугли по «ИЗВЕЩАТЕЛЬ ПОЖАРНЫЙ ДЫМОВОЙ ОПТИКО-ЭЛЕКТРОННЫЙ», но его надо будет курочить и искать как запитать\снимать сигнал.
                                                                                            >>>у вас есть нотификация о том, что данные перестали поступать от системы?
                                                                                            Да, каждая нода раз в 30 секунд отправляет сообщение с уровнем сигнала wifi.
                                                                                            Openhab раз в минуту проверяет, что бы между посылками не было перерыва более 2 минут, если больше — то сообщает мне имя ноды в телеграмм.
                                                                                            Код опенхаба
                                                                                            rule «Check node online» //every minutes
                                                                                            when
                                                                                            Time cron «0 0/1 * * * ?» //every min
                                                                                            then

                                                                                            var Date d_now = new Date()
                                                                                            diff = d_now.getTime() — watercount_rssi.lastUpdate().getTime()
                                                                                            if (diff > 120000 && diff < 180050)
                                                                                            {
                                                                                            sendTelegram("*****_bot", «water_count is offline»)
                                                                                            }
                                                                                            end
                                                                                0
                                                                                Прекрасная статья, спасибо!

                                                                                Все здорово, но почему корпус из PLA для потенциально влажного помещения?
                                                                                Он же имеет свойство впитывать влагу, что в свою очередь может неблагоприятно отразиться на электронике.
                                                                                Да, и не забудьте удостовериться года через 1,5-2, что корпус все еще в рабочем состоянии:
                                                                                Таблица разложения PLA
                                                                                  0
                                                                                  Угу, читал что PLA недолговечен.
                                                                                  Пробовал на ABS перейти, но без термокамеры такие большие модели ведет и они отслаиваются.
                                                                                  На пару лет точно хватит, а к тому времени надеюсь принтер перевести на coreXY кинематику и «закамерить».
                                                                                  Времени бы еще на все это :)
                                                                                    0
                                                                                    Да, согласен насчет отслоения, думаю, это происходит из-за плохого контакта с поверхностью. Но я нашел выход: печатаю без прямо на стекле на столе с подогревом, перед печатью наношу на место печати лак для волос Syoss экстрасильной фиксации (другие марки не пробовал в связи с прекрасными показателями этой). За все время еще ни разу ничего не отслоилось, только детали бывает с приличным усилием приходится отдирать от нагретого стола. Что показывает, что лак намного лучшее сцепление по сравнению со каптоновым покрытием. Плюс старое напыление после 5+ печатей отлично смывается под струей воды.

                                                                                    Как термокамера для Prusa i3 отлично подошел перевернутый квадратный журнальный столик из Ikea, обернутый упаковочной пленкой. Как вариант, можно кстати сделать стенки из стеклопластика для эстетики, но это уже, как говорится, на вкус и цвет все фломастеры разные :)

                                                                                    Успехов с умным домом!
                                                                                • НЛО прилетело и опубликовало эту надпись здесь
                                                                                    0
                                                                                    База от Ти — это очень хорошо, у них есть очень энергоэффективные решения.
                                                                                    Минус ИМХО — краны, на сайте ноль инфы, но по виду и времени открывания похожы на обычный Китай с Али, типа такого
                                                                                    https://ru.aliexpress.com/store/product/5pcs-lot-NPT-BSP-SS304-1-2-electric-control-valve-DC5V-2-wires-control-for-water/116043_879090156.html
                                                                                    Два провода, управление путем переброса полярности питания.
                                                                                    У них слабый крутящий, около 2N*m по «их» измерениям, хотя реально и того меньше. Тут простая математика — они работают 5 сек, при мощности 5в * 0,5А = 2,5Вт — итого 12,5Вт тратят.
                                                                                    Гидролок декларирует 21N*m, но открывается 30 сек и жрет при этом 0,7А * 12В = 8,4Вт. Итого за закрытие = 252Вт.
                                                                                    Допустим гидролок не врет на счет крутящего, получаем пропорцию:
                                                                                    21 к 252 как Х к 8,4
                                                                                    Х = 0,7 N*m
                                                                                    Че то не верю, что китайцы порвали все шаблоны и увеличили эффективность двигла в 3 раза :)
                                                                                    • НЛО прилетело и опубликовало эту надпись здесь
                                                                                      • НЛО прилетело и опубликовало эту надпись здесь
                                                                                          0
                                                                                          https://ru.aliexpress.com/store/product/Stainless-Steel-DN15-Electirc-Operated-Valve-DC12V-7-Wires-NPT-BSP-Female-1-2-Actuated-Valve/116043_32720370425.html — в том же магазине, те же яйца, только с концевиками.
                                                                                          Там же внутренности редуктора.
                                                                                          >>>Сам кран Bugatti.
                                                                                          По фото с сайта совсем не похож, у бугатти под приводы одна модель 200 крана и она на моих фото выше, если система уже стоит у тебя — сделай фото крана, забрось на https://habrastorage.org/ — и сюда ссылку, очень интересно посмотреть что за зверь такой.
                                                                                          >>>видел остатки карандаша после срабатывания такого крана
                                                                                          Есть такое видео — это индастриал привод с пиковым моментом в 40Н*м и то тупит https://www.youtube.com/watch?v=8a0RgXeA_Ag
                                                                                          >>>Для Вас он на картинке, а я его могу руками пощупать.
                                                                                          Есть такая штука — физика и математика — если ими пользоваться, то можно и не щупать :). Но щупать — да, всегда интересно.
                                                                                      0
                                                                                      Что будет когда электричество пропадет?
                                                                                        0
                                                                                        Нуууу, боюсь в этом случае прекратят работать межатомарные силы и нам уже будет на все пофиг.
                                                                                        Вероятность протечки в момент отключения электричества стремится к нулю(ибо является произведением вероятностей двух крайне малых вероятностей отдельных событий), с тем же успехом можно защаться от падения метеорита в отдельно взятой квартире.
                                                                                        Но если охота по-параноить — надо использовать блок питания на 12в, к нему в буферном режиме свинцовую батарею и получать 5в через DC-Dc преобразователь.

                                                                                      Только полноправные пользователи могут оставлять комментарии. Войдите, пожалуйста.

                                                                                      Самое читаемое