@ashishtank I use MMM-Networkscanner and control my screen via that. If it does not detect my device residents then it powers the monitor off and when the device is detected on the network then it powers the monitor on. That way when I go out it powers the monitor off automatically and powers it on when I am back home.
Read the statement by Michael Teeuw here.
mumblebaj
@mumblebaj
Part-time Module Developer. Develop what I need .
Best posts made by mumblebaj
-
RE: Need help on monitor power
-
MMM-Growatt
MMM-Growatt
Module that displays data from your Growatt Inverter.
Module Dependencies:
-
growatt v0.3.0
-
Requires an account on server.growatt.com
Module Config:
{ module: "MMM-Growatt", position: "middle_center", //Works best at middle_center. May not display all that well in other positions disabled: false, config: { username: "username", password: "password", plantId: "plantId", // Can be obtained from the Growatt site by checking your Plant information. This can be accessed from the left side of the screen updateInterval: 1000*60*30 ,//Update every 30 minutes deviceSerial: "deviceSerial" //This is the device serial number. Can be found under Input Search Number. } },
Installation Steps:
cd ~/MagicMirror/modules git clone https://github.com/mumblebaj/MMM-Growatt.git cd MMM-Growatt npm install
For any issues please open an issue on the module Github Issues page
-
-
RE: MMM-Reddit "No valid posts to display"
@sdetweil I had a look and made some changes to the module and it is working. Created a PR but don’t know if the owner would accept as it has been 3 to 5 years since he last made any changes.
Guys can use the below if they want:
https://github.com/mumblebaj/MMM-Reddit -
MMM-Rugby
Description:
Module created to display World Rugby Rankings and Match data. Match Data based on a few different Rugby Competition Types and Leagues.No Subscriptions required!
- WRS - Woman’s Sevens Series 2024
- MRS - Mens Sevens Series 2024
- JMU - U20 Six Nations 2024
- MRU - Mens Rugby Union
- Six Nations 2024
- Rugby Europe International Championship 2024
- Men’s Internationals 2024
- Rugby Europe Trophy 2024
- Rugby Europe Conference 2024
- Autumn Nations Series 2024
- The Rugby Championship 2024:
Screenshots:
World Rugby Standings
Mens Rubgy Union
Woman’s Sevens
API-SPORTS League Ranking
API-SPORTS Match Data
Version 1.0.1
initialVersion 1.0.2
Added option to filter by Leagues.Upcoming Features
Filter MRU by Leagues
Version 1.1.0
-
Have updated the module to add a second option of API-SPORT.
-
API-Sports require an API-KEY so user must register for an API-KEY. API-KEY allows for 100 free requests per day.
-
Module still supports
free
option. This can be toggled betweenfree
andapiSport
by using thecollectionType
. -
Have made updates to the
free
table displays.
Version 1.1.2
Feature has now been tested and merged to live
Still in testing. Release in the next day or two.- Add an
autoUpdate
option which allows the application to manage theupdateInterval
. This will let the application update as per theupdateInterval
Sunday to Friday, i.e. ifupdateInterval
has been set to update hourly, it will update Sunday to Friday hourly but on Saturdays it will update every 30 minutes. As Saturdays are generally game day, it is best to update half-hourly to get a refreshed score for current games.
Version 1.1.3
Added translations forfr
anden
. PR’s welcome for any other language support required -
MMM-NewsAPI
My First module, so take it easy
After my mirror crashed a few weeks ago I was looking for the MMM-News module created by bugsounet but could not find it anywhere. I have since learned that he has deprecated the module and have decided to create my.
The module provides a news feed from newsapi.org.
There are various config options and these have been detailed on my MMM-NewsAPI github page. Read the config options carefully as there are restrictions on which options can be used with which. You can also test your options on the newsapi.org prior to making your config in the config.js I have provided two basic samples.
Please let me know if you have issues with it and I will assist where I can as soon as I can.
Please note, as I am in South Africa and with the time differences it may take a few hours before I get to your queries.
-
RE: My first, slim mirror at home
@uros76 Looks very nice and clean. Like the “no wires” idea. Well done.
-
MMM-WOTD
Hi Folks.
I created what some would call, YET Another Word of the Day module.
The module has an option to either get Spanish or Portuguese Word of the Day. Other languages can possibly be added at a later stage on request and if I can find a page out there for it.
I am stuck between just showing the single selected language for now and maybe building a table to display multiple language WOTD with examples. I am open to suggestions on this. (Please raise them on github)
Check out the github page for it.
https://github.com/mumblebaj/MMM-WOTDSpanish WOTD
Portuguese WOTD
Enjoy!!
Updates:
-
Added Multi-language Support - You can now add multiple languages. Languages will rotate at a configurable interval
-
Add languages in an array
["spanish", "dutch", "german"]
etc -
Add you
rotateInterval
to the config i.e.1000*30
will rotate the display every 30 seconds between the selected languages.
-
-
RE: config,js beginner
@berne You are missing a comma after the closing bracket of MMM-awesome-alexa. It should be
},
-
MMM-GasMonitor
Why
I have in the last year moved “slightly” off the grid, solar, gas stove and a gas geyser. I am able to monitor my solar production using my MMM-Growatt module but was unable to monitor my gas usage and have the ability to order a refill in time before the gas runs out.I recently ordered a Mopeka Pro Check Sensor from Amazon.com but it does not have an integrated API and only provides a Bluetooth connection to the app.
Solution
What I came up with was creating the MMM-GasMonitor module.How it works
-
You have to work out your average daily usage. Instructions included on how I achieved this on the module Github page.
-
The module will starts off with 100% tank level (you can set this yourself to match your tank level in the input.txt file). At first run it takes the daily average and add’s it to the 100% giving you a starting point of, you know it, 100%
-
Based on the refresh rate, I run daily as I worked out my daily usage average, it will calculate the new level and display it along with adjusting the Level monitor and color accordingly.
Some more examples
I am open to integrate any API into the module if anybody has one that they would like integrated to monitor their own.
As I could not find one for the Mopeka Pro monitor I went the manual calc method.
Enjoy!!
-
-
MMM-CovidStats
I have had an issue with the MMM-COVID19 module as it has stopped pulling stats since the 2nd March 2022. I decided t0 make my own from a different source. No API keys required.
See Github module page:
MMM-CovidStats
In order to get the module you need to follow these steps:Module includes a country flag for the selected countries to display.
Module is best positioned in positionmiddle_center
cd ~/MagicMirror/modules git clone https://github.com/mumblebaj/MMM-CovidStats.git cd MMM-CovidStats npm install
Options:
-
Include multiple countries
-
Include World Stats
Screenshots
-
Latest posts made by mumblebaj
-
RE: Hello everyone, do you know if there is an MM module for rugby
@Manu85 No problem. As mentioned before, if you would like to personalize the module further you are more than welcome to fork it and make whatever changes you would like.
-
RE: Hello everyone, do you know if there is an MM module for rugby
@Manu85 I saw your request to him. The module is not built for you and only you. Others are using it right now. You don’t seem to appreciate and understand the complexities around the data and how it the API’s are defined.
This module is being used by a number of people, and unless you raise a feature request and everybody agree to request will I entertain the idea. What you are asking for is not easily achievable with the way the API calls are structured.
For my own personal use the module is fine as is.
I hope you come right but this matter I consider closed now and module will remain as is.
-
RE: Hello everyone, do you know if there is an MM module for rugby
@Manu85 The API they use is football only.
-
RE: Hello everyone, do you know if there is an MM module for rugby
@Manu85 Hi. I do not know. If you want to ask him to create or include the rugby into his module then you are more than welcome to do so.
-
RE: Can anyone revive AviationWX, PilotWX, or TAF
@FSAHD No donations required. We love this project and this forum.
-
RE: Can anyone revive AviationWX, PilotWX, or TAF
@sdetweil There is a simple api call from the site to get the metar data whicg might be simpler to use.
-
RE: Hello everyone, do you know if there is an MM module for rugby
@Manu85 PR = Pull Request which means you fork the module and make the relevant changes a push it back to the main repo.
-
RE: Can anyone revive AviationWX, PilotWX, or TAF
@sdetweil I have not seen another way. Sorry…
-
RE: Can anyone revive AviationWX, PilotWX, or TAF
@sdetweil If you want to use fetch you can do the first call as follows.
try { const response = await fetch(metarUrl, { headers: { 'Accept-Encoding': 'gzip', // Request gzip compression }, }); if (!response.ok) { throw new Error(`HTTP error! Status: ${response.status}`); } // Read response body as buffer const buffer = await response.buffer(); // Manually decompress gzip data const zlib = require('zlib'); const decompressedData = zlib.gunzipSync(buffer).toString();
You could use pako.
const decompressedData = pako.inflate(buffer, { to: 'string' });
-
RE: Can anyone revive AviationWX, PilotWX, or TAF
@sdetweil Both calls working.
try { const response = await axios.get(metarUrl, { responseType: 'arraybuffer', // ensure response is treated as binary headers: { 'Accept-Encoding': 'gzip', // request gzip compression }, }); // Unzip the gzip response const unzippedData = zlib.gunzipSync(response.data).toString(); let json_string = convert.toJson(unzippedData); var json = JSON.parse(json_string); var metarData = json.response.data.METAR; var airportData = new Object(); var airports = payload.airportList.split(",").map(function (airport) { airport = airport.trim(); return (airport.length < 4) ? "K" + airport : airport; }); airports.forEach(function (airport) { metarData.forEach(function (metar) { if (airport === metar.station_id) { if (this.debug) console.log("METAR data found for " + airport); airportData[airport] = metar; return; // check next airport in list } }); // console.log(metarData) }); } catch (error) { console.error('Error fetching data:', error); } const checktype = { "Airspace_Flow_List":"Airspace_Flow", "Ground_Delay_List": "Ground_Delay", "Arrival_Departure_Delay_List": "Delay","Airport_Closure_List":"Airport" } try { const response = await axios.get(FAAUrl); // Your further processing let json_string = //convert.toJson(test_data) swap comments to use test FAA data convert.toJson(response.data.toString()); if (this.debug) console.log("json faa=" + json_string); const faa_data = JSON.parse(json_string); if (!Array.isArray(faa_data['AIRPORT_STATUS_INFORMATION'].Delay_type)) { // save the current entry const x = faa_data['AIRPORT_STATUS_INFORMATION'].Delay_type // init as an array faa_data['AIRPORT_STATUS_INFORMATION'].Delay_type = [] // add the element into the array faa_data['AIRPORT_STATUS_INFORMATION'].Delay_type.push(x) } // loop thru the delay types faa_data['AIRPORT_STATUS_INFORMATION'].Delay_type.forEach(t => { // if (t.name !== "Airspace Flow Programs") { // for each the there are two major keys, name and the list for that type // get the key of the list const keyname = Object.keys(t)[1] // remove the "_list" part for passing to front end const key = keyname.split('_').slice(0, -1).join('_') if (this.debug) console.log("key data=" + JSON.stringify(t[keyname][checktype[keyname]]) + "keyname=" + keyname + " key=" + checktype[keyname] + "\n") if (!Array.isArray(t[keyname][checktype[keyname]])) { const x = t[keyname][checktype[keyname]] t[keyname][checktype[keyname]] = [] t[keyname][checktype[keyname]].push(x) } else { console.log("checkytype=" + checktype[keyname]) } if (this.debug) console.log("data=" + Object.keys(faa_data['AIRPORT_STATUS_INFORMATION'].Delay_type)[0] + " data=" + JSON.stringify(t) + " keyname=" + keyname + " key=" + key + " last part=" + JSON.stringify(t[keyname][key]) + "\n") // look thru all the aaffected airports for this record type t[keyname][checktype[keyname]].forEach(airport_record => { // if the airport is one the user requested if (airports.includes('K' + airport_record.ARPT)) { if (airportData['K' + airport_record.ARPT]['FAA'] == undefined) airportData['K' + airport_record.ARPT]['FAA'] = {} // save this data record airportData['K' + airport_record.ARPT]['FAA'][key] = airport_record } }) } }); // Emitting data to Socket //self.sendSocketNotification("WX_RESULT", airportData); } catch (error) { console.error('Error fetching FAA data:', error); }