New coordinator, new z2m

Signed-off-by: Martyn Ranyard <m@rtyn.berlin>
This commit is contained in:
Martyn 2024-11-09 15:36:35 +00:00
parent f21201c330
commit aecbdfd3b2
9 changed files with 248 additions and 0 deletions

View File

@ -0,0 +1 @@
1.33.2

View File

@ -0,0 +1,6 @@
#!/bin/bash
filename=$(date '+%Y%m%d%H%M%S').tgz
for i in $(talosctl -n 192.168.1.26 list /var/mnt/storage/zigbee2mqtt | grep 192.168 | tail -n 4 | awk '{print $2}'); do talosctl -n 192.168.1.26 read /var/mnt/storage/zigbee2mqtt/$i >$i; done
tar czf ${filename} $(talosctl -n 192.168.1.26 list /var/mnt/storage/zigbee2mqtt | grep 192.168 | tail -n 4 | awk '{print $2}' | xargs echo)
rm $(talosctl -n 192.168.1.26 list /var/mnt/storage/zigbee2mqtt | grep 192.168 | tail -n 4 | awk '{print $2}' | xargs echo)
echo copy to https://minio.service.consul/browser/backups/emlnYmVlMm1xdHQv

View File

@ -0,0 +1,81 @@
---
apiVersion: v1
kind: ConfigMap
metadata:
labels:
app.kubernetes.io/instance: zigbee2mqtt
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: zigbee2mqtt
app.kubernetes.io/version: 1.19.1
helm.sh/chart: zigbee2mqtt-9.4.2
name: zigbee2mqtt-settings
namespace: zigbee2mqtt
data:
configuration.yaml: |
advanced:
homeassistant_discovery_topic: homeassistant
homeassistant_status_topic: homeassistant/status
last_seen: ISO_8601
log_level: debug
log_output:
- console
channel: 25
network_key:
- 140
- 18
- 129
- 36
- 87
- 2
- 242
- 222
- 178
- 205
- 177
- 160
- 9
- 212
- 115
- 122
experimental:
new_api: true
frontend:
port: 8080
homeassistant: true
serial:
port: 'tcp://ser2net.ser2net.svc.cluster.local:3001'
mqtt:
base_topic: zigbee2mqtt
include_device_information: true
server: 'mqtt://mosquitto.martyn.berlin'
permit_join: false
external_converters:
- ledvanceA60S.js
ledvanceA60S.js: |
const fz = require('zigbee-herdsman-converters/converters/fromZigbee');
const tz = require('zigbee-herdsman-converters/converters/toZigbee');
const exposes = require('zigbee-herdsman-converters/lib/exposes');
const reporting = require('zigbee-herdsman-converters/lib/reporting');
const extend = require('zigbee-herdsman-converters/lib/extend');
const ota = require('zigbee-herdsman-converters/lib/ota');
const tuya = require('zigbee-herdsman-converters/lib/tuya');
const e = exposes.presets;
const ea = exposes.access;
const definition = {
zigbeeModel: ['A60S RGBW'],
model: 'A60S RGBW',
vendor: 'Ledvance',
description: 'Ledvance Classic E27 Multicolor',
// Note that fromZigbee, toZigbee and exposes are missing here since we use extend here.
// Extend contains a default set of fromZigbee/toZigbee converters and expose for common device types.
// The following extends are available:
// - extend.switch
// - extend.light_onoff_brightness
// - extend.light_onoff_brightness_colortemp
// - extend.light_onoff_brightness_color
// - extend.light_onoff_brightness_colortemp_color
extend: extend.light_onoff_brightness_colortemp_color(),
};
module.exports = definition;

View File

@ -0,0 +1,96 @@
apiVersion: apps/v1
kind: Deployment
metadata:
labels:
app.kubernetes.io/instance: zigbee2mqtt
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: zigbee2mqtt
app.kubernetes.io/version: 1.19.1
helm.sh/chart: zigbee2mqtt-9.4.2
annotations:
configmap.reloader.stakater.com/reload: "zigbee2mqtt-settings"
name: zigbee2mqtt
namespace: zigbee2mqtt
spec:
replicas: 1
revisionHistoryLimit: 3
selector:
matchLabels:
app.kubernetes.io/instance: zigbee2mqtt
app.kubernetes.io/name: zigbee2mqtt
strategy:
type: Recreate
template:
metadata:
labels:
app.kubernetes.io/instance: zigbee2mqtt
app.kubernetes.io/name: zigbee2mqtt
spec:
automountServiceAccountToken: true
initContainers:
- command:
- /bin/sh
- -c
- cp /configs/ledvanceA60S.js /data/;
image: alpine:latest
imagePullPolicy: IfNotPresent
name: copy
volumeMounts:
- mountPath: /data
name: data
- mountPath: /configs/
name: zigbee2mqtt-settings
containers:
- env:
- name: ZIGBEE2MQTT_DATA
value: /data
image: koenkk/zigbee2mqtt:1.35.2
imagePullPolicy: IfNotPresent
livenessProbe:
failureThreshold: 3
initialDelaySeconds: 0
periodSeconds: 10
tcpSocket:
port: 8080
timeoutSeconds: 1
name: zigbee2mqtt
ports:
- containerPort: 8080
name: http
protocol: TCP
readinessProbe:
failureThreshold: 3
initialDelaySeconds: 0
periodSeconds: 10
tcpSocket:
port: 8080
timeoutSeconds: 1
securityContext:
capabilities:
add:
- NET_ADMIN
- NET_RAW
- SYS_ADMIN
privileged: true
startupProbe:
failureThreshold: 30
initialDelaySeconds: 0
periodSeconds: 5
tcpSocket:
port: 8080
timeoutSeconds: 1
volumeMounts:
- mountPath: /data
name: data
dnsPolicy: ClusterFirstWithHostNet
enableServiceLinks: true
hostNetwork: true
serviceAccountName: default
volumes:
- configMap:
name: zigbee2mqtt-settings
name: zigbee2mqtt-settings
- name: data
persistentVolumeClaim:
claimName: zigbee2mqtt

View File

@ -0,0 +1,10 @@
apiVersion: kustomize.config.k8s.io/v1beta1
kind: Kustomization
namespace: zigbee2mqtt
resources:
- namespace.yaml
- configmap.yaml
- deploy.yaml
- pvc.yaml
- svc.yaml

View File

@ -0,0 +1,6 @@
apiVersion: v1
kind: Namespace
metadata:
labels:
name: zigbee2mqtt
name: zigbee2mqtt

View File

@ -0,0 +1,11 @@
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: zigbee2mqtt
spec:
accessModes:
- ReadWriteOnce
storageClassName: longhorn-fast
resources:
requests:
storage: 128Mi

View File

@ -0,0 +1,20 @@
apiVersion: v1
kind: Service
metadata:
annotations:
external-dns.alpha.kubernetes.io/hostname: zigbee2.martyn.berlin
labels:
app.kubernetes.io/instance: zigbee2mqtt
app.kubernetes.io/managed-by: Helm
app.kubernetes.io/name: zigbee2mqtt
app.kubernetes.io/version: 1.19.1
helm.sh/chart: zigbee2mqtt-9.4.2
name: zigbee2mqtt
spec:
ports:
- port: 80
targetPort: 8080
selector:
app.kubernetes.io/instance: zigbee2mqtt
app.kubernetes.io/name: zigbee2mqtt
type: LoadBalancer

View File

@ -0,0 +1,17 @@
apiVersion: argoproj.io/v1alpha1
kind: Application
metadata:
name: zigbee2mqtt2
namespace: argocd
spec:
destination:
namespace: zigbee2mqtt2
server: https://kubernetes.default.svc
project: infra
source:
path: apps-kustomized/zigbee2mqtt2
repoURL: https://git.martyn.berlin/martyn/infra4talos
targetRevision: HEAD
syncPolicy:
automated:
selfHeal: true