Recherche

Votre recherche de tv a donné 4001 résultats.

altmine-co.jpg

Vous commencez à vous intéresser aux monnaies alternatives comme le Bitcoin, le Litecoin ou bien le Dodgecoin ? Vous souhaitez participer à la validation des blocs de transactions du réseau et devenir ainsi mineur ?

Venez miner sur Altmine.co, mon pool de minage Litecoin P2P totalement ouvert et ne nécessitant aucune inscription préalable. Ce pool se repose sur la technologie P2pool. Le serveur étant hébergé chez Online, il offre de très faibles latences aux personnes qui sont chez un FAI français.

Pour commencer à miner simplement :

  1. Télécharger le kit de minage Windows disponible sur le site ou téléchargez des outils de minage comme Cpuminer, Cudaminer, Cgminer .... (attention, ces outils sont parfois reconnus comme des trojans par les antivirus). Si vous utilisez vos propres outils, l'URL du serveur est le suivant : http://altmine.co:4444
  2. Renseignez dans le fichier "settings.bat" votre identifiant de Wallet de Litecoin sur lequel vous souhaitez recevoir votre crypto-monnaie en échange des ressources de calcul mises à disposition sur le réseau.
  3. Si vous ne possédez pas de Wallet Litecoin, téléchargez la dernière version de l'application Litecoin et créez un nouveau Wallet.
  4. Exécutez l'outil de minage adapté à votre matériel.

Les statistiques du pool et de l'ensemble des utilisateurs du pool sont disponibles à cette adresse : http://altmine.co/static/

À chaque "Share" approuvé par le réseau Litecoin, vous devriez recevoir des transactions proportionnelles à vos efforts de calcul :

minage-altmine.jpg

Vous voilà devenu mineur de transaction. Pour consulter le cours du Litecoin, vous pouvez faire un tour du coté du site de BTC-e. La valeur du Litecoin a énormément baissée depuis l'hiver 2014, mais il n'est pas impossible qu'un jour le Litecoin atteigne une valorisation beaucoup plus importante.

Lors qu'un Japonais tente d'innover pour répondre à son téléphone le plus rapidement possible, cela donne cette vidéo totalement loufoque et ringarde. A découvrir si vous ne la connaissez pas déjà !


Après avoir trouvé la solution pour son téléphone, il s'est intéressé à l'iPad d'Apple :

Vous pouvez découvrir toutes les autres vidéos de morishowta sur sa chaine Youtube.

web2day_2015.png

Le Web2day offre un condensé des dernières tendances et des meilleures pratiques en matière d’innovation. A l’occasion de différentes conférences, workshops, showroom, concours de startups, soirées, tous les professionnels du numérique de France et de partout ailleurs en Europe, se retrouvent, pendant 3 jours, pour « faire le plein » de nouveautés, d’inspiration et de rencontres.

Pour cette édition 2015 qui se déroulera du 3 à 5 juin, ce sont plus de 2 300 passionnés de nouvelles technologies (entrepreneurs, sponsors, professionnels du web et du numérique, technophiles, étudiants, journalistes, blogueurs,…) et plus de 130 speakers internationaux de renoms qui sont attendus en juin prochain.

Le programme des 130 conférences, débats, workshops organisés tout au long des 3 jours s’articulera autour des 5 grandes thématiques suivantes :

  • Entrepreneuriat (startup, financement, accélérateur…),
  • Expertise métier (échange de bonnes pratiques),
  • Internet of everything (objets connectés, e-santé...),
  • Innovation responsable (« green », économie collaborative, politiques numériques & territoire)
  • Et un plus impertinent « What the fuck ? » (regroupant des sujets prospectifs, décalés, sociétaux…).

A noter qu’en marge de cette programmation, le web2day accueillera également :

  • Un concours international de startups (« Le global challenge») afin de faciliter le lien entre la cinquantaine de jeunes pousses retenues à cette occasion et les fonds d’investissement présents à Nantes, pour le concours.
  • Une Tech Zone,
  • Un showroom sur lequel sera présenté toute une panoplie d’objets connectés.

Les pass 3 jours "Early Bird" sont d'ores et déjà disponibles sur le site du Web2day au tarif de 189€ au lieu de 249€.

Si l’événement vous intéresse, n'hésitez pas à réserver vos places dès maintenant avant salle comble.

marshmallowchallengesetup.jpg

Des spaghettis , un marshmallow, du ruban et du scotch peuvent permettre d'apprendre beaucoup sur l'homme et la manière dont il collabore en équipe.

Tom Wujec présente des résultats surprenants de ses recherches approfondies sur le "problème du marshmallow".

Il s'agit d'un simple exercice de construction en équipe, qui implique :

  • des spaghettis secs
  • un mètre de ruban collant
  • un marshmallow.

Le mashmallow doit être positionné sur la partie la plus haute de la tour construite en spaghettis. L'équipe qui réalise la tour la plus haute en 18 minutes remporte le concours.

Ce test a été réalisé par de nombreuses d'équipes différentes, cependant les équipes qui réalisent les plus grandes tours ne sont pas celles qui ont les positions sociales les plus élevées dans notre société.

C

Vous avez franchi la première étape qui est l'arduinisation de votre télécommande pour ouvrir vos volets ? Voici la seconde étape qui consiste à automatiser l'ouverture et la fermeture de vos volets aux horaires du lever et du coucher du soleil.

J'utilise pour cela un simple fichier NodeJS se basant sur les deux librairies suivantes :

  • Cron pour l'automatisation de tâches
  • Suncalc pour le calcul des horaires de lever et coucher du soleil.

Le programme réalisé est très simple, il programme un job Cron au prochain coucher ou lever du soleil. Le job se limite à réaliser un appel HTTP au service REST exposé par l'Arduino sur lequel est connecté la télécommande des volets. Dès lors que le job se termine, il programme une nouvelle tâche à l'inverse de la tâche qu'il vient d’effectuer.

/**
 * DomoGeeek v0.1
 * https://github.com/ltoinel/domogeeek
 *
 * Copyright 2014 DomoGeeek
 * Released under the Apache License 2.0 (Apache-2.0)
 *
 * @desc: Task that opens and closes my shutters

 */


var request = require('request');
var CronJob = require('cron').CronJob;
var SunCalc = require('suncalc');
       
//Local require
var config = require('../config');
var multipush = require('../../../libs/multipush');

/**
 * Initializes a new Cron job.
 *
 * @param name : the job name
 * @param uri : the uri to request
 * @param timeFunction : the time function to call
 * @param date : the date
 */

function initJob(name, uri, timeFunction, date){
       
        var time = timeFunction(date);
        console.log("Job initializing : " + name + " at " + time);
       
        var job = new CronJob(time,
       
        // OnTick
        function(){
               
                console.log("Job starting : " + name);
               
                request.get(uri).on('error', function(err) {
                        console.error("Shutter API error : " + err);
                });
               
                multipush.send(config.multipush,"Job starting",name,config.shutters.channel);
               
                // Stop the current job
                this.stop();
               
        // OnCompleted
        },function(){
               
                console.log("Job stop : " + name);
               
                // Schedule the next job
                scheduleNextJob(name);

        }, false, config.timezone).start();
}

/**
 * Schedules the next jobs.
 *
 * @param previousJobName The previous job name
 */

function scheduleNextJob(previousJobName){
       
        // If the previous job was closing the shutters
        if (previousJobName == config.shutters.close.message) {
               
                // Schedules the task that will open the shutters tomorrow
                initJob(config.shutters.open.message, config.shutters.open.url, getOpenTime, getTomorrowDate());

        // If the previous job was opening the shutters
        } else if (previousJobName == config.shutters.open.message){
               
                // Schedules the task that will close the shutters today
                initJob(config.shutters.close.message, config.shutters.close.url, getCloseTime, new Date());
        }
}

/**
 * Return the date of tomorrow.
 */

function getTomorrowDate(){
        var today = new Date();
        var tomorrow = new Date();
        tomorrow.setDate(today.getDate()+1);
        return tomorrow;
}

/**
 * Return the times regarding the configured latitude and longitude.
 *
 * @param date : the date to use for the times calculation.
 */

function getTimes(date){
        var times = SunCalc.getTimes(date, config.shutters.latitude, config.shutters.longitude);
        return times;
}

/**
 * Return the next time in cron format to open the shutters.
 *
 * @param date : the date to use for the sunrise calculation.
 */

function getOpenTime(date){

        // Fix configured time
        if (config.shutters.open.time !== undefined){
                return config.shutters.open.time;
        }
       
        var times = getTimes(date);
        console.log("Get sunrise time for " + date + " => " + times.sunrise);
       
        return times.sunrise.getSeconds()+" "+times.sunrise.getMinutes()+" "+times.sunrise.getHours()+" * * *";
}

/**
 * Return the next time in cron format to close the shutters.
 *
 * @param date : the date to use for the sunset calculation.
 */

function getCloseTime(date){
       
        // Fix configured time
        if (config.shutters.close.time !== undefined){
                return config.shutters.close.time;
        }
       
        var times = getTimes(date);
        console.log("Get sunset time for " + date + " => " + times.sunset);
       
        return times.sunset.getSeconds()+" "+times.sunset.getMinutes()+" "+times.sunset.getHours()+" * * *";
}

// Starts the right job now
var now = new Date();
var times = getTimes(now);

// Sunrise will arrive today, we have to open the shutters today
if (times.surise > now){
        initJob(config.shutters.open.message, config.shutters.open.url, getOpenTime, new Date());
}
// Sunrise was previous, sunset will arrive today, we have to close the shutters today
else if (times.sunset > now ){
        initJob(config.shutters.close.message, config.shutters.close.url, getCloseTime, new Date());
       
// Sunrise and sunset are past, we have to open the shutters tomorrow
} else if (times.sunset < now ){
        initJob(config.shutters.open.message, config.shutters.open.url, getOpenTime, getTomorrowDate());
}

Le fichier de configuration nécessaire au bon fonctionnement du programme :

// Shutters task service
config.shutters = {};
config.shutters.enabled = true;
config.shutters.latitude = 47.2;
config.shutters.longitude = -1.5;
config.shutters.open = {};
config.shutters.open.time = '0 0 9 * * *'; // If not set, use the sunset time
config.shutters.open.message = 'Ouverture automatique des volets';
config.shutters.open.url = 'http://xxx.xxx.xxx.xxx/up';
config.shutters.close = {};
//config.shutters.close.time = '0 0 22 * * *'; // If not set, use the sunrise time
config.shutters.close.message = 'Fermeture automatique des volets';
config.shutters.close.url =  'http://xxx.xxx.xxx.xxx/down';
config.shutters.channel =  'openkarotz';

Ce bout de code est OpenSource, vous pouvez l'enrichir et proposer des améliorations via GitHub.

mqttorg-glow.png

Connaissez-vous le MQTT ? Il s'agit d'un standard OASIS permettant de simplifier la communication machine à machine (M2M), idéalement conçu pour l'Internet des objets.

MQTT is a machine-to-machine (M2M)/"Internet of Things" connectivity protocol. It was designed as an extremely lightweight publish/subscribe messaging transport. It is useful for connections with remote locations where a small code footprint is required and/or network bandwidth is at a premium. For example, it has been used in sensors communicating to a broker via satellite link, over occasional dial-up connections with healthcare providers, and in a range of home automation and small device scenarios. It is also ideal for mobile applications because of its small size, low power usage, minimised data packets, and efficient distribution of information to one or many receivers.

C'est sympa, mais cela signifie quoi dans la pratique ?

Et bien cela ressemble à un bus d’événement très simple à contacter sur lequel des producteurs et des consommateurs de message peuvent s'abonner.

broker.png

Il existe de nombreuses implémentations de broker MQTT sur Internet. L'un des plus simples à utiliser est très certainement Mosca, une implémentation NodeJS de MQTT ultra-configurable et adaptable à tout besoin. Quelques lignes de code Javascript permettent d'instancier son propre serveur MQTT.

Pour des besoins plus lourds, notamment l'exposition REST/COAP des objets, il est possible d'utiliser Eclipse Ponte une surcouche de Mosca actuellement en incubation à la fondation Eclipse.

architecture-ponte.png

Ensuite si vous souhaitez ajouter de l’intelligence à votre broker MQTT, la solution la plus simple est de connecter une instance Node-Red à votre broker MQTT.

node-red-screenshot2.png

Vous pourrez créer les scénarios de votre choix, orchestrer des actions dès lors qu'un certain événement arrive sur le broker ...

C'est autour de ces deux produits que je suis en train de revoir l'architecture de mon logiciel de domotique pour les geeks : Domogeeek. Une branche de développement a été créée spécifiquement pour la migration. Le gros avantage du MQTT est que les producteurs de messages et les consommateurs peuvent être répartis sur différentes machines.

Je vous tiendrai au courant de mes avancements, une v1.0 devrait bientôt voir le jour dès que tous les modules auront été migrés.

je-suis-un-choix-banner.jpg

Petit coup de pouce à Vincent Quester, un ami qui participe au festival de film Nikon et qui a de super idées. Il a tourné un court métrage avec Blaise Moulin, un super comédien qui me fait bien rire.

Dans le court métrage, Blaise, petit franchouillard moyen, a du succès avec les femmes et ne sait pas leur dire non. Il apprendra pourtant, à ses dépens, que c'est en s'affirmant qu'on évite les pires situations.

nikon-je-suis-un-choix.jpg

Si la vidéo vous plait, n'hésitez pas à les soutenir !

gdg-paris-2015.jpg

Le prochain Devfest parisien aura lieu le 30 janvier prochain à l'ECE Paris.

Au programme de cet événement :

  • 300+ participants de tous horizons.
  • 20+ heures de pure technologie Google.
  • 20+ speakers de France et au delà.
  • 4 tracks en parallèle : web, mobile, cloud, discovery.

L'entrée coûte 10€. Plus d'informations sur les différents speakers à venir.

http://devfest.gdgparis.com

smart-energy-meter-chart.png

Après le Karotz qui parle quand vous dépassez un certain seuil de consommation d'énergie, voici une solution simple pour produire soit même des graphes de consommation électrique.

La première étape est d'installer sur votre tableau électrique un Z-Wave Smart Energy Meter de chez Aeon. Celui-ci est proposé à un tarif avoisinant les 100€ et diffuse des rapports de consommation en Z-Wave à intervalle régulier.

La seconde étape consiste à capturer les paquets Z-Wave et à les enregistrer dans une base NoSQL. Pour cela vous pouvez utiliser mon module "ZwaveBus" disponible sur Gitbub, celui-ci fonctionne parfaitement sur un petit Raspberry équipé d'un dongle Z-wave.

aeon-labs-compteur-de-consommation-electrique.jpg

Il vous suffira ensuite de ne laisser que le listener "power.js" qui prend en charge les messages Z-Wave provenant du Smart Energy Meter. Il faudra au préalable vous assurer du "nodeid" de votre Smart Meter, vous pourrez le découvrir au premier lancement du module "ZwaveBus".

Enfin, vous pouvez garder que les quelques lignes de code suivantes si vous n'avez pas de Karotz à faire parler ou clignoter.

/**
 * We listen for a COMMAND_CLASS_METER event.
 * This event is sent by the Aeon HEM2 power energy meter.
 */

bus.on(COMMAND_CLASS_METER, function(nodeid, value){

         if (nodeid == 7 && value['label'] == "Power"){
               
                // Saving the event into the mongoDB
                new Event({ nodeid: nodeid,
                    comclass: comclass,
                    type: value['type'],
                    label: value['label'],
                    value: value['value']}).save();
               
        }
});

Une fois l'application NodeJS démarrée (node app.js) et la base mongoDB démarrée, le module expose un Webservice REST simplement accessible au travers de l'URL suivante :

http://ip-de-votre-machine:9094/data/Power?date=2014-12-30

Le paramètre "Power" correspond aux types de rapports qui sont sauvegardés dans la base MongoDB et qui sont nécessaires pour la production de graphe.

Pour fabriquer un graphe de votre consommation d'électricité journalière, il suffira de créer la page Web suivante :

<html>
<head>
 <link rel="stylesheet" href="http://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.css">
 <script src="http://ajax.googleapis.com/ajax/libs/jquery/1.9.0/jquery.min.js"></script>
 <script src="http://cdnjs.cloudflare.com/ajax/libs/raphael/2.1.0/raphael-min.js"></script>
 <script src="http://cdnjs.cloudflare.com/ajax/libs/morris.js/0.5.1/morris.min.js"></script>
</head>
<body>

<div id="powerChart" style="height: 900px; width: 100%"></div>

<script>

console.log("Appel du service JSON");

$.ajax({
  dataType: "json",
  url: "http://ip-de-votre-machine:9094/data/Power",
  success: drawChart
});

function drawChart(data){
        console.log("Affichage du résultat");

        new Morris.Area({
          // ID of the element in which to draw the chart.
          element: 'powerChart',
          // Chart data records -- each entry in this array corresponds to a point on
          // the chart.
          data: data,
          // The name of the data record attribute that contains x-values.
          xkey: 'date',
          // A list of names of data record attributes that contain y-values.
          ykeys: ['value'],
          // Labels for the ykeys -- will be displayed when you hover over the
          // chart.
          labels: ['value'],
          // Filleds area opacity.
          fillOpacity: 0.2,
          // Smooth lines.
          smooth : true,
          // Point size.
          pointSize : 1,
          // Max value
          ymax : 12000,
          // Label suffix all y-labels.
          postUnits: "W",
          hideHover : true,
        });
}
</script>

</body>
</html>

Cette page appelle le Webservice exposés par l'application "ZwaveBus" permettant de récupérer la liste des rapports stockés au sein de la base MongoDB et les transmet au script "morris.js" qui se charge de produire un graphique dynamique.

Vous voilà outillé pour analyser vos consommations électriques dans le détail et identifier quels sont les appareils qui surconsomment de l'énergie. Vous découvrirez peut-être que vous n'avez pas le bon abonnement EDF et qu'un abonnement avec une puissance plus faible pourrait être suffisant pour vos besoins.