projets:poelepelletdomotique

Différences

Ci-dessous, les différences entre deux révisions de la page.

Lien vers cette vue comparative

projets:poelepelletdomotique [2016/01/29 11:04] – [Neuvième étape - Installation et configuration du logiciel d'enregistrement des mesures de température] jonathan.alibertprojets:poelepelletdomotique [2017/12/21 19:13] (Version actuelle) – modification externe 127.0.0.1
Ligne 48: Ligne 48:
   * Pour plus d'infos sur la bibliothèque client MQTT utilisée se référer à ce lien : [[https://eclipse.org/paho/clients/c/]].   * Pour plus d'infos sur la bibliothèque client MQTT utilisée se référer à ce lien : [[https://eclipse.org/paho/clients/c/]].
   * Pour télécharger les sources, les compiler et installer la bibliothèque :   * Pour télécharger les sources, les compiler et installer la bibliothèque :
 +<sxh [Bash]>
   sudo aptitude install libssl-dev   sudo aptitude install libssl-dev
   git clone http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.c.git   git clone http://git.eclipse.org/gitroot/paho/org.eclipse.paho.mqtt.c.git
Ligne 54: Ligne 54:
   make   make
   sudo make install   sudo make install
 +</sxh>
   * Ensuite, installe le serveur/broker MQTT Mosquitto, avec la commande ''sudo aptitude install mosquitto''. Tu peux installer ce serveur sur n'importe quel OS et n'importe quel RPI. Seule la configuration réseau changera par rapport à notre cas de figure.   * Ensuite, installe le serveur/broker MQTT Mosquitto, avec la commande ''sudo aptitude install mosquitto''. Tu peux installer ce serveur sur n'importe quel OS et n'importe quel RPI. Seule la configuration réseau changera par rapport à notre cas de figure.
   * Compile DS18B20Manager avec la commande ''g++ -lpthread -lpaho-mqtt3c  main.c -o DS18B20Manager''. //à faire : mettre à disposition le code source//   * Compile DS18B20Manager avec la commande ''g++ -lpthread -lpaho-mqtt3c  main.c -o DS18B20Manager''. //à faire : mettre à disposition le code source//
Ligne 61: Ligne 61:
   * La dernière phase de cette étape consiste à lancer DS18B20Manager au démarrage du RPI. On peut procéder en rajoutant ''nohup /home/pi/DS18B20Manager/DS18B20Manager > /dev/null 2>&1 &'' au fichier ''/etc/rc.local'' avant ''exit 0''. Une autre solution, bien plus élégante consiste à écrire un script init.   * La dernière phase de cette étape consiste à lancer DS18B20Manager au démarrage du RPI. On peut procéder en rajoutant ''nohup /home/pi/DS18B20Manager/DS18B20Manager > /dev/null 2>&1 &'' au fichier ''/etc/rc.local'' avant ''exit 0''. Une autre solution, bien plus élégante consiste à écrire un script init.
   * Entre les commandes suivantes :   * Entre les commandes suivantes :
- +<sxh [Bash]>
   sudo cp /home/pi/DS18B20Manager/DS18B20Managerd /etc/init.d/   sudo cp /home/pi/DS18B20Manager/DS18B20Managerd /etc/init.d/
   sudo chmod 0755 /etc/init.d/DS18B20Managerd   sudo chmod 0755 /etc/init.d/DS18B20Managerd
   sudo update-rc.d DS18B20Managerd defaults   sudo update-rc.d DS18B20Managerd defaults
 +</sxh>
 //à faire : fournir le script// //à faire : fournir le script//
 // documenter DS18B20Manager // // documenter DS18B20Manager //
Ligne 156: Ligne 156:
  
   * Pour cela nous allons récupérer les sources de Freeboard, et générer le projet comme suit :   * Pour cela nous allons récupérer les sources de Freeboard, et générer le projet comme suit :
 +<sxh bash; gutter: false>
   git clone https://github.com/Freeboard/freeboard.git   git clone https://github.com/Freeboard/freeboard.git
   cd freeboard   cd freeboard
Ligne 163: Ligne 163:
   sudo npm install -g grunt-cli   sudo npm install -g grunt-cli
   grunt   grunt
 +</sxh>
   * Ensuite, installe un plugin client MQTT pour Freeboard. Pour cela, procède ainsi :   * Ensuite, installe un plugin client MQTT pour Freeboard. Pour cela, procède ainsi :
 +<sxh bash; gutter: false>
   cd plugins/thirdparty/   cd plugins/thirdparty/
   wget https://raw.githubusercontent.com/alsm/freeboard-mqtt/master/paho.mqtt.plugin.js   wget https://raw.githubusercontent.com/alsm/freeboard-mqtt/master/paho.mqtt.plugin.js
 +</sxh>
   * Ce plugin nécessite une bibliothèque js, à récupérer et à placer de de la façon suivant :   * Ce plugin nécessite une bibliothèque js, à récupérer et à placer de de la façon suivant :
 +<sxh bash; gutter: false>
   cd ~/freeboard/lib/js/thirdparty/   cd ~/freeboard/lib/js/thirdparty/
   wget http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/plain/src/mqttws31.js   wget http://git.eclipse.org/c/paho/org.eclipse.paho.mqtt.javascript.git/plain/src/mqttws31.js
 +</sxh>
   * Modifie ''paho.mqtt.plugin.js'' de la manière suivante :   * Modifie ''paho.mqtt.plugin.js'' de la manière suivante :
 +<sxh javascript; gutter: true>
   (function()   (function()
   {   {
Ligne 188: Ligne 188:
   "/lib/js/thirdparty/mqttws31.js"   "/lib/js/thirdparty/mqttws31.js"
   ],   ],
-  +</sxh>  
 Modifie ''/lib/js/thirdparty/mqttws31.js'' en fonction de la racine du site en question, on verra juste après comment procéder. Modifie ''/lib/js/thirdparty/mqttws31.js'' en fonction de la racine du site en question, on verra juste après comment procéder.
  
Ligne 198: Ligne 198:
  
   * Maintenant nous allons installer un serveur web, j'ai choisi nginx car il est très performant sur RPI, libre à toi de tenter d'autres expériences, avec apache, par exemple. On installe donc nginx :   * Maintenant nous allons installer un serveur web, j'ai choisi nginx car il est très performant sur RPI, libre à toi de tenter d'autres expériences, avec apache, par exemple. On installe donc nginx :
 +<sxh bash; gutter: false>
   sudo aptitude install nginx   sudo aptitude install nginx
-  +</sxh>
 Ensuite, nous allons paramétrer le serveur nginx en modifiant ''/etc/nginx/site-enabled/default'' de cette façon : Ensuite, nous allons paramétrer le serveur nginx en modifiant ''/etc/nginx/site-enabled/default'' de cette façon :
  
Ligne 213: Ligne 213:
  
   * Il ne nous reste plus qu'à copier le répertoire ''~/freeboard'' dans ''/var/www'' et à redémarrer le RPI :   * Il ne nous reste plus qu'à copier le répertoire ''~/freeboard'' dans ''/var/www'' et à redémarrer le RPI :
 +<sxh bash; gutter: false>
   sudo cp -r ~/freeboard /var/www   sudo cp -r ~/freeboard /var/www
   sudo reboot   sudo reboot
 +</sxh>
 +  * Il va aussi falloir mettre à jour le broker MQTT afin qu'il supporte les websockets :
 +<sxh bash; gutter: false>
 +  wget http://repo.mosquitto.org/debian/mosquitto-repo.gpg.key
 +  sudo apt-key add mosquitto-repo.gpg.key
 +  cd /etc/apt/sources.list.d/
 +  sudo wget http://repo.mosquitto.org/debian/mosquitto-jessie.list
 +  sudo aptitude update
 +  sudo aptitude upgrade mosquitto
 +</sxh>
 +Modifier le fichier de configuration de Mosquitto pour qu'il prenne en charge les websockets :
  
-//à faire mettre à jour le broket mqtt pour supporter les websockets//+  listener 1883 
 +  listener 9001 127.0.0.1 
 +  protocol websockets 
 +   
 +Redémarrez le serveur ou le RPI : 
 +<sxh bash; glutter: false> 
 +  sudo service mosquitto stop 
 +  sudo service mosquitto start 
 +</sxh> 
 +  * Maintenant nous pouvons créer notre dashboard en utilisant directement le serveur MQTT ! Pratique, et beaucoup plus élégant que la précédente solution. Crée alors le freeboard comme tu le souhaites en utilisant le plugin MQTT pour les Datasources. 
 +  
 +Ensuite récupère la configuration json via SAVE FREEBOARD.
  
 +Un fois cela fait, copie ''dashboard.json'' à la racine du serveur web : tu pourras charger la configuration automatiquement, par exemple via l'URL [[http://192.168.1.2/index.html#source=dashboard.json]].
 +
 +Il y a quand même un gros défaut à cette solution : un seul client à la fois peut être connecté dans la mesure où le plugin Datasource MQTT dans l'état ne permet pas de générer des identifiants de clients mqtt différents. C'est donc un point à travailler pour qui s'y intéresserait.
 ===== Huitième étape - Installation et configuration du Twitter Bot pour contrôler à distance le poêle ===== ===== Huitième étape - Installation et configuration du Twitter Bot pour contrôler à distance le poêle =====
 ===== Neuvième étape - Installation et configuration du logiciel d'enregistrement des mesures de température ===== ===== Neuvième étape - Installation et configuration du logiciel d'enregistrement des mesures de température =====
Ligne 226: Ligne 251:
  
   * Tout d'abord, récupérer le projet :   * Tout d'abord, récupérer le projet :
 +<sxh bash; gutter:false>
   git clone git@github.com:iobridge/thingspeak.git   git clone git@github.com:iobridge/thingspeak.git
 +</sxh>
   * Installer Ruby 2, Ruby Gems, rails 4 et un SGBD :   * Installer Ruby 2, Ruby Gems, rails 4 et un SGBD :
- +<sxh bash; gutter: false> 
-  sudo aptitude install ruby2.1 rubygems rails mysql-server libmysqlclient-dev +  sudo aptitude install ruby2.1 rubygems rails mysql-server mysql-client libmysqlclient-dev build-essential libxml2-dev libxslt-dev 
 +  curl -sSL https://get.rvm.io | bash -s stable 
 +  source /home/pi/.rvm/scripts/rvm 
 +  rvm install 2.1 
 +  source /home/pi/.rvm/scripts/rvm 
 +</sxh>
   * Paramétre tout ce qui est relatif au serveur mysql :   * Paramétre tout ce qui est relatif au serveur mysql :
-  +<sxh bash; gutter: false>
   sudo gem install mysql   sudo gem install mysql
      
   cd ~/thingspeak   cd ~/thingspeak
   cp config/database.yml.example config/database.yml   cp config/database.yml.example config/database.yml
-  mysql -u root -p +  mysql -u root -p 
 +</sxh> 
 +<sxh sql; gutter: false>
   CREATE USER 'thing'@'localhost' IDENTIFIED BY 'speak';   CREATE USER 'thing'@'localhost' IDENTIFIED BY 'speak';
   GRANT ALL PRIVILEGES ON * . * TO 'thing'@'localhost';   GRANT ALL PRIVILEGES ON * . * TO 'thing'@'localhost';
   FLUSH PRIVILEGES;   FLUSH PRIVILEGES;
   exit   exit
 +</sxh>
 Modifie config/database.yml en fonction de l'utilisateur rajouté et de son mot de passe. Puis exécute ces commandes : Modifie config/database.yml en fonction de l'utilisateur rajouté et de son mot de passe. Puis exécute ces commandes :
 +<sxh bash; gutter: false>
   bundle install   bundle install
-  rake db:create+  sudo rake db:create
   rake db:schema:load   rake db:schema:load
- +</sxh> 
-  * Lance le serveur : rails server+  * Lance le serveur : 
 +<sxh bash; gutter: false> 
 +  rails server 
 +</sxh>
 ===== Dixième étape - Création d'un tableau de contrôle physique ===== ===== Dixième étape - Création d'un tableau de contrôle physique =====
  
Ligne 304: Ligne 338:
  
   * Compile les exemples avec ''make'' et teste le bon fonctionnement de l'écran avec la commande ''sudo ./oled_demo --oled 3''.   * Compile les exemples avec ''make'' et teste le bon fonctionnement de l'écran avec la commande ''sudo ./oled_demo --oled 3''.
 +
 +==== Problème de remplissage de la sdcard ====
 +
 +Il arrive que atd plante et remplisse la sdcard via syslog, il suffit d'utiliser la commande atq et d'effacer les pending jobs (atrm). Il faut aussi recommencer l'installation du script gcalcron, qui mériterait d'être redéveloppé.
  
 --- //[[jonathan.alibert@gmail.com|Jonathan Alibert]] 2015/12/02 14:48// --- //[[jonathan.alibert@gmail.com|Jonathan Alibert]] 2015/12/02 14:48//
  • projets/poelepelletdomotique.1454061842.txt.gz
  • Dernière modification : 2017/12/21 19:13
  • (modification externe)