Get HA MQTT Broker values from bashio

This commit is contained in:
Adrian Jagielak 2025-07-21 23:04:44 +02:00
parent 15e74690fa
commit 206140f922
No known key found for this signature in database
GPG Key ID: 0818CF7AF6C62BFB
4 changed files with 21 additions and 9 deletions

View File

@ -1,6 +1,6 @@
# https://developers.home-assistant.io/docs/add-ons/configuration#add-on-config
name: Futurehome
version: "0.0.6"
version: "0.0.7"
slug: futurehome
description: Local Futurehome Smarthub integration
url: "https://github.com/adrianjagielak/home-assistant-futurehome"

View File

@ -8,6 +8,12 @@ set -e
export FH_HUB_IP=$(bashio::config 'hub_ip')
export FH_USERNAME=$(bashio::config 'username')
export FH_PASSWORD=$(bashio::config 'password')
export MQTT_HOST=$(bashio::services mqtt "host")
export MQTT_PORT=$(bashio::services mqtt "port")
export MQTT_USER=$(bashio::services mqtt "username")
export MQTT_PWD=$(bashio::services mqtt "password")
export LOG_LEVEL=${LOG_LEVEL:-info}
/usr/bin/node /usr/src/app/dist/index.js

View File

@ -2,17 +2,17 @@ import mqtt, { MqttClient } from "mqtt";
export function connectHub(opts: { hubIp: string; username: string; password: string; }): Promise<MqttClient> {
const url = `mqtt://${opts.hubIp || "futurehome-smarthub.local"}`;
return makeClient(url, opts.username, opts.password);
return makeClient(url, 1884, opts.username, opts.password);
}
export function connectHA(): Promise<MqttClient> {
const url = "mqtt://homeassistant";
return makeClient(url);
export function connectHA(opts: { mqttHost: string; mqttPort: number; mqttUsername: string; mqttPassword: string; }): Promise<MqttClient> {
const url = `mqtt://${opts.mqttHost}`;
return makeClient(url, opts.mqttPort, opts.mqttUsername, opts.mqttPassword);
}
function makeClient(url: string, username = "", password = ""): Promise<MqttClient> {
function makeClient(url: string, port: number, username: string, password: string): Promise<MqttClient> {
return new Promise((resolve, reject) => {
const client = mqtt.connect(url, { username, password, protocolVersion: 4 });
const client = mqtt.connect(url, { port, username, password, protocolVersion: 4 });
client.once("connect", () => resolve(client));
client.once("error", reject);
});

View File

@ -2,12 +2,18 @@ import { connectHub, connectHA } from "./client";
import { publishDiscovery } from "./discovery";
(async () => {
const hubIp = process.env.FH_HUB_IP || "";
const hubIp = process.env.FH_HUB_IP || "";
const user = process.env.FH_USERNAME || "";
const pass = process.env.FH_PASSWORD || "";
const mqttHost = process.env.MQTT_HOST || "";
const mqttPort = Number(process.env.MQTT_PORT || "1883");
const mqttUsername = process.env.MQTT_USER || "";
const mqttPassword = process.env.MQTT_PWD || "";
// 1) Connect to HA broker (for discovery + state)
const ha = await connectHA();
const ha = await connectHA({ mqttHost, mqttPort, mqttUsername, mqttPassword, });
// 2) Connect to Futurehome hub (FIMP traffic)
const fimp = await connectHub({ hubIp, username: user, password: pass });