sindrebroch / ha-magicmirror Goto Github PK
View Code? Open in Web Editor NEWCustom HomeAssistant-integration for MagicMirror
License: Apache License 2.0
Custom HomeAssistant-integration for MagicMirror
License: Apache License 2.0
i have configured a rule to shutdown the magic mirror and after 30 secounds to turn off the screen and the pi, to save engergy.
That's the rule:
- service: button.press
data: {}
target:
entity_id: button.magicmirror_shutdown_host
- delay:
hours: 0
minutes: 0
seconds: 30
milliseconds: 0
- service: switch.turn_off
data: {}
target:
entity_id: switch.strom_magic_mirror
The shutdown process is starting by the debugging in the ui u recive a unknown Error. And the rule wait by this step infinity.
I use the Version 1.3.0
2022-04-08 14:39:36 DEBUG (MainThread) [custom_components.magicmirror] Finished fetching magicmirror data in 0.646 seconds (success: True)
2022-04-08 14:40:15 DEBUG (MainThread) [custom_components.magicmirror] GET url=http://10.82.1.219:8080/api/shutdown. headers={'accept': 'application/json', 'Authorization': 'Bearer ***'}
2022-04-08 14:40:15 ERROR (MainThread) [homeassistant.helpers.script.websocket_api_script] websocket_api script: Error executing script. Unexpected error for call_service at pos 1: Server disconnected
Describe the solution you'd like
I have an 'alsa' sound card (usb sound card) in my RPi, and it would be great if I could control the volume from HA.
Describe alternatives you've considered
I'm trying to adjust the volume by doing some commands via SSH, it's rather difficult to get to work.
After installing and setting up the integration I get this error on initialise:
<ClientResponse(http://homepi.local:8080/api/updateAvailable) [404 Not Found]>
MMM-Remote is installed and working correctly. API test is successful
Log Details (ERROR)
This error originated from a custom integration.
Logger: custom_components.magicmirror
Source: custom_components/magicmirror/api.py:85
Integration: Magic Mirror (documentation, issues)
First occurred: 13:12:40 (4 occurrences)
Last logged: 13:13:14
Unexpected error fetching magicmirror data: Response not 200 OK <ClientResponse(http://homepi.local:8080/api/updateAvailable) [404 Not Found]> <CIMultiDictProxy('Access-Control-Allow-Origin': '', 'Referrer-Policy': 'no-referrer', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Content-Type-Options': 'nosniff', 'X-DNS-Prefetch-Control': 'off', 'X-Download-Options': 'noopen', 'X-Frame-Options': 'SAMEORIGIN', 'X-Permitted-Cross-Domain-Policies': 'none', 'X-XSS-Protection': '0', 'Content-Security-Policy': "default-src 'none'", 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '158', 'Date': 'Mon, 17 Jul 2023 04:12:40 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
Unexpected error fetching magicmirror data: Response not 200 OK <ClientResponse(http://homepi.local:8080/api/updateAvailable) [404 Not Found]> <CIMultiDictProxy('Access-Control-Allow-Origin': '', 'Referrer-Policy': 'no-referrer', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Content-Type-Options': 'nosniff', 'X-DNS-Prefetch-Control': 'off', 'X-Download-Options': 'noopen', 'X-Frame-Options': 'SAMEORIGIN', 'X-Permitted-Cross-Domain-Policies': 'none', 'X-XSS-Protection': '0', 'Content-Security-Policy': "default-src 'none'", 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '158', 'Date': 'Mon, 17 Jul 2023 04:12:52 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
Unexpected error fetching magicmirror data: Response not 200 OK <ClientResponse(http://homepi.local:8080/api/updateAvailable) [404 Not Found]> <CIMultiDictProxy('Access-Control-Allow-Origin': '', 'Referrer-Policy': 'no-referrer', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Content-Type-Options': 'nosniff', 'X-DNS-Prefetch-Control': 'off', 'X-Download-Options': 'noopen', 'X-Frame-Options': 'SAMEORIGIN', 'X-Permitted-Cross-Domain-Policies': 'none', 'X-XSS-Protection': '0', 'Content-Security-Policy': "default-src 'none'", 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '158', 'Date': 'Mon, 17 Jul 2023 04:13:02 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
Unexpected error fetching magicmirror data: Response not 200 OK <ClientResponse(http://homepi.local:8080/api/updateAvailable) [404 Not Found]> <CIMultiDictProxy('Access-Control-Allow-Origin': '', 'Referrer-Policy': 'no-referrer', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Content-Type-Options': 'nosniff', 'X-DNS-Prefetch-Control': 'off', 'X-Download-Options': 'noopen', 'X-Frame-Options': 'SAMEORIGIN', 'X-Permitted-Cross-Domain-Policies': 'none', 'X-XSS-Protection': '0', 'Content-Security-Policy': "default-src 'none'", 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '158', 'Date': 'Mon, 17 Jul 2023 04:13:14 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
Traceback (most recent call last):
File "/srv/homeassistant/lib/python3.10/site-packages/homeassistant/helpers/update_coordinator.py", line 283, in _async_refresh
self.data = await self._async_update_data()
File "/home/homeassistant/.homeassistant/custom_components/magicmirror/coordinator.py", line 61, in _async_update_data
await self.api.update_available()
File "/home/homeassistant/.homeassistant/custom_components/magicmirror/api.py", line 156, in update_available
return ModuleUpdateResponses.from_dict(await self.get(API_UPDATE_AVAILABLE))
File "/home/homeassistant/.homeassistant/custom_components/magicmirror/api.py", line 108, in get
return await self.handle_request(get)
File "/home/homeassistant/.homeassistant/custom_components/magicmirror/api.py", line 85, in handle_request
raise Exception(f"Response not 200 OK {resp}")
Exception: Response not 200 OK <ClientResponse(http://homepi.local:8080/api/updateAvailable) [404 Not Found]>
<CIMultiDictProxy('Access-Control-Allow-Origin': '*', 'Referrer-Policy': 'no-referrer', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Content-Type-Options': 'nosniff', 'X-DNS-Prefetch-Control': 'off', 'X-Download-Options': 'noopen', 'X-Frame-Options': 'SAMEORIGIN', 'X-Permitted-Cross-Domain-Policies': 'none', 'X-XSS-Protection': '0', 'Content-Security-Policy': "default-src 'none'", 'Content-Type': 'text/html; charset=utf-8', 'Content-Length': '158', 'Date': 'Mon, 17 Jul 2023 04:12:40 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
After going to 2023.03 the integration is failing again.
I just started going to the latest MagicMirror version, but that didn't help.
I also tried removing the integration, and creating it again, still no dice.
MagicMirror 2.22.0
MM Integration: 1.4.0
HomeAssistant: 2023.3.3
After retrying the config, the logfile shows (it creates the integration entry, but no entities):
Logger: homeassistant.config_entries
Source: config_entries.py:933
First occurred: 21.58.48 (1 occurrences)
Last logged: 21.58.48
Config entry '10.11.12.17' for magicmirror integration not ready yet; Retrying in background
Logger: homeassistant.helpers.service
Source: helpers/service.py:645
First occurred: 21.53.36 (3 occurrences)
Last logged: 21.53.44
Unable to find referenced entities light.magicmirror_monitor or it is/they are currently not available
Unable to find referenced entities media_player.mass_all_speakers or it is/they are currently not available
Integration: 1.5.0b2
sindrebroch fork of Remote Control
Added via GUI
When I uncomment the screencast integration from the config, the integration immediately goes on the fritz.
Just wanted to test if the problem was solved.
Denne fejl stammer fra en brugerdefineret integration.
Logger: custom_components.magicmirror
Source: custom_components/magicmirror/api.py:85
Integration: Magic Mirror (documentation, issues)
First occurred: 20.24.25 (1 occurrences)
Last logged: 20.24.25
Unexpected error fetching magicmirror data: Response not 200 OK <ClientResponse(http://10.11.12.17:8080/api/brightness) [400 Bad Request]> <CIMultiDictProxy('Access-Control-Allow-Origin': '*', 'X-DNS-Prefetch-Control': 'off', 'Expect-CT': 'max-age=0', 'X-Frame-Options': 'SAMEORIGIN', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Download-Options': 'noopen', 'X-Content-Type-Options': 'nosniff', 'X-Permitted-Cross-Domain-Policies': 'none', 'Referrer-Policy': 'no-referrer', 'X-XSS-Protection': '0', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': '166', 'Etag': 'W/"a6-7TFy9clM9rwQNiht2z4gvOP9Avg"', 'Date': 'Sat, 25 Jun 2022 18:24:25 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/update_coordinator.py", line 191, in _async_refresh
self.data = await self._async_update_data()
File "/config/custom_components/magicmirror/coordinator.py", line 64, in _async_update_data
brightness: QueryResponse = await self.api.get_brightness()
File "/config/custom_components/magicmirror/api.py", line 212, in get_brightness
return QueryResponse.from_dict(await self.get(API_BRIGHTNESS))
File "/config/custom_components/magicmirror/api.py", line 108, in get
return await self.handle_request(get)
File "/config/custom_components/magicmirror/api.py", line 85, in handle_request
raise Exception(f"Response not 200 OK {resp}")
Exception: Response not 200 OK <ClientResponse(http://10.11.12.17:8080/api/brightness) [400 Bad Request]>
<CIMultiDictProxy('Access-Control-Allow-Origin': '*', 'X-DNS-Prefetch-Control': 'off', 'Expect-CT': 'max-age=0', 'X-Frame-Options': 'SAMEORIGIN', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Download-Options': 'noopen', 'X-Content-Type-Options': 'nosniff', 'X-Permitted-Cross-Domain-Policies': 'none', 'Referrer-Policy': 'no-referrer', 'X-XSS-Protection': '0', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': '166', 'Etag': 'W/"a6-7TFy9clM9rwQNiht2z4gvOP9Avg"', 'Date': 'Sat, 25 Jun 2022 18:24:25 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
1.3.0
I have 2 smart mirrors in my house. When I add the second mirror I have a collision between entity ids. That cause some strange behavior like 1 entity for both mirror:
Collisions obviously only happen when both mirrors have the same module as well as the mirror's basic controls.
1.4.1
When I turn the monitor on or off, there is a delay on the status shown in Lovelace.
Is it 'as designed' or is it a fluke?
The services set up in the integration doesn't show any entity requirement when looking in 'developer tools', which seems like a problem :-)
P.S. I am SUPER excited that you made this integration, it's simply fantastic to not have to set up MQTTBridge like I've had for years now.
Describe the solution you'd like
It would be simpler if the monitor switch and the brightness were merge in a single entity (light).
Describe alternatives you've considered
Here's the Template Light I'm currently using to get the wanted result:
light:
- platform: template
lights:
magicmirror_monitor:
friendly_name: "MagicMirror Monitor"
icon_template: mdi:mirror-rectangle
level_template: >-
{% if is_state('switch.magicmirror_monitor', 'on')|default(true, false) %}
{{ ((states('number.magicmirror_brightness')|default(100, false)|int)*2.55)|round() }}
{% else %}
0
{% endif %}
value_template: "{{ states('switch.magicmirror_monitor')|default('on', false) }}"
turn_on:
service: switch.turn_on
target:
entity_id: switch.magicmirror_monitor
turn_off:
service: switch.turn_off
target:
entity_id: switch.magicmirror_monitor
set_level:
service: number.set_value
data:
value: "{{ (brightness/2.55)|round() }}"
target:
entity_id: number.magicmirror_brightness
1.1.4
{
module: "MMM-Remote-Control",
config: {
apiKey: 'b9911c8282f943faac207140f4e8ea0a',
showModuleApiMenu: true,
pm2ProcessName: 'MagicMirror',
// customCommand: {
// playGhostvideo: '/home/pi/randomfile.sh'
// }
},
},/*
{
module: "MMM-Screencast",
position: "'bottom_right", // This position is for a hidden <div /> and not the screencast window
config: {
position: "bottomRight",
castName: "Spejl",
height: 300,
width: 500,
}
},*/
As soon as I uncomment the Screencast module, the integration goes away.
If I activate the Screencast module in MagicMirror, the integration doesn't work.
I can go to 'IP:8080/remote.html' with a browser and turn the monitor on/off etc.
Denne fejl stammer fra en brugerdefineret integration.
Logger: custom_components.magicmirror
Source: helpers/update_coordinator.py:219
Integration: Magic Mirror (documentation, issues)
First occurred: 18.39.45 (3 occurrences)
Last logged: 19.54.28
Error fetching magicmirror data: Cannot connect to host 10.11.12.17:8080 ssl:default [Connect call failed ('10.11.12.17', 8080)]
Magic Mirror Component: 1.4.0
2022-09-23 08:27:14.041 WARNING (MainThread) [homeassistant.config_entries] Config entry '10.11.12.17' for magicmirror integration not ready yet; Retrying in background
All of the sudden, after the HA upgrade to 2022.9.6 the Magic Mirror integration stopped working.
I can still go directly to the magic mirror remote control, and control it, but the integration just shows offline.
Add your logs here.
MM config:
{
module: "MMM-Remote-Control",
config: {
apiKey: 'Sr5nN3ggwSllDseOXzJpbFcn',
showModuleApiMenu: true,
pm2ProcessName: 'MagicMirror',
// customCommand: {
// playGhostvideo: '/home/pi/randomfile.sh'
// }
}
},
Version 1.1.4
Trying to configure it in HA, but gets an 'unknown error'
This is shown on Magic Mirror when I try to add it to HA
0|MagicMirror | Not initialized, have you opened or refreshed your browser since the last time you started MagicMirror?
I have MM 2.18 with Remote Control module and an API key installed.
As soon as I attempt to add it to HA, it says 'Unknown error'
I can do a manual POST with monitor on/ off, and the API key, and the MagicMirror reacts correctly.
Hello, first of all thank you for making such a great integration.
I have installed MMM-Remote-Control manually installed from your git.
It seems i can access and use features on the web page(magicmirror ip:8080/remote.html)
but when i try to access from home assistant(same IP, whitelisted 192.168.29.0/24, HA IP and also tried with blank whitelist []) I get Unknown error occurred.
it seems i get err 104 connection reset by peer.errors={'base': 'cannot_connect'}
i can ssh from ha to magic mirror host ip, i dont understand why i get connection reset by peer.
Help would be very appreciated.
Thanks.
v1.4.0
MagicMirror config.js
{
module: 'MMM-Remote-Control',
config: {
customCommand: {},
showModuleApiMenu: true,
secureEndpoints: true,
apiKey: "somethingindigits",
}
},
Add your logs here.
Logger: custom_components.magicmirror
Source: custom_components/magicmirror/config_flow.py:61
Integration: Magic Mirror (documentation, issues)
First occurred: 17:12:10 (1 occurrences)
Last logged: 17:12:10
error=[Errno 104] Connection reset by peer. errors={'base': 'cannot_connect'}
Logger: aiohttp.server
Source: custom_components/magicmirror/api.py:83
Integration: Magic Mirror (documentation, issues)
First occurred: 17:01:03 (23 occurrences)
Last logged: 17:12:23
Error handling request
Traceback (most recent call last):
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_protocol.py", line 435, in _handle_request
resp = await request_handler(request)
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_app.py", line 504, in _handle
resp = await handler(request)
File "/usr/local/lib/python3.10/site-packages/aiohttp/web_middlewares.py", line 117, in impl
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/security_filter.py", line 60, in security_filter_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/forwarded.py", line 222, in forwarded_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/request_context.py", line 28, in request_context_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/ban.py", line 82, in ban_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/auth.py", line 236, in auth_middleware
return await handler(request)
File "/usr/src/homeassistant/homeassistant/components/http/view.py", line 136, in handle
result = await result
File "/usr/src/homeassistant/homeassistant/components/config/config_entries.py", line 178, in post
return await super().post(request, flow_id)
File "/usr/src/homeassistant/homeassistant/components/http/data_validator.py", line 73, in wrapper
result = await method(view, request, data, args, **kwargs)
File "/usr/src/homeassistant/homeassistant/helpers/data_entry_flow.py", line 110, in post
result = await self._flow_mgr.async_configure(flow_id, data)
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 280, in async_configure
result = await self._async_handle_step(
File "/usr/src/homeassistant/homeassistant/data_entry_flow.py", line 367, in _async_handle_step
result: FlowResult = await getattr(flow, method)(user_input)
File "/config/custom_components/magicmirror/config_flow.py", line 54, in async_step_user
response: GenericResponse = await api.api_test()
File "/config/custom_components/magicmirror/api.py", line 146, in api_test
return GenericResponse.from_dict(await self.get(API_TEST))
File "/config/custom_components/magicmirror/api.py", line 106, in get
return await self.handle_request(get)
File "/config/custom_components/magicmirror/api.py", line 83, in handle_request
raise Exception(f"Response not 200 OK {resp}")
Exception: Response not 200 OK <ClientResponse(http://192.168.29.112:8080/api/test) [400 Bad Request]>
<CIMultiDictProxy('Access-Control-Allow-Origin': '', 'X-DNS-Prefetch-Control': 'off', 'Expect-CT': 'max-age=0', 'X-Frame-Options': 'SAMEORIGIN', 'Strict-Transport-Security': 'max-age=15552000; includeSubDomains', 'X-Download-Options': 'noopen', 'X-Content-Type-Options': 'nosniff', 'X-Permitted-Cross-Domain-Policies': 'none', 'Referrer-Policy': 'no-referrer', 'X-XSS-Protection': '0', 'Content-Type': 'application/json; charset=utf-8', 'Content-Length': '166', 'Etag': 'W/"a6-7TFy9clM9rwQNiht2z4gvOP9Avg"', 'Date': 'Tue, 04 Oct 2022 08:01:03 GMT', 'Connection': 'keep-alive', 'Keep-Alive': 'timeout=5')>
A clear and concise description of what the bug is.
Add your logs here.
Hi,
I installed HA 2023.5 yesterday and today I noticed an error with the Magic Mirror integration.
I am running
Home Assistant 2023.5.0
Supervisor 2023.04.1
Operating System 10.1
Frontend 20230503.1 - latest
As for MM I am running the latest version and the latest version of the remote control module (no recent updates there)
In the integrations overview it shows a red exclamation point with the message Failed to setup.
Did multiple restarts of HA (incl complete system reboot) and restarts of the MM Pi.
The log gives this error.
2023-05-04 21:21:32.640 ERROR (MainThread) [homeassistant.config_entries] Error setting up entry Magic Mirror for magicmirror
File "/config/custom_components/magicmirror/init.py", line 53, in async_setup_entry
Error setting up entry Magic Mirror for magicmirror
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/config_entries.py", line 387, in async_setup
result = await component.async_setup_entry(hass, self)
File "/config/custom_components/magicmirror/init.py", line 53, in async_setup_entry
hass.config_entries.async_setup_platforms(entry, PLATFORMS)
AttributeError: 'ConfigEntries' object has no attribute 'async_setup_platforms'
1.3.0
Single MagicMirror connected on IP
When I try to send a notification, I just get an error about calling the service.
I call the service through the Developer tools interface
service: notify.magicmirror
data:
message: 'Det ringer på døren'
Denne fejl stammer fra en brugerdefineret integration.
Logger: homeassistant.helpers.script.websocket_api_script
Source: custom_components/magicmirror/notify.py:58
Integration: Magic Mirror (documentation, issues)
First occurred: 14.51.39 (4 occurrences)
Last logged: 15.16.54
websocket_api script: Error executing script. Unexpected error for call_service at pos 1: alert() got an unexpected keyword argument 'message'
Traceback (most recent call last):
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 447, in _async_step
await getattr(self, handler)()
File "/usr/src/homeassistant/homeassistant/helpers/script.py", line 680, in _async_call_service_step
await service_task
File "/usr/src/homeassistant/homeassistant/core.py", line 1704, in async_call
task.result()
File "/usr/src/homeassistant/homeassistant/core.py", line 1741, in _execute_service
await cast(Callable[[ServiceCall], Awaitable[None]], handler.job.target)(
File "/usr/src/homeassistant/homeassistant/components/notify/legacy.py", line 229, in _async_notify_message_service
await self.async_send_message(**kwargs)
File "/config/custom_components/magicmirror/notify.py", line 58, in async_send_message
await self._notify.alert(
TypeError: alert() got an unexpected keyword argument 'message'
1.4.0
Add your logs here.
Logger: homeassistant.config_entries
Source: config_entries.py:783
First occurred: 19.02.15 (1 occurrences)
Last logged: 19.02.15
Config entry '10.11.12.17' for magicmirror integration not ready yet; Retrying in background
Logger: homeassistant.config_entries
Source: config_entries.py:395
First occurred: 18.59.20 (4 occurrences)
Last logged: 18.59.27
Config entry '10.11.12.17' for magicmirror integration not ready yet; Retrying in background
After the upgrade of MagicMirror from 2.20 to 2.21 the integration doesn't work.
I think the update of HA to 2022.11.x also had an effect.
2022-11-27 19:07:21.278 DEBUG (MainThread) [custom_components.magicmirror] GET url=http://10.11.12.17:8080/api/mmUpdateAvailable. headers={'accept': 'application/json', 'Authorization': 'Bearer b9911c8282f943faac207140f4e8ea0a'}
2022-11-27 19:07:35.399 DEBUG (MainThread) [custom_components.magicmirror] Finished fetching magicmirror data in 14.121 seconds (success: False)
1.3.0
Through the UI.
The modules (switch.module_x_*) representing the state (displayed or not) of the modules on the mirror allways report the "on" state even when the module has been hidden using the switch itself.
{
"home_assistant": {
"installation_type": "Home Assistant OS",
"version": "2022.6.6",
"dev": false,
"hassio": true,
"virtualenv": false,
"python_version": "3.9.12",
"docker": true,
"arch": "aarch64",
"timezone": "America/Toronto",
"os_name": "Linux",
"os_version": "5.15.32-v8",
"supervisor": "2022.05.3",
"host_os": "Home Assistant OS 8.2",
"docker_version": "20.10.14",
"chassis": "embedded",
"run_as_root": true
},
"custom_components": {
"hacs": {
"version": "1.25.5",
"requirements": [
"aiogithubapi>=22.2.4"
]
},
"simple_wyze_vac": {
"version": "1.7",
"requirements": [
"https://github.com/romedtino/wyze-sdk/archive/refs/tags/10.2.7.zip#wyze-sdk==10.2.7"
]
},
"sinope": {
"version": "1.5.7",
"requirements": [
"crc8==0.1.0"
]
},
"watchman": {
"version": "0.5.1",
"requirements": [
"prettytable==3.0.0"
]
},
"magicmirror": {
"version": "1.3.0",
"requirements": []
},
"neviweb130": {
"version": "1.3.4",
"requirements": []
},
"smartthings": {
"version": "1.0",
"requirements": [
"pysmartapp==0.3.3",
"pysmartthings==0.7.6"
]
},
"ui_lovelace_minimalist": {
"version": "v0.0.9",
"requirements": []
},
"browser_mod": {
"version": "1.5.3",
"requirements": []
},
"hpprinter": {
"version": "1.0.8",
"requirements": [
"xmltodict==0.12.0"
]
}
},
"integration_manifest": {
"domain": "magicmirror",
"name": "Magic Mirror",
"config_flow": true,
"documentation": "https://www.github.com/sindrebroch/ha-magicmirror",
"issue_tracker": "https://github.com/sindrebroch/ha-magicmirror/issues",
"requirements": [],
"codeowners": [
"@sindrebroch"
],
"iot_class": "local_polling",
"version": "1.3.0",
"is_built_in": false
},
"data": {
"host": "192.168.2.242",
"port": "8080",
"brightness": 100,
"monitor_status": "on",
"update_available": false,
"modules": "[ModuleDataResponse(index=0, identifier='module_0_MMM-Remote-Control', name='MMM-Remote-Control', path='modules/MMM-Remote-Control/', file='MMM-Remote-Control.js', configDeepMerge=False, header=None, config={'customCommand': {}, 'apiKey': 'REMOVE FOR CONFIDENTIALITY'}, classes='MMM-Remote-Control', hidden=False, lockStrings=[], actions=None), ModuleDataResponse(index=1, identifier='module_1_clock', name='clock', path='modules/default/clock/', file='clock.js', configDeepMerge=False, header=None, config={'displayType': 'both', 'timeFormat': '24', 'timezone': None, 'displaySeconds': True, 'showPeriod': False, 'showPeriodUpper': False, 'clockBold': False, 'showDate': True, 'showTime': True, 'showWeek': False, 'dateFormat': 'dddd, D MMMM', 'analogSize': '125px', 'analogFace': 'face-001', 'analogPlacement': 'bottom', 'analogShowDate': 'top', 'secondsColor': '#888888', 'showSunTimes': False, 'showMoonTimes': False, 'lat': REMOVE FOR CONFIDENTIALITY, 'lon': REMOVE FOR CONFIDENTIALITY}, classes='clock', hidden=True, lockStrings=['module_0_MMM-Remote-Control'], actions=None), ModuleDataResponse(index=2, identifier='module_2_MMM-OpenWeatherMapForecast', name='MMM-OpenWeatherMapForecast', path='modules/MMM-OpenWeatherMapForecast/', file='MMM-OpenWeatherMapForecast.js', configDeepMerge=False, header=None, config={'apikey': 'REMOVE FOR CONFIDENTIALITY', 'latitude': '45.4791377', 'longitude': '-73.5674238', 'updateInterval': 10, 'requestDelay': 0, 'units': 'metric', 'showCurrentConditions': True, 'showExtraCurrentConditions': True, 'showSummary': False, 'forecastHeaderText': '', 'showForecastTableColumnHeaderIcons': True, 'showHourlyForecast': False, 'hourlyForecastInterval': 3, 'maxHourliesToShow': 3, 'showDailyForecast': True, 'maxDailiesToShow': 3, 'includeTodayInDailyForecast': False, 'showPrecipitation': True, 'concise': True, 'showWind': True, 'showFeelsLike': True, 'language': 'fr', 'iconset': '6fa', 'mainIconset': '6fa', 'useAnimatedIcons': False, 'animateMainIconOnly': True, 'colored': True, 'forecastLayout': 'tiled', 'showInlineIcons': True, 'mainIconSize': 100, 'forecastTiledIconSize': 70, 'forecastTableIconSize': 30, 'updateFadeSpeed': 500, 'label_maximum': 'max', 'label_high': '', 'label_low': '', 'label_timeFormat': 'h a', 'label_days': ['Dimanche', 'Lundi', 'Mardi', 'Mercredi', 'Jeudi', 'Vendredi', 'Samedi'], 'label_ordinals': ['N', 'NNE', 'NE', 'ENE', 'E', 'ESE', 'SE', 'SSE', 'S', 'SSW', 'SW', 'WSW', 'W', 'WNW', 'NW', 'NNW'], 'moduleTimestampIdPrefix': 'OPENWEATHER_ONE_CALL_TIMESTAMP_'}, classes='MMM-OpenWeatherMapForecast', hidden=False, lockStrings=[], actions=None), ModuleDataResponse(index=3, identifier='module_3_MMM-NestRemoteThermostat', name='MMM-NestRemoteThermostat', path='modules/MMM-NestRemoteThermostat/', file='MMM-NestRemoteThermostat.js', configDeepMerge=False, header='Salon', config={'thermostatId': 'climate.living_room', 'language': 'fr', 'width': '5em', 'height': '5em'}, classes='MMM-NestRemoteThermostat', hidden=False, lockStrings=[], actions=None), ModuleDataResponse(index=4, identifier='module_4_MMM-NestRemoteThermostat', name='MMM-NestRemoteThermostat', path='modules/MMM-NestRemoteThermostat/', file='MMM-NestRemoteThermostat.js', configDeepMerge=False, header='Salle de bain', config={'thermostatId': 'climate.bathroom', 'language': 'fr', 'width': '5em', 'height': '5em'}, classes='MMM-NestRemoteThermostat', hidden=False, lockStrings=[], actions=None), ModuleDataResponse(index=5, identifier='module_5_MMM-NestRemoteThermostat', name='MMM-NestRemoteThermostat', path='modules/MMM-NestRemoteThermostat/', file='MMM-NestRemoteThermostat.js', configDeepMerge=False, header=None, config={'thermostatId': 'climate.hvac', 'language': 'fr', 'width': '6.5em', 'height': '6.5em'}, classes='MMM-NestRemoteThermostat', hidden=False, lockStrings=[], actions=None), ModuleDataResponse(index=6, identifier='module_6_MMM-NestRemoteThermostat', name='MMM-NestRemoteThermostat', path='modules/MMM-NestRemoteThermostat/', file='MMM-NestRemoteThermostat.js', configDeepMerge=False, header='Bureau', config={'thermostatId': 'climate.office', 'language': 'fr', 'width': '5em', 'height': '5em'}, classes='MMM-NestRemoteThermostat', hidden=False, lockStrings=[], actions=None), ModuleDataResponse(index=7, identifier='module_7_MMM-NestRemoteThermostat', name='MMM-NestRemoteThermostat', path='modules/MMM-NestRemoteThermostat/', file='MMM-NestRemoteThermostat.js', configDeepMerge=False, header='Chambre', config={'thermostatId': 'climate.bedroom', 'language': 'fr', 'width': '5em', 'height': '5em'}, classes='MMM-NestRemoteThermostat', hidden=False, lockStrings=[], actions=None)]"
}
}
Yup, total click bait @sindrebroch 😆
Where's the 'Buy me a coffee' button???
A declarative, efficient, and flexible JavaScript library for building user interfaces.
🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.
TypeScript is a superset of JavaScript that compiles to clean JavaScript output.
An Open Source Machine Learning Framework for Everyone
The Web framework for perfectionists with deadlines.
A PHP framework for web artisans
Bring data to life with SVG, Canvas and HTML. 📊📈🎉
JavaScript (JS) is a lightweight interpreted programming language with first-class functions.
Some thing interesting about web. New door for the world.
A server is a program made to process requests and deliver data to clients.
Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.
Some thing interesting about visualization, use data art
Some thing interesting about game, make everyone happy.
We are working to build community through open source technology. NB: members must have two-factor auth.
Open source projects and samples from Microsoft.
Google ❤️ Open Source for everyone.
Alibaba Open Source for everyone
Data-Driven Documents codes.
China tencent open source team.