#include <Wire.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <TroykaDHT.h>
#include <LiquidCrystal_I2C.h>
#include <LCDMenuLib2.h>
#include <TimeLib.h>
//#include <DS1307RTC.h>
#include <pcf8574.h>
#include <DS3232RTC.h>
#define _LCDML_DISP_cols 16
#define _LCDML_DISP_rows 2
#define ds18b20 1
#define DHT_1 3
#define LCD 0x27
//#define sensor 0x38
#define RELAY1 14
#define RELAY2 12
DS3232RTC RTC;
tmElements_t tm;
DHT dht(DHT_1, DHT21);
OneWire oneWire(ds18b20);
DallasTemperature sensor_1(&oneWire); //28052D95F0013CD5
// *************************************************************************************************
// Menu LCD
// *************************************************************************************************
#define _LCDML_DISP_cfg_cursor 0x7E
#define _LCDML_DISP_cfg_scrollbar 0
LiquidCrystal_I2C lcd(LCD,_LCDML_DISP_cols,_LCDML_DISP_rows);
const uint8_t scroll_bar[5][8] = {
{B10001, B10001, B10001, B10001, B10001, B10001, B10001, B10001}, // scrollbar top
{B11111, B11111, B10001, B10001, B10001, B10001, B10001, B10001}, // scroll state 1
{B10001, B10001, B11111, B11111, B10001, B10001, B10001, B10001}, // scroll state 2
{B10001, B10001, B10001, B10001, B11111, B11111, B10001, B10001}, // scroll state 3
{B10001, B10001, B10001, B10001, B10001, B10001, B11111, B11111} // scrollbar bottom
};
void lcdml_menu_display();
void lcdml_menu_clear();
void lcdml_menu_control();
LCDMenuLib2_menu LCDML_0 (255, 0, 0, NULL, NULL);
LCDMenuLib2 LCDML(LCDML_0, _LCDML_DISP_rows, _LCDML_DISP_cols, lcdml_menu_display, lcdml_menu_clear, lcdml_menu_control);
LCDML_add (0 , LCDML_0 , 1 , "System" , NULL);
LCDML_add (1 , LCDML_0_1 , 1 , " Time/Date" , NULL);
LCDML_add (2 , LCDML_0_1_1 , 1 , " Time" , mFunc_time_data); //func
LCDML_add (3 , LCDML_0_1_1 , 2 , " Date" , NULL); //func
LCDML_add (4 , LCDML_0_1_1 , 3 , " NTP" , NULL); //func
LCDML_add (5 , LCDML_0_1 , 2 , " Wifi" , NULL);
LCDML_add (6 , LCDML_0_1_2 , 1 , "" , NULL); //func
LCDML_add (7 , LCDML_0_1_2 , 2 , " SSID" , NULL); //func
LCDML_add (8 , LCDML_0_1_2 , 3 , " Password" , NULL); //func
LCDML_add (9 , LCDML_0 , 2 , "Shedule" , NULL);
LCDML_add (10 , LCDML_0_2 , 1 , " Relay 1" , NULL);
LCDML_add (11 , LCDML_0_2_1 , 1 , " Time 1" , mFunc_time1_Rele1); //func
LCDML_add (12 , LCDML_0_2_1 , 2 , " Time 2" , mFunc_time2_Rele1); //func
LCDML_add (13 , LCDML_0_2 , 2 , " Relay 2" , NULL);
LCDML_add (14 , LCDML_0_2_2 , 1 , " Time 1" , mFunc_time1_Rele2); //func
LCDML_add (15 , LCDML_0_2_2 , 2 , " Time 2" , mFunc_time2_Rele2); //func
LCDML_add (16 , LCDML_0_2 , 3 , " Out 1" , NULL);
LCDML_add (17 , LCDML_0_2_3 , 1 , " Time 1" , NULL); //func
LCDML_add (18 , LCDML_0_2_3 , 2 , " Time 2" , NULL); //func
LCDML_add (19 , LCDML_0 , 3 , "Service" , NULL);
LCDML_add (20 , LCDML_0_3 , 1 , " Relay 1" , mFunc_activation_Rele1); //func
LCDML_add (21 , LCDML_0_3 , 2 , " Relay 2" , mFunc_activation_Rele2); //func
LCDML_add (22 , LCDML_0_3 , 3 , " Out 1" , NULL); //func
LCDML_add (23 , LCDML_0 , 4 , "Status" , NULL);
LCDML_add (24 , LCDML_0_4 , 1 , " Wifi" , NULL);
#define _LCDML_DISP_cnt 24
LCDML_createMenu(_LCDML_DISP_cnt);