What did you build/automated today (with pictures)?

Today I’ve created a command to manage a clothes dryer. It uses the following elements:

  1. The device mentioned in this post ESP32 with a small display to command a smart plug

  2. Two blockly rules, one to switch on the plug, and another to send alerts (to telegram and above’s device)

Blockly script to Switch on the dryer

var itemMetadata;


if (items.getItem('Comando_Secador_de_Roupa_Button_2').state == 'SINGLE') {
  itemMetadata = items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire');
  itemMetadata = (itemMetadata === null) ? { value: '', configuration: {} } : itemMetadata;
  itemMetadata.value = '1h0m0s,command=OFF';
  items.metadata.replaceMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire', itemMetadata.value, itemMetadata.configuration);
} else if (items.getItem('Comando_Secador_de_Roupa_Button_2').state == 'DOUBLE') {
  itemMetadata = items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire');
  itemMetadata = (itemMetadata === null) ? { value: '', configuration: {} } : itemMetadata;
  itemMetadata.value = '2h0m0s,command=OFF';
  items.metadata.replaceMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire', itemMetadata.value, itemMetadata.configuration);
} else if (items.getItem('Comando_Secador_de_Roupa_Button_2').state == 'TRIPLE') {
  itemMetadata = items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire');
  itemMetadata = (itemMetadata === null) ? { value: '', configuration: {} } : itemMetadata;
  itemMetadata.value = '3h0m0s,command=OFF';
  items.metadata.replaceMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire', itemMetadata.value, itemMetadata.configuration);
} else if (items.getItem('Comando_Secador_de_Roupa_Button_2').state == 'QUAD') {
  itemMetadata = items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire');
  itemMetadata = (itemMetadata === null) ? { value: '', configuration: {} } : itemMetadata;
  itemMetadata.value = '4h0m0s,command=OFF';
  items.metadata.replaceMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire', itemMetadata.value, itemMetadata.configuration);
} else if (items.getItem('Comando_Secador_de_Roupa_Button_2').state == 'PENTA') {
  itemMetadata = items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire');
  itemMetadata = (itemMetadata === null) ? { value: '', configuration: {} } : itemMetadata;
  itemMetadata.value = '5h0m0s,command=OFF';
  items.metadata.replaceMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire', itemMetadata.value, itemMetadata.configuration);
}
items.getItem('Tomada_Secador_Roupa_Output_Switch').sendCommand('ON');

Blockly script to send alerts

if (items.getItem('Tomada_Secador_Roupa_Output_Switch').state == 'ON') {
  items.getItem('Comando_Secador_de_Roupa_Status').sendCommand((time.ZonedDateTime.now().plusHours(parseFloat(((items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire') !== null) ? (items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire').value) : 'undefined').slice(0, 1))).format(time.DateTimeFormatter.ofPattern('HH:mm'))));
  items.getItem('aAlert').sendCommand(('Secador de roupa ligado durante ' + String(((items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire') !== null) ? (items.metadata.getMetadata('Tomada_Secador_Roupa_Output_Switch', 'expire').value) : 'undefined').slice(0, 2))));
} else {
  items.getItem('Comando_Secador_de_Roupa_Status').sendCommand('OFF');
  items.getItem('aAlert').sendCommand('Secador de roupa desligado');
}

Pressing button2 (green) switches on the dryer for a number of hours (=number of clicks) and displays the end time.

For example, after 3 clicks the dryer switches on during 3 hours and the command displays

imagem