node-red-contrib-gardena-smart-system
Version:
A node to connect to Gardena Smart System
285 lines (269 loc) • 10.4 kB
HTML
<script type="text/javascript">
RED.nodes.registerType('api-credentials', {
category: 'config',
credentials: {
application: { type: 'text' },
password: { type: 'password' }
},
defaults: {
name: { value:'Gardena Access' },
},
label() {
return this.name || 'Gardena Application Credentials'
},
exportable: false,
});
</script>
<script type="text/html" data-template-name="api-credentials">
<div class="form-row">
<label for="node-config-input-name"><i class="fa fa-tag"></i> Name</label>
<input type="text" id="node-config-input-name">
</div>
<div class="form-row">
<label for="node-config-input-application"><i class="fa fa-hashtag"></i> Application Key</label>
<input type="text" id="node-config-input-application">
</div>
<div class="form-row">
<label for="node-config-input-password"><i class="fa fa-key"></i> Application Secret</label>
<input type="password" id="node-config-input-password">
</div>
</script>
<script type="text/javascript">
RED.nodes.registerType('devices_status', {
category: 'Gardena',
color: '#C0DEED',
defaults: {
api: { value:'', type: 'api-credentials' },
},
inputs:1,
outputs:1,
icon: "font-awesome/fa-info-circle",
label: function() {
return 'Gardena Devices Status';
}
});
</script>
<script type="text/html" data-template-name="devices_status">
<div class="form-row">
<label for="node-input-api"><i class="fa fa-tag"></i> Api Credentials</label>
<input type="text" id="node-input-api">
</div>
</script>
<script type="text/html" data-help-name="devices_status">
<p>A node that retrieves status for all devices in one location from Gardena Smart System.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('service_status', {
category: 'Gardena',
color: '#C0DEED',
defaults: {
name: {value: null},
service: {value: '', required: true},
servicetype: {value: '', required: true},
},
inputs: 1,
outputs: 1,
icon: "font-awesome/fa-filter",
label: function() {
if (this.name && this.servicetype) {
return `${this.name} (${this.servicetype})`
}
return 'Gardena Service Status';
}
});
</script>
<script type="text/html" data-template-name="service_status">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Node Name</label>
<input type="text" id="node-input-name">
</div>
<div class="form-row">
<label for="node-input-service"><i class="fa fa-tag"></i> Service ID</label>
<input type="text" id="node-input-service">
</div>
<div class="form-row">
<label for="node-input-servicetype"><i class="fa fa-tag"></i> Service Type</label>
<select id="node-input-servicetype">
<option value="MOWER">Mower</option>
<option value="VALVE">Valve</option>
<option value="VALVE_SET">Irrigation Control Status</option>
<option value="SENSOR">Sensor</option>
<option value="COMMON">Device Information</option>
</select>
</div>
</script>
<script type="text/html" data-help-name="service_status">
<p>A node that filters the status of a service from the data that was retrieved using the Gardena Devices Status node.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('valve_control', {
category: 'Gardena',
color: '#FFAAAA',
defaults: {
name: { value: null },
api: { value: '', type: 'api-credentials' },
service: { value: '', required: true },
operation: { value: '', required: true },
duration: { value: 1 },
durationtype: { value: 'num' },
},
inputs: 1,
outputs: 1,
icon: "font-awesome/fa-tint",
label: function() {
return this.name || 'Gardena Valve Control';
},
oneditprepare: function() {
$("#node-input-duration").typedInput({
types:["num", "msg"],
typeField: "#node-input-durationtype"
})
}
});
</script>
<script type="text/html" data-template-name="valve_control">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Node Name</label>
<input type="text" id="node-input-name">
</div>
<div class="form-row">
<label for="node-input-api"><i class="fa fa-tag"></i> Api Credentials</label>
<input type="text" id="node-input-api">
</div>
<div class="form-row">
<label for="node-input-service"><i class="fa fa-tag"></i> Service ID</label>
<input type="text" id="node-input-service">
</div>
<div class="form-row">
<label for="node-input-operation"><i class="fa fa-tag"></i> Operation</label>
<select id="node-input-operation">
<option value="START_SECONDS_TO_OVERRIDE">Start watering for given duration</option>
<option value="STOP_UNTIL_NEXT_TASK">Cancel watering</option>
<option value="PAUSE">Pause Schedule</option>
<option value="UNPAUSE">Continue Schedule</option>
</select>
</div>
<div class="form-row">
<label for="node-input-duration"><i class="fa fa-tag"></i> Watering Duration (Minutes)</label>
<input type="text" id="node-input-duration">
<input type="hidden" id="node-input-durationtype">
</div>
</script>
<script type="text/html" data-help-name="valve_control">
<p>A node for controlling a Gardena Valve.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('mower_control', {
category: 'Gardena',
color: '#FFAAAA',
defaults: {
name: { value: null },
api: { value: '', type: 'api-credentials' },
service: { value: '', required: true },
operation: { value: '', required: true },
duration: { value: 1 },
durationtype: { value: 'num' },
},
inputs: 1,
outputs: 1,
icon: "mower.svg",
label: function() {
return this.name || 'Gardena Mower Control';
},
oneditprepare: function() {
$("#node-input-duration").typedInput({
types:["num", "msg"],
typeField: "#node-input-durationtype"
})
}
});
</script>
<script type="text/html" data-template-name="mower_control">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Node Name</label>
<input type="text" id="node-input-name">
</div>
<div class="form-row">
<label for="node-input-api"><i class="fa fa-tag"></i> Api Credentials</label>
<input type="text" id="node-input-api">
</div>
<div class="form-row">
<label for="node-input-service"><i class="fa fa-tag"></i> Service ID</label>
<input type="text" id="node-input-service">
</div>
<div class="form-row">
<label for="node-input-operation"><i class="fa fa-tag"></i> Operation</label>
<select id="node-input-operation">
<option value="START_SECONDS_TO_OVERRIDE">Start mowing for given duration</option>
<option value="START_DONT_OVERRIDE">Start mowing by schedule</option>
<option value="PARK_UNTIL_NEXT_TASK">Park until next task</option>
<option value="PARK_UNTIL_FURTHER_NOTICE">Park until further notice</option>
</select>
</div>
<div class="form-row">
<label for="node-input-duration"><i class="fa fa-tag"></i> Mowing Duration (Minutes)</label>
<input type="text" id="node-input-duration">
<input type="hidden" id="node-input-durationtype">
</div>
</script>
<script type="text/html" data-help-name="mower_control">
<p>A node for controlling a Gardena Mower.</p>
</script>
<script type="text/javascript">
RED.nodes.registerType('powersocket_control', {
category: 'Gardena',
color: '#FFAAAA',
defaults: {
name: { value: null },
api: { value: '', type: 'api-credentials' },
service: { value: '', required: true },
operation: { value: '', required: true },
duration: { value: 1 },
durationtype: { value: 'num' },
},
inputs: 1,
outputs: 1,
icon: "font-awesome/fa-power-off",
label: function() {
return this.name || 'Gardena Power Socket Control';
},
oneditprepare: function() {
$("#node-input-duration").typedInput({
types:["num", "msg"],
typeField: "#node-input-durationtype"
})
}
});
</script>
<script type="text/html" data-template-name="powersocket_control">
<div class="form-row">
<label for="node-input-name"><i class="fa fa-tag"></i> Node Name</label>
<input type="text" id="node-input-name">
</div>
<div class="form-row">
<label for="node-input-api"><i class="fa fa-tag"></i> Api Credentials</label>
<input type="text" id="node-input-api">
</div>
<div class="form-row">
<label for="node-input-service"><i class="fa fa-tag"></i> Service ID</label>
<input type="text" id="node-input-service">
</div>
<div class="form-row">
<label for="node-input-operation"><i class="fa fa-tag"></i> Operation</label>
<select id="node-input-operation">
<option value="START_SECONDS_TO_OVERRIDE">Switch on for given duration</option>
<option value="START_OVERRIDE">Switch on</option>
<option value="STOP_UNTIL_NEXT_TASK">Switch off and return to schedule</option>
<option value="PAUSE">Disable schedule for given duration</option>
<option value="UNPAUSE">Continue with schedule</option>
</select>
</div>
<div class="form-row">
<label for="node-input-duration"><i class="fa fa-tag"></i> Power On Duration (Minutes)</label>
<input type="text" id="node-input-duration">
<input type="hidden" id="node-input-durationtype">
</div>
</script>
<script type="text/html" data-help-name="powersocket_control">
<p>A node for controlling a Gardena Power Socket.</p>
</script>