void hub_update() {
  if (hub.focused()) {
    hub.sendUpdate("sw_n_L", String(ONflag));
    hub.sendUpdate("AUTOOFF", String(OFFflag));
    hub.sendUpdate("IR_str",IR_str);
    hub.sendUpdate("EFFECT",String(EFFECT));
    hub.sendUpdate("sld_MAX_BRIGHT",String(MAX_BRIGHT));
    hub.sendUpdate("sld_HUE_START",String(HUE_START));
    String h_s;
    String h_m;
    h_s=String(hour);
    h_m=String(minute);
    if (hour<10) h_s="0"+h_s;
    if (minute<10) h_m="0"+h_m;
    hub.sendUpdate("time", h_s+":"+h_m);
  } 
//    Serial.println(String(dayofweek)+"  "+h_s+":"+h_m);
}

uint8_t tab = 0;
GHbutton b2;
GHbutton b3;

void build() {
    hub.Title(F("Кристальная гирлянда"));
    hub.BeginWidgets();

    hub.WidgetSize(50);
    hub.Tabs(&tab, F("Setup,Alarm"));
    String h_s;
    String h_m;
    h_s=String(hour);
    h_m=String(minute);
    if (hour<10) h_s="0"+h_s;
    if (minute<10) h_m="0"+h_m;
    hub.Label_(F("time"), h_s+":"+h_m,F("Время"));

    // Кнопки включения
    hub.WidgetSize(100);
    if (hub.Select_(F("EFFECT"), &EFFECT, F(select_effect))) {
          timer_off=millis();
    }
    hub.WidgetSize(25);
    if (hub.Switch_(F("sw_n_L"),&ONflag,F("Включить"))) {
           timer_off=millis();
    }
    if (hub.ButtonIcon(0, F("👈"))) {if (EFFECT>1) EFFECT--; else EFFECT=MAX_EFFECT; hub_update();}
    if (hub.ButtonIcon(0, F("👉"))) {if (EFFECT<MAX_EFFECT) EFFECT++; else EFFECT=1; hub_update();}
    
    hub.Switch_(F("AUTOOFF"),&OFFflag,F("Автоотключение через час"));
    
    switch (tab) {
        case 0:
            hub.WidgetSize(100);
            if (hub.Slider_(F("sld_HUE_START"), &HUE_START, GH_UINT8, F("Цвет"), 0, 255, 1)) {
              eeprom_flag=true;
            }
            hub.WidgetSize(50);
            if (hub.Slider_(F("sld_FIRE_STEP"), &FIRE_STEP, GH_UINT8, F("Шаг"), 1, 255, 1)) {
              eeprom_flag=true;
            }
            if (hub.Slider_(F("sld_FIRE_DELAY"), &FIRE_DELAY, GH_UINT8, F("Задержка"), 1, 255, 1)) {
              eeprom_flag=true;
            }
            if (hub.Slider_(F("sld_MIN_BRIGHT"), &MIN_BRIGHT, GH_UINT8, F("Мин Яркость"), 0, 255, 1)) {
              eeprom_flag=true;
            }
            if (hub.Slider_(F("sld_MAX_BRIGHT"), &MAX_BRIGHT, GH_UINT8, F("Мах Яркость"), 0, 255, 1)) {
              eeprom_flag=true;
            }
            hub.WidgetSize(100);
            hub.Label_(F("IR_str"),IR_str,"Данные с пульта",GH_DEFAULT,24);

            break;
        case 1:
            hub.WidgetSize(100);
            hub.BeginWidgets(1);
            hub.Space(1);
            FOR_i(0,col_alarms) {
              hub.BeginWidgets();
              hub.WidgetSize(25);
              if (hub.Switch_("sw_n_L"+String(i),&alarms[i].on_off,F("Включить"))) eeprom_flag=true;
              hub.WidgetSize(40);
              if (hub.Time_("alarm"+String(i),&alarms[i].alarm_time, F("Alarm"), GH_YELLOW)) {
                eeprom_flag=true;
              }
              hub.WidgetSize(35);
              if (hub.Input(&alarms[i].alarm_action, GH_INT16, F("Акция будильника"))) eeprom_flag=true;
              hub.WidgetSize(100);
              hub.Flags(&alarms[i].flags, F("Вс,П,В,С,Ч,Пт,Сб"));
              hub.BeginWidgets(1);
              hub.Space(1);
            }
            hub.WidgetSize(100);
            hub.Display(
             "0 выключить гирлянду\n10 выключить автоотключение\n11 включить автоотключение\n1000-10"+String(MAX_EFFECT)+" включить эффект\n2000-2255 установить цвет\n3000-3255 установить яркость\n",
             "Акция будильника",GH_DEFAULT, 6, 18);
            break;

    }
    hub.EndWidgets();
    
}
