Примеры для маленьких

Использование системы в различных ситуациях, вопросы программирования сценариев.

Модератор:immortal

sashmen
Сообщения:27
Зарегистрирован:Ср ноя 05, 2014 11:21 pm
Благодарил (а): 19 раз
Поблагодарили: 3 раза
Re: Примеры для маленьких

Сообщение sashmen » Вт дек 23, 2014 7:52 pm

Доброе время суток.

Как взять переменную со временем?
Сервер на raspberry pi Noolite SRF-10-1000, PT111, PU-411, mtrf-64-usb
Connect
zelevova
Сообщения:291
Зарегистрирован:Вт ноя 18, 2014 11:43 pm
Откуда:Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

Re: Примеры для маленьких

Сообщение zelevova » Ср дек 24, 2014 11:06 am

sashmen писал(а):Хочу чтобы свет в 8-30 вкл., а 20-00 выкл. нужно для аквариума.
Что-бы время можно было в живую корректировать при необходимости.
Расскажите как это правильно и красиво организовать, думаю многим новичкам будет интересно.
И можно по подробней про код что для чего и зачем. Заранее премного благодарен.
решениеПоказать
0) Добавление свойств для хранения времени:
В объекте ThisComputer добавляем свойства fishLightOn и fishLightOn
1) Для выставления времени в интерфейсе:
Создаешь в меню управления два элемента типа как на рисунке:
Изображение
в первом элементе свойство выбираешь fishLightOn , во втором fishLightOff.

2) Механизм управления светом по расписанию:
В объекте ClockChime в метод onNewMinute добавляешь код:

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

if (timeIs(getGlobal('fishLightOn'))) {
  //Включаем свет в аквариуме
  // !!! Здесь должна быть команда включающая свет !!!
 }
 if (timeIs(getGlobal('fishLightOff'))) {
  //Выключаем свет в аквариуме
  // !!! Здесь должна быть команда выключающая свет !!!
 }
Все!
Свет включится и выключится в заданное время. само время вкл и выкл можно будет поменять в интерфейсе.
За это сообщение автора zelevova поблагодарил:
sashmen (Ср дек 24, 2014 11:38 pm)
Рейтинг: 1.16%
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
sashmen
Сообщения:27
Зарегистрирован:Ср ноя 05, 2014 11:21 pm
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Примеры для маленьких

Сообщение sashmen » Сб дек 27, 2014 9:41 am

Спасибо по вашему примеру все получилось.
Если создаю в объекте ThisComputer добавляем свойства fishLightOn и fishLightOn все работает.
Если создаю свой объект допустим Fish со свойствами fishLightOn и fishLightOn не работает куда копать?

И еще немного глупых вопросов:
Почему сюда не подтягивается Pin ? хочу переменную запихнуть
в метод onNewMinuteПоказать
if (timeIs(getGlobal('fishLightOff'))) {
//Выключаем свет в аквариуме
// !!! Здесь должна быть команда выключающая свет !!!
getURL("http://192.168.0.106:8082/cgi-bin/maste ... in').";",0);
}
Сервер на raspberry pi Noolite SRF-10-1000, PT111, PU-411, mtrf-64-usb
Connect
zelevova
Сообщения:291
Зарегистрирован:Вт ноя 18, 2014 11:43 pm
Откуда:Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

Re: Примеры для маленьких

Сообщение zelevova » Сб дек 27, 2014 11:17 am

sashmen писал(а):Если создаю свой объект допустим Fish со свойствами fishLightOn и fishLightOn не работает куда копать?

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

if (timeIs(getGlobal('Fish.fishLightOff')))
sashmen писал(а):Почему сюда не подтягивается Pin ? хочу переменную запихнуть

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

$this->getProperty('Pin')
так можно получить значение свойства в методе самого объекта. вне объекта для получения свойства используется:

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

getGlobal('Объект.Свойство')
За это сообщение автора zelevova поблагодарил:
sashmen (Сб дек 27, 2014 4:49 pm)
Рейтинг: 1.16%
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
sashmen
Сообщения:27
Зарегистрирован:Ср ноя 05, 2014 11:21 pm
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Примеры для маленьких

Сообщение sashmen » Сб дек 27, 2014 5:19 pm

Спасибо огромное немного стало понятнее.
А возможно сделать как в этом примере? http://smartliving.ru/forum/viewtopic.p ... lit=Relays
Но только с привязкой ко времени onNewMinute.
Лампочек много нужно чтобы врубались в разное время, а в onNewMinute по каждой лампочке код писать как-то громоздко получается.
Сервер на raspberry pi Noolite SRF-10-1000, PT111, PU-411, mtrf-64-usb
Connect
zelevova
Сообщения:291
Зарегистрирован:Вт ноя 18, 2014 11:43 pm
Откуда:Краснодарский край
Благодарил (а): 32 раза
Поблагодарили: 68 раз

Re: Примеры для маленьких

Сообщение zelevova » Сб дек 27, 2014 6:23 pm

не совсем понял что именно хочется получить.
Могу предложить вот такое:

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

// Выбираем все объекты класса AutoLights
$objects = getObjectsByClass('AutoLights');
// Перебираем все объекты класса AutoLights
foreach ($objects as $obj) {
        // Если пора включать
    if(timeIs(getGlobal($obj['TITLE'].'.timeOn'))) {
        callMethod($obj['TITLE'].'.turnOn'); // Включаем
        }
        // Если пора выключать
    if(timeIs(getGlobal($obj['TITLE'].'.timeOff'))) {
        callMethod($obj['TITLE'].'.turnOff'); // Выключаем
        }
} 
За это сообщение автора zelevova поблагодарили (всего 3):
Amarok (Вс дек 28, 2014 9:24 am) • sashmen (Вт дек 30, 2014 9:19 pm) • shemnik69 (Вт янв 13, 2015 4:45 pm)
Рейтинг: 3.49%
Majordomo (GitHub) на cubietruck + MegaD + 1-wire
CONNECT: http://connect.smartliving.ru/profile/311
sashmen
Сообщения:27
Зарегистрирован:Ср ноя 05, 2014 11:21 pm
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Примеры для маленьких

Сообщение sashmen » Вт дек 30, 2014 9:07 pm

Спасибо то-что нужно вы меня правильно поняли.
Сервер на raspberry pi Noolite SRF-10-1000, PT111, PU-411, mtrf-64-usb
Connect
sashmen
Сообщения:27
Зарегистрирован:Ср ноя 05, 2014 11:21 pm
Благодарил (а): 19 раз
Поблагодарили: 3 раза

Re: Примеры для маленьких

Сообщение sashmen » Чт мар 19, 2015 9:53 pm

Доброе время суток.
Возникла идея ещё лампочки по дням недели включать.
Допустим в понедельник включать с 8-30 до 20-00 во вторник не включать.
Или шесть дней работают с 8-30 до 20-00 один день не работают.
Гуру помогите реализовать ;)
Сервер на raspberry pi Noolite SRF-10-1000, PT111, PU-411, mtrf-64-usb
Connect
Аватара пользователя
Amarok
Сообщения:1427
Зарегистрирован:Пт дек 14, 2012 12:24 pm
Откуда:Россия, Нижняя Тура
Благодарил (а): 460 раз
Поблагодарили: 126 раз
Контактная информация:

Re: Примеры для маленьких

Сообщение Amarok » Пт мар 20, 2015 8:59 am

sashmen писал(а):Возникла идея ещё лампочки по дням недели включать. Допустим в понедельник включать с 8-30 до 20-00 во вторник не включать.
Узнать текущий день поможет этот сценарий.
За это сообщение автора Amarok поблагодарил:
sashmen (Пт мар 20, 2015 7:30 pm)
Рейтинг: 1.16%
Моя Алиска живёт на Proxmox в Debian 12
vasyaka666
Сообщения:23
Зарегистрирован:Вт фев 23, 2016 11:05 am
Благодарил (а): 0
Поблагодарили: 0

Re: Примеры для маленьких

Сообщение vasyaka666 » Вт мар 29, 2016 6:16 am

Подскажите, а возможно как то изменить этот код так, чтобы можно было сделать несколько выключателей в мажоре, чтобы при нажатии на них подавалось питание на ардуине на разные пины? или с подключением по УСБ можно реализовать это только с одним пином?
СпойлерПоказать
вот код для Arduino
если послать 1, то светодиод на 13 пине включится, если 0 - выключится.
Код:
byte inByte = 0;

void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
}

void loop() {
if (Serial.available() > 0)
{
inByte = Serial.read();
switch (inByte)
{
case 1:
digitalWrite(13, HIGH);
break;
case 0:
digitalWrite(13, LOW);
break;
}
}
}

или так
Код:
byte inByte = 0;

void setup() {
Serial.begin(9600);
pinMode(13, OUTPUT);
digitalWrite(13, LOW);
}

void loop()
{
if (Serial.available() > 0)
{
inByte = Serial.read();
if (inByte == 1)
digitalWrite(13, HIGH);
else if (inByte == 0)
digitalWrite(13, LOW);
}
}

код для переключателя
Код:

if ($params['VALUE']) {
exec("mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off");
$fp =fopen("COM1", "w");
fwrite($fp, chr(1));
fclose($fp);
say("Светодиод включен",5);
} else {
exec("mode com1: BAUD=9600 PARITY=N data=8 stop=1 xon=off");
$fp =fopen("COM1", "w");
fwrite($fp, chr(0));
fclose($fp); ;
say("Светодиод выключен",5);
}


вот самый простой способ
Ответить