From 021eb67122e6130401a3ea06f9b3ea1551090c02 Mon Sep 17 00:00:00 2001 From: Maska Date: Mon, 9 Jan 2023 10:48:05 +0100 Subject: [PATCH] new .gitignore --- .gitignore | 54 +- .ssh/fix-ssh.sh | 1 + .ssh/id_rsa | 49 + .ssh/id_rsa.pub | 1 + .../homeassistant/motion_light.yaml | 54 - .../homeassistant/notify_leaving_zone.yaml | 44 - .../confirmable_notification.yaml | 84 -- .../1fa111d474f1d2a5e466a4de055673f3/512x512 | Bin 6620 -> 0 bytes .../1fa111d474f1d2a5e466a4de055673f3/original | Bin 6799 -> 0 bytes node-red/.config.nodes.json | 1247 +++++++++++++++++ node-red/.config.users.json | 29 + node-red/flows.json | 1 + node-red/flows_cred.json | 1 + ...-red-contrib-home-assistant-websocket.json | 3 + node-red/package-lock.json | 944 +++++++++++++ node-red/package.json | 10 + node-red/settings.js | 192 +++ secrets.yaml | 8 - 18 files changed, 2508 insertions(+), 214 deletions(-) create mode 100755 .ssh/fix-ssh.sh create mode 100644 .ssh/id_rsa create mode 100644 .ssh/id_rsa.pub delete mode 100644 blueprints/automation/homeassistant/motion_light.yaml delete mode 100644 blueprints/automation/homeassistant/notify_leaving_zone.yaml delete mode 100644 blueprints/script/homeassistant/confirmable_notification.yaml delete mode 100644 image/1fa111d474f1d2a5e466a4de055673f3/512x512 delete mode 100644 image/1fa111d474f1d2a5e466a4de055673f3/original create mode 100644 node-red/.config.nodes.json create mode 100644 node-red/.config.users.json create mode 100644 node-red/flows.json create mode 100644 node-red/flows_cred.json create mode 100644 node-red/node-red-contrib-home-assistant-websocket.json create mode 100644 node-red/package-lock.json create mode 100644 node-red/package.json create mode 100644 node-red/settings.js delete mode 100644 secrets.yaml diff --git a/.gitignore b/.gitignore index ebb85a2..1b20b33 100644 --- a/.gitignore +++ b/.gitignore @@ -1,25 +1,31 @@ -**.db -*.swp -*.swo -.HA_VERSION -.uuid -home-assistant.log* -home-assistant_v2.db* -*.pem -deps/ -tts/ -.storage -www/community/ -script-env/ -broadlink-env/ -shell_commands/__pycache__/ -__pycache__/ -ip_bans.yaml -custom_components/ -.ssh/ -node-red/ -**/log/* -**.bk -zigbee2mqtt/state.json -zigbee2mqtt/coordinator_backup.json +# WARNING: Make your GitHub repo Private if you are using this as it is +# Example .gitignore file for your config dir. +# An * ensures that everything will be ignored. +* +# You can whitelist files/folders with !, these will not be ignored. +!*.yaml +!.gitignore +!*.md +!*.sh +!*.js* +# Comment these 2 lines if you don't want to include your SSH keys +!.ssh/ +!id_rsa* + +# Comment this if you don't want to include your Node-RED flows. +# This is only valid if you install Node-RED as Home Assistant Add-on +!node-red/ +!zigbee2mqtt/ + +# Uncomment this if you don' want to include secrets.yaml +secrets.yaml + +# Ignore these files/folders +.storage +.cloud +.google.token +home-assistant.log +*.backup +state.json +coordinator_backup.json \ No newline at end of file diff --git a/.ssh/fix-ssh.sh b/.ssh/fix-ssh.sh new file mode 100755 index 0000000..d826fd0 --- /dev/null +++ b/.ssh/fix-ssh.sh @@ -0,0 +1 @@ +cp /config/.ssh/id_rsa* /root/.ssh \ No newline at end of file diff --git a/.ssh/id_rsa b/.ssh/id_rsa new file mode 100644 index 0000000..335bcb5 --- /dev/null +++ b/.ssh/id_rsa @@ -0,0 +1,49 @@ +-----BEGIN OPENSSH PRIVATE KEY----- +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 +-----END OPENSSH PRIVATE KEY----- diff --git a/.ssh/id_rsa.pub b/.ssh/id_rsa.pub new file mode 100644 index 0000000..a66a008 --- /dev/null +++ b/.ssh/id_rsa.pub @@ -0,0 +1 @@ +ssh-rsa AAAAB3NzaC1yc2EAAAADAQABAAACAQC7rpD8gZ0YHuLT6vi/oaqCe8lq3UwnloGCEm1I4TIsvHMbySDOlegmv5/taMxDkkFrsJXu1i+1AYWU0rwYYHRN6OaZSAK8/tJZzWt5VviS/1X/Gw7qdUe4XqIuCMfT3Y+/+loJs6fw76WQtaEAx8JcPsdRaOdIc5Iwql62hWMGjcmGuB2hLP9wBLjgbDan/lGITYe/lh8CHL8NGNCZsDfjYZiq2xB/S2dSGdJi9XocWABty4kHuWZG/ZjNQ/H7c09OxV0xdH5FDINY1CA2NUbpQEYIj/PuBiapjpJM+9u9BqooFS+obVsNF/SMcVG/bkmuv44AEw8A6tzgtp0e20onWcxXAGMva4RYkdKlS9FFZQE1QJbfLgh7YEEacEtxCn2fQ6vh+A/Zt7b7ilMuchqktFqYC0w2RIHr4/bkcB/YeuUh9eZCvPFLFHZW/ysPrmDJ8Hp+dMPs65VzOSdwYGnFOOYmTts9CFG0it8F6AemF3T4RQ1lKSO1OXHQZ2YUwXTLUSl3X+DAu8jSdaUQ24iILwADpL5Z7EwMdvnRo2tsD4BfNNwpAmkb3M+J5to44aP7po5F7T4fLzhYhKtV7c9OTmE2V280F04zIwfigHuKplT+E5OD15rbp4AdNOALgNW/uwS5Q4pgtjEgONAtkTQ0QbDUJP8XEX5tn573e9RSYQ== HomeAssistant diff --git a/blueprints/automation/homeassistant/motion_light.yaml b/blueprints/automation/homeassistant/motion_light.yaml deleted file mode 100644 index 54a4a4f..0000000 --- a/blueprints/automation/homeassistant/motion_light.yaml +++ /dev/null @@ -1,54 +0,0 @@ -blueprint: - name: Motion-activated Light - description: Turn on a light when motion is detected. - domain: automation - source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/motion_light.yaml - input: - motion_entity: - name: Motion Sensor - selector: - entity: - domain: binary_sensor - device_class: motion - light_target: - name: Light - selector: - target: - entity: - domain: light - no_motion_wait: - name: Wait time - description: Time to leave the light on after last motion is detected. - default: 120 - selector: - number: - min: 0 - max: 3600 - unit_of_measurement: seconds - -# If motion is detected within the delay, -# we restart the script. -mode: restart -max_exceeded: silent - -trigger: - platform: state - entity_id: !input motion_entity - from: "off" - to: "on" - -action: - - alias: "Turn on the light" - service: light.turn_on - target: !input light_target - - alias: "Wait until there is no motion from device" - wait_for_trigger: - platform: state - entity_id: !input motion_entity - from: "on" - to: "off" - - alias: "Wait the number of seconds that has been set" - delay: !input no_motion_wait - - alias: "Turn off the light" - service: light.turn_off - target: !input light_target diff --git a/blueprints/automation/homeassistant/notify_leaving_zone.yaml b/blueprints/automation/homeassistant/notify_leaving_zone.yaml deleted file mode 100644 index 71abf8f..0000000 --- a/blueprints/automation/homeassistant/notify_leaving_zone.yaml +++ /dev/null @@ -1,44 +0,0 @@ -blueprint: - name: Zone Notification - description: Send a notification to a device when a person leaves a specific zone. - domain: automation - source_url: https://github.com/home-assistant/core/blob/dev/homeassistant/components/automation/blueprints/notify_leaving_zone.yaml - input: - person_entity: - name: Person - selector: - entity: - domain: person - zone_entity: - name: Zone - selector: - entity: - domain: zone - notify_device: - name: Device to notify - description: Device needs to run the official Home Assistant app to receive notifications. - selector: - device: - integration: mobile_app - -trigger: - platform: state - entity_id: !input person_entity - -variables: - zone_entity: !input zone_entity - # This is the state of the person when it's in this zone. - zone_state: "{{ states[zone_entity].name }}" - person_entity: !input person_entity - person_name: "{{ states[person_entity].name }}" - -condition: - condition: template - value_template: "{{ trigger.from_state.state == zone_state and trigger.to_state.state != zone_state }}" - -action: - - alias: "Notify that a person has left the zone" - domain: mobile_app - type: notify - device_id: !input notify_device - message: "{{ person_name }} has left {{ zone_state }}" diff --git a/blueprints/script/homeassistant/confirmable_notification.yaml b/blueprints/script/homeassistant/confirmable_notification.yaml deleted file mode 100644 index d52e5a6..0000000 --- a/blueprints/script/homeassistant/confirmable_notification.yaml +++ /dev/null @@ -1,84 +0,0 @@ -blueprint: - name: Confirmable Notification - description: >- - A script that sends an actionable notification with a confirmation before - running the specified action. - domain: script - source_url: https://github.com/home-assistant/core/blob/master/homeassistant/components/script/blueprints/confirmable_notification.yaml - input: - notify_device: - name: Device to notify - description: Device needs to run the official Home Assistant app to receive notifications. - selector: - device: - integration: mobile_app - title: - name: "Title" - description: "The title of the button shown in the notification." - default: "" - selector: - text: - message: - name: "Message" - description: "The message body" - selector: - text: - confirm_text: - name: "Confirmation Text" - description: "Text to show on the confirmation button" - default: "Confirm" - selector: - text: - confirm_action: - name: "Confirmation Action" - description: "Action to run when notification is confirmed" - default: [] - selector: - action: - dismiss_text: - name: "Dismiss Text" - description: "Text to show on the dismiss button" - default: "Dismiss" - selector: - text: - dismiss_action: - name: "Dismiss Action" - description: "Action to run when notification is dismissed" - default: [] - selector: - action: - -mode: restart - -sequence: - - alias: "Set up variables" - variables: - action_confirm: "{{ 'CONFIRM_' ~ context.id }}" - action_dismiss: "{{ 'DISMISS_' ~ context.id }}" - - alias: "Send notification" - domain: mobile_app - type: notify - device_id: !input notify_device - title: !input title - message: !input message - data: - actions: - - action: "{{ action_confirm }}" - title: !input confirm_text - - action: "{{ action_dismiss }}" - title: !input dismiss_text - - alias: "Awaiting response" - wait_for_trigger: - - platform: event - event_type: mobile_app_notification_action - event_data: - action: "{{ action_confirm }}" - - platform: event - event_type: mobile_app_notification_action - event_data: - action: "{{ action_dismiss }}" - - choose: - - conditions: "{{ wait.trigger.event.data.action == action_confirm }}" - sequence: !input confirm_action - - conditions: "{{ wait.trigger.event.data.action == action_dismiss }}" - sequence: !input dismiss_action diff --git a/image/1fa111d474f1d2a5e466a4de055673f3/512x512 b/image/1fa111d474f1d2a5e466a4de055673f3/512x512 deleted file mode 100644 index b877874ffe2d5dbf0739d751fc1255a2965e5165..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 6620 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 0.6.0" + } + }, + "node_modules/@types/component-emitter": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", + "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==" + }, + "node_modules/@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "node_modules/@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "node_modules/@types/node": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.13.tgz", + "integrity": "sha512-Y86MAxASe25hNzlDbsviXl8jQHb0RDvKt4c40ZJQ1Don0AAL0STLZSs4N+6gLEO55pedy7r2cLwS+ZDxPm/2Bw==" + }, + "node_modules/accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "dependencies": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==", + "engines": { + "node": "^4.5.0 || >= 5.9" + } + }, + "node_modules/bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "node_modules/compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "dependencies": { + "mime-db": ">= 1.43.0 < 2" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "dependencies": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "dependencies": { + "object-assign": "^4", + "vary": "^1" + }, + "engines": { + "node": ">= 0.10" + } + }, + "node_modules/debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "dependencies": { + "ms": "2.0.0" + } + }, + "node_modules/depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "node_modules/ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "node_modules/encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/engine.io": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.2.tgz", + "integrity": "sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==", + "dependencies": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "ws": "~8.2.3" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "dependencies": { + "@socket.io/base64-arraybuffer": "~1.0.2" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/engine.io/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/engine.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "node_modules/etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/gridstack": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/gridstack/-/gridstack-0.6.4.tgz", + "integrity": "sha512-4ToCnneNg5Uw+ms3xHtPVvsNXdvwQhngdlyNgGkARwvooQu+gLL6xkwPqLU59TsZP/LVvofb2QhEuXyh/ocL8w==", + "dependencies": { + "jquery": "^1.8 || 2 || 3" + } + }, + "node_modules/http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "dependencies": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "node_modules/jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "node_modules/mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==", + "bin": { + "mime": "cli.js" + }, + "engines": { + "node": ">=4" + } + }, + "node_modules/mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "dependencies": { + "mime-db": "1.51.0" + }, + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "node_modules/negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/node-red-contrib-mytimeout": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/node-red-contrib-mytimeout/-/node-red-contrib-mytimeout-3.2.2.tgz", + "integrity": "sha512-WNzDnG6HKudOl43fZHa8oSfKR1xw3yny5Opr2EdVfOEPcQrI1AZgafJZFCeYkM6GcIruQD3qZBI9WbzWNW5mrQ==", + "engines": { + "node": ">=10" + } + }, + "node_modules/node-red-dashboard": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/node-red-dashboard/-/node-red-dashboard-3.1.5.tgz", + "integrity": "sha512-Npw6TCe97TzyeCe5CLAWsRklxop00ijmJYrYBagvZqVWHR8+ZXStS8l/7bOstzrkNY2Mvz6Xj9Ne4a+Z3h4V5g==", + "dependencies": { + "compression": "^1.7.4", + "gridstack": "^0.6.4", + "serve-static": "^1.14.2", + "socket.io": "~4.4.1" + }, + "engines": { + "node": ">=12" + } + }, + "node_modules/object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=", + "engines": { + "node": ">=0.10.0" + } + }, + "node_modules/on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "dependencies": { + "ee-first": "1.1.1" + }, + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "node_modules/send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "dependencies": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/send/node_modules/ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + }, + "node_modules/serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "dependencies": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + }, + "engines": { + "node": ">= 0.8.0" + } + }, + "node_modules/setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "node_modules/socket.io": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "dependencies": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", + "socket.io-parser": "~4.0.4" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-adapter": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" + }, + "node_modules/socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "dependencies": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "engines": { + "node": ">=10.0.0" + } + }, + "node_modules/socket.io-parser/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io-parser/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/socket.io/node_modules/debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "dependencies": { + "ms": "2.1.2" + }, + "engines": { + "node": ">=6.0" + }, + "peerDependenciesMeta": { + "supports-color": { + "optional": true + } + } + }, + "node_modules/socket.io/node_modules/ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + }, + "node_modules/statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=", + "engines": { + "node": ">= 0.6" + } + }, + "node_modules/toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==", + "engines": { + "node": ">=0.6" + } + }, + "node_modules/vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=", + "engines": { + "node": ">= 0.8" + } + }, + "node_modules/ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "engines": { + "node": ">=10.0.0" + }, + "peerDependencies": { + "bufferutil": "^4.0.1", + "utf-8-validate": "^5.0.2" + }, + "peerDependenciesMeta": { + "bufferutil": { + "optional": true + }, + "utf-8-validate": { + "optional": true + } + } + } + }, + "dependencies": { + "@socket.io/base64-arraybuffer": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/@socket.io/base64-arraybuffer/-/base64-arraybuffer-1.0.2.tgz", + "integrity": "sha512-dOlCBKnDw4iShaIsH/bxujKTM18+2TOAsYz+KSc11Am38H4q5Xw8Bbz97ZYdrVNM+um3p7w86Bvvmcn9q+5+eQ==" + }, + "@types/component-emitter": { + "version": "1.2.11", + "resolved": "https://registry.npmjs.org/@types/component-emitter/-/component-emitter-1.2.11.tgz", + "integrity": "sha512-SRXjM+tfsSlA9VuG8hGO2nft2p8zjXCK1VcC6N4NXbBbYbSia9kzCChYQajIjzIqOOOuh5Ock6MmV2oux4jDZQ==" + }, + "@types/cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/@types/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-XW/Aa8APYr6jSVVA1y/DEIZX0/GMKLEVekNG727R8cs56ahETkRAy/3DR7+fJyh7oUgGwNQaRfXCun0+KbWY7Q==" + }, + "@types/cors": { + "version": "2.8.12", + "resolved": "https://registry.npmjs.org/@types/cors/-/cors-2.8.12.tgz", + "integrity": "sha512-vt+kDhq/M2ayberEtJcIN/hxXy1Pk+59g2FV/ZQceeaTyCtCucjL2Q7FXlFjtWn4n15KCr1NE2lNNFhp0lEThw==" + }, + "@types/node": { + "version": "17.0.13", + "resolved": "https://registry.npmjs.org/@types/node/-/node-17.0.13.tgz", + "integrity": "sha512-Y86MAxASe25hNzlDbsviXl8jQHb0RDvKt4c40ZJQ1Don0AAL0STLZSs4N+6gLEO55pedy7r2cLwS+ZDxPm/2Bw==" + }, + "accepts": { + "version": "1.3.7", + "resolved": "https://registry.npmjs.org/accepts/-/accepts-1.3.7.tgz", + "integrity": "sha512-Il80Qs2WjYlJIBNzNkK6KYqlVMTbZLXgHx2oT0pU/fjRHyEp+PEfEPY0R3WCwAGVOtauxh1hOxNgIf5bv7dQpA==", + "requires": { + "mime-types": "~2.1.24", + "negotiator": "0.6.2" + } + }, + "base64id": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/base64id/-/base64id-2.0.0.tgz", + "integrity": "sha512-lGe34o6EHj9y3Kts9R4ZYs/Gr+6N7MCaMlIFA3F1R2O5/m7K06AxfSeO5530PEERE6/WyEg3lsuyw4GHlPZHog==" + }, + "bytes": { + "version": "3.0.0", + "resolved": "https://registry.npmjs.org/bytes/-/bytes-3.0.0.tgz", + "integrity": "sha1-0ygVQE1olpn4Wk6k+odV3ROpYEg=" + }, + "component-emitter": { + "version": "1.3.0", + "resolved": "https://registry.npmjs.org/component-emitter/-/component-emitter-1.3.0.tgz", + "integrity": "sha512-Rd3se6QB+sO1TwqZjscQrurpEPIfO0/yYnSin6Q/rD3mOutHvUrCAhJub3r90uNb+SESBuE0QYoB90YdfatsRg==" + }, + "compressible": { + "version": "2.0.18", + "resolved": "https://registry.npmjs.org/compressible/-/compressible-2.0.18.tgz", + "integrity": "sha512-AF3r7P5dWxL8MxyITRMlORQNaOA2IkAFaTr4k7BUumjPtRpGDTZpl0Pb1XCO6JeDCBdp126Cgs9sMxqSjgYyRg==", + "requires": { + "mime-db": ">= 1.43.0 < 2" + } + }, + "compression": { + "version": "1.7.4", + "resolved": "https://registry.npmjs.org/compression/-/compression-1.7.4.tgz", + "integrity": "sha512-jaSIDzP9pZVS4ZfQ+TzvtiWhdpFhE2RDHz8QJkpX9SIpLq88VueF5jJw6t+6CUQcAoA6t+x89MLrWAqpfDE8iQ==", + "requires": { + "accepts": "~1.3.5", + "bytes": "3.0.0", + "compressible": "~2.0.16", + "debug": "2.6.9", + "on-headers": "~1.0.2", + "safe-buffer": "5.1.2", + "vary": "~1.1.2" + } + }, + "cookie": { + "version": "0.4.1", + "resolved": "https://registry.npmjs.org/cookie/-/cookie-0.4.1.tgz", + "integrity": "sha512-ZwrFkGJxUR3EIoXtO+yVE69Eb7KlixbaeAWfBQB9vVsNn/o+Yw69gBWSSDK825hQNdN+wF8zELf3dFNl/kxkUA==" + }, + "cors": { + "version": "2.8.5", + "resolved": "https://registry.npmjs.org/cors/-/cors-2.8.5.tgz", + "integrity": "sha512-KIHbLJqu73RGr/hnbrO9uBeixNGuvSQjul/jdFvS/KFSIH1hWVd1ng7zOHx+YrEfInLG7q4n6GHQ9cDtxv/P6g==", + "requires": { + "object-assign": "^4", + "vary": "^1" + } + }, + "debug": { + "version": "2.6.9", + "resolved": "https://registry.npmjs.org/debug/-/debug-2.6.9.tgz", + "integrity": "sha512-bC7ElrdJaJnPbAP+1EotYvqZsb3ecl5wi6Bfi6BJTUcNowp6cvspg0jXznRTKDjm/E7AdgFBVeAPVMNcKGsHMA==", + "requires": { + "ms": "2.0.0" + } + }, + "depd": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/depd/-/depd-1.1.2.tgz", + "integrity": "sha1-m81S4UwJd2PnSbJ0xDRu0uVgtak=" + }, + "destroy": { + "version": "1.0.4", + "resolved": "https://registry.npmjs.org/destroy/-/destroy-1.0.4.tgz", + "integrity": "sha1-l4hXRCxEdJ5CBmE+N5RiBYJqvYA=" + }, + "ee-first": { + "version": "1.1.1", + "resolved": "https://registry.npmjs.org/ee-first/-/ee-first-1.1.1.tgz", + "integrity": "sha1-WQxhFWsK4vTwJVcyoViyZrxWsh0=" + }, + "encodeurl": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/encodeurl/-/encodeurl-1.0.2.tgz", + "integrity": "sha1-rT/0yG7C0CkyL1oCw6mmBslbP1k=" + }, + "engine.io": { + "version": "6.1.2", + "resolved": "https://registry.npmjs.org/engine.io/-/engine.io-6.1.2.tgz", + "integrity": "sha512-v/7eGHxPvO2AWsksyx2PUsQvBafuvqs0jJJQ0FdmJG1b9qIvgSbqDRGwNhfk2XHaTTbTXiC4quRE8Q9nRjsrQQ==", + "requires": { + "@types/cookie": "^0.4.1", + "@types/cors": "^2.8.12", + "@types/node": ">=10.0.0", + "accepts": "~1.3.4", + "base64id": "2.0.0", + "cookie": "~0.4.1", + "cors": "~2.8.5", + "debug": "~4.3.1", + "engine.io-parser": "~5.0.0", + "ws": "~8.2.3" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "engine.io-parser": { + "version": "5.0.3", + "resolved": "https://registry.npmjs.org/engine.io-parser/-/engine.io-parser-5.0.3.tgz", + "integrity": "sha512-BtQxwF27XUNnSafQLvDi0dQ8s3i6VgzSoQMJacpIcGNrlUdfHSKbgm3jmjCVvQluGzqwujQMPAoMai3oYSTurg==", + "requires": { + "@socket.io/base64-arraybuffer": "~1.0.2" + } + }, + "escape-html": { + "version": "1.0.3", + "resolved": "https://registry.npmjs.org/escape-html/-/escape-html-1.0.3.tgz", + "integrity": "sha1-Aljq5NPQwJdN4cFpGI7wBR0dGYg=" + }, + "etag": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/etag/-/etag-1.8.1.tgz", + "integrity": "sha1-Qa4u62XvpiJorr/qg6x9eSmbCIc=" + }, + "fresh": { + "version": "0.5.2", + "resolved": "https://registry.npmjs.org/fresh/-/fresh-0.5.2.tgz", + "integrity": "sha1-PYyt2Q2XZWn6g1qx+OSyOhBWBac=" + }, + "gridstack": { + "version": "0.6.4", + "resolved": "https://registry.npmjs.org/gridstack/-/gridstack-0.6.4.tgz", + "integrity": "sha512-4ToCnneNg5Uw+ms3xHtPVvsNXdvwQhngdlyNgGkARwvooQu+gLL6xkwPqLU59TsZP/LVvofb2QhEuXyh/ocL8w==", + "requires": { + "jquery": "^1.8 || 2 || 3" + } + }, + "http-errors": { + "version": "1.8.1", + "resolved": "https://registry.npmjs.org/http-errors/-/http-errors-1.8.1.tgz", + "integrity": "sha512-Kpk9Sm7NmI+RHhnj6OIWDI1d6fIoFAtFt9RLaTMRlg/8w49juAStsrBgp0Dp4OdxdVbRIeKhtCUvoi/RuAhO4g==", + "requires": { + "depd": "~1.1.2", + "inherits": "2.0.4", + "setprototypeof": "1.2.0", + "statuses": ">= 1.5.0 < 2", + "toidentifier": "1.0.1" + } + }, + "inherits": { + "version": "2.0.4", + "resolved": "https://registry.npmjs.org/inherits/-/inherits-2.0.4.tgz", + "integrity": "sha512-k/vGaX4/Yla3WzyMCvTQOXYeIHvqOKtnqBduzTHpzpQZzAskKMhZ2K+EnBiSM9zGSoIFeMpXKxa4dYeZIQqewQ==" + }, + "jquery": { + "version": "3.6.0", + "resolved": "https://registry.npmjs.org/jquery/-/jquery-3.6.0.tgz", + "integrity": "sha512-JVzAR/AjBvVt2BmYhxRCSYysDsPcssdmTFnzyLEts9qNwmjmu4JTAMYubEfwVOSwpQ1I1sKKFcxhZCI2buerfw==" + }, + "mime": { + "version": "1.6.0", + "resolved": "https://registry.npmjs.org/mime/-/mime-1.6.0.tgz", + "integrity": "sha512-x0Vn8spI+wuJ1O6S7gnbaQg8Pxh4NNHb7KSINmEWKiPE4RKOplvijn+NkmYmmRgP68mc70j2EbeTFRsrswaQeg==" + }, + "mime-db": { + "version": "1.51.0", + "resolved": "https://registry.npmjs.org/mime-db/-/mime-db-1.51.0.tgz", + "integrity": "sha512-5y8A56jg7XVQx2mbv1lu49NR4dokRnhZYTtL+KGfaa27uq4pSTXkwQkFJl4pkRMyNFz/EtYDSkiiEHx3F7UN6g==" + }, + "mime-types": { + "version": "2.1.34", + "resolved": "https://registry.npmjs.org/mime-types/-/mime-types-2.1.34.tgz", + "integrity": "sha512-6cP692WwGIs9XXdOO4++N+7qjqv0rqxxVvJ3VHPh/Sc9mVZcQP+ZGhkKiTvWMQRr2tbHkJP/Yn7Y0npb3ZBs4A==", + "requires": { + "mime-db": "1.51.0" + } + }, + "ms": { + "version": "2.0.0", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.0.0.tgz", + "integrity": "sha1-VgiurfwAvmwpAd9fmGF4jeDVl8g=" + }, + "negotiator": { + "version": "0.6.2", + "resolved": "https://registry.npmjs.org/negotiator/-/negotiator-0.6.2.tgz", + "integrity": "sha512-hZXc7K2e+PgeI1eDBe/10Ard4ekbfrrqG8Ep+8Jmf4JID2bNg7NvCPOZN+kfF574pFQI7mum2AUqDidoKqcTOw==" + }, + "node-red-contrib-mytimeout": { + "version": "3.2.2", + "resolved": "https://registry.npmjs.org/node-red-contrib-mytimeout/-/node-red-contrib-mytimeout-3.2.2.tgz", + "integrity": "sha512-WNzDnG6HKudOl43fZHa8oSfKR1xw3yny5Opr2EdVfOEPcQrI1AZgafJZFCeYkM6GcIruQD3qZBI9WbzWNW5mrQ==" + }, + "node-red-dashboard": { + "version": "3.1.5", + "resolved": "https://registry.npmjs.org/node-red-dashboard/-/node-red-dashboard-3.1.5.tgz", + "integrity": "sha512-Npw6TCe97TzyeCe5CLAWsRklxop00ijmJYrYBagvZqVWHR8+ZXStS8l/7bOstzrkNY2Mvz6Xj9Ne4a+Z3h4V5g==", + "requires": { + "compression": "^1.7.4", + "gridstack": "^0.6.4", + "serve-static": "^1.14.2", + "socket.io": "~4.4.1" + } + }, + "object-assign": { + "version": "4.1.1", + "resolved": "https://registry.npmjs.org/object-assign/-/object-assign-4.1.1.tgz", + "integrity": "sha1-IQmtx5ZYh8/AXLvUQsrIv7s2CGM=" + }, + "on-finished": { + "version": "2.3.0", + "resolved": "https://registry.npmjs.org/on-finished/-/on-finished-2.3.0.tgz", + "integrity": "sha1-IPEzZIGwg811M3mSoWlxqi2QaUc=", + "requires": { + "ee-first": "1.1.1" + } + }, + "on-headers": { + "version": "1.0.2", + "resolved": "https://registry.npmjs.org/on-headers/-/on-headers-1.0.2.tgz", + "integrity": "sha512-pZAE+FJLoyITytdqK0U5s+FIpjN0JP3OzFi/u8Rx+EV5/W+JTWGXG8xFzevE7AjBfDqHv/8vL8qQsIhHnqRkrA==" + }, + "parseurl": { + "version": "1.3.3", + "resolved": "https://registry.npmjs.org/parseurl/-/parseurl-1.3.3.tgz", + "integrity": "sha512-CiyeOxFT/JZyN5m0z9PfXw4SCBJ6Sygz1Dpl0wqjlhDEGGBP1GnsUVEL0p63hoG1fcj3fHynXi9NYO4nWOL+qQ==" + }, + "range-parser": { + "version": "1.2.1", + "resolved": "https://registry.npmjs.org/range-parser/-/range-parser-1.2.1.tgz", + "integrity": "sha512-Hrgsx+orqoygnmhFbKaHE6c296J+HTAQXoxEF6gNupROmmGJRoyzfG3ccAveqCBrwr/2yxQ5BVd/GTl5agOwSg==" + }, + "safe-buffer": { + "version": "5.1.2", + "resolved": "https://registry.npmjs.org/safe-buffer/-/safe-buffer-5.1.2.tgz", + "integrity": "sha512-Gd2UZBJDkXlY7GbJxfsE8/nvKkUEU1G38c1siN6QP6a9PT9MmHB8GnpscSmMJSoF8LOIrt8ud/wPtojys4G6+g==" + }, + "send": { + "version": "0.17.2", + "resolved": "https://registry.npmjs.org/send/-/send-0.17.2.tgz", + "integrity": "sha512-UJYB6wFSJE3G00nEivR5rgWp8c2xXvJ3OPWPhmuteU0IKj8nKbG3DrjiOmLwpnHGYWAVwA69zmTm++YG0Hmwww==", + "requires": { + "debug": "2.6.9", + "depd": "~1.1.2", + "destroy": "~1.0.4", + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "etag": "~1.8.1", + "fresh": "0.5.2", + "http-errors": "1.8.1", + "mime": "1.6.0", + "ms": "2.1.3", + "on-finished": "~2.3.0", + "range-parser": "~1.2.1", + "statuses": "~1.5.0" + }, + "dependencies": { + "ms": { + "version": "2.1.3", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.3.tgz", + "integrity": "sha512-6FlzubTLZG3J2a/NVCAleEhjzq5oxgHyaCU9yYXvcLsvoVaHJq/s5xXI6/XXP6tz7R9xAOtHnSO/tXtF3WRTlA==" + } + } + }, + "serve-static": { + "version": "1.14.2", + "resolved": "https://registry.npmjs.org/serve-static/-/serve-static-1.14.2.tgz", + "integrity": "sha512-+TMNA9AFxUEGuC0z2mevogSnn9MXKb4fa7ngeRMJaaGv8vTwnIEkKi+QGvPt33HSnf8pRS+WGM0EbMtCJLKMBQ==", + "requires": { + "encodeurl": "~1.0.2", + "escape-html": "~1.0.3", + "parseurl": "~1.3.3", + "send": "0.17.2" + } + }, + "setprototypeof": { + "version": "1.2.0", + "resolved": "https://registry.npmjs.org/setprototypeof/-/setprototypeof-1.2.0.tgz", + "integrity": "sha512-E5LDX7Wrp85Kil5bhZv46j8jOeboKq5JMmYM3gVGdGH8xFpPWXUMsNrlODCrkoxMEeNi/XZIwuRvY4XNwYMJpw==" + }, + "socket.io": { + "version": "4.4.1", + "resolved": "https://registry.npmjs.org/socket.io/-/socket.io-4.4.1.tgz", + "integrity": "sha512-s04vrBswdQBUmuWJuuNTmXUVJhP0cVky8bBDhdkf8y0Ptsu7fKU2LuLbts9g+pdmAdyMMn8F/9Mf1/wbtUN0fg==", + "requires": { + "accepts": "~1.3.4", + "base64id": "~2.0.0", + "debug": "~4.3.2", + "engine.io": "~6.1.0", + "socket.io-adapter": "~2.3.3", + "socket.io-parser": "~4.0.4" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "socket.io-adapter": { + "version": "2.3.3", + "resolved": "https://registry.npmjs.org/socket.io-adapter/-/socket.io-adapter-2.3.3.tgz", + "integrity": "sha512-Qd/iwn3VskrpNO60BeRyCyr8ZWw9CPZyitW4AQwmRZ8zCiyDiL+znRnWX6tDHXnWn1sJrM1+b6Mn6wEDJJ4aYQ==" + }, + "socket.io-parser": { + "version": "4.0.4", + "resolved": "https://registry.npmjs.org/socket.io-parser/-/socket.io-parser-4.0.4.tgz", + "integrity": "sha512-t+b0SS+IxG7Rxzda2EVvyBZbvFPBCjJoyHuE0P//7OAsN23GItzDRdWa6ALxZI/8R5ygK7jAR6t028/z+7295g==", + "requires": { + "@types/component-emitter": "^1.2.10", + "component-emitter": "~1.3.0", + "debug": "~4.3.1" + }, + "dependencies": { + "debug": { + "version": "4.3.3", + "resolved": "https://registry.npmjs.org/debug/-/debug-4.3.3.tgz", + "integrity": "sha512-/zxw5+vh1Tfv+4Qn7a5nsbcJKPaSvCDhojn6FEl9vupwK2VCSDtEiEtqr8DFtzYFOdz63LBkxec7DYuc2jon6Q==", + "requires": { + "ms": "2.1.2" + } + }, + "ms": { + "version": "2.1.2", + "resolved": "https://registry.npmjs.org/ms/-/ms-2.1.2.tgz", + "integrity": "sha512-sGkPx+VjMtmA6MX27oA4FBFELFCZZ4S4XqeGOXCv68tT+jb3vk/RyaKWP0PTKyWtmLSM0b+adUTEvbs1PEaH2w==" + } + } + }, + "statuses": { + "version": "1.5.0", + "resolved": "https://registry.npmjs.org/statuses/-/statuses-1.5.0.tgz", + "integrity": "sha1-Fhx9rBd2Wf2YEfQ3cfqZOBR4Yow=" + }, + "toidentifier": { + "version": "1.0.1", + "resolved": "https://registry.npmjs.org/toidentifier/-/toidentifier-1.0.1.tgz", + "integrity": "sha512-o5sSPKEkg/DIQNmH43V0/uerLrpzVedkUh8tGNvaeXpfpuwjKenlSox/2O/BTlZUtEe+JG7s5YhEz608PlAHRA==" + }, + "vary": { + "version": "1.1.2", + "resolved": "https://registry.npmjs.org/vary/-/vary-1.1.2.tgz", + "integrity": "sha1-IpnwLG3tMNSllhsLn3RSShj2NPw=" + }, + "ws": { + "version": "8.2.3", + "resolved": "https://registry.npmjs.org/ws/-/ws-8.2.3.tgz", + "integrity": "sha512-wBuoj1BDpC6ZQ1B7DWQBYVLphPWkm8i9Y0/3YdHjHKHiohOJ1ws+3OccDWtH+PoC9DZD5WOTrJvNbWvjS6JWaA==", + "requires": {} + } + } +} diff --git a/node-red/package.json b/node-red/package.json new file mode 100644 index 0000000..6edc6ee --- /dev/null +++ b/node-red/package.json @@ -0,0 +1,10 @@ +{ + "name": "node-red-project", + "description": "A Node-RED Project", + "version": "0.0.1", + "private": true, + "dependencies": { + "node-red-contrib-mytimeout": "~3.2.2", + "node-red-dashboard": "~3.1.5" + } +} diff --git a/node-red/settings.js b/node-red/settings.js new file mode 100644 index 0000000..b83e560 --- /dev/null +++ b/node-red/settings.js @@ -0,0 +1,192 @@ +/** + * Copyright JS Foundation and other contributors, http://js.foundation + * + * Licensed under the Apache License, Version 2.0 (the "License"); + * you may not use this file except in compliance with the License. + * You may obtain a copy of the License at + * + * http://www.apache.org/licenses/LICENSE-2.0 + * + * Unless required by applicable law or agreed to in writing, software + * distributed under the License is distributed on an "AS IS" BASIS, + * WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. + * See the License for the specific language governing permissions and + * limitations under the License. + **/ + +/** + * PLEASE NOTE! IMPORTANT! READ! + * + * This is a modified version of the settings file. Some parts of the + * settings are actually controlled by the Home Assistant add-on. + * + * Parts that are handled by it, are removed from this settings template. + * The following configuration keys are controlled by the add-on and removed. + * + * - uiPort (port setting in the add-on log) + * - uiHost (no need to manually configure this in the add-on) + * - debugUseColors (disabled, won't work in the add-on) + * - flowFile (fixed to flows.json) + * - credentialSecret (credentials_secret in the add-on configuration) + * - userDir (is set fixed to `/config/node-red`) + * - nodesDir (is set fixed to `/config/node-red/nodes`) + * - adminAuth (known as users in the add-on configuration) + * - https (ssl settings in the add-on configuration) + * - logging.console.level (log_level in the add-on configuration) + * - httpNodeAuth (http_node settings in the add-on configuration) + * - httpStaticAuth (http_static settings in the add-on configuration) + * - httpNodeRoot (set fixed to `/endpoint` ) + * + * If you like to change those settings, some are available via the add-on + * settings/option in the Supervisor panel in Home Assistant. + */ + +module.exports = { + // Retry time in milliseconds for MQTT connections + mqttReconnectTime: 15000, + + // Retry time in milliseconds for Serial port connections + serialReconnectTime: 15000, + + // Retry time in milliseconds for TCP socket connections + //socketReconnectTime: 10000, + + // Timeout in milliseconds for TCP server socket connections + // defaults to no timeout + //socketTimeout: 120000, + + // Timeout in milliseconds for HTTP request connections + // defaults to 120 seconds + //httpRequestTimeout: 120000, + + // The maximum length, in characters, of any message sent to the debug sidebar tab + debugMaxLength: 1000, + + // The maximum number of messages nodes will buffer internally as part of their + // operation. This applies across a range of nodes that operate on message sequences. + // defaults to no limit. A value of 0 also means no limit is applied. + //nodeMaxMessageBufferLength: 0, + + // To disable the option for using local files for storing keys and certificates in the TLS configuration + // node, set this to true + //tlsConfigDisableLocalFiles: true, + + // By default, the Node-RED UI is available at http://localhost:1880/ + // The following property can be used to specify a different root path. + // If set to false, this is disabled. + //httpAdminRoot: '/admin', + + // The following property can be used in place of 'httpAdminRoot' and 'httpNodeRoot', + // to apply the same root to both parts. + //httpRoot: '/red', + + // When httpAdminRoot is used to move the UI to a different root path, the + // following property can be used to identify a directory of static content + // that should be served at http://localhost:1880/. + //httpStatic: '/home/nol/node-red-static/', + + // The maximum size of HTTP request that will be accepted by the runtime api. + // Default: 5mb + //apiMaxLength: '5mb', + + // If you installed the optional node-red-dashboard you can set it's path + // relative to httpRoot + //ui: { path: "ui" }, + + // The following property can be used to disable the editor. The admin API + // is not affected by this option. To disable both the editor and the admin + // API, use either the httpRoot or httpAdminRoot properties + //disableEditor: false, + + // The following property can be used to configure cross-origin resource sharing + // in the HTTP nodes. + // See https://github.com/troygoode/node-cors#configuration-options for + // details on its contents. The following is a basic permissive set of options: + //httpNodeCors: { + // origin: "*", + // methods: "GET,PUT,POST,DELETE" + //}, + + // If you need to set an http proxy please set an environment variable + // called http_proxy (or HTTP_PROXY) outside of Node-RED in the operating system. + // For example - http_proxy=http://myproxy.com:8080 + // (Setting it here will have no effect) + // You may also specify no_proxy (or NO_PROXY) to supply a comma separated + // list of domains to not proxy, eg - no_proxy=.acme.co,.acme.co.uk + + // The following property can be used to add a custom middleware function + // in front of all http in nodes. This allows custom authentication to be + // applied to all http in nodes, or any other sort of common request processing. + //httpNodeMiddleware: function(req,res,next) { + // // Handle/reject the request, or pass it on to the http in node by calling next(); + // // Optionally skip our rawBodyParser by setting this to true; + // //req.skipRawBodyParser = true; + // next(); + //}, + + // The following property can be used to verify websocket connection attempts. + // This allows, for example, the HTTP request headers to be checked to ensure + // they include valid authentication information. + //webSocketNodeVerifyClient: function(info) { + // // 'info' has three properties: + // // - origin : the value in the Origin header + // // - req : the HTTP request + // // - secure : true if req.connection.authorized or req.connection.encrypted is set + // // + // // The function should return true if the connection should be accepted, false otherwise. + // // + // // Alternatively, if this function is defined to accept a second argument, callback, + // // it can be used to verify the client asynchronously. + // // The callback takes three arguments: + // // - result : boolean, whether to accept the connection or not + // // - code : if result is false, the HTTP error status to return + // // - reason: if result is false, the HTTP reason string to return + //}, + + // Anything in this hash is globally available to all functions. + // It is accessed as context.global. + // eg: + // functionGlobalContext: { os:require('os') } + // can be accessed in a function block as: + // context.global.os + + functionGlobalContext: { + // os:require('os'), + // jfive:require("johnny-five"), + // j5board:require("johnny-five").Board({repl:false}) + }, + + // The following property can be used to order the categories in the editor + // palette. If a node's category is not in the list, the category will get + // added to the end of the palette. + // If not set, the following default order is used: + paletteCategories: [ + "home_assistant", + "subflows", + "common", + "function", + "network", + "sequence", + "parser", + "storage", + ], + + // Configure the logging output + logging: { + // Only console logging is currently supported + console: { + // Whether or not to include metric events in the log output + metrics: false, + // Whether or not to include audit events in the log output + audit: false, + }, + }, + + // Customising the editor + editorTheme: { + projects: { + // To enable the Projects feature, set this value to true + enabled: false, + }, + }, +}; diff --git a/secrets.yaml b/secrets.yaml deleted file mode 100644 index 5888261..0000000 --- a/secrets.yaml +++ /dev/null @@ -1,8 +0,0 @@ - -# Use this file to store secrets like usernames and passwords. -# Learn more at https://www.home-assistant.io/docs/configuration/secrets/ -some_password: welcome - -xiaomi_vacuum_token: 54553270474f35576e55325450506261 -xiaomi_cloud_username: habad@hotmail.cz -xiaomi_cloud_password: Maska.MiAccount