Reworked some JSON building using the json.dumps() function
ci/woodpecker/push/woodpecker Pipeline failed
ci/woodpecker/push/woodpecker Pipeline failed
This commit is contained in:
@@ -1,5 +1,6 @@
|
|||||||
import time
|
import time
|
||||||
from machine import Pin, SoftI2C
|
from machine import Pin, SoftI2C
|
||||||
|
import json
|
||||||
import network
|
import network
|
||||||
from simple_mqtt import SimpleMQTT
|
from simple_mqtt import SimpleMQTT
|
||||||
|
|
||||||
@@ -31,14 +32,12 @@ else:
|
|||||||
# Home Assistant MQTT Discovery
|
# Home Assistant MQTT Discovery
|
||||||
# -------------------------------------------------------------
|
# -------------------------------------------------------------
|
||||||
def register_ha_discovery(mqtt, sensor_type):
|
def register_ha_discovery(mqtt, sensor_type):
|
||||||
device_info = (
|
device_info = {
|
||||||
f'"device":{{'
|
"identifiers": [Config.NODE_ID],
|
||||||
f'"identifiers":["{Config.NODE_ID}"],'
|
"name": NODE_NAME,
|
||||||
f'"name":"{NODE_NAME}",'
|
"model": f"Pico 2 W ({sensor_type.upper()})",
|
||||||
f'"model":"Pico 2 W ({sensor_type.upper()})",'
|
"manufacturer": "Raspberry Pi",
|
||||||
f'"manufacturer":"Raspberry Pi"'
|
}
|
||||||
f"}}"
|
|
||||||
)
|
|
||||||
|
|
||||||
configs = [
|
configs = [
|
||||||
{
|
{
|
||||||
@@ -58,31 +57,29 @@ def register_ha_discovery(mqtt, sensor_type):
|
|||||||
]
|
]
|
||||||
|
|
||||||
if sensor_type == "bme280":
|
if sensor_type == "bme280":
|
||||||
configs.append(
|
configs.append({
|
||||||
{
|
|
||||||
"id": "pressure",
|
"id": "pressure",
|
||||||
"name": "Pressure",
|
"name": "Pressure",
|
||||||
"unit": "hPa",
|
"unit": "hPa",
|
||||||
"cls": "atmospheric_pressure",
|
"cls": "atmospheric_pressure",
|
||||||
"val_tpl": "{{ value_json.pressure }}",
|
"val_tpl": "{{ value_json.pressure }}",
|
||||||
}
|
})
|
||||||
)
|
|
||||||
|
|
||||||
for c in configs:
|
for c in configs:
|
||||||
topic = f"homeassistant/sensor/{Config.NODE_ID}/{c['id']}/config"
|
topic = f"homeassistant/sensor/{Config.NODE_ID}/{c['id']}/config"
|
||||||
unique_id = f"{Config.NODE_ID}_{c['id']}"
|
payload = {
|
||||||
payload = (
|
"name": c["name"],
|
||||||
f'{{"name":"{c["name"]}",'
|
"has_entity_name": True,
|
||||||
f'"has_entity_name":true,'
|
"unique_id": f"{Config.NODE_ID}_{c['id']}",
|
||||||
f'"unique_id":"{unique_id}",'
|
"device_class": c["cls"],
|
||||||
f'"device_class":"{c["cls"]}",'
|
"state_class": "measurement",
|
||||||
f'"state_class":"measurement",'
|
"unit_of_measurement": c["unit"],
|
||||||
f'"unit_of_measurement":"{c["unit"]}",'
|
"state_topic": STATE_TOPIC,
|
||||||
f'"state_topic":"{STATE_TOPIC}",'
|
"value_template": c["val_tpl"],
|
||||||
f'"value_template":"{c["val_tpl"]}",'
|
"device": device_info,
|
||||||
f"{device_info}}}"
|
}
|
||||||
)
|
|
||||||
mqtt.publish(topic, payload, retain=True)
|
mqtt.publish(topic, json.dumps(payload), retain=True)
|
||||||
print(f"Registered HA discovery: {c['id']}")
|
print(f"Registered HA discovery: {c['id']}")
|
||||||
|
|
||||||
|
|
||||||
@@ -148,17 +145,8 @@ def main():
|
|||||||
try:
|
try:
|
||||||
data = sensor.read_values()
|
data = sensor.read_values()
|
||||||
|
|
||||||
if data.get("pressure") is not None:
|
payload = {k: v for k, v in data.items() if v is not None}
|
||||||
state_json = (
|
state_json = json.dumps(payload)
|
||||||
f'{{"temperature":{data["temperature"]},'
|
|
||||||
f'"humidity":{data["humidity"]},'
|
|
||||||
f'"pressure":{data["pressure"]}}}'
|
|
||||||
)
|
|
||||||
else:
|
|
||||||
state_json = (
|
|
||||||
f'{{"temperature":{data["temperature"]},'
|
|
||||||
f'"humidity":{data["humidity"]}}}'
|
|
||||||
)
|
|
||||||
|
|
||||||
mqtt.publish(STATE_TOPIC, state_json)
|
mqtt.publish(STATE_TOPIC, state_json)
|
||||||
print(f"[{NODE_NAME}] Published: {state_json}")
|
print(f"[{NODE_NAME}] Published: {state_json}")
|
||||||
|
|||||||
Reference in New Issue
Block a user