Kentavr16, Ещё более опытный увидит отсутствие закрывающей скобки во втором if и поймёт, что код нерабочий. if(!on &&(hour > 23 || hour < 7)){ if(!on &&(hour > 23 || hour < 7) {
Можно поискать приоритет операций и понять что за чем.
Можно написать тест и увидеть как работает.
А можно просто добавить несколько скобок и выставить нужную логику.