From 3a10536e71494a1294b96ac6f583b9f34024bdfe Mon Sep 17 00:00:00 2001 From: Simon Milvert Date: Mon, 19 Jan 2026 21:22:47 +0100 Subject: [PATCH] =?UTF-8?q?Added=20stucture=20in=20ha=20+=20authelia=20f?= =?UTF-8?q?=C3=B6r=20nodered?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- carconnectivity/carconnectivity.json | 8 + docker-compose.service.yml | 2 +- docker-compose.yml | 50 +++- evcc/evcc.yaml | 2 +- ha/config/input_select/house/house.yaml | 9 + ha/config/input_select/people/simon.yaml | 18 ++ ha/config/packages/effekt.yaml | 31 ++ ha/config/packages/group.yaml | 11 - .../packages/house/arbetsrum/heating.yaml | 83 ++++++ .../house/people/simon/arrives_home.yaml | 13 + .../packages/house/people/simon/simon.yaml | 12 + .../house/people/simon/work_state.yaml | 64 ++++ ha/config/packages/id4.yaml | 85 ------ ha/config/packages/rflink.yaml | 30 -- ha/config/packages/sonos.yaml | 5 - nextcloud-docker/docker-compose.yml | 31 ++ node-red/settings.js | 281 ++++++++++++++++++ traefik.yml | 17 +- traefik/static_config.yml | 2 +- 19 files changed, 604 insertions(+), 150 deletions(-) create mode 100644 ha/config/input_select/house/house.yaml create mode 100644 ha/config/input_select/people/simon.yaml create mode 100644 ha/config/packages/effekt.yaml delete mode 100644 ha/config/packages/group.yaml create mode 100644 ha/config/packages/house/arbetsrum/heating.yaml create mode 100644 ha/config/packages/house/people/simon/arrives_home.yaml create mode 100644 ha/config/packages/house/people/simon/simon.yaml create mode 100644 ha/config/packages/house/people/simon/work_state.yaml delete mode 100644 ha/config/packages/id4.yaml delete mode 100644 ha/config/packages/rflink.yaml create mode 100644 nextcloud-docker/docker-compose.yml create mode 100644 node-red/settings.js diff --git a/carconnectivity/carconnectivity.json b/carconnectivity/carconnectivity.json index 33dd20e..f50e75b 100644 --- a/carconnectivity/carconnectivity.json +++ b/carconnectivity/carconnectivity.json @@ -25,7 +25,15 @@ "type": "mqtt_homeassistant", "config": {} } + , + { + "type": "database", + "config": { + "db_url": "sqlite:///carconnectivity.db" + } + } ] } } + diff --git a/docker-compose.service.yml b/docker-compose.service.yml index 45256eb..3ad0848 100644 --- a/docker-compose.service.yml +++ b/docker-compose.service.yml @@ -13,7 +13,7 @@ services: - backend ports: - "8088:8080" - image: koenkk/zigbee2mqtt:2.6 + image: koenkk/zigbee2mqtt:2.7 restart: always volumes: - ./zigbee_home_2:/app/data diff --git a/docker-compose.yml b/docker-compose.yml index 169b074..3eb9011 100644 --- a/docker-compose.yml +++ b/docker-compose.yml @@ -26,6 +26,8 @@ secrets: file: $SECRETSDIR/skoda_password skoda_spin: file: $SECRETSDIR/skoda_spin + carconnect_grafana_pw: + file: $SECRETSDIR/carconnect_grafana_pw ########################### EXTENSION FIELDS ########################## @@ -346,7 +348,7 @@ services: ha: container_name: ha - image: homeassistant/home-assistant:2025.9 + image: homeassistant/home-assistant:2026.1 restart: always privileged: true networks: @@ -468,7 +470,7 @@ services: command: - evcc container_name: evcc - image: evcc/evcc:0.207.5 + image: evcc/evcc:0.300.3 ports: - 7070:7070/tcp volumes: @@ -513,9 +515,8 @@ services: - "traefik.http.routers.grafana-secure.tls=true" node-red: - image: nodered/node-red:3.1.6 - - # image: nodered/node-red-dev:3.0.0-beta.4-14 + image: nodered/node-red:4.1 + # command: ["node-red", "--safe"] container_name: "node-red" logging: driver: "json-file" @@ -534,12 +535,14 @@ services: user: ${UID} volumes: - ${DIR_LOCAL}/nodered:/data + - ./node-red/settings.js:/data/settings.js labels: - diun.enable=true - "traefik.enable=true" - "traefik.http.services.node-red-service.loadbalancer.server.port=1880" - "traefik.http.routers.node-red-secure.entrypoints=web-secure" - "traefik.http.routers.node-red-secure.rule=Host(`nodered.${DOMAIN}`)" + - "traefik.http.routers.node-red-secure.middlewares=chain-authelia@file" - "traefik.http.routers.node-red-secure.tls.certresolver=milvert_dns" - "traefik.http.routers.node-red-secure.tls=true" @@ -822,10 +825,10 @@ services: volumes: - ./carconnectivity/carconnectivity.json:/carconnectivity.json - ./carconnectivity/entrypoint.sh:/root/entrypoint.sh:ro - - ./carconnectivity/state:/state - - ${DIR_LOCAL}/carconnectivity:/state + - ${DIR_LOCAL}/carconnectivity/state:/state + - ${DIR_LOCAL}/carconnectivity/sqlite.db:/carconnectivity.db:rw environment: - - ADDITIONAL_INSTALLS=carconnectivity-plugin-mqtt_homeassistant + - "ADDITIONAL_INSTALLS=carconnectivity-plugin-mqtt_homeassistant carconnectivity-plugin-database" - TZ=$TZ - LC_ALL=sv_SE - TMPDIR=/state @@ -840,6 +843,37 @@ services: labels: - diun.enable=true + carconnectivity-grafana: + image: "ghcr.io/tillsteinbach/carconnectivity-grafana:edge" + container_name: carconnect-grafana + volumes: + - ${DIR_LOCAL}/carconnect-grafana:/var/lib/grafana + - ${DIR_LOCAL}/carconnectivity/sqlite.db:/carconnectivity.db:ro + - ./carconnectivity/carconnectivity-sqlite.yaml:/etc/grafana/provisioning/datasources/carconnectivity-sqlite.yml + environment: + - PUID=1000 + - PGID=1004 + - TZ=Europe/Stockholm + - GF_SECURITY_ADMIN_USER=admin + - GF_SECURITY_ADMIN_PASSWORD_FILE=/run/secrets/carconnect_grafana_pw + - GF_PLUGINS_TRUSTED_FILES=/carconnectivity.db + secrets: + - carconnect_grafana_pw + restart: unless-stopped + ports: + - "3123:3000" + networks: + - backend + labels: + - diun.enable=true + - "traefik.enable=true" + - "traefik.http.services.carconnect-grafana.loadbalancer.server.port=3000" + - "traefik.http.routers.carconnect-grafana.entrypoints=web-secure" + - "traefik.http.routers.carconnect-grafana.rule=Host(`skoda.${DOMAIN}`)" + - "traefik.http.routers.carconnect-grafana.middlewares=chain-no-auth@file" + - "traefik.http.routers.carconnect-grafana.tls.certresolver=milvert_dns" + - "traefik.http.routers.carconnect-grafana.tls=true" + networks: frontend: external: true diff --git a/evcc/evcc.yaml b/evcc/evcc.yaml index 8699907..838a1c7 100644 --- a/evcc/evcc.yaml +++ b/evcc/evcc.yaml @@ -2,7 +2,7 @@ sponsortoken: eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJpc3MiOiJldmNjLmlvIiwic3ViI log: info levels: - tariff: trace + tariff: info interval: 30s diff --git a/ha/config/input_select/house/house.yaml b/ha/config/input_select/house/house.yaml new file mode 100644 index 0000000..9958a20 --- /dev/null +++ b/ha/config/input_select/house/house.yaml @@ -0,0 +1,9 @@ +house_mode: + name: Husläge + options: + - HOME + - AWAY + - GUEST + icon: mdi:home-account + + \ No newline at end of file diff --git a/ha/config/input_select/people/simon.yaml b/ha/config/input_select/people/simon.yaml new file mode 100644 index 0000000..000483a --- /dev/null +++ b/ha/config/input_select/people/simon.yaml @@ -0,0 +1,18 @@ +simon_location: + name: Simon – Location + options: + - Home + - Just Arrived + - Just Left + - Away + - Extended Away + initial: Away + +simon_work_state: + name: Simon - Arbetsläge + options: + - Hemma + - På jobbet + - Okänd + initial: Okänd + icon: mdi:briefcase diff --git a/ha/config/packages/effekt.yaml b/ha/config/packages/effekt.yaml new file mode 100644 index 0000000..8f65a5c --- /dev/null +++ b/ha/config/packages/effekt.yaml @@ -0,0 +1,31 @@ +sensor: + + # A. Konverterar källsensorn (kW) till Watt (W) +# - platform: template +# sensors: +# total_power_w: +# friendly_name: "Total Effekt i Watt" +# unit_of_measurement: "W" +# value_template: "{{ (states('sensor.dsmr_reading_electricity_currently_delivered') | float(0) * 1000) | round(0) }}" +# +# # B. 60-minuters medeleffekt (Filter-sensorn) +# - platform: filter +# name: "Medeleffekt 60 minuter" +# entity_id: sensor.total_power_w +# filters: +# # Filter 1: time_throttle (Använder 'filter' nyckeln) +# - filter: time_throttle +# duration: "00:01:00" # Mätpunkter tillåts max varje minut +# +# # Filter 2: mean (Använder 'filter' nyckeln) +# - filter: mean # <-- KORRIGERAD: Använder 'filter: mean' +# window_size: 60 # Beräknar rullande medelvärde över de senaste 60 mätpunkterna +# +# # C. Högsta Medeleffekt Månad (Max/Min-sensorn) +# - platform: max_min +# name: "Högsta Timmedeleffekt Månad" +# entity_id: sensor.medeleffekt_60_minuter +# type: max +# unique_id: ellevio_max_timme_manad +# max_age: +# days: 35 \ No newline at end of file diff --git a/ha/config/packages/group.yaml b/ha/config/packages/group.yaml deleted file mode 100644 index 55c1419..0000000 --- a/ha/config/packages/group.yaml +++ /dev/null @@ -1,11 +0,0 @@ -group: - jul_group: - entities: - - light.jul_angel_ada - - switch.nodeid_7_nodeid_7_switch - - switch.ute_garage_slinga - - switch.nodeid_14_nodeid_14_switch - - switch.nodeid_4_nodeid_4_switch - - switch.nodeid_26_nodeid_26_switch - - switch.nodeid_27_nodeid_27_switch - \ No newline at end of file diff --git a/ha/config/packages/house/arbetsrum/heating.yaml b/ha/config/packages/house/arbetsrum/heating.yaml new file mode 100644 index 0000000..1dce147 --- /dev/null +++ b/ha/config/packages/house/arbetsrum/heating.yaml @@ -0,0 +1,83 @@ +#automation: +# - id: arbetsrum_reglering_simon_work_state +# alias: Arbetsrum – reglering med inkrementell styrning +# trigger: +# - platform: state +# entity_id: input_select.simon_work_state +# - platform: state +# entity_id: sensor.h015l_device_temperature +# mode: single +# action: +# - choose: +# # === Jobbar hemma === +# - conditions: +# - condition: state +# entity_id: input_select.simon_work_state +# state: "Hemma" +# sequence: +# - choose: +# # för kallt +# - conditions: +# - condition: numeric_state +# entity_id: sensor.h015l_device_temperature +# below: 19.5 +# sequence: +# - service: climate.set_temperature +# target: +# entity_id: climate.arbetsrum +# data: +# temperature: > +# {{ state_attr('climate.arbetsrum', 'temperature') | float + 1 }} +# # för varmt +# - conditions: +# - condition: numeric_state +# entity_id: sensor.h015l_device_temperature +# above: 20.5 +# sequence: +# - service: climate.set_temperature +# target: +# entity_id: climate.arbetsrum +# data: +# temperature: > +# {{ state_attr('climate.arbetsrum', 'temperature') | float - 1 }} +# default: [] +# +# # === Inte hemmaläge === +# - conditions: +# - condition: or +# conditions: +# - condition: state +# entity_id: input_select.simon_work_state +# state: "På jobbet" +# - condition: state +# entity_id: input_select.simon_work_state +# state: "Okänd" +# sequence: +# - choose: +# # för kallt (håll runt 17) +# - conditions: +# - condition: numeric_state +# entity_id: sensor.h015l_device_temperature +# below: 16.5 +# sequence: +# - service: climate.set_temperature +# target: +# entity_id: climate.arbetsrum +# data: +# temperature: > +# {{ state_attr('climate.arbetsrum', 'temperature') | float + 1 }} +# # för varmt +# - conditions: +# - condition: numeric_state +# entity_id: sensor.h015l_device_temperature +# above: 17.5 +# sequence: +# - service: climate.set_temperature +# target: +# entity_id: climate.arbetsrum +# data: +# temperature: > +# {{ state_attr('climate.arbetsrum', 'temperature') | float - 1 }} +# default: [] +# default: [] +# \ No newline at end of file diff --git a/ha/config/packages/house/people/simon/arrives_home.yaml b/ha/config/packages/house/people/simon/arrives_home.yaml new file mode 100644 index 0000000..d0454fd --- /dev/null +++ b/ha/config/packages/house/people/simon/arrives_home.yaml @@ -0,0 +1,13 @@ +automation: + - id: simon_arrives_home + alias: Simon – arrives home + trigger: + - platform: state + entity_id: binary_sensor.simon_presence + to: "on" + action: + - service: input_select.select_option + target: + entity_id: input_select.location + data: + option: "Home" \ No newline at end of file diff --git a/ha/config/packages/house/people/simon/simon.yaml b/ha/config/packages/house/people/simon/simon.yaml new file mode 100644 index 0000000..2105b25 --- /dev/null +++ b/ha/config/packages/house/people/simon/simon.yaml @@ -0,0 +1,12 @@ + +binary_sensor: + - platform: bayesian + name: "Simon Presence" + prior: 0.7 + probability_threshold: 0.9 + observations: + - platform: state + entity_id: person.simon + to_state: "home" + prob_given_true: 0.95 + prob_given_false: 0.15 \ No newline at end of file diff --git a/ha/config/packages/house/people/simon/work_state.yaml b/ha/config/packages/house/people/simon/work_state.yaml new file mode 100644 index 0000000..530f270 --- /dev/null +++ b/ha/config/packages/house/people/simon/work_state.yaml @@ -0,0 +1,64 @@ +automation: + - id: simon_work_home + alias: Simon – works from home + trigger: + - platform: state + entity_id: + - device_tracker.rd0203606 + - device_tracker.simon_jobbdator + condition: + - condition: time + after: "08:00:00" + before: "17:00:00" + weekday: + - mon + - tue + - wed + - thu + - fri + - condition: or + conditions: + - condition: state + entity_id: device_tracker.rd0203606 + state: "home" + - condition: state + entity_id: device_tracker.simon_jobbdator + state: "home" + action: + - service: input_select.select_option + target: + entity_id: input_select.simon_work_state + data: + option: "Hemma" + + - id: simon_work_office + alias: Simon – works at office + trigger: + - platform: state + entity_id: + - device_tracker.rd0203606 + - device_tracker.simon_jobbdator + condition: + - condition: time + after: "08:00:00" + before: "17:00:00" + weekday: + - mon + - tue + - wed + - thu + - fri + - condition: and + conditions: + - condition: state + entity_id: device_tracker.rd0203606 + state: "not_home" + - condition: state + entity_id: device_tracker.simon_jobbdator + state: "not_home" + action: + - service: input_select.select_option + target: + entity_id: input_select.simon_work_state + data: + option: "På jobbet" diff --git a/ha/config/packages/id4.yaml b/ha/config/packages/id4.yaml deleted file mode 100644 index 8ae743c..0000000 --- a/ha/config/packages/id4.yaml +++ /dev/null @@ -1,85 +0,0 @@ -mqtt: - lock: - - name: jaffa_locked - unique_id: uniqueid__jaffa_locked - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/domains/access/accessStatus/doorLockStatus" - command_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/controls/access" - payload_lock: "locked" - payload_unlock: "unlocked" - device: - identifiers: jaffa - - sensor: - - name: jaffa_long - unique_id: uniqueid__jaffa_long - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/parking/parkingPosition/longitude" - unit_of_measurement: ° - entity_category: diagnostic - device: - identifiers: jaffa - - - name: jaffa_lat - unique_id: uniqueid__jaffa_lat - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/parking/parkingPosition/latitude" - unit_of_measurement: ° - entity_category: diagnostic - device: - identifiers: jaffa - - - name: jaffa_parikingtime - unique_id: uniqueid__jaffa_parikingtime - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/parking/parkingPosition/carCapturedTimestamp" - value_template: "{{ as_datetime(value) }}" - device_class: "timestamp" - entity_category: diagnostic - device: - identifiers: jaffa - - - name: jaffa_battery_soc - unique_id: uniqueid__jaffa_battery_soc - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/domains/charging/batteryStatus/currentSOC_pct" - unit_of_measurement: "%" - device_class: battery - device: - identifiers: jaffa - - - name: jaffa_battery_target_soc - unique_id: uniqueid_jjaffa_battery_target_soc - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/domains/charging/chargingSettings/targetSOC_pct" - unit_of_measurement: "%" - device_class: battery - device: - identifiers: jaffa - - - name: jaffa_rated_battery_range_km - unique_id: jaffa_rated_battery_range_km - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/domains/charging/batteryStatus/cruisingRangeElectric_km" - unit_of_measurement: km - device_class: distance - device: - identifiers: jaffa - - - name: jaffa_odometer - unique_id: jaffa_odometer - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/domains/measurements/odometerStatus/odometer" - unit_of_measurement: km - device_class: distance - device: - identifiers: jaffa - - - name: jaffa_charge_mode - unique_id: jaffa_charge_mode - state_topic: "weconnect/0/vehicles/WVGZZZE2ZPE051949/domains/charging/chargingStatus/chargeMode" - device_class: enum - value_template: > - {% set mapper = { - '0': 'manual', - '1': 'timer', - '2': 'onlyOwnCurrent', - '3': 'preferredChargingTimes', - '4': 'timerChargingWithClimatisation', - '5': 'invalid' - } %} - {{ mapper.get(value, 'Unknown') }} - device: - identifiers: jaffa diff --git a/ha/config/packages/rflink.yaml b/ha/config/packages/rflink.yaml deleted file mode 100644 index 05548fd..0000000 --- a/ha/config/packages/rflink.yaml +++ /dev/null @@ -1,30 +0,0 @@ - -# Example configuration.yaml entry -#rflink: -# host: 172.19.0.1 -# port: 20108 - -#light: -# - platform: rflink -# automatic_add: false - #devices: - # newkaku_0008f252_1: - # name: Ute Framsidan - -#sensor: -# - platform: rflink -# automatic_add: true - -#switch: -# - platform: rflink -# device_defaults: -# fire_event: true -# devices: -# newkaku_000a134e_10: -# name: "Utebaksida brytare" -# newkaku_002c5ad2_1: -# name: "Oscar moln" -# newkaku_002c5ad2_2: -# name: "Oscar skrivbord" -# newkaku_002c5ad2_3: -# name: "Oscar tak" diff --git a/ha/config/packages/sonos.yaml b/ha/config/packages/sonos.yaml index f4a1dcf..87c91e7 100644 --- a/ha/config/packages/sonos.yaml +++ b/ha/config/packages/sonos.yaml @@ -21,8 +21,3 @@ sensor: '00:00:00' {% endif %} scan_interval: 60 - - - platform: command_line - name: Simple Test Sensor - command: "echo 'Test success'" - scan_interval: 10 \ No newline at end of file diff --git a/nextcloud-docker/docker-compose.yml b/nextcloud-docker/docker-compose.yml new file mode 100644 index 0000000..1a1e53b --- /dev/null +++ b/nextcloud-docker/docker-compose.yml @@ -0,0 +1,31 @@ +version: "3" +services: + nextcloud: + image: linuxserver/nextcloud + container_name: nextcloud + environment: + - PUID=1000 + - PGID=1000 + - TZ=Europe/Stockholm + volumes: + - :/config + - :/data + ports: + - 7999:443 + restart: unless-stopped + volumes: + - ${DIR}/nextcloud/data:/data + - ${DIR}/nextcloud/config:/config + labels: + - "traefik.enable=true" + - "traefik.http.services.nextcloud-service.loadbalancer.server.port=3000" + - "traefik.http.routers.nextcloud-secure.entrypoints=web-secure" + - "traefik.http.routers.nextcloud-secure.rule=Host(`nextcloud.${DOMAIN}`)" + - "traefik.http.routers.nextcloud-secure.tls.certresolver=milvert" + +networks: + frontend: + external: true + backend: + external: false + diff --git a/node-red/settings.js b/node-red/settings.js new file mode 100644 index 0000000..10ac105 --- /dev/null +++ b/node-red/settings.js @@ -0,0 +1,281 @@ +/** + * 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. + **/ + +// The `https` setting requires the `fs` module. Uncomment the following +// to make it available: +//var fs = require("fs"); + +module.exports = { + // the tcp port that the Node-RED web server is listening on + uiPort: process.env.PORT || 1880, + + // By default, the Node-RED UI accepts connections on all IPv4 interfaces. + // To listen on all IPv6 addresses, set uiHost to "::", + // The following property can be used to listen on a specific interface. For + // example, the following would only allow connections from the local machine. + //uiHost: "127.0.0.1", + + // 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, + + // Maximum number of messages to wait in queue while attempting to connect to TCP socket + // defaults to 1000 + //tcpMsgQueueSize: 2000, + + // 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. + //nodeMessageBufferMaxLength: 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, + + // Colourise the console output of the debug node + //debugUseColors: true, + + // The file containing the flows. If not set, it defaults to flows_.json + //flowFile: 'flows.json', + + // To enabled pretty-printing of the flow within the flow file, set the following + // property to true: + //flowFilePretty: true, + + // By default, credentials are encrypted in storage using a generated key. To + // specify your own secret, set the following property. + // If you want to disable encryption of credentials, set this property to false. + // Note: once you set this property, do not change it - doing so will prevent + // node-red from being able to decrypt your existing credentials and they will be + // lost. + credentialSecret: "min_långa_secret_som_är_säker", + + // By default, all user data is stored in a directory called `.node-red` under + // the user's home directory. To use a different location, the following + // property can be used + //userDir: '/home/nol/.node-red/', + + // Node-RED scans the `nodes` directory in the userDir to find local node files. + // The following property can be used to specify an additional directory to scan. + //nodesDir: '/home/nol/.node-red/nodes', + + // 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', + + // Some nodes, such as HTTP In, can be used to listen for incoming http requests. + // By default, these are served relative to '/'. The following property + // can be used to specifiy a different root path. If set to false, this is + // disabled. + //httpNodeRoot: '/red-nodes', + + // 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" }, + + // Securing Node-RED + // ----------------- + // To password protect the Node-RED editor and admin API, the following + // property can be used. See http://nodered.org/docs/security.html for details. + //adminAuth: { + // type: "credentials", + // users: [{ + // username: "admin", + // password: "$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN.", + // permissions: "*" + // }] + //}, + adminAuth: false, + + + // To password protect the node-defined HTTP endpoints (httpNodeRoot), or + // the static content (httpStatic), the following properties can be used. + // The pass field is a bcrypt hash of the password. + // See http://nodered.org/docs/security.html#generating-the-password-hash + //httpNodeAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + //httpStaticAuth: {user:"user",pass:"$2a$08$zZWtXTja0fB1pzD4sHCMyOCMYz2Z6dNbM6tl8sJogENOMcxWV9DN."}, + + // The following property can be used to enable HTTPS + // See http://nodejs.org/api/https.html#https_https_createserver_options_requestlistener + // for details on its contents. + // See the comment at the top of this file on how to load the `fs` module used by + // this setting. + // + //https: { + // key: fs.readFileSync('privatekey.pem'), + // cert: fs.readFileSync('certificate.pem') + //}, + + // The following property can be used to cause insecure HTTP connections to + // be redirected to HTTPS. + //requireHttps: true, + + // 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 pass custom options to the Express.js + // server used by Node-RED. For a full list of available options, refer + // to http://expressjs.com/en/api.html#app.settings.table + //httpServerOptions: { }, + + // 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 + //}, + + // The following property can be used to seed Global Context with predefined + // values. This allows extra node modules to be made available with the + // Function node. + // For example, + // functionGlobalContext: { os:require('os') } + // can be accessed in a function block as: + // global.get("os") + functionGlobalContext: { + // os:require('os'), + // jfive:require("johnny-five"), + // j5board:require("johnny-five").Board({repl:false}) + }, + // `global.keys()` returns a list of all properties set in global context. + // This allows them to be displayed in the Context Sidebar within the editor. + // In some circumstances it is not desirable to expose them to the editor. The + // following property can be used to hide any property set in `functionGlobalContext` + // from being list by `global.keys()`. + // By default, the property is set to false to avoid accidental exposure of + // their values. Setting this to true will cause the keys to be listed. + exportGlobalContextKeys: false, + + + // Context Storage + // The following property can be used to enable context storage. The configuration + // provided here will enable file-based context that flushes to disk every 30 seconds. + // Refer to the documentation for further options: https://nodered.org/docs/api/context/ + // + //contextStorage: { + // default: { + // module:"localfilesystem" + // }, + //}, + + // 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: ['subflows','flow','input','output','function','parser','social','mobile','storage','analysis','advanced'], + + // Configure the logging output + logging: { + // Only console logging is currently supported + console: { + // Level of logging to be recorded. Options are: + // fatal - only those errors which make the application unusable should be recorded + // error - record errors which are deemed fatal for a particular request + fatal errors + // warn - record problems which are non fatal + errors + fatal errors + // info - record information about the general running of the application + warn + error + fatal errors + // debug - record information which is more verbose than info + info + warn + error + fatal errors + // trace - record very detailed logging + debug + info + warn + error + fatal errors + // off - turn off all logging (doesn't affect metrics or audit) + level: "info", + // 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 + }, + tours: false, + codeEditor: { + lib: "monaco" + } + } +} diff --git a/traefik.yml b/traefik.yml index c2a5e46..4c1eeae 100644 --- a/traefik.yml +++ b/traefik.yml @@ -14,19 +14,20 @@ providers: log: level: info - # filePath: "/log/info.log" - #format: json + filePath: "/log/info.log" + format: json accessLog: filePath: "/log/access.log" bufferingSize: 100 format: json - #filters: - #statusCodes: - #- "200" - #- "300-302" - #retryAttempts: true - #minDuration: "10ms" + filters: + statusCodes: + - "200" + - "300-302" + - "500" + retryAttempts: true + minDuration: "10ms" #metrics: #influxDB: diff --git a/traefik/static_config.yml b/traefik/static_config.yml index 1132134..a5fb701 100644 --- a/traefik/static_config.yml +++ b/traefik/static_config.yml @@ -62,7 +62,7 @@ http: landet-service: loadBalancer: servers: - - url: "http://10.0.10.3:8123" + - url: "http://10.0.10.5:8123" lampa-service: loadBalancer: servers: