Navigation

    MagicMirror Forum

    • Register
    • Login
    • Search
    • Recent
    • Tags
    • Unsolved
    • Solved
    • MagicMirror² Repository
    • Documentation
    • Donate
    • Discord
    1. Home
    2. tidus5
    MagicMirror² v2.15.0 is available! For more information about this release, check out this topic.
    • Profile
    • Following 0
    • Followers 0
    • Topics 6
    • Posts 59
    • Best 5
    • Groups 0

    tidus5

    @tidus5

    8
    Reputation
    1795
    Profile views
    59
    Posts
    0
    Followers
    0
    Following
    Joined Last Online

    tidus5 Follow

    Best posts made by tidus5

    • RE: MMM-Todoist - Your todoist tasks on your mirror

      Yop,

      i did it 🙂

      0_1482838855804_Screen Shot 2016-12-27 at 12.37.48.png

      posted in Productivity
      tidus5
      tidus5
    • RE: MM-Navbar - Navigation Bar for Touchscreens to hide/show modules

      @chrisyy i think you can list all the modules yes but how to attribut the good icon?
      i will check for hide the module on startup tonight - i let you know if i find something

      @cowboysdude 0_1481034446135_Screen Shot 2016-12-06 at 15.26.36.png

      posted in System
      tidus5
      tidus5
    • RE: MMM-Nest

      0_1481642822085_Screen Shot 2016-12-13 at 16.25.04.png

      changed the CSS

      for who want

      .heating {
      width: 130px;
      height: 130px;
      background: red;
      background: radial-gradient(#571d1d, #b30000);
      -moz-border-radius: 50px;
      -webkit-border-radius: 50px;
      border-radius: 70px;
      line-height: 130px;
      font-size: 50px;
      text-align: center;
      position: relative;
      border: 4px solid #FFF;
      }
      
      .cooling {
      width: 130px;
      height: 130px;
      background: blue;
      background: radial-gradient(#0a237a, #436cc0);
      -moz-border-radius: 50px;
      -webkit-border-radius: 50px;
      border-radius: 70px;
      line-height: 130px;
      font-size: 50px;
      text-align: center;
      position: relative;
      border: 4px solid #FFF;
      }
      
      .heatingHC {
      width: 130px;
      height: 130px;
      background: red;
      background: radial-gradient(#571d1d, #b30000);
      -moz-border-radius: 50px;
      -webkit-border-radius: 50px;
      border-radius: 70px;
      line-height: 130px;
      font-size: 40px;
      text-align: center;
      position: relative;
      border: 4px solid #FFF;
      }
      
      .coolingHC {
      width: 130px;
      height: 130px;
      background: blue;
      background: radial-gradient(#0a237a, #436cc0);
      -moz-border-radius: 50px;
      -webkit-border-radius: 50px;
      border-radius: 70px;
      line-height: 130px;
      font-size: 40px;
      text-align: center;
      position: relative;
      border: 4px solid #FFF;
      }
      
      .off {
      width: 130px;
      height: 130px;
      border: 4px solid white;
      background: black;
      -moz-border-radius: 50px;
      -webkit-border-radius: 50px;
      border-radius: 70px;
      line-height: 130px;
      font-size: 50px;
      text-align: center;
      position: relative;
      }
      
      .heatingText {
        font-size:medium;
        position: absolute;
      top: -5px;
      right: 40px;
        width: 0;
      }
      
      .coolingText {
        font-size:medium;
        position: absolute;
      top: -5px;
      right: 40px;
        width: 0;
      }
      
      .humidityText {
        position:absolute;
        font-size:large;
        top: 35%;
        width: 100%;
      }
      
      .nameText {
       font-size:medium;
       text-align:center;
       width:33%;
      }
      
      .center {
       text-align:center;
      }
      
      .heatingCell {
       background:red;
       background:linear-gradient(to right, #990000 , red, #990000);
      }
      
      .coolingCell {
       background-color:blue;
       background:linear-gradient(to right, #000099 , blue, #000099);
      }
      
      .fanIcon {
       height:15px;
       width:15px;
       position:absolute;
       top: 72%;
       right: 42%;
      }
      
      posted in Utilities
      tidus5
      tidus5
    • RE: Facial Recognition - customize your mirror for every user!

      Hey 😃

      little UP - im becoming crazy.
      i read and read an read again - add… inside config.js (mirror module) or config.py (model tester)
      so users : [‘kevin’]… and the config.py is needed if i want to test with the recognition-tools

      right ?
      i see if the MMM-Facial use “everyone” or “kevin” that doesnt work

      posted in Troubleshooting
      tidus5
      tidus5
    • RE: MMM-Hue

      Hello @Mitchfarino

      Im trying to make your module “clickable” 🙂

      could you help me with that ?

      Module.register(“MMM-Hue”, {

      defaults: {
          bridgeip: "",
          userid: "",
          colour: true
      },
      // Define required scripts.
      getScripts: function () {
          return [this.file("js/jquery.js")];
      },
      getStyles: function () {
      
          return ["font-awesome.css", "MMM-Hue.css"];
      },
      // Define start sequence.
      start: function () {
          //These will be moved to config in a later release
          this.lightsorgroups = "groups";
          this.updateInterval = 60 * 100; // 10000 updates every 10 minutes
          this.animationSpeed = 2 * 1000;
          this.initialLoadDelay = 0;
          //end
          var result = false;
          this.url = "http://" + this.config.bridgeip + "/api/" + this.config.userid + "/" + this.lightsorgroups;
          this.getData();
          setInterval(() => {
              this.getData();
          }, this.updateInterval);
      },
      
      // Override dom generator.
      getDom: function () {
          var wrapper = document.createElement("div");
          //alert("http://" + this.config.bridgeip + "/api/" + this.config.userid + "/" + this.config.lightsorgroups);
      
          if (this.result) {
      
              var table = document.createElement("table");
              table.classList.add("small", "table", "align-left");
      
              table.appendChild(this.createLabelRow());
      
              var lamps = Object.keys(this.result);
      
              for (var i = 0; i < lamps.length; i++) {
      
                  var row = document.createElement("tr");
                  var room = document.createElement("td");
                  room.innerHTML = this.result[lamps[i]].name;;
                  row.appendChild(room);
                  var lightsallLabel = document.createElement("td");
                  lightsallLabel.classList.add("centered");
      
                  var lightstatus = document.createElement("i");
                  //lightstatus.classList.add(“fa”, this.result[lamps[i]].state.reachable ? (this.result[lamps[i]].state.on ? “fa-lightbulb-o” : “fa-adjust” ) : “fa-times”);
      	
      	buttonlightstatus[i] = false;  // CUSTOM
      	buttonlight[i] = document.createElement("span");  // CUSTOM
      	//var buttonlightstatus[i] = false;  // CUSTOM
      	//var buttonlight[i] = document.createElement("span");  // CUSTOM
      
      	//weatherbutton.className = "wi wi-day-rain-mix navbar";
      	//var forecast = MM.getModules().withClass('weatherforecast');
      
      	if(this.result[lamps[i]].state.all_on)
      	{
      	lightstatus.classList.add("fa-lightbulb-o")
      	buttonlightstatus[i] = true;
      	}		
      	else if (this.result[lamps[i]].state.any_on)
      	{
      	lightstatus.classList.add("fa-adjust")
      	buttonlightstatus[i] = true;
      	}
      	else {
      	lightstatus.classList.add("fa-times")
      	buttonlightstatus[i] = false;
      	};
      	
      	// lightstatus.classList.add("fa", this.result[lamps[i]].state.all_on ? "fa-lightbulb-o" : (this.result[lamps[i]].state.any_on ? "fa-adjust" : "fa-times"));  // CUSTOM
                  if (this.config.colour) {
      
                      if (this.result[lamps[i]].state.all_on) {
                          lightstatus.classList.add("lights-all-on")
                      }
                      else {
                          if (this.result[lamps[i]].state.any_on) {
                              lightstatus.classList.add("lights-partial-on")
                          }
                      }
                  }
                  ;
                  lightsallLabel.appendChild(lightstatus);
          		wrapper.appendChild(buttonlight[i]);  //CUSTOM                
                  row.appendChild(lightsallLabel);
      
                  table.appendChild(row);
      
              }
              wrapper.appendChild(table);
             										//CUSTOM
              		$(buttonlight[i]).on("click", function(){
      					if(buttonlightstatus[i]){
      					alert('its work');
      					putJSON(t"http://" + this.config.bridgeip + "/api/" + this.config.userid + "/lights/" + buttonlightstatus[i] +"/state , ({'on':false});					
      						buttonlightstatus[i] = false;
      					}else{
      					putJSON(t"http://" + this.config.bridgeip + "/api/" + this.config.userid + "/lights/" + buttonlightstatus[i] +"/state , ({'on':true});	
      					buttonlightstatus[i] = true;
      						}
      					});
              
          } else {
              wrapper.innerHTML = "No Data returned";
          }
          return wrapper;
      },
      
      createLabelRow: function () {
          
          var labelRow = document.createElement("tr");
      
          var roomiconlabel = document.createElement("th");
          var typeIcon = document.createElement("room");
          typeIcon.classList.add("fa", "fa-home");
          roomiconlabel.appendChild(typeIcon);
          labelRow.appendChild(roomiconlabel);
      
          var lightsonlabel = document.createElement("th");
          lightsonlabel.classList.add("centered");
          var typeIcon = document.createElement("lightson");
          //typeIcon.classList.add("fa", "fa-lightbulb-o");
          typeIcon.innerHTML = "Lights On";
          lightsonlabel.appendChild(typeIcon);
          labelRow.appendChild(lightsonlabel);
      
          var lightsonlabel = document.createElement("th");
          lightsonlabel.classList.add("centered");
      
          return labelRow;
      }
      ,
      getData: function () {
          $.getJSON(this.url, (data) => {
              this.result = data;
              this.updateDom();
          });
      },
      

      });

      my brigde is in Amsterdam and im in Belgium for Christmas 🙂

      posted in Utilities
      tidus5
      tidus5

    Latest posts made by tidus5

    • RE: [MMM-NowPlayingOnSpotify] – Display the currently on Spotify playing song

      Indeed - having the same issue.
      i connected my spotify account to google home. And when you ask google home to play some music. it’s considered like an another account.

      posted in Entertainment
      tidus5
      tidus5
    • RE: MMM-ProfileSwitche - icone not working after update

      Hey everyone,

      It’s solved \o/

      somehow the @fortawesome wasnt created.
      i downloaded font awesome and recreated the symbolic link

      ln -s \home\pi\fontawesome @fortawesome fixed everything

      @MichMich
      i saw you had an open issue with the exact same error message
      https://github.com/MichMich/MagicMirror/issues/1597

      so i put that here 🙂

      fijne avond

      posted in Utilities
      tidus5
      tidus5
    • MMM-ProfileSwitche - icone not working after update

      Re: [MMM-ProfileSwitcher](A Profile/User/Layout Switching Module)

      Hello everyone,

      this module doesnt show the icon anymore. i followed all the post here about the font awesome issue. npm install etc etc but still ;-/ any idea ?

      i checked and it seems that the code is correct.

      getStyles: function() {
      return [“font-awesome.css”, this.file(‘MMM-TouchNavigation.css’)];
      },

      posted in Utilities
      tidus5
      tidus5
    • RE: MMM-Hue-Lights - new module for your Philips Hue lights!

      Amazing job !!

      did you plan to make your module tactile ready :-p

      posted in Utilities
      tidus5
      tidus5
    • RE: [MMM-NowPlayingOnSpotify] – Display the currently on Spotify playing song

      @raywo
      control the volume, play pause next previous and maybe the playlist content ?

      every morning I changing my playlist on my phone and this is my ultimate goal to have it in the screen 🙂

      posted in Entertainment
      tidus5
      tidus5
    • RE: [MMM-NowPlayingOnSpotify] – Display the currently on Spotify playing song

      Thanks!!! just amazing.
      Any chance you work on an version for touch screen @Raywo?

      posted in Entertainment
      tidus5
      tidus5
    • RE: MMM-Todoist - Your todoist tasks on your mirror

      This is my code
      it’s based on 2 users (i badly commented the code)

      /* Magic Mirror
       * Fetcher
       *
       *
       * By Michael Teeuw http://michaelteeuw.nl edited for Wunderlist by Paul-Vincent Roll
       * Edited again for Todoist by Chris Brooker
       * 
       * MIT Licensed.
       */
      
      var request = require("request");
      
      /* Fetcher
       * Responsible for requesting an update on the set interval and broadcasting the data.
       *
       * attribute listID string - ID of the Wunderlist list.
       * attribute reloadInterval number - Reload interval in milliseconds.
       */
       
       	function dateDiff(date1, date2){
          var diff = {}                           // Initialisation du retour
          var tmp = date2 - date1;
       
          tmp = Math.floor(tmp/1000);             // Nombre de secondes entre les 2 dates
          diff.sec = tmp % 60;                    // Extraction du nombre de secondes
       
          tmp = Math.floor((tmp-diff.sec)/60);    // Nombre de minutes (partie entière)
          diff.min = tmp % 60;                    // Extraction du nombre de minutes
       
          tmp = Math.floor((tmp-diff.min)/60);    // Nombre d'heures (entières)
          diff.hour = tmp % 24;                   // Extraction du nombre d'heures
           
          tmp = Math.floor((tmp-diff.hour)/24);   // Nombre de jours restants
          diff.day = tmp;
           
          return diff;
      }
      
      var Fetcher = function(listID, reloadInterval, accessToken, clientID) {
       var self = this;
       if (reloadInterval < 1000) {
      	reloadInterval = 1000;
       }
      
       var reloadTimer = null;
       var items = [];
      
       var fetchFailedCallback = function() {};
       var itemsReceivedCallback = function() {};
      
       /* private methods */
      
       /* fetchTodos()
      	* Request the new items.
      	*/
      
       var fetchTodos = function() {
      	clearTimeout(reloadTimer);
      	reloadTimer = null;
      
      	request({
      		url: "https://todoist.com/API/v7/sync/",
      		method: "POST",
      		headers: { 
      			'content-type': 'application/x-www-form-urlencoded',
      			'cache-control': 'no-cache' 
      		},
      		form: { 
      				token: accessToken,
      				sync_token: '*',
      				resource_types: '["items"]' 
      		}
      	 },
      	 
      	 
      	 function(error, response, body) {
      		if (!error && response.statusCode == 200) {
               items = [];
      		 for (var i = 0; i < JSON.parse(body).items.length; i++) {
      			 if (JSON.parse(body).items[i].project_id == listID) {
      		
      		donneetableau = JSON.parse(body).items[i];
      		onbalance = [];
      		icontodo = [];
      		assignedname = [];
      		datedueretour = [];
      		contentretour = [];
      		assignedtodoname = [];
      		checkedretour = [];
      		
      		
      		if (donneetableau.priority == '1') {icontodo ='<i></i> '}
      		else if (donneetableau.priority == '2') {icontodo ='<i></i> '}
      		else if (donneetableau.priority == '3') {icontodo ='<i></i> '}
      		else {icontodo ='<i></i> '}
      
      		if (donneetableau.assigned_by_uid == 'XXXXXXXX') {assignedname ='(XXXXX)'}//TEST  first XXX UID second XXXX yourname
      		else if (donneetableau.assigned_by_uid == 'XXXXXXX') {assignedname ='(XXXXXX)'}//TEST  first XXX UID second XXXX yourname
      		else {assignedname ='Inconnu'};
      		
      		if (donneetableau.due_date_utc) 
      			{
      				date1 = new Date();
      				date2 = new Date(donneetableau.due_date_utc);
      				diff = dateDiff(date1, date2);
      								
      				if (diff.day = '1') {datedueretour += diff.day + 'd <i></i> ';}
      				else if (diff.hour >= '1') {datedueretour += diff.hour + 'h <i></i> ';}		
      				else {datedueretour += diff.min + 'min <i></i> ';};						
      
      
      			}
      		else {datedueretour =''};
      		
      		contentretour = donneetableau.content;
      		
      		if (donneetableau.responsible_uid ) {
      		if (donneetableau.responsible_uid == 'XXXXXXX') {
      		assignedtodoname ='<i></i> '
      		} ////YOUR UID USER
      		
      		else if (donneetableau.responsible_uid == 'XXXXXXX') {assignedtodoname ='<i></i> '}
      		else {assignedtodoname ='Inconnu'};  // YOUR UID USER
      		} else { assignedtodoname ='' };
      		
      		checkedretour = donneetableau.checked;
      		onbalance +=assignedtodoname + icontodo + datedueretour + contentretour;
      		items.push(onbalance);	
      				//items.split('\n');
      				 //priority.push(JSON.parse(body).priority[i].priority);	
      				 //datedue.push(JSON.parse(body).datedue[i].due_date_utc);	
      
      			 }
      		 }
      		 self.broadcastItems();
      		 scheduleTimer();
      		}
      	 });
      
       };
      
       /* scheduleTimer()
      	* Schedule the timer for the next update.
      	*/
      
       var scheduleTimer = function() {
      	//console.log('Schedule update timer.');
      	clearTimeout(reloadTimer);
      	reloadTimer = setTimeout(function() {
      	 fetchTodos();
      	}, reloadInterval);
       };
      
       /* public methods */
      
       /* setReloadInterval()
      	* Update the reload interval, but only if we need to increase the speed.
      	*
      	* attribute interval number - Interval for the update in milliseconds.
      	*/
       this.setReloadInterval = function(interval) {
      	if (interval > 1000 && interval < reloadInterval) {
      	 reloadInterval = interval;
      	}
       };
      
       /* startFetch()
      	* Initiate fetchTodos();
      	*/
       this.startFetch = function() {
      	fetchTodos();
       };
      
       /* broadcastItems()
      	* Broadcast the exsisting items.
      	*/
       this.broadcastItems = function() {
      	if (items.length
      
      posted in Productivity
      tidus5
      tidus5
    • RE: MMM-Todoist - adding reminder priority owner

      @uzumon

      Hello

      see here - i’m on holiday. Send that as soon as i’m back

      https://forum.magicmirror.builders/topic/566/mmm-todoist-your-todoist-tasks-on-your-mirror/59?page=6

      posted in Development
      tidus5
      tidus5
    • RE: MMM-Todoist - Your todoist tasks on your mirror

      @djsunrise19 Hello

      i’m on holiday. Can send you the files when i’m back. you need to change the fetcher indeed.

      Have a nice day

      posted in Productivity
      tidus5
      tidus5
    • RE: MMM-MyCommute

      @j.e.f.f Perfect!!!

      thanks 🙂

      posted in Transport
      tidus5
      tidus5