Read the statement by Michael Teeuw here.
MMM-HomeAssistant-Sensors (Development) - Show your HA Sensors on your Mirror
-
@snille it stopped working after HA version 2021.10 when the API discovery feature was deprecated. I am running HA Supervised on one raspberry pi and MM on another raspberry pi in the same network.
Here is the config of the MM module:
{ module: 'MMM-homeassistant-sensors', position: 'top_right', config: { title: 'Сензори', rowClass: 'normal', host: "192.168.1.19", port: "8123", https: true, //I have SSL enables since my instance is exposed to the Internet token: "here_goes_my_token", values: [ { sensor: "sensor.bathroom_temp_temperature", name: 'Температура', icons: [{ "default": "thermometer" }] }, { sensor: "sensor.bathroom_temp_humidity", name: 'Влажност', icons: [{ "default": "water-percent" }] }, { sensor: "switch.bathroom_fan_1", name: 'Вентилатор 1', icons: [{ "on": "fan", "off": "fan-off" }], replace: [{ "on": "вкл.", "off": "изкл." }] }, { sensor: "switch.bathroom_fan_2", name: 'Вентилатор 2', icons: [{ "on": "fan", "off": "fan-off" }], replace: [{ "on": "вкл.", "off": "изкл." }] }, ] } },
Here is the changelog of HA 2021.10:
The API endpoint /api/discovery_info now only return blank values. This endpoint is scheduled to be removed in Home Assistant Core 2022.1. As a regular user of Home Assistant, this change should not affect you. (@ludeeus - #56097) (api docs)
In the past I was having issues with https and the local IP address and then I changed it to the DNS hostname blabla.duckdsn.org and the external port for https (443) and it was working fine until the /api/discovery_info endpoint was deprecated.
-
@snille Well that’s really not a deal breaker. It works and gaps the bridge. It’s a great module!
-
@ivanov_d It’s still working for me, when using https. It got to be something else…
I changed my conf to this and it works…{ disabled: false, module: 'MMM-homeassistant-sensors', hiddenOnStartup: false, position: 'top_right', config: { host: "my.ha.url.com", port: "443", https: true, updateInterval: 60000, fade: 0, title: "Information", noaddress: "Away", token: "token...", values: [ { sensor: "sensor.living_room_temperature", name: "Temp i Vardagsrummet %t%", icons: [{ "default": "thermometer" } ] } ] } }
I’m on Hass.IO (from start), maybe the api is still active there? I don’t get it…
It does not work for me on port 8123, but that’s to be expected when using ssl. -
@snille what is the most up-to-date code repo? The one that I pulled from is https://github.com/theskyisthelimit/MMM-homeassistant-sensors.git
Could it be that I have an old code base? I tried with different ports, URL/IP, still the same and still no errors in both logs HA or MM …
EDIT: I tried with another HA instance that I have which doesn’t have SSL enabled and it worked, so now I need to figure out what the difference between the two are :)
Will keep you posted.
-
@ivanov_d Hmm… In my own adventures to find what’s going on, I managed to “break” my real mirror connection to HA (now getting the fetch-error) but my development mirror is still working (against the same HA instance).
I don’t understand what’s going on. :)As for codebase I’m using my own fork: https://github.com/Snille/MMM-homeassistant-sensors.git
Let me know if you get it to work again… :)
-
@snille lol sorry to hear that. I managed to get it to work on my main HA instance by removing SSL from my HA configuration.yaml file:
However, that doesn’t suit my needs as I control my house through my phone over the Internet and I want SSL to be enabled. I am continuing testing. Will keep you posted.
-
@ivanov_d Interesting, I’m not using SSL in HA (I have a Reverse-proxy) that SSL:s everything… So, internally I can get to HA via http (or https) but externally I’ll always go through the reverse-proxy (and SSL). However, the development MM works both with and without SSL. But my real MM now don’t work with either… Darn! :)
What I CAN do, is use curl from ssh on the real MM and get the “status” from all sensors with this…curl -X GET -H "Authorization: Bearer VeRy-LoNg-API-ToKen" -H "Content-Type: application/json" http://ha-IP:8123/api/states
And it lists everything… Hm…
-
@snille I think you struck the same obstacle as me, mate :D My setup is a bit different as I am not using reverse proxy - it is either SSL or no SSL within the local network and outside of it.
I am looking at the JS code right now … it might have something to do with how the URL is structured as it might not cover both cases, but I have to confirm that. -
@Snille I think that I found out what the issue might be (at least for my case). I turned on debugging and here is what popped-up:
0|MagicMirror | [19.02.2022 12:34.16.715] [ERROR] 0|MagicMirror | MMM-homeassistant-sensors ERROR: Error: certificate has expired 0|MagicMirror | at TLSSocket.onConnectSecure (_tls_wrap.js:1501:34) 0|MagicMirror | at TLSSocket.emit (events.js:315:20) 0|MagicMirror | at TLSSocket._finishInit (_tls_wrap.js:936:8) 0|MagicMirror | at TLSWrap.ssl.onhandshakedone (_tls_wrap.js:710:12) { 0|MagicMirror | code: 'CERT_HAS_EXPIRED' 0|MagicMirror | } 0|MagicMirror | [19.02.2022 12:34.16.721] [ERROR] 0|MagicMirror | Whoops! There was an uncaught exception... 0|MagicMirror | [19.02.2022 12:34.16.727] [ERROR] 0|MagicMirror | TypeError: Cannot read property 'statusCode' of undefined 0|MagicMirror | at Request._callback (/home/pi/MagicMirror/modules/MMM-homeassistant-sensors/node_helper.js:22:77) 0|MagicMirror | at self.callback (/home/pi/MagicMirror/modules/MMM-homeassistant-sensors/node_modules/request/request.js:185:22) 0|MagicMirror | at Request.emit (events.js:315:20) 0|MagicMirror | at Request.onRequestError (/home/pi/MagicMirror/modules/MMM-homeassistant-sensors/node_modules/request/request.js:877:8) 0|MagicMirror | at ClientRequest.emit (events.js:315:20) 0|MagicMirror | at TLSSocket.socketErrorListener (_http_client.js:426:9) 0|MagicMirror | at TLSSocket.emit (events.js:315:20) 0|MagicMirror | at emitErrorNT (internal/streams/destroy.js:92:8) 0|MagicMirror | at emitErrorAndCloseNT (internal/streams/destroy.js:60:3) 0|MagicMirror | at processTicksAndRejections (internal/process/task_queues.js:84:21)
The certificate is valid though:
-
@snille said in MMM-HomeAssistant-Sensors (Development) - Show your HA Sensors on your Mirror:
curl -X GET -H “Authorization: Bearer VeRy-LoNg-API-ToKen” -H “Content-Type: application/json” http://ha-IP:8123/api/states
Same here … I get all states with the following URLs:
https://myhome.org:443/api/states
https://myhome/api/statesHowever, when I try to use the local IP I can’t and that is normal as the certificate is not for that domain:
pi@raspberrypi:~ $ curl -X GET -H "Authorization: Bearer long-token" -H "Content-Type: application/json" https://192.168.1.19:443/api/states curl: (7) Failed to connect to 192.168.1.19 port 443: Connection refused pi@raspberrypi:~ $ curl -X GET -H "Authorization: Bearer long-token" -H "Content-Type: application/json" https://192.168.1.19:8123/api/states curl: (60) SSL: no alternative certificate subject name matches target host name '192.168.1.19' More details here: https://curl.haxx.se/docs/sslcerts.html curl failed to verify the legitimacy of the server and therefore could not establish a secure connection to it. To learn more about this situation and how to fix it, please visit the web page mentioned above.
What is wierd though is that although using SSL, the default port is still 8123, however, the connection is secured