Нано, сеть 220, наличие напряжения

yden
Offline
Зарегистрирован: 30.01.2016

Здравствуйте.

Подскажите пожалуйста. Нужно ардуинкой передавать по mqtt статус наличия 220в в сети. Использую нано, 4 пин цифра, реле с катушкой 220в. При наличии 220в реле замыкается и на 4 пин ардуинки приходит +5в. Она в свою очередь шлет по mqtt статус 1. 4 пин притянул 10 кОм к земле, использую библиотеку Bounce. 

Ардуинка работает очень нестабильно. Очень часто пропускает вкл\выкл наблюдаемой 220 сети.

Вот код:

void loop()
{
//проверка состояния Кситала
  if ( bouncer3.update() )
  {
    if (bouncer3.read() == HIGH)
    {
      client.publish("ihouse/security", String(0).c_str());
    }
    else
    {
      client.publish("ihouse/security", String(1).c_str());
    }
  }
}

Может есть более рациональный способ решения этой задачи?



благодарю

sadman41
Offline
Зарегистрирован: 19.10.2016

Есть... Убрать delay() из остального кода.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

Хрена-се!

yden пишет:

client.publish("ihouse/security", String(0).c_str());

Это уже не просто гланды через анальное отверстие, а, наверное, тоже самое, но ещё и не снимая штанов и сидя на велике :)

yden
Offline
Зарегистрирован: 30.01.2016

ЕвгенийП пишет:

Хрена-се!

yden пишет:

client.publish("ihouse/security", String(0).c_str());

Это уже не просто гланды через анальное отверстие, а, наверное, тоже самое, но ещё и не снимая штанов и сидя на велике :)

покажите как лучше.

ЕвгенийП
ЕвгенийП аватар
Offline
Зарегистрирован: 25.05.2015

А чего тут показывать? Выражение String(0).c_str() (требующее запроса памяти, пробразования и освобождения памяти!!!)  эквивалентно простой строке "0" (ну, может тип придётся преобразовать, если потребуется).

yden
Offline
Зарегистрирован: 30.01.2016

ЕвгенийП пишет:

А чего тут показывать? Выражение String(0).c_str() (требующее запроса памяти, пробразования и освобождения памяти!!!)  эквивалентно простой строке "0" (ну, может тип придётся преобразовать, если потребуется).

Осталось от: 

client.publish("ihouse/svet/holl", String(flag_holl).c_str());

где flag_holl тип boolean.

b707
Offline
Зарегистрирован: 26.05.2017

yden пишет:

Осталось от: 

client.publish("ihouse/svet/holl", String(flag_holl).c_str());

где flag_holl тип boolean.

такой же идиотизм.

 

yden
Offline
Зарегистрирован: 30.01.2016

b707 пишет:

yden пишет:

Осталось от: 

client.publish("ihouse/svet/holl", String(flag_holl).c_str());

где flag_holl тип boolean.

такой же идиотизм.

 

Как не по идиотски сделать?

DIYMan
DIYMan аватар
Offline
Зарегистрирован: 23.11.2015

yden пишет:

Как не по идиотски сделать?

Вот так:

client.publish("ihouse/svet/holl",  flag_holl ? "1" : "0");

 

mykaida
mykaida аватар
Offline
Зарегистрирован: 12.07.2018

И для стабильности подавай 5В (подтягивай) при наличии наряжения в сети и замыкай на ноль при его отсутствии. Еще-бы посоветовал зашунтировать контакт реле конденсатором.