-
Notifications
You must be signed in to change notification settings - Fork 6
/
Copy pathTuto_Installation
154 lines (127 loc) · 6.82 KB
/
Tuto_Installation
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
/***************************************************************************
Tutoriel d'installation sur environnement Raspbian (debian pour RPI)
***************************************************************************/
A noter : $ -> utilisateur (pi par défault sous Raspbian) # -> administrateur (compte root)
prérequis : Avant toute installation lancer la commande :
# apt-get update
# apt-get upgrade
/**********************************************
Packages et AppliMCZ
**********************************************/
- Installation des packages pour le developpement:
# apt-get install build-essential git-core
- Installation du parser XML:
# apt-get install libmxml-dev
- Installation de Wiring PI pour envoyer les donnees RF:
# git clone git://git.drogon.net/wiringPi
# cd wiringPi
# ./build
- Creer un repertoire de developement dans /home/<user> (au choix)
$ cd /home/<user>/<dev repertoire>
$ git clone https://github.com/KerberRF/APPLI_MCZ.git
- Compilation de l'application avec GCC.
A lancer dans le répertoire de l'application bien sur.
# make
- liens utiles:
git clone git://git.drogon.net/wiringPi
https://github.com/ninjablocks/433Utils
https://github.com/landru29/chacon-rpi
/************************************************************************************************************************
NOTES:
*************************************************************************************************************************/
Les données sont envoyées sur le GPIO 0 (pin 11) connecté sur un emetteur RF433Mhz:
http://www.amazon.fr/XCSOURCE-Transmetteur-R%C3%A9cepteur-Arduino-TE122/dp/B00V4ISS38/ref=sr_1_1?ie=UTF8&qid=1453198678&sr=8-1&keywords=433
http://www.dx.com/fr/p/mini-rf-transmitter-receiver-module-433mhz-wireless-link-kit-w-spring-antennas-for-arduino-413171#.Vp4I1nYveCg
Il est préférable de commander le produit avec l'antenne déjà faite.
http://www.amazon.fr/Very100-Antenne-Ressort-H%C3%A9lico%C3%AFdal-Beaucoup/dp/B00KA371U4/ref=pd_sim_147_6?ie=UTF8&dpID=51jVBq2gZNL&dpSrc=sims&preST=_AC_UL160_SR160%2C160_&refRID=01TRWX5NX41H6W967MBX
/********************** Attention : *********************************************************/
Pour le modèle B+, l'émetteur 433 est alimenté en 5V, le recepteur 433 est alimenté en 3V3.)
/*********************************************************************************************/
/*************************************************************************************************************************
Configuration serveur web nginx
**************************************************************************************************************************/
A noter l'utilisation de NGINX comme outil de serveur web. Nginx permet de gérer les scripts fastCGI en ajoutant le package fcgiwrap.
# apt-get install nginx fcgiwrap
Version nginx testée 1.6.2
/*********************************************************************************************
Mise en place des scripts cgi sous Linux:
**********************************************************************************************/
Les scripts CGI perl sont mis à disposition dans le répertoire /var/www/html/MCZ/cgi-bin
Les droits sont à modifier :
# chown -R www-data:www-data /var/www
Ainsi que le socket dans /var/run :
# chown www-data:www-data /var/run/fcgiwrap.socket
Ces scripts sont propres à mon application, ils sont appelés à chaque commande par ma zibase.
Démarrage du service (pas besoin de le faire par défault)
# /etc/init.d/nginx start
-> Modifier le fichier /etc/nginx/sites-available/default :
location /MCZ/cgi-bin/ {
# Disable gzip (it makes scripts feel slower since they have to complete
# before getting gzipped)
gzip off;
# Fastcgi socket
fastcgi_pass unix:/var/run/fcgiwrap.socket;
# Fastcgi parameters, include the standard ones
include /etc/nginx/fastcgi_params;
# Adjust non standard parameters (SCRIPT_FILENAME)
fastcgi_param SCRIPT_FILENAME $document_root$fastcgi_script_name;
}
-> puis relancer NGINX :
$ sudo nginx -s reload
/***********************************************************************************************
Creation de script cgi perl
************************************************************************************************/
Ici les scripts utilisent un parser XML perl (use XML::LibXML), donc il faudra installer le package.
$ sudo apt-get install libxml-libxml-perl
Exemple de script CGI perl :
#!/usr/bin/perl -w
# Tell perl to send a html header.
# So your browser gets the output
# rather then <stdout>(command line
# on the server.)
use CGI qw(:standard);
use strict;
use XML::LibXML;
my $query = new CGI;
my $valeur_mode = $query->param('Mode'); #donnee d'entree "Mode"
my $valeur_user = $query->param('User'); #donnee d'entree "User"
my $valeur_puis = $query->param('Puis'); #donnee d'entree "Puis"
my $valeur_vent1 = $query->param('Vent1'); #donnee d'entree "Vent1"
my $valeur_vent2 = $query->param('Vent2'); #donnee d'entree "Vent2"
my $filename = "parameters.xml";
my $p = XML::LibXML->new();
my $d = $p->parse_file($filename);
for my $node ($d->findnodes('//ParametersOfMCZ'))
{
my ($modes_node) = $node->findnodes('Modes/text()')
or next;
$modes_node->setData($valeur_mode);
my ($user_node) = $node->findnodes('User/text()')
or next;
$user_node->setData($valeur_user);
my ($puissance_node) = $node->findnodes('Puissance/text()')
or next;
$puissance_node->setData($valeur_puis);
my ($vent1_node) = $node->findnodes('Ventilateur1/text()')
or next;
$vent1_node->setData($valeur_vent1);
my ($vent2_node) = $node->findnodes('Ventilateur2/text()')
or next;
$vent2_node->setData($valeur_vent2);
}
print $d->toString; #Affiche
print $d->toFile($filename,0);
print "Content-type: text/html\n\n";
# print your basic html tags.
# and the content of them.
#print "<html><head><title>Hello World!! </title></head>\n";
#print "<body><h1>Hello world</h1></body></html>\n";
-> Lancer dans un navigateur ou dans un scénario dans la box domotique.
Exemple pour la valeur du paramètre "Mode": http://<IP>/MCZ/cgi-bin/Mode.cgi?Mode=x
Exemple pour la valeur du paramètre "Puissance": http://<IP>/MCZ/cgi-bin/Puissance.cgi?Puis=x
Exemple pour la valeur du paramètre "Ventilateur1": http://<IP>/MCZ/cgi-bin/Ventilateur1.cgi?Vent1=x
Exemple pour la valeur du paramètre "Ventilateur2": http://<IP>/MCZ/cgi-bin/Ventilateur1.cgi?Vent2=x
x étant la valeur associée dans la commande.
-> Ne pas oublier de lancer l'application en tâche de fond.
$ cd /home/pi/Dev/APPLI_MCZ/src
$ nohup ./APPLI_Emit &