So, I got a bit further with this, be aware that this may apply only to the german Tibber-IR infrared reader.
With the help of others I got the Tibber bridge to connect to my local MQTT server. Besides setting address and port of your local broker you must also fully delete the various crypto keys which is only possible via the console
You do "param_list" which gives you the respective ids, in my case 5, 6 and 7
Then you type "param set 5 \" (same with 6 and 7). That clears the keys and will connect to your broker without cryptography.
Finally you save this with "param_store"
Ok, so now I'm getting some meta data messages on two topics:
$aws/rules/ingest_tibber_bridge_data/tibber-bridge/yyy/publish/TJH01/3494545e84000/event (yyy is your personal ID or something, 3494 is another ID of the tibber bridge itself). The string $aws/rules/ingest_tibber_bridge_data/tibber-bridge/yyy/publish is contained in parameter mqtt_topic
Here's an example:
Code: Select all
{
"$type" : "event",
"id" : 10009,
"class" : "efr32_node_event",
"name" : "NODE_EVENT_NO_DATA",
"metrics" : {
"$type" : "metrics",
"ssid" : "tach",
"rssi" : -70,
"bssid" : "3481c4e31c3f",
"mqttcon" : 0,
"wificon" : 0,
"id" : "3494545e8400",
"uptime" : 596,
"efr_uptime" : 12983,
"vcc" : 3.4779999256134033,
"vacrms" : 226.4521942138672,
"heap" : 104692,
"coredump_available" : true,
"model" : "TJH01",
"esp_version" : "1268-f95e5239",
"efr_version" : "557-dee09095",
"nodes" : [ {
"$type" : "node",
"id" : 1,
"eui" : "dc8e95fffeb82bfe",
"model" : "TFD01",
"version" : "986-49df5891",
"rssi" : -46.511810302734375,
"seen" : 9,
"available" : true,
"pubcnt" : 0,
"ota_state" : "idle",
"ota_status" : "up2date",
"manifest_version" : "986-49df5891",
"up2date" : true
} ],
"ota" : [ {
"model" : "tibber-pulse-ir-hub-esp32",
"manifest_version" : "1268-f95e5239",
"current_version" : "1268-f95e5239",
"state" : "up2date"
}, {
"model" : "tibber-pulse-ir-hub-css",
"manifest_version" : "1268-f95e5239",
"current_version" : "1268-f95e5239",
"state" : "up2date"
}, {
"model" : "tibber-pulse-ir-hub-js",
"manifest_version" : "1268-f95e5239",
"current_version" : "1268-f95e5239",
"state" : "up2date"
}, {
"model" : "tibber-pulse-ir-hub-efr32-fg1",
"manifest_version" : "557-dee09095",
"current_version" : "557-dee09095",
"state" : "up2date"
} ],
"hub_ota_status" : "up2date",
"manifest_state" : "synced",
"netflags" : 25,
"ip" : "192.168.188.31",
"gateway" : "192.168.188.1",
"dns0" : "192.168.188.1",
"dns1" : "0.0.0.0",
"dns2" : "0.0.0.0",
"mac" : "34:94:54:5e:84:0",
"ap_mac" : "34:94:54:5e:84:1"
}
}
There are some other node events especially at bootup and when the IR reader sends something.
Then there is $aws/rules/ingest_tibber_bridge_data/tibber-bridge/yyy/publish/TJH01/3494545e84000/metric:
Code: Select all
{
"$type" : "node_status",
"node_status" : {
"product_id" : 49344,
"bootloader_version" : 17563650,
"node_battery_voltage" : 3.458252,
"node_temperature" : 28.498924,
"node_avg_rssi" : -47.639168,
"node_avg_lqi" : 198.696732,
"acmp_rx_autolevel_300" : 146,
"acmp_rx_autolevel_9600" : 146,
"radio_tx_power" : 200,
"node_uptime_ms" : 1211617,
"meter_msg_count_sent" : 0,
"meter_pkg_count_sent" : 0,
"time_in_em0_ms" : 516,
"time_in_em1_ms" : 13,
"time_in_em2_ms" : 299623
},
"hub_attachments" : {
"meter_pkg_count_recv" : 0,
"node_version" : "986-49df5891"
}
}
and a separate metric from the IR reader:
$aws/rules/ingest_tibber_bridge_data/tibber-bridge/yyy/publish/TFD01/dc8e95fffeb82bfe/metric
Code: Select all
{
"$type" : "node_status",
"node_status" : {
"product_id" : 49344,
"bootloader_version" : 17563650,
"node_battery_voltage" : 3.458252,
"node_temperature" : 28.498924,
"node_avg_rssi" : -47.47422,
"node_avg_lqi" : 198.903183,
"acmp_rx_autolevel_300" : 146,
"acmp_rx_autolevel_9600" : 146,
"radio_tx_power" : 200,
"node_uptime_ms" : 1811921,
"meter_msg_count_sent" : 0,
"meter_pkg_count_sent" : 0,
"time_in_em0_ms" : 598,
"time_in_em1_ms" : 18,
"time_in_em2_ms" : 299534
},
"hub_attachments" : {
"meter_pkg_count_recv" : 0,
"node_version" : "986-49df5891"
}
}
I hacked together a quick python script that forwards all traffic to the actual Tibber MQTT server (and vice versa, but never saw any return traffic):
Code: Select all
import paho.mqtt.client as mqtt
def tibber_to_pulse_message(client, userdata, msg):
global localclient
localclient.publish(msg.topic, msg.payload)
print("Forwarding '%s' to '%s'" % (msg.payload, msg.topic))
def pulse_to_tibber_message(localclient, userdata, msg):
global client
res = client.publish(msg.topic, msg.payload)
if res.rc == mqtt.MQTT_ERR_SUCCESS:
print("Forwarded '%s' to '%s'" % (msg.payload, msg.topic))
else:
print("Publish error %d, reconnecting\n" % res.rc)
client.reconnect()
def tibber_connect(client, userdata, flags, rc):
if rc == 0:
print("Connected to Tibber MQTT Broker!")
else:
print("Failed to connect, return code %d\n", rc)
client = mqtt.Client("3494545e84000")
client.on_message = tibber_to_pulse_message
client.on_connect = tibber_connect
client.tls_set("ca.pem","cert.pem","private.pem")
client.connect("a1zhmn1192zl1a.iot.eu-west-1.amazonaws.com",8883)
client.subscribe("tibber-bridge/yyy/receive/#")
localclient = mqtt.Client("tibberForwarder")
localclient.on_message = pulse_to_tibber_message
localclient.connect("localhost", 1883, 60)
localclient.subscribe("$aws/rules/ingest_tibber_bridge_data/tibber-bridge/#")
while True:
client.loop(timeout=0.1)
localclient.loop(timeout=0.1)
As you see I have some reconnection code going on as I get a disconnect after the initial connect. Ét voila: the Pulse icon shows up in the app as soon as I do this.
But the missing piece is still the data. I now read that the eBZ DD3 xxx ODZ1 meter is actually supported and apparently its raw data is just being forwarded to Tibber. Don't know if the latter really holds true and which topic it would be send on. Probably "/data". Might just dump something out and see what happens.
So again, if anyone has a working pulse and configures it to use a local MQTT server I'd be very happy about dumps.