UNPKG

node-red-contrib-bluelinky

Version:

A Node Red Library for BlueLinky, a Hyundai and Kia 3rd-party wrapper

681 lines (627 loc) 20.8 kB
<script type="text/javascript"> RED.nodes.registerType('car-status', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Get status' }, dorefresh: { value: true }, parsed: { value: false }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'car-status'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('car-fullstatus', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Get full status' }, dorefresh: { value: true }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'car-fullstatus'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('get-tripinfo', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Tripinfo' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'get-tripinfo'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('get-drivehistory', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'DriveHistory' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'get-drivehistory'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('get-monthlyreport', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Get monthly report' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'get-monthlyreport'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('set-navigation', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Set navigation' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'set-navigation'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('set-chargetargets', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Set charge targets' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'set-chargetargets'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('get-chargetargets', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Get charge targets' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'get-chargetargets'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('start-car', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Start car' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'start-car'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('stop-car', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Stop car' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'stop-car'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('car-odometer', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Get car odometer' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'car-odometer'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('car-location', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Get car location' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'car-location'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('unlock-car', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Unlock car' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'unlock-car'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('lock-car', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Lock car' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'lock-car'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('start-charge', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Start Charging' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'start-charge'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('stop-charge', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Stop Charging' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'stop-charge'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('login', { category: 'bluelinky', color: '#3FADB5', defaults: { name: { value: 'Login' }, bluelinky: { value: 'Bluelinky config', type: 'bluelinky' }, }, inputs: 1, outputs: 1, icon: 'bluelinky.png', label: function () { return this.name || 'login'; }, }); </script> <script type="text/javascript"> RED.nodes.registerType('bluelinky', { category: 'config', defaults: { username: { required: true }, password: { required: true }, region: { value: 'EU', required: true }, pin: { required: true, validate: RED.validators.number() }, vin: { required: true }, brand: { value: 'hyundai', required: true }, language: { value: 'en', required: false }, }, label: function () { return this.vin; }, }); </script> <script type="text/html" data-template-name="car-status"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-dorefresh"> Refresh </label> <input type="checkbox" style="display: inline-block; width: auto; vertical-align: top;" id="node-input-dorefresh" /> </div> <div class="form-row"> <label for="node-input-parsed"> Parsed (Simpler object returned) </label> <input type="checkbox" style="display: inline-block; width: auto; vertical-align: top;" id="node-input-parsed" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="car-status"> <p>Get the status of the configured vehicle</p> </script> <script type="text/html" data-template-name="car-fullstatus"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-dorefresh"> Refresh </label> <input type="checkbox" style="display: inline-block; width: auto; vertical-align: top;" id="node-input-dorefresh" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="car-fullstatus"> <p>Get the full status of the configured vehicle, always unparsed</p> </script> <script type="text/html" data-template-name="get-monthlyreport"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="get-monthlyreport"> <p>[EU] Gets a report of last month</p> </script> <script type="text/html" data-template-name="get-drivehistory"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="get-drivehistory"> <p>[EU] Gets info about the energy consumption in a timeperiod, required config as msg.payload:</p> <p>0 = day, 1 = month, 2 = all</p> <p>If omitted, day is used.</p> for example: <pre> msg.payload = 0 </pre> </script> <script type="text/html" data-template-name="get-tripinfo"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="get-tripinfo"> <p>[EU] Gets info about the trips of a day, required config as msg.payload:</p> <p>If day is omitted, you are getting a summary of the month</p> <p>If month and year are also omitted, summary of this month</p> for example: <pre> { "year": 2021, "month": 3 } or { "year": 2021, "month": 3, "day": 24} </pre> </script> <script type="text/html" data-template-name="set-navigation"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="set-navigation"> <p>For EVs:</p> <p>Sets your navigation to max three waypoints, required config as msg.payload:</p> <p></p> </script> <script type="text/html" data-template-name="set-chargetargets"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="set-chargetargets"> <p>[EU][EV] Sets your charge targets, required config as msg.payload:</p> <p></p> <pre> {"fast": number, "slow": number} </pre> </script> <script type="text/html" data-template-name="get-chargetargets"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="get-chargetargets"> <p>Get the charge targets of the configured vehicle</p> </script> <script type="text/html" data-template-name="start-car"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="start-car"> <p>For ICE (Internal combustion engine) cars:</p> <p>Starts your engine, required config as msg.payload:</p> <p></p> <pre> { airCtrl?: boolean | string; igniOnDuration: number; airTempvalue?: number; defrost?: boolean | string; heating1?: boolean | string; } </pre> <br /> <p>For EVs:</p> <p>Starts your climate, required config as msg.payload:</p> <p>Defrost defrosts the frontwindow, windscreenheating heats the backwindow, mirrors and steering wheel.</p> <pre> { defrost: boolean; windscreenHeating: boolean; temperature: number; unit: string; } </pre> </script> <script type="text/html" data-template-name="stop-car"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="stop-car"> <p>For ICE (Internal combustion engine) cars:</p> <p>Stops your engine</p> <p> <br /> </p> <p>For EVs:</p> <p>Stops your climate</p> <p></p> </script> <script type="text/html" data-template-name="car-location"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="car-location"> <p>Get the location of the configured vehicle</p> </script> <script type="text/html" data-template-name="car-odometer"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="car-odometer"> <p>Get the odometer of the configured vehicle</p> </script> <script type="text/html" data-template-name="start-charge"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="start-charge"> <p>Starts charging the configured vehicle</p> </script> <script type="text/html" data-template-name="stop-charge"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="stop-charge"> <p>Stops charging the configured vehicle</p> </script> <script type="text/html" data-help-name="login"> <p>Forces bluelinky to login again</p> </script> <script type="text/html" data-template-name="login"> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-template-name="unlock-car"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="unlock-car"> <p>Unlock the configured vehicle</p> </script> <script type="text/html" data-template-name="lock-car"> <div class="form-row"> <label for="node-input-name"><i class="icon-tag"></i> Name</label> <input type="text" id="node-input-name" placeholder="Name" /> </div> <div class="form-row"> <label for="node-input-bluelinky"><i class="icon-tag"></i> Config</label> <input type="text" id="node-input-bluelinky" placeholder="Name" /> </div> </script> <script type="text/html" data-help-name="lock-car"> <p>Lock the configured vehicle</p> </script> <script type="text/html" data-template-name="bluelinky"> <div class="form-row"> <label for="node-config-input-name"><i class="icon-bookmark"></i> Name</label> <input type="text" id="node-config-input-name" value="Bluelinky" /> </div> <div class="form-row"> <label for="node-config-input-username"><i class="icon-bookmark"></i> Username</label> <input type="text" id="node-config-input-username" /> </div> <div class="form-row"> <label for="node-config-input-password"><i class="icon-bookmark"></i> Password</label> <input type="password" id="node-config-input-password" /> </div> <div class="form-row"> <label for="node-config-input-region"><i class="icon-bookmark"></i> Region</label> <select id="node-config-input-region"> <option value="US">USA</option> <option value="EU">Europe</option> <option value="CA">Canada</option> </select> </div> <div class="form-row"> <label for="node-config-input-pin"><i class="icon-bookmark"></i> Pin</label> <input type="password" id="node-config-input-pin" /> </div> <div class="form-row"> <label for="node-config-input-vin"><i class="icon-bookmark"></i> Vin</label> <input type="text" id="node-config-input-vin" /> </div> <div class="form-row"> <label for="node-config-input-brand"><i class="icon-bookmark"></i> Brand</label> <select id="node-config-input-brand"> <option value="kia">Kia</option> <option value="hyundai">Hyundai</option> </select> </div> <div class="form-row"> <label for="node-config-input-language"><i class="icon-bookmark"></i> Language[Only for EU]</label> <select id="node-config-input-language"> <option value="de">German</option> <option value="en">English</option> <option value="it">Italian</option> <option value="es">Spanish</option> <option value="sv">Swedish</option> <option value="nl">Dutch</option> <option value="no">Norwegian</option> <option value="cs">Czech</option> <option value="sk">Slovak</option> <option value="hu">Hungarian</option> <option value="da">Danish</option> <option value="pl">Polish</option> <option value="fi">Finnish</option> <option value="pt">Portuguese</option> </select> </div> </script>