РЕКЛАМА НА ФОРУМХАУС А не проще датчик освещения прикрутить? Ибо взошедшее солнце в грозовых тучах светит так себе.
Во-во, тем более, что в "простых на 220в" сам датчик питается от 8 в через LM08 . Как бонус получаем реле на 24в, кот. можно где-нибудь использовать (а сами "фонарики-то" не от 220в питаются? Тогда смысл, тем более, что "простые на 220в" обычно для наружного применения...
Согласен, но датчика под рукой не было. А код для заката-восхода уже был. Ну это как программистам лампочку поменять )
Тем не менее, поставил вчера еще один овеновский модуль расширения - для управления отоплением дома/бассейна. Все отлично заработало. Пока только на отопление - включение котла на обогрев и насоса ОВ, отключение насоса ОВ с выбегом 5 минут. Вот за что я люблю овен - максимум функциональности при минимуме кода. В данном случае управление котлом вылилось в 4 строчки. Код: heating_pump: TOF; heating_pump(IN := _HDI_0_7.0,PT := T#5m); _HDO_0_3.0 := heating_pump.Q; _HDO_0_3.1 := _HDI_0_7.0; _HDI_0_7.0 - вход контактов комнатного термостата _HDO_0_3.0 - выход насоса ОВ _HDO_0_3.1 - вход управления котла
А зачем? этим котел занимается - в нем для того горелка с модуляцией. Мне главное котлу подать команду греть/негреть и насос ОВ включить для отбора тепла. А дальше он уж сам по температуре теплоносителя работает
По просьбе делюсь кодом астрономического таймера (в аттаче). Импортируйте в свой проект 4 файла. Для расчета времени восхода/заката объявляете переменные Код: sunrise_time: TOD; sunset_time: TOD; и вызываете собственно процедуру Код: sunrise_time := calc_sunrise_sunset(day:=dtNow.Day, month:=dtNow.Month, year:=dtNow.Year, latitude:=58.279544, longitude :=45.072916, rising:=TRUE); sunset_time := calc_sunrise_sunset(day:=dtNow.Day, month:=dtNow.Month, year:=dtNow.Year, latitude:=58.279544, longitude :=45.072916, rising:=FALSE); при вызове нужно задать ессно день, месяц, год, широту, долготу и последний параметр: если rising:=TRUE то считается время восхода, если rising:=FALSE то время заката
Сорри, забыл еще переменные добавить Код: const_PI: REAL := 3.14159265358979323846264338327950288419716939937510; (*just PI*) zenith: REAL := 90.8333; (* Sun's zenith for sunrise/sunset OFFICIAL *) localOffset : INT := 4; (* local TZ offset *) Поменяйте localOffset на свою таймзону
Запустил-таки one wire по вайфайке. 5 датчиков температуры, датчик наличия 220в и управляемое реле. И аддон для опенхаба. Со стороны 1в имеем ардуину и вайфайный модуль (раньше упоминался). К ардуине цепляем до 5 1в линий. Внешнее питание 12в нуи два преобразователя: на 5в для ардуины и на 3.3в для вайфайки. И все. В опенхабе прописываем айпишники и порты вайфваек Код: ownet:host=192.168.1.110:6161 И в айтемах собственно айтемы Код: Number t4 {ownet="370000045D33FD28:temperature"} Number t5 {ownet="0200000471DA6728:temperature"} Contact c1 {ownet="0500000081CBA412:contact.1"} Contact c2 {ownet="0500000081CBA412:contact.2"} Switch s1 {ownet="3F0000000EEE193A:switch.1"} Switch s2 {ownet="3F0000000EEE193A:switch.2"} Хостов может быть несколько, опенхабовский плагин сам определяет, какое 1в устройство на каком хосте сидит, устройства можно в любой момент переносить с одного хоста на другой ну и наслаждаемся событиями на шине опенхаба Код: 14:43:46.289 INFO runtime.busevents[:26] - s2 state updated to ON 14:43:47.989 INFO runtime.busevents[:26] - t5 state updated to 36.4375 14:43:48.140 INFO runtime.busevents[:26] - s1 state updated to ON 14:43:48.540 INFO runtime.busevents[:26] - c1 state updated to CLOSED 14:43:50.240 INFO runtime.busevents[:26] - t3 state updated to 127.9375 14:43:51.941 INFO runtime.busevents[:26] - t4 state updated to 52.125 14:43:52.337 INFO runtime.busevents[:26] - c2 state updated to OPEN 14:43:54.037 INFO runtime.busevents[:26] - t2 state updated to 127.9375 14:43:55.738 INFO runtime.busevents[:26] - t1 state updated to 127.9375
Уважаемый vores8, нужна Ваша помощь. Итак есть выходы контроллера, к ним прикручены лампочки. Пусть в Codesys это будут DO1 - DO14. Как передать их состояние в OpenHAB по модбасу? Первое, что приходит в голову - запаковать в кодесисе, из 14-ти выходов сделать 2 байта, присвоить их holding-регистру, и прочитать (к стати, как из 2-х однобайтовых переменных сделать одну двухбайтовую?). А вот как распаковать их в опенхабе - непонятно...
Как послать в опенхаб вроде как разобрался. Берем лампочки, группируем по 8 шт, пакуем в промежуточный байт, потом BYTE_TO_WORD - и этот ворд за раз передает состояние 8-ми лампочек... Осталось понять, есть и в опенхабе функция для лентяев, где бы 192 можно было бы разложить на массив из нулей и единичек [0,0,0,0,0,0,0,0,1,1,0,0,0,0,0,0]...
Зачем так сложно? Модбас отлично работает с регистрами флагов (Coil Registers). А эти регистры цепляются, например, к переключателям (Switch) в Items у опенхаб.