⬆️ zigbee2mqtt app template v2

This commit is contained in:
auricom
2023-10-28 16:20:49 +02:00
parent 7ce1a9b5ca
commit b0d53bed08
9 changed files with 96 additions and 175 deletions

View File

@@ -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

View File

@@ -5,8 +5,5 @@ namespace: default
resources:
- ./gatus.yaml
- ./helmrelease.yaml
- ./prometheusrule.yaml
- ./volsync.yaml
- ./volume.yaml
patches:
- path: ./patches/exporter.yaml

View File

@@ -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"

View File

@@ -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

View File

@@ -30,7 +30,7 @@ metadata:
name: zigbee2mqtt
namespace: default
spec:
sourcePVC: zigbee2mqtt-config
sourcePVC: config-zigbee2mqtt-0
trigger:
schedule: "0 7 * * *"
restic:

View File

@@ -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

View File

@@ -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:

View File

@@ -6,3 +6,4 @@ namespace: kube-system
resources:
- ./aeotec-zwave-device.yaml
- ./google-coral-device.yaml
- ./zzh-zigbee-device.yaml

View File

@@ -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"] }