node-red-contrib-miio-roborock
Version:
Roborock connectivity nodes for node-red
89 lines (78 loc) • 3.65 kB
HTML
<script type="text/x-red" data-template-name="miio-roborock-server">
<link rel="stylesheet" href="miio-roborock/static/css/multiple-select.css" type="text/css" />
<link rel="stylesheet" href="miio-roborock/static/css/common.css" type="text/css" />
<div class="form-row">
<label for="node-config-input-name" class="l-width"><i class="icon-bookmark"></i> <span data-i18n="label.name"></span></label>
<input type="text" id="node-config-input-name">
</div>
<div class="form-row">
<label for="node-config-input-ip" class="l-width"><i class="icon-globe"></i> <span data-i18n="label.ip_address"></span></label>
<input type="text" id="node-config-input-ip">
</div>
<div class="form-row">
<label for="node-config-input-token" class="l-width"><i class="icon-lock"></i> <span data-i18n="label.token"></span></label>
<input type="text" id="node-config-input-token">
</div>
<div class="form-row">
<label for="node-input-polling" class="l-width"><i class="icon-time"></i> <span data-i18n="label.polling"></span></label>
<input type="text" id="node-config-input-polling">
</div>
<div class="form-row">
<label for="auto-find" class="l-width"><i class="fa fa-refresh"></i> <span data-i18n="label.get_token"></span></label>
<button type="button" style="width: 70%" class="btn btn-light" id="auto-find" name="auto-find"><i class=""></i> <span data-i18n="label.find"></span></button>
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('miio-roborock-server',{
category: 'config',
defaults: {
name: {value: "", required: false},
ip: {value: "", required: true},
token: {value: "", required: true},
polling: {
value: 10,
required: true,
validate: function (value) {
return value > 4;
}
},
},
label: function() {
return this.name || this.host;
},
oneditprepare: function () {
var node = this;
var $findBtn = $('#auto-find');
$findBtn.on('click', function(){
if (!$('#node-config-input-ip').val().length) {
alert('Fill IP address');
return false;
}
let email = prompt('MiHome: Email address', '');
let pass = prompt('MiHome: Password', '');
if (!email || !pass) {
alert('Fill Email/Password');
return false;
}
$('#auto-find i').addClass('fa fa-spin fa-spinner');
$.getJSON('miio-roborock/find', {
controllerID: node.id,
ipAddress: $('#node-config-input-ip').val(),
email: email,
password: pass
}).done(function (data, textStatus, jqXHR) {
$('#auto-find i').removeClass('fa fa-spin fa-spinner');
if ("token" in data) {
$('#node-config-input-token').val(data.token);
if (!$('#node-config-input-name').val().length) {
$('#node-config-input-name').val(data.name);
}
} else if ("error_description" in data) {
alert(data.error_description);
}
}).fail(function (jqXHR, textStatus, errorThrown) {
});
});
},
});
</script>