Difference between revisions of "SmartCampus2014/Tutoriels"

From air
Jump to navigation Jump to search
Line 99: Line 99:
 
void setup() {
 
void setup() {
 
// put your setup code here, to run once:
 
// put your setup code here, to run once:
system("telnetd -l /bin/sh");
+
system("telnetd -l /bin/sh");
system("ifconfig eth0 169.254.1.1 netmask 255.255.0.0 up"); //adapter l’adresse ip et le masque
+
system("ifconfig eth0 169.254.1.1 netmask 255.255.0.0 up"); //adapter l’adresse ip et le masque
 
}
 
}
   
Line 112: Line 112:
 
* Flasher ce code sur la carte Galileo.
 
* Flasher ce code sur la carte Galileo.
   
== Connection en SSH ==
+
== Connexion en SSH ==
 
* Relier le Galileo à l’ordinateur avec le câble Ethernet.
 
* Relier le Galileo à l’ordinateur avec le câble Ethernet.
 
* Sur windows la connexion se fera automatiquement, mais sur Linux il faut changer l’adresse IP de la carte Ethernet pour être sur le même réseau que le Galileo :
 
* Sur windows la connexion se fera automatiquement, mais sur Linux il faut changer l’adresse IP de la carte Ethernet pour être sur le même réseau que le Galileo :

Revision as of 15:51, 6 February 2014

Liens

Mosquitto

Mosquitto est une implémentation de MQTT, un protocole de M2M de type publish-subscribe.

Installation

  • Documentation officielle : [1]
  • Pour Debian/Ubuntu et dérivés: [2]
  • Ensuite télécharger le client en ligne de commande:
sudo apt-get install mosquitto python-mosquitto
sudo apt-get install mosquitto-clients

Exemple de communication

  • Dans un premier terminal on lance le broker :
>mosquitto
1391181009: mosquitto version 1.2.3 (build date 2013-12-04 21:22:55+0000) starting
1391181009: Using default config.
1391181009: Opening ipv4 listen socket on port 1883.
1391181009: Opening ipv6 listen socket on port 1883.

Sur certaines distributions, mosquitto peut se trouver dans /usr/sbin/.

  • Dans un second terminal on crée un topic "toto" sur lequel on publie des messages.
mosquitto_sub -d -t toto 
  • Dans un dernier terminal on publie sur le topic "toto".
mosquitto_pub  -t toto -m "Hello world "
  • Pour communiquer entre différents devices, il faut lancer le broker sur chacun d'eux, puis indiquer lors du subscribe l'adresse IP du publisher.

Par exemple :

mosquitto_sub -d -h 192.168.0.1 -t toto 


Comment utiliser openHAB avec Mosquitto ?

Requis

Il faut en premier lieu ajouter le bundle MQTT bindings (disponible ici) dans le dossier "addons" du runtime openHAB.

Ne pas oublier de lancer le broker Mosquitto (commande mosquitto).

Ajouter l'URL du broker dans le fichier de configuration d'openHAB (e.g. openhab.cfg) :

mqtt:mosquitto.url=tcp://localhost:1883

Subscribe

Lier un item à un topic en indiquant l'alias du broker, le type des messages transmis, et l'action effectuée sur openHAB sur réception des messages :

{ mqtt="<[<broker>:<topic>:<type>:<transformation>]" }

où <type> est soit "command" soit "state" (pour l'update), et où <transformation> est "default".

Par exemple :

Number Temperature_GF_Corridor 	"Temperature [%.1f °C]"	<temperature>	(Temperature, GF_Corridor) { mqtt="[mosquitto:temperature:state:default]" }

On peut alors publier avec "mosquitto_pub" sur le topic défini (e.g. "temperature") et voir le changement dans l'interface openHAB.

Publish

Le principe est relativement semblable. On lance "mosquitto_sub" sur le topic voulu (e.g. "light"). Lier un item à un topic en indiquant l'alias du broker, le type des messages transmis, le déclencheur de l'envoi de message, et la transformation :

{ mqtt=">[<broker>:<topic>:<type>:<trigger>:<transformation>]" }

Par exemple :

Switch Light_Outdoor_Garage "Garage" (Outdoor, Lights)  { mqtt=">[mosquitto:light:command:ON:1],>[mosquitto:light:command:OFF:0]" }

Ici, lorsque l'interrupteur de la lumière du garage est actionné, le subscriber Mosquitto reçoit 0 ou 1.

Pour plus d'informations, voir le wiki officiel ici.

Comment se connecter en SSH à la carte Galileo

Configuration de la carte Galileo

  • Avant tout, il est important de toujours alimenter la carte Galileo avant de la brancher à l’ordinateur !
  • Connecter le Galileo à l’ordinateur avec le câble USB (port USB client de la carte).
  • Updater le firmware via l’IDE Arduino (Aide > Firmware Update). Cette étape est primordiale pour pouvoir se connecter en SSH. Il est aussi important de ne pas lancer de sketchs avant ou pendant la mise à jour.
  • Créer un nouveau sketch :
void setup() {
  // put your setup code here, to run once:
  system("telnetd -l /bin/sh");
  system("ifconfig eth0 169.254.1.1 netmask 255.255.0.0 up"); //adapter l’adresse ip et le masque
}

void loop() {
  // put your main code here, to run repeatedly: 
}

Attention, il faut garder la boucle loop dans le code, même vide, pour ne pas avoir d'erreur. Dans cet exemple, nous lançons le service Telnet mais si on utilise seulement SSH, cette ligne n'est pas nécessaire.

  • Flasher ce code sur la carte Galileo.

Connexion en SSH

  • Relier le Galileo à l’ordinateur avec le câble Ethernet.
  • Sur windows la connexion se fera automatiquement, mais sur Linux il faut changer l’adresse IP de la carte Ethernet pour être sur le même réseau que le Galileo :
sudo ifconfig eth0 169.254.1.2 up
  • Faire un ping vers l’adresse ip 169.254.1.1 pour vérifier que la connexion fonctionne (si cela ne marche pas, il peut être judicieux de déconnecter la prise secteur de la carte et de la rebrancher).
  • Lorsque le ping fonctionne, il est possible de se connecter en root à la carte Galileo, soit en utilisant un client SSH de type PuTTY, ou via la commande :
ssh root@169.254.1.1