Как реализовать 3 состояния для одного выключателя?
Модератор: immortal
-
- Сообщения: 315
- Зарегистрирован: Вс май 20, 2018 9:27 am
- Благодарил (а): 160 раз
- Поблагодарили: 29 раз
Как реализовать 3 состояния для одного выключателя?
Подскажите как реализовать как на картинке я про Вкл. Выкл. Авто?
Может где код или инструкция есть?
Может где код или инструкция есть?
- Вложения
-
- Вопрос.png (58.68 КБ) 6072 просмотра
- adzam
- Сообщения: 602
- Зарегистрирован: Сб дек 08, 2012 10:28 pm
- Откуда: Кишинев
- Благодарил (а): 20 раз
- Поблагодарили: 138 раз
Re: Как реализовать 3 состояния для одного выключателя?
нужно выбрать не выключатель а радио
а дальше кодом примерно так
СпойлерПоказать
//включить Алису
$stm=gg("Mainsity.Alise");
$msn=gg("Mainsity.Say_news");
if ($stm=='откл'){
say('Я отключаюсь.',"1");
SQLExec("DELETE FROM safe_execs WHERE COMMAND LIKE '%sapi%' OR COMMAND LIKE'%play%'");//очищает очередь команд
getURL('http://127.0.0.1/rc/?command=vlc_close',"0");
// setGlobal("RadioSetting.On","0");
setGlobal("ThisComputer.minMsgLevel","10");
setGlobal("Mainsity.Alise_Led","0");
setGlobal('Mainsity.Say_time_led',"0");
setGlobal('Mainsity.Say_news_led',"0");
setGlobal('Mainsity.Say_weather_led',"0");
setGlobal('Mainsity.Say_news_led',"0");
} elseif ($stm=='авто'){
setGlobal("ThisComputer.minMsgLevel","5");
setGlobal("Mainsity.Alise_Led","1");
say('Включен автоматический режим сообщений.',"1");
callMethod("Mainsity.Alisa_auto");
if (gg("Mainsity.Say_time")!="откл"){
setGlobal('Mainsity.Say_time_led',"1");
}
if (($msn!="откл")||($msn!="свежие новости")){
setGlobal('Mainsity.Say_news_led',"1");
}
if (gg("Mainsity.Say_weather")!="откл"){
setGlobal('Mainsity.Say_weather_led',"1");
}
if (gg("Mainsity.Say_news")!="откл"){
setGlobal('Mainsity.Say_news_led',"1");
}
} elseif ($stm=='вкл'){
setGlobal("ThisComputer.minMsgLevel","0");
setGlobal("Mainsity.Alise_Led","2");
say('Я опять с Вами.',"1");
if (gg("Mainsity.Say_time")!="откл"){
setGlobal('Mainsity.Say_time_led',"1");
}
if (gg("Mainsity.Say_news")!="откл"){
setGlobal('Mainsity.Say_news_led',"1");
}
if (gg("Mainsity.Say_weather")!="откл"){
setGlobal('Mainsity.Say_weather_led',"1");
}
if (($msn!="откл")||($msn!="свежие новости")){
setGlobal('Mainsity.Say_news_led',"1");
}
}
$stm=gg("Mainsity.Alise");
$msn=gg("Mainsity.Say_news");
if ($stm=='откл'){
say('Я отключаюсь.',"1");
SQLExec("DELETE FROM safe_execs WHERE COMMAND LIKE '%sapi%' OR COMMAND LIKE'%play%'");//очищает очередь команд
getURL('http://127.0.0.1/rc/?command=vlc_close',"0");
// setGlobal("RadioSetting.On","0");
setGlobal("ThisComputer.minMsgLevel","10");
setGlobal("Mainsity.Alise_Led","0");
setGlobal('Mainsity.Say_time_led',"0");
setGlobal('Mainsity.Say_news_led',"0");
setGlobal('Mainsity.Say_weather_led',"0");
setGlobal('Mainsity.Say_news_led',"0");
} elseif ($stm=='авто'){
setGlobal("ThisComputer.minMsgLevel","5");
setGlobal("Mainsity.Alise_Led","1");
say('Включен автоматический режим сообщений.',"1");
callMethod("Mainsity.Alisa_auto");
if (gg("Mainsity.Say_time")!="откл"){
setGlobal('Mainsity.Say_time_led',"1");
}
if (($msn!="откл")||($msn!="свежие новости")){
setGlobal('Mainsity.Say_news_led',"1");
}
if (gg("Mainsity.Say_weather")!="откл"){
setGlobal('Mainsity.Say_weather_led',"1");
}
if (gg("Mainsity.Say_news")!="откл"){
setGlobal('Mainsity.Say_news_led',"1");
}
} elseif ($stm=='вкл'){
setGlobal("ThisComputer.minMsgLevel","0");
setGlobal("Mainsity.Alise_Led","2");
say('Я опять с Вами.',"1");
if (gg("Mainsity.Say_time")!="откл"){
setGlobal('Mainsity.Say_time_led',"1");
}
if (gg("Mainsity.Say_news")!="откл"){
setGlobal('Mainsity.Say_news_led',"1");
}
if (gg("Mainsity.Say_weather")!="откл"){
setGlobal('Mainsity.Say_weather_led',"1");
}
if (($msn!="откл")||($msn!="свежие новости")){
setGlobal('Mainsity.Say_news_led',"1");
}
}
- Рейтинг: 1.16%
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
-
- Сообщения: 315
- Зарегистрирован: Вс май 20, 2018 9:27 am
- Благодарил (а): 160 раз
- Поблагодарили: 29 раз
Re: Как реализовать 3 состояния для одного выключателя?
Я "привязался" к солнцу и включаю и выключаю свет во дворе в зависимости от того во сколько оно встало/село. И все прекрасно работает в автоматическом режиме! НО, хочу так же в ручном режиме иметь возможность отключение/включение света во дворе.adzam писал(а): ↑Пт фев 08, 2019 7:34 am...
а дальше кодом примерно такСпойлерПоказать//включить Алису
$stm=gg("Mainsity.Alise");
$msn=gg("Mainsity.Say_news");
if ($stm=='откл'){
say('Я отключаюсь.',"1");
SQLExec("DELETE FROM safe_execs WHERE COMMAND LIKE '%sapi%' OR COMMAND LIKE'%play%'");//очищает очередь команд
getURL('http://127.0.0.1/rc/?command=vlc_close',"0");
// setGlobal("RadioSetting.On","0");
setGlobal("ThisComputer.minMsgLevel","10");
setGlobal("Mainsity.Alise_Led","0");
setGlobal('Mainsity.Say_time_led',"0");
setGlobal('Mainsity.Say_news_led',"0");
setGlobal('Mainsity.Say_weather_led',"0");
setGlobal('Mainsity.Say_news_led',"0");
} elseif ($stm=='авто'){
setGlobal("ThisComputer.minMsgLevel","5");
setGlobal("Mainsity.Alise_Led","1");
say('Включен автоматический режим сообщений.',"1");
callMethod("Mainsity.Alisa_auto");
if (gg("Mainsity.Say_time")!="откл"){
setGlobal('Mainsity.Say_time_led',"1");
}
if (($msn!="откл")||($msn!="свежие новости")){
setGlobal('Mainsity.Say_news_led',"1");
}
if (gg("Mainsity.Say_weather")!="откл"){
setGlobal('Mainsity.Say_weather_led',"1");
}
if (gg("Mainsity.Say_news")!="откл"){
setGlobal('Mainsity.Say_news_led',"1");
}
} elseif ($stm=='вкл'){
setGlobal("ThisComputer.minMsgLevel","0");
setGlobal("Mainsity.Alise_Led","2");
say('Я опять с Вами.',"1");
if (gg("Mainsity.Say_time")!="откл"){
setGlobal('Mainsity.Say_time_led',"1");
}
if (gg("Mainsity.Say_news")!="откл"){
setGlobal('Mainsity.Say_news_led',"1");
}
if (gg("Mainsity.Say_weather")!="откл"){
setGlobal('Mainsity.Say_weather_led',"1");
}
if (($msn!="откл")||($msn!="свежие новости")){
setGlobal('Mainsity.Say_news_led',"1");
}
}
Я попробовал сделать код на подобие вашего но, в результате у меня ни чего не работает!
Не работает т.к. раньше свойство "Switch2.status" имело значение либо "1" или "0" а сейчас стало "Вклю.","Откл." и "Авто". Для ручного режима я создал новое свойство "Switch2.status_On_Off" которое имеет значение либо "1" или "0". Но, что то я делаю не правильно!
Код: Выделить всё
//Свет во дворе
$stm=gg("Switch2.status");
if ($stm=='откл'){
say('Свет во дворе отключен в ручном режиме!',"2");
setGlobal('Switch2.status_On_Off',"0");
} elseif ($stm=='авто'){
say('Свет во дворе в автоматическом режиме!.',"2");
setGlobal('Switch2.status_On_Off',"Авто");
if (timeIs(getGlobal('ThisComputer.Chicivil_beginTime'))) {
// Начало утренних сумерек Через 20 минут выклется свет во дворе!
SetTimeOut("lightOnTimer1","setGlobal('ThisComputer.svet_vo_dvore',0);",1200); // Устанавливает свойство ThisComputer.svet_vo_dvore с задержкой в 20 минут
setTimeOut('myTimer2','runScript("Test_svet_vo_dvore");',1210); //скрипт включает/выключает уличное освещение в зависимости от свойства ThisComputer.svet_vo_dvore
}
if (timeIs(getGlobal('SunSetTime'))) {
//Солнце заходит, начало сумерек. Через 20 минут вклется свет во дворе!
SetTimeOut("lightOnTimer2","setGlobal('ThisComputer.svet_vo_dvore',1);",1200); // Устанавливает свойство ThisComputer.svet_vo_dvore с задержкой в 20 минут
setTimeOut('myTimer4','runScript("Test_svet_vo_dvore");',1210); //скрипт включает/выключает уличное освещение в зависимости от свойства ThisComputer.svet_vo_dvore
}
} elseif ($stm=='вкл'){
say('Свет во дворе включен в ручном режиме!',"1");
setGlobal('Switch2.status_On_Off',"1");
}
- adzam
- Сообщения: 602
- Зарегистрирован: Сб дек 08, 2012 10:28 pm
- Откуда: Кишинев
- Благодарил (а): 20 раз
- Поблагодарили: 138 раз
Re: Как реализовать 3 состояния для одного выключателя?
У меня это сделано так и нормально работает
По времени задаешь время, по закату берет из погоды рассвет и закат, либо в ручном режиме принудительно включаешь.
- Рейтинг: 1.16%
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
-
- Сообщения: 315
- Зарегистрирован: Вс май 20, 2018 9:27 am
- Благодарил (а): 160 раз
- Поблагодарили: 29 раз
Re: Как реализовать 3 состояния для одного выключателя?
Спасибо за идею!
Но, я не понимаю почему у меня не работает этот простой скрипт!?!?!
Код: Выделить всё
//Свет во дворе
$stm=gg("Switch2.status");
if ($stm=='откл'){
say('Свет во дворе отключен в ручном режиме!',"2");
} elseif ($stm=='авто'){
say('Свет во дворе в автоматическом режиме!.',"2");
} elseif ($stm=='вкл'){
say('Свет во дворе включен в ручном режиме!',"2");
}
- adzam
- Сообщения: 602
- Зарегистрирован: Сб дек 08, 2012 10:28 pm
- Откуда: Кишинев
- Благодарил (а): 20 раз
- Поблагодарили: 138 раз
Re: Как реализовать 3 состояния для одного выключателя?
Проверить очень просто.
Добавляешь в скрипт esho и проверяешь построчно как отрабатывает скрипт
//Свет во дворе
$stm=gg("Switch2.status");
echo "<br>";echo "<br>";echo "<br>";echo "<br>";echo $stm;echo "<br>";//проверяешь если загрузилась переменная
if ($stm=='откл'){
say('Свет во дворе отключен в ручном режиме!',"2");
echo "откл";echo "<br>"; //если прошла команда то пишет откл
} elseif ($stm=='авто'){
say('Свет во дворе в автоматическом режиме!.',"2");
echo "авто";echo "<br>"; //если прошла команда то пишет авто
} elseif ($stm=='вкл'){
say('Свет во дворе включен в ручном режиме!',"2");
echo "вкл";echo "<br>"; //если прошла команда то пишет вкл
}
И сразу видишь где косяк.
Иногда не работает потому что в данных переключателя появляется пробел или до вкл или после вкл его не видно а скрипт не работает поэтому проверь .
Если что то могу прислать мои рабочие скрипты а там переделаешь под себя если что не так.
Добавляешь в скрипт esho и проверяешь построчно как отрабатывает скрипт
//Свет во дворе
$stm=gg("Switch2.status");
echo "<br>";echo "<br>";echo "<br>";echo "<br>";echo $stm;echo "<br>";//проверяешь если загрузилась переменная
if ($stm=='откл'){
say('Свет во дворе отключен в ручном режиме!',"2");
echo "откл";echo "<br>"; //если прошла команда то пишет откл
} elseif ($stm=='авто'){
say('Свет во дворе в автоматическом режиме!.',"2");
echo "авто";echo "<br>"; //если прошла команда то пишет авто
} elseif ($stm=='вкл'){
say('Свет во дворе включен в ручном режиме!',"2");
echo "вкл";echo "<br>"; //если прошла команда то пишет вкл
}
И сразу видишь где косяк.
Иногда не работает потому что в данных переключателя появляется пробел или до вкл или после вкл его не видно а скрипт не работает поэтому проверь .
Если что то могу прислать мои рабочие скрипты а там переделаешь под себя если что не так.
- Рейтинг: 1.16%
Мои проекты здесь...https://connect.smartliving.ru/profile/41/blog213.htm
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
Если вам помогло какое-либо мое сообщение - не ленитесь пользоваться кнопкой СПАСИБО.
- vitosmaxim80sad145
- Сообщения: 148
- Зарегистрирован: Сб июл 07, 2018 12:48 am
- Откуда: Днепр
- Благодарил (а): 100 раз
- Поблагодарили: 1 раз
Re: Как реализовать 3 состояния для одного выключателя?
А неподскажеш как сделать 3кнопки проговаривания нахождения пользователей в какой они локации говорить -неговорить и говорить только днём
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: Как реализовать 3 состояния для одного выключателя?
У вас к этим строкам все привязано? Как вы настроили свое меню по настройке ночного времени? Покажите настойки на скриншотах как вы настроили меню управления для ночного режима.
СпойлерПоказать
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB
- vitosmaxim80sad145
- Сообщения: 148
- Зарегистрирован: Сб июл 07, 2018 12:48 am
- Откуда: Днепр
- Благодарил (а): 100 раз
- Поблагодарили: 1 раз
- Divan
- Сообщения: 859
- Зарегистрирован: Пн июл 08, 2019 5:04 pm
- Благодарил (а): 117 раз
- Поблагодарили: 280 раз
Re: Как реализовать 3 состояния для одного выключателя?
Я смотрю, что участник форума adzam тут уже не сидит, его страница в connect удалена, а жаль. Как сделать менюшку по закату и рассвету мне понятно, но как он, это сделал в HTML, было бы интересно знать.
Xpenology DSM 6.2.2 + Ubuntu Server 18.10 + Majordomo + MariaDB