var mode_hm, boost, return_mode_hm, mode_hmip, return_mode_hmip, value, door_state, door_return, last_request, last_received_request, last_message_id, telegram_lampen;

// Beschreibe diese Funktion …
function menue() {
    sendTo('telegram.0', {
        chatId: getState("telegram.0.communicate.requestChatId").val,
        text: "Aktion wählen",
        reply_markup: {
            inline_keyboard: [
                [{ text: 'Licht', callback_data: 'menu_licht' }],
                [{ text: 'Strom', callback_data: 'menu_strom' }],
                [{ text: 'Heizung', callback_data: 'menu_heizung' }],
                [{ text: 'Status', callback_data: 'menu_status' }]
            ],
            resize_keyboard:   true,
            one_time_keyboard: false
        }
    });
}

// Beschreibe diese Funktion …
function licht() {
    sendTo('telegram.0', {
        chatId: getState("telegram.0.communicate.requestChatId").val,
        text: "Raum wählen",
        reply_markup: {
            inline_keyboard: [
                [{ text: 'Alle an', callback_data: 'menu_licht_allean' },{ text: 'Alle aus', callback_data: 'menu_licht_alleaus' }],
                [{ text: 'Schlafen', callback_data: 'menu_licht_schlafen' },{ text: 'Ventilator', callback_data: 'menu_licht_ventilator' },{ text: 'Aurora', callback_data: 'menu_licht_aurora' }],
                [{ text: 'Wohnzimmer an', callback_data: 'menu_licht_wohnzimmeran' },{ text: 'Wonzimmer aus', callback_data: 'menu_licht_wohnzimmeraus' }],
                [{ text: 'Schlafzimmer an', callback_data: 'menu_licht_schlafzimmeran' },{ text: 'Schlafzimmer aus', callback_data: 'menu_licht_schlafzimmeraus' }],
                [{ text: 'Schlafzimmer aus', callback_data: 'menu_licht' }],
                [{ text: 'Ãœbersicht', callback_data: 'menu' }]
            ],
            resize_keyboard:   true,
            one_time_keyboard: false
        }
    });
}

// Beschreibe diese Funktion …
function strom() {
    sendTo('telegram.0', {
        chatId: getState("telegram.0.communicate.requestChatId").val,
        text: "Aktion wählen",
        reply_markup: {
            inline_keyboard: [
                [{ text: 'TV an', callback_data: 'menu_strom_tvan' },{ text: 'TV aus', callback_data: 'menu_strom_tvaus' }],
                [{ text: 'PC an', callback_data: 'menu_strom_pcan' },{ text: 'PC aus', callback_data: 'menu_strom_pcaus' }],
                [{ text: 'Ãœbersicht', callback_data: 'menu' }]
            ],
            resize_keyboard:   true,
            one_time_keyboard: false
        }
    });
    editmessagetext();
}

// Beschreibe diese Funktion …
function mode_hm2(mode_hm, boost, return_mode_hm) {
  if (mode_hm == 0) {
    return_mode_hm = 'Auto';
  } else if (mode_hm == 1) {
    return_mode_hm = 'Manu';
  } else if (mode_hm == 3) {
    return_mode_hm = 'Boost';
  }
  console.log(return_mode_hm);
  return return_mode_hm;
}

// Beschreibe diese Funktion …
function mode_hmip2(mode_hmip, boost, return_mode_hmip) {
  if (mode_hmip == 0 && boost == false) {
    return_mode_hmip = 'Auto';
  } else if (mode_hmip == 1) {
    return_mode_hmip = 'Manu';
  } else if (boost == true) {
    return_mode_hmip = 'Boost';
  }
  console.log(return_mode_hmip);
  return return_mode_hmip;
}

// Beschreibe diese Funktion …
function logictotext(value) {
      if (value == true) {
        status2 = '*An*';
      } else {
        status2 = 'Aus';
      }
      return status2;
}

// Beschreibe diese Funktion …
function doorstotext(door_state, door_return) {
  if (door_state == true) {
    door_return = '*Geöffnet!*';
  } else {
    door_return = 'Geschlossen';
  }
  return door_return;
}

// Beschreibe diese Funktion …
function editmessagetext() {
    if (last_received_request === "menu") {
        sendTo('telegram', {
            user: getState("telegram.0.communicate.botSendChatId").val,
            text: 'New text before buttons',
            editMessageReplyMarkup: {
                options: {
                    chat_id: getState("telegram.0.communicate.botSendChatId").val,
                    message_id: getState("telegram.0.communicate.botSendMessageId").val,
                    reply_markup: {
                        inline_keyboard: [
                            [{ text: 'Button 1', callback_data: '2_1' }],
                            [{ text: 'Button 2', callback_data: '2_2' }]
                        ],
                    }
                }
            }
        });
    }
}


on({id: 'telegram.0.communicate.request', change: "any"}, function (obj) {
  var value = obj.state.val;
  var oldValue = obj.oldState.val;
  last_request = last_received_request;
  last_received_request = getState("telegram.0.communicate.request").val;
  last_received_request = last_received_request.slice(((last_received_request.indexOf(']') + 1) - 1), last_received_request.length);
  last_received_request = last_received_request.slice(1, last_received_request.length);
  last_received_request = last_received_request.toLowerCase();
  last_message_id = getState("telegram.0.communicate.botSendMessageId").val;
  console.log(('last_request: ' + String(last_request)));
  console.log(('last_received_request: ' + String(last_received_request)));
  if (last_received_request == '/menu' || last_received_request == 'menu' || last_received_request == 'übersicht' || last_received_request == 'uebersicht') {
    menue();
  }
  if (last_received_request == 'menu_licht') {
    licht();
    editmessagetext();
  }
  if (last_received_request == 'menu_strom') {
    strom();
  }
  // Licht_Alle
  if (last_received_request == 'alle an') {
    setState("hue.0.Philips_hue.All.on"/*Philips_hue.All.on*/, true);
  } else if (last_received_request == 'alle aus') {
    setState("hue.0.Philips_hue.All.on"/*Philips_hue.All.on*/, false);
  }
  // Licht_Schlafen
  if (last_received_request == 'schlafen') {
    setStateDelayed("hue.0.Philips_hue.All.on"/*Philips_hue.All.on*/, false, 60000, false);
  }
  // Licht_Ventilator
  if (last_received_request == 'ventilator') {
    if (compareTime('04:00', '04:30', "not between", null)) {
      setState("hm-rpc.0.OEQ0622786.1.STATE"/*HM-LC-Sw1PBU-FM OEQ0622786:1.STATE*/, true);
      setStateDelayed("hm-rpc.0.OEQ0622786.1.STATE"/*HM-LC-Sw1PBU-FM OEQ0622786:1.STATE*/, false, 1800000, true);
    }
  }
  // Licht_Aurora
  if (last_received_request == 'aurora') {
  }
  // Licht_Wohnzimmer
  if (last_received_request == 'wohnzimmer an') {
    setState("hue.0.Philips_hue.Wohnzimmer.allOn"/*Philips hue.Wohnzimmer.allOn*/, true);
  } else if (last_received_request == 'wohnzimmer aus') {
    setState("hue.0.Philips_hue.Wohnzimmer.allOn"/*Philips hue.Wohnzimmer.allOn*/, false);
  }
  // Licht_Schlafzimmer
  if (last_received_request == 'schlafzimmer an') {
    setState("hue.0.Philips_hue.Schlafzimmer.allOn"/*Philips hue.Schlafzimmer.allOn*/, true);
    setState("hue.0.Philips_hue.Büro.allOn"/*Philips hue.Büro.allOn*/, true);
  } else if (last_received_request == 'schlafzimmer aus') {
    setState("hue.0.Philips_hue.Schlafzimmer.allOn"/*Philips hue.Schlafzimmer.allOn*/, false);
    setState("hue.0.Philips_hue.Büro.allOn"/*Philips hue.Büro.allOn*/, false);
  }
  // Strom_TV
  if (last_received_request == 'tv an') {
    setState("sonoff.0.Fernseher.POWER"/*Fernseher POWER*/, true);
  } else if (last_received_request == 'tv aus') {
    setState("sonoff.0.Fernseher.POWER"/*Fernseher POWER*/, false);
  }
  // Strom_PC
  if (last_received_request == 'pc an') {
    setState("hm-rpc.1.0001D3C99C4FFB.3.STATE"/*HMIP-PSM 0001D3C99C4FFB:3.STATE*/, true);
  } else if (last_received_request == 'pc aus') {
    setState("hm-rpc.1.0001D3C99C4FFB.3.STATE"/*HMIP-PSM 0001D3C99C4FFB:3.STATE*/, false);
  }
  // Status
  if (last_received_request == 'status') {
    console.log(getState("telegram.0.communicate.requestChatId").val);
    if (getState("hue.0.Philips_hue.All.anyOn").val == true) {
      telegram_lampen = ['*Lampen*' + '\n',['Wohnzimmer: ',logictotext(getState("hue.0.Philips_hue.Deckenlampe_WoZi.on").val),'\n'].join(''),['TV: ',logictotext(getState("hue.0.Philips_hue.Fernseher_Links.on").val),', ',logictotext(getState("hue.0.Philips_hue.Hue_lightstrip.on").val),'\n'].join(''),['Stehlampen: ',logictotext(getState("hue.0.Philips_hue.Stehlampe_oben.on").val),', ',logictotext(getState("hue.0.Philips_hue.Stehlampe_unten.on").val),'\n'].join(''),['Schlafzimmer: ',logictotext(getState("hue.0.Philips_hue.Deckenlampe_Schlafzimmer.on").val),'\n'].join(''),['Büro: ',logictotext(getState("hue.0.Philips_hue.Büro.anyOn").val),'\n'].join(''),['Bettlicht: ',logictotext(getState("hue.0.Philips_hue.Bett.on").val),'\n'].join(''),'',''].join('');
    } else {
      telegram_lampen = String('*Lampen*' + '\n') + 'Alle Lampen ausgeschaltet';
    }
    sendTo("telegram.0", "send", {
        text: telegram_lampen,
        user: 'Jonas',
        parse_mode: "Markdown"
    });
    sendTo("telegram.0", "send", {
        text: (['*Steckdosen*' + '\n',['TV: ',logictotext(getState("sonoff.0.Fernseher.POWER").val),'\n'].join(''),['PC: ',logictotext(getState("hm-rpc.1.0001D3C99C4FFB.3.STATE").val),'\n'].join('')].join('')),
        user: 'Jonas',
        parse_mode: "Markdown"
    });
  }
});