From 087a8619cf0ffe83044f51ba1c6a728f931217ec Mon Sep 17 00:00:00 2001 From: polyfloyd Date: Wed, 3 Jul 2024 21:47:43 +0200 Subject: [PATCH] services/power_mqtt: New config for Space 4 The power meters are not online yet, so this is not tested --- .../templates/mqtt_exporter_config.yaml | 2 +- roles/services/tasks/power_mqtt.yaml | 23 +++++++++++++------ roles/services/templates/generic.service | 2 +- roles/services/templates/power-mqtt.py | 13 +++++++---- 4 files changed, 26 insertions(+), 14 deletions(-) diff --git a/roles/monitoring/templates/mqtt_exporter_config.yaml b/roles/monitoring/templates/mqtt_exporter_config.yaml index 882cd1c..62a9690 100644 --- a/roles/monitoring/templates/mqtt_exporter_config.yaml +++ b/roles/monitoring/templates/mqtt_exporter_config.yaml @@ -15,7 +15,7 @@ export: - subscribe: bitlair/# - subscribe: bitlair/climate/+location/# - subscribe: bitlair/climate/+location/dust_mass/+size - - subscribe: bitlair/power/+group/# + - subscribe: bitlair/power/+net/+group/# - subscribe: bitlair/wifi/+ssid/# - subscribe: bitlair/state diff --git a/roles/services/tasks/power_mqtt.yaml b/roles/services/tasks/power_mqtt.yaml index afe42c3..a3adc3c 100644 --- a/roles/services/tasks/power_mqtt.yaml +++ b/roles/services/tasks/power_mqtt.yaml @@ -12,22 +12,31 @@ mode: 0755 notify: restart power-mqtt +- name: Remove old service + file: + path: /etc/systemd/system/power-mqtt.service + state: absent + - name: Install power-mqtt service template: src: generic.service - dest: /etc/systemd/system/power-mqtt.service + dest: /etc/systemd/system/power-mqtt@.service owner: root group: root mode: 0644 vars: - description: SMD630 to MQTT Probe - exec: /var/lib/power-mqtt.py - notify: restart power-mqtt + description: "SMD630 to MQTT Probe" + exec: "/var/lib/power-mqtt.py %i" + notify: restart power-mqtt@ -- name: Start power-mqtt +- name: Enable power-mqtt systemd: - name: power-mqtt + name: "power-mqtt@{{ item.net }}/{{ item.ip }}" state: started enabled: yes daemon_reload: true - + with_items: + - net: space + ip: 0.0.0.0 + - net: unicorndept + ip: 0.0.0.0 diff --git a/roles/services/templates/generic.service b/roles/services/templates/generic.service index 71d43e7..4bd9bbb 100644 --- a/roles/services/templates/generic.service +++ b/roles/services/templates/generic.service @@ -1,4 +1,4 @@ -# Managed by Ansible +# {{ ansible_managed }} [Unit] Description={{ description }} diff --git a/roles/services/templates/power-mqtt.py b/roles/services/templates/power-mqtt.py index b7e82ab..db28aac 100644 --- a/roles/services/templates/power-mqtt.py +++ b/roles/services/templates/power-mqtt.py @@ -1,13 +1,16 @@ #!/usr/bin/env python3 +# {{ ansible_managed }} + import paho.mqtt.client as mqtt import paho.mqtt.subscribe as subscribe from time import sleep +import os import requests -sdm630_host = '100.64.0.187' mqtt_host = '{{ mqtt_internal_host }}' +(net, sdm630_host) = os.argv[1].split('/') client = mqtt.Client() @@ -19,10 +22,10 @@ while True: try: data = requests.get(f'http://{sdm630_host}/api/v1/data').json() client.publish('bitlair/power/total_kwh', data['total_power_import_kwh']) - client.publish('bitlair/power/All/now_w', data['active_power_w']) - client.publish('bitlair/power/L1/now_w', data['active_power_l1_w']) - client.publish('bitlair/power/L2/now_w', data['active_power_l2_w']) - client.publish('bitlair/power/L3/now_w', data['active_power_l3_w']) + client.publish(f'bitlair/power/{net}/All/now_w', data['active_power_w']) + client.publish(f'bitlair/power/{net}/L1/now_w', data['active_power_l1_w']) + client.publish(f'bitlair/power/{net}/L2/now_w', data['active_power_l2_w']) + client.publish(f'bitlair/power/{net}/L3/now_w', data['active_power_l3_w']) except Exception as err: print(err) continue