mirror of
https://github.com/auricom/home-cluster.git
synced 2025-09-17 18:24:14 +02:00
⬆️ zigbee2mqtt app template v2
This commit is contained in:
@@ -10,7 +10,7 @@ spec:
|
||||
chart:
|
||||
spec:
|
||||
chart: app-template
|
||||
version: 1.5.1
|
||||
version: 2.0.3
|
||||
sourceRef:
|
||||
kind: HelmRepository
|
||||
name: bjw-s
|
||||
@@ -27,67 +27,81 @@ spec:
|
||||
uninstall:
|
||||
keepHistory: false
|
||||
values:
|
||||
fullnameOverride: *app
|
||||
image:
|
||||
repository: koenkk/zigbee2mqtt
|
||||
tag: 1.33.1
|
||||
env:
|
||||
TZ: "${TIMEZONE}"
|
||||
ZIGBEE2MQTT_DATA: /data
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_DISCOVERY_TOPIC: homeassistant
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_ENTITY_ATTRIBUTES: "true"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_TRIGGERS: "true"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_STATUS_TOPIC: homeassistant/status
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LAST_SEEN: ISO_8601
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_API: "false"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_AVAILABILITY_PAYLOAD: "false"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_LEVEL: warn
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_OUTPUT: '["console"]'
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_NETWORK_KEY: "[204, 61, 75, 23, 44, 230, 24, 203, 53, 5, 248, 32, 50, 84, 44, 159]"
|
||||
ZIGBEE2MQTT_CONFIG_AVAILABILITY_ACTIVE_TIMEOUT: 60
|
||||
ZIGBEE2MQTT_CONFIG_AVAILABILITY_PASSIVE_TIMEOUT: 2000
|
||||
ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_LEGACY: "false"
|
||||
ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_RETAIN: "true"
|
||||
ZIGBEE2MQTT_CONFIG_EXPERIMENTAL_NEW_API: "true"
|
||||
ZIGBEE2MQTT_CONFIG_FRONTEND_PORT: 8080
|
||||
ZIGBEE2MQTT_CONFIG_FRONTEND_URL: "https://zigbee.${SECRET_CLUSTER_DOMAIN}"
|
||||
ZIGBEE2MQTT_CONFIG_HOMEASSISTANT: "true"
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_INCLUDE_DEVICE_INFORMATION: "true"
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_KEEPALIVE: 60
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_REJECT_UNAUTHORIZED: "true"
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_SERVER: "mqtt://emqx.default.svc.cluster.local."
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_VERSION: 5
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_USER:
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-secret
|
||||
key: user_1_username
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_PASSWORD:
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-secret
|
||||
key: user_1_password
|
||||
ZIGBEE2MQTT_CONFIG_PERMIT_JOIN: "false"
|
||||
ZIGBEE2MQTT_CONFIG_SERIAL_PORT: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
|
||||
# ZIGBEE2MQTT_CONFIG_DEVICES: devices.yaml
|
||||
# ZIGBEE2MQTT_CONFIG_GROUPS: groups.yaml
|
||||
controllers:
|
||||
main:
|
||||
type: statefulset
|
||||
annotations:
|
||||
reloader.stakater.com/auto: "true"
|
||||
containers:
|
||||
main:
|
||||
image:
|
||||
repository: ghcr.io/koenkk/zigbee2mqtt
|
||||
tag: 1.33.1
|
||||
pullPolicy: IfNotPresent
|
||||
env:
|
||||
TZ: "${TIMEZONE}"
|
||||
ZIGBEE2MQTT_DATA: /config
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_DISCOVERY_TOPIC: homeassistant
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_ENTITY_ATTRIBUTES: "true"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_LEGACY_TRIGGERS: "true"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_HOMEASSISTANT_STATUS_TOPIC: homeassistant/status
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LAST_SEEN: ISO_8601
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_API: "false"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LEGACY_AVAILABILITY_PAYLOAD: "false"
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_LEVEL: warn
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_LOG_OUTPUT: '["console"]'
|
||||
ZIGBEE2MQTT_CONFIG_ADVANCED_NETWORK_KEY: "[204, 61, 75, 23, 44, 230, 24, 203, 53, 5, 248, 32, 50, 84, 44, 159]"
|
||||
ZIGBEE2MQTT_CONFIG_AVAILABILITY_ACTIVE_TIMEOUT: 60
|
||||
ZIGBEE2MQTT_CONFIG_AVAILABILITY_PASSIVE_TIMEOUT: 2000
|
||||
ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_LEGACY: "false"
|
||||
ZIGBEE2MQTT_CONFIG_DEVICE_OPTIONS_RETAIN: "true"
|
||||
ZIGBEE2MQTT_CONFIG_EXPERIMENTAL_NEW_API: "true"
|
||||
ZIGBEE2MQTT_CONFIG_FRONTEND_PORT: 8080
|
||||
ZIGBEE2MQTT_CONFIG_FRONTEND_URL: "https://zigbee.${SECRET_CLUSTER_DOMAIN}"
|
||||
ZIGBEE2MQTT_CONFIG_HOMEASSISTANT: "true"
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_INCLUDE_DEVICE_INFORMATION: "true"
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_KEEPALIVE: 60
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_REJECT_UNAUTHORIZED: "true"
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_SERVER: "mqtt://emqx.default.svc.cluster.local."
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_VERSION: 5
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_USER:
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-secret
|
||||
key: user_1_username
|
||||
ZIGBEE2MQTT_CONFIG_MQTT_PASSWORD:
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-secret
|
||||
key: user_1_password
|
||||
ZIGBEE2MQTT_CONFIG_PERMIT_JOIN: "false"
|
||||
ZIGBEE2MQTT_CONFIG_SERIAL_PORT: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
|
||||
# ZIGBEE2MQTT_CONFIG_DEVICES: devices.yaml
|
||||
# ZIGBEE2MQTT_CONFIG_GROUPS: groups.yaml
|
||||
securityContext:
|
||||
privileged: true
|
||||
resources:
|
||||
requests:
|
||||
cpu: 10m
|
||||
memory: 128Mi
|
||||
limits:
|
||||
memory: 512Mi
|
||||
pod:
|
||||
nodeSelector:
|
||||
zzh.feature.node.kubernetes.io/zigbee: "true"
|
||||
statefulset:
|
||||
volumeClaimTemplates:
|
||||
- name: config
|
||||
accessMode: ReadWriteOnce
|
||||
size: 1Gi
|
||||
storageClass: rook-ceph-block
|
||||
globalMounts:
|
||||
- path: /config
|
||||
service:
|
||||
main:
|
||||
ports:
|
||||
http:
|
||||
port: &port 8080
|
||||
metrics:
|
||||
enabled: true
|
||||
port: 80
|
||||
serviceMonitor:
|
||||
main:
|
||||
enabled: true
|
||||
endpoints:
|
||||
- port: metrics
|
||||
scheme: http
|
||||
path: /metrics
|
||||
interval: 1m
|
||||
scrapeTimeout: 10s
|
||||
ingress:
|
||||
main:
|
||||
enabled: true
|
||||
@@ -99,27 +113,17 @@ spec:
|
||||
- host: &host "zigbee.${SECRET_CLUSTER_DOMAIN}"
|
||||
paths:
|
||||
- path: /
|
||||
pathType: Prefix
|
||||
service:
|
||||
name: main
|
||||
port: http
|
||||
tls:
|
||||
- hosts:
|
||||
- *host
|
||||
securityContext:
|
||||
privileged: true
|
||||
persistence:
|
||||
config:
|
||||
enabled: true
|
||||
existingClaim: zigbee2mqtt-config
|
||||
mountPath: "/data"
|
||||
usb:
|
||||
enabled: true
|
||||
type: hostPath
|
||||
hostPath: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
|
||||
hostPathType: CharDevice
|
||||
nodeSelector:
|
||||
feature.node.kubernetes.io/custom-zigbee: "true"
|
||||
resources:
|
||||
requests:
|
||||
memory: 100Mi
|
||||
cpu: 100m
|
||||
limits:
|
||||
memory: 700Mi
|
||||
globalMounts:
|
||||
- path: /dev/serial/by-id/usb-1a86_USB_Serial-if00-port0
|
||||
|
@@ -5,8 +5,5 @@ namespace: default
|
||||
resources:
|
||||
- ./gatus.yaml
|
||||
- ./helmrelease.yaml
|
||||
- ./prometheusrule.yaml
|
||||
- ./volsync.yaml
|
||||
- ./volume.yaml
|
||||
patches:
|
||||
- path: ./patches/exporter.yaml
|
||||
|
@@ -1,40 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://raw.githubusercontent.com/fluxcd-community/flux2-schemas/main/helmrelease-helm-v2beta1.json
|
||||
apiVersion: helm.toolkit.fluxcd.io/v2beta1
|
||||
kind: HelmRelease
|
||||
metadata:
|
||||
name: &app zigbee2mqtt
|
||||
namespace: default
|
||||
spec:
|
||||
values:
|
||||
additionalContainers:
|
||||
exporter:
|
||||
name: exporter
|
||||
image: docker.io/kpetrem/mqtt-exporter:latest@sha256:fbff8472a18239297e699955b43695f714e4fa6fdd7a36875a65375e2dfa8e67
|
||||
env:
|
||||
- name: LOG_LEVEL
|
||||
value: DEBUG
|
||||
- name: LOG_MQTT_MESSAGE
|
||||
value: "True"
|
||||
- name: MQTT_ADDRESS
|
||||
value: emqx.default.svc.cluster.local
|
||||
- name: MQTT_TOPIC
|
||||
value: "zigbee2mqtt/#"
|
||||
- name: MQTT_V5_PROTOCOL
|
||||
value: "True"
|
||||
- name: MQTT_USERNAME
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-secret
|
||||
key: user_1_username
|
||||
- name: MQTT_PASSWORD
|
||||
valueFrom:
|
||||
secretKeyRef:
|
||||
name: emqx-secret
|
||||
key: user_1_password
|
||||
- name: PROMETHEUS_PORT
|
||||
value: &port 80
|
||||
- name: PROMETHEUS_PREFIX
|
||||
value: zigbee2mqtt_
|
||||
- name: ZIGBEE2MQTT_AVAILABILITY
|
||||
value: "True"
|
@@ -1,34 +0,0 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/prometheusrule_v1.json
|
||||
apiVersion: monitoring.coreos.com/v1
|
||||
kind: PrometheusRule
|
||||
metadata:
|
||||
name: zigbee2mqtt-exporter
|
||||
namespace: default
|
||||
spec:
|
||||
groups:
|
||||
- name: zigbee2mqtt-exporter.rules
|
||||
rules:
|
||||
- alert: Zigbee2MqttExporterAbsent
|
||||
annotations:
|
||||
summary: Zigbee2Mqtt Exporter has disappeared from Prometheus target discovery.
|
||||
expr: absent(up{job="zigbee2mqtt"} == 1)
|
||||
for: 15m
|
||||
labels:
|
||||
severity: critical
|
||||
# - alert: Zigbee2MqttUnavailable
|
||||
# annotations:
|
||||
# summary: The zigbee device connection is lost,
|
||||
# connection on topic {{$labels.topic}} is down.
|
||||
# expr: zigbee2mqtt_zigbee_availability == 0
|
||||
# for: 60m
|
||||
# labels:
|
||||
# severity: critical
|
||||
- alert: Zigbee2MqttBatteryLow
|
||||
annotations:
|
||||
summary: The zigbee device battery level is low,
|
||||
battery level on topic {{$labels.topic}} is at {{$value}}%.
|
||||
expr: zigbee2mqtt_battery < 10
|
||||
for: 60m
|
||||
labels:
|
||||
severity: warning
|
@@ -30,7 +30,7 @@ metadata:
|
||||
name: zigbee2mqtt
|
||||
namespace: default
|
||||
spec:
|
||||
sourcePVC: zigbee2mqtt-config
|
||||
sourcePVC: config-zigbee2mqtt-0
|
||||
trigger:
|
||||
schedule: "0 7 * * *"
|
||||
restic:
|
||||
|
@@ -101,19 +101,6 @@ spec:
|
||||
tls:
|
||||
- hosts:
|
||||
- *host
|
||||
pod:
|
||||
nodeSelector:
|
||||
aeotec.feature.node.kubernetes.io/zwave: "true"
|
||||
statefulset:
|
||||
volumeClaimTemplates:
|
||||
- name: config
|
||||
accessMode: ReadWriteOnce
|
||||
size: 1Gi
|
||||
storageClass: ceph-block
|
||||
globalMounts:
|
||||
- path: /usr/src/app/store
|
||||
securityContext:
|
||||
privileged: true
|
||||
persistence:
|
||||
usb:
|
||||
type: hostPath
|
||||
|
@@ -52,18 +52,6 @@ spec:
|
||||
- vendor
|
||||
- device
|
||||
custom:
|
||||
- name: "zwave"
|
||||
matchOn:
|
||||
- usbId:
|
||||
class: ["02"]
|
||||
vendor: ["0658"]
|
||||
device: ["0200"]
|
||||
- name: "zigbee"
|
||||
matchOn:
|
||||
- usbId:
|
||||
class: ["ff"]
|
||||
vendor: ["1a86"]
|
||||
device: ["7523"]
|
||||
- name: "rflink"
|
||||
matchOn:
|
||||
- usbId:
|
||||
|
@@ -6,3 +6,4 @@ namespace: kube-system
|
||||
resources:
|
||||
- ./aeotec-zwave-device.yaml
|
||||
- ./google-coral-device.yaml
|
||||
- ./zzh-zigbee-device.yaml
|
||||
|
@@ -0,0 +1,18 @@
|
||||
---
|
||||
# yaml-language-server: $schema=https://kubernetes-schemas.devbu.io/nfd.k8s-sigs.io/nodefeaturerule_v1alpha1.json
|
||||
apiVersion: nfd.k8s-sigs.io/v1alpha1
|
||||
kind: NodeFeatureRule
|
||||
metadata:
|
||||
name: zzh-zigbee-device
|
||||
spec:
|
||||
rules:
|
||||
- # zzh! CC2652R Multiprotocol RF Stick
|
||||
name: zzh.zigbee
|
||||
labels:
|
||||
zzh.feature.node.kubernetes.io/zigbee: "true"
|
||||
matchFeatures:
|
||||
- feature: usb.device
|
||||
matchExpressions:
|
||||
class: { op: In, value: ["ff"] }
|
||||
vendor: { op: In, value: ["1a86"] }
|
||||
device: { op: In, value: ["7523"] }
|
Reference in New Issue
Block a user