Today I’ve created a command to manage a clothes dryer. It uses the following elements:
-
The device mentioned in this post ESP32 with a small display to command a smart plug
-
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
