<?xml version="1.0" encoding="ISO-8859-1"?>

<rss version="2.0" xmlns:dc="http://purl.org/dc/elements/1.1/" xmlns:content="http://purl.org/rss/1.0/modules/content/">
	<channel>
		<title>Forum du club des développeurs et IT Pro - Blogs - michelgard</title>
		<link>https://www.developpez.net/forums/blogs/869848-michelgard/</link>
		<description>Developpez.com, le Club des Développeurs et IT Pro</description>
		<language>fr</language>
		<lastBuildDate>Wed, 29 Apr 2026 13:28:39 GMT</lastBuildDate>
		<generator>vBulletin</generator>
		<ttl>15</ttl>
		<image>
			<url>https://forum.developpez.be/images/misc/rss.jpg</url>
			<title>Forum du club des développeurs et IT Pro - Blogs - michelgard</title>
			<link>https://www.developpez.net/forums/blogs/869848-michelgard/</link>
		</image>
		<item>
			<title>Python 3 Backup Serveur VPS</title>
			<link>https://www.developpez.net/forums/blogs/869848-michelgard/b1209/python-3-backup-serveur-vps/</link>
			<pubDate>Thu, 10 Mar 2016 15:32:36 GMT</pubDate>
			<description>Bonjour, 
 
Depuis quelque...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Bonjour,<br />
<br />
Depuis quelque temps j’ai décidé d’arrêter l’hébergement en serveur mutualisé je suis passé sur un Cloud VPS. C’est quand même bien d’avoir plus de possibilité même si il faut faire plus de chose manuellement. Je ferai bientôt un article sur la façon d’installer son serveur car vu le prix d’un petit serveur (pas plus quand mutualisé) je pense qu’il faut y passer. Voir le site de :  <a href="https://my.obambu.com/aff.php?aff=751" target="_blank">OBAMBU</a><br />
<br />
Donc aujourd’hui je vous présente un programme en Python 3 qui permet de sauvegarder des répertoires et les bases de données sur un autre serveur en FTP.<br />
<br />
Vous pouvez choisir les répertoires et les bases à sauvegarder et le mode de compression. Si le fichier est trop gros pour votre serveur FTP il peut le découper. Il y a aussi le choix d’avoir du FTP en SSL.<br />
<br />
A la fin il peut envoyer un mail pour indiquer que tout est OK ou s’il y a une erreur dans la sauvegarde.<br />
<br />
Tout cela est configurable par un fichier config_ftp.py qu’il faut compléter avec vos données de connexion (FTP, Mail, répertoires et bases à sauvegarder, répertoire temporaire…)<br />
<br />
Vous trouverez tout ça sur cette adresse :<a href="http://Bonjour,<br />
<br />
Depuis quelque temps j’ai décidé d’arrêter l’hébergement en serveur mutualisé je suis passé sur un Cloud VPS. C’est quand même bien d’avoir plus de possibilité même si il faut faire plus de chose manuellement. Je ferai bientôt un article sur la façon d’installer son serveur car vu le prix d’un petit serveur (pas plus quand mutualisé) je pense qu’il faut y passer. Voir le site de :<br />
<br />
Donc aujourd’hui je vous présente un programme en Python 3 qui permet de sauvegarder des répertoires et les bases de données sur un autre serveur en FTP.<br />
<br />
Vous pouvez choisir les répertoires et les bases à sauvegarder et le mode de compression. Si le fichier est trop gros pour votre serveur FTP il peut le découper. Il y a aussi le choix d’avoir du FTP en SSL.<br />
<br />
A la fin il peut envoyer un mail pour indiquer que tout est OK ou s’il y a une erreur dans la sauvegarde.<br />
<br />
Tout cela est configurable par un fichier config_ftp.py qu’il faut compléter avec vos données de connexion (FTP, Mail, répertoires et bases à sauvegarder, répertoire temporaire…)<br />
<br />
Vous trouverez tout ça sur cette adresse : https://github.com/Michelgard/backup_serveur" target="_blank"> https://github.com/Michelgard/backup_serveur</a><br />
<br />
Michel <br />
<a href="http://rasp-pi.fr.nf" target="_blank">http://rasp-pi.fr.nf</a></blockquote>

]]></content:encoded>
			<dc:creator>michelgard</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/869848-michelgard/b1209/python-3-backup-serveur-vps/</guid>
		</item>
		<item>
			<title>Python vérification serveur par SQL</title>
			<link>https://www.developpez.net/forums/blogs/869848-michelgard/b1208/python-verification-serveur-sql/</link>
			<pubDate>Thu, 10 Mar 2016 15:27:14 GMT</pubDate>
			<description>A la maison j’ai un Raspberry...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">A la maison j’ai un Raspberry Pi qui avec une tache CRON envoi des valeurs de température dans une base de données sur un serveur VPS. <a href="http://rasp-pi.fr.nf/mon-dashscreen/" target="_blank">http://rasp-pi.fr.nf/mon-dashscreen/</a><br />
<br />
J’ai intallé une verification sur le Raspberry Pi pour la connexion internet. Si la connexion est perdu plus de 5 minutes il reboot. Mais il arrive que la connexion soit bonne mais qu’aucune info ne soit envoyée sur la base SQL du serveur VPS distant.<br />
<br />
Donc j’ai fait ce code en Python. Dans un premier temps il récupère la dernière valeur dans une table de la base des températures. Il faut que cette valeur soit enregistrée avec une colonne DateTime pour récupérer l’heure de la dernière entrée.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code python :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:204px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br />15<br />16<br />17<br />18<br />19<br />20<br />21<br />22<br />23<br />24<br />25<br />26<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #0000ff;">def</span> connexSQL<span class="br0">&#40;</span>paramMysql, sql, colonne<span class="br0">&#41;</span>:
    <span style="color: #0000ff;">try</span>:
        <span style="color: #808080;"># On cr&eacute;&eacute; une conexion MySQL</span>
        conn = MySQLdb.connect<span class="br0">&#40;</span>**paramMysql<span class="br0">&#41;</span>
        <span style="color: #808080;"># On cr&eacute;&eacute; un curseur MySQL</span>
        cur = conn.cursor<span class="br0">&#40;</span>MySQLdb.cursors.DictCursor<span class="br0">&#41;</span>
        <span style="color: #808080;"># On ex&eacute;cute la requ&ecirc;te SQL</span>
        cur.execute<span class="br0">&#40;</span>sql<span class="br0">&#41;</span>
        <span style="color: #808080;"># On r&eacute;cup&egrave;re toutes les lignes du r&eacute;sultat de la requ&ecirc;te</span>
        rows = cur.fetchall<span class="br0">&#40;</span><span class="br0">&#41;</span>
        <span style="color: #808080;"># On parcourt toutes les lignes</span>
        <span style="color: #0000ff;">for</span> row <span style="color: #0000ff;">in</span> rows:
            <span style="color: #808080;"># Pour r&eacute;cup&eacute;rer les diff&eacute;rentes valeurs des diff&eacute;rents champs</span>
            dateDerniere = row<span class="br0">&#91;</span>colonne<span class="br0">&#93;</span>
        <span style="color: #0000ff;">return</span> dateDerniere
&nbsp;
    <span style="color: #0000ff;">except</span> MySQLdb.Error, e:
        <span style="color: #808080;"># En cas d&#146;anomalie</span>
        <span style="color: #0000ff;">print</span> &laquo; Error %d: %s &raquo; % <span class="br0">&#40;</span>e.args<span class="br0">&#91;</span><span style="color: #cc66cc;">0</span><span class="br0">&#93;</span>,e.args<span class="br0">&#91;</span><span style="color: #cc66cc;">1</span><span class="br0">&#93;</span><span class="br0">&#41;</span>
        sys.exit<span class="br0">&#40;</span><span style="color: #cc66cc;">1</span><span class="br0">&#41;</span>
&nbsp;
    <span style="color: #0000ff;">finally</span>:
        <span style="color: #808080;"># On ferme la connexion</span>
        <span style="color: #0000ff;">if</span> conn:
            conn.close<span class="br0">&#40;</span><span class="br0">&#41;</span></pre></td></tr></table></pre>
</div>Ensuite on ajoute un delta. Dans mon cas les infos arrivent dans la table toutes les 5 minutes donc j’ajoute 20 mn et si avec cette heure je suis inférieur à l’heure actuelle c’est qu’il y a un problème sur le Raspberry.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code python :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:132px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;"># On recup&egrave;re l&#146;heure de la derniere donn&eacute;e entr&eacute;e dans la table</span>
dateDerniere = connexSQL<span class="br0">&#40;</span>paramMysql, sql, colonne<span class="br0">&#41;</span>
&nbsp;
<span style="color: #808080;">#Date et heure maintenant</span>
deSuite = datetime.datetime.now<span class="br0">&#40;</span><span class="br0">&#41;</span>
<span style="color: #808080;">#calcul du delta pour savoir si le serveur envoi toujours des donn&eacute;es</span>
delta = datetime.timedelta<span class="br0">&#40;</span>minutes=delais<span class="br0">&#41;</span></pre></td></tr></table></pre>
</div><br />
J’ai ajouté la possibilité d’envoyer un mail quand tout va bien et quand quelque chose ne marche pas.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code python :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:192px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="33"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br />8<br />9<br />10<br />11<br />12<br />13<br />14<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;"># Envoi mail</span>
<span style="color: #0000ff;">def</span> sendEmail<span class="br0">&#40;</span>email_from, email_to, subject, text, smtp, portSmtp, mailLogin, passLogin<span class="br0">&#41;</span>:
    msg = MIMEText<span class="br0">&#40;</span>text<span class="br0">&#41;</span>
    msg<span class="br0">&#91;</span>&#145;Subject&#146;<span class="br0">&#93;</span> = subject
    msg<span class="br0">&#91;</span>&#145;From&#146;<span class="br0">&#93;</span> = email_from
    msg<span class="br0">&#91;</span>&#145;To&#146;<span class="br0">&#93;</span> = email_to
    s = smtplib.SMTP<span class="br0">&#40;</span>smtp, portSmtp<span class="br0">&#41;</span>
    s.ehlo<span class="br0">&#40;</span><span class="br0">&#41;</span>
    s.starttls<span class="br0">&#40;</span><span class="br0">&#41;</span>
    s.ehlo<span class="br0">&#40;</span><span class="br0">&#41;</span>
    s.login<span class="br0">&#40;</span>mailLogin, passLogin<span class="br0">&#41;</span>
    s.sendmail<span class="br0">&#40;</span>email_from,<span class="br0">&#91;</span>email_to<span class="br0">&#93;</span>,msg.as_string<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    s.quit<span class="br0">&#40;</span><span class="br0">&#41;</span></pre></td></tr></table></pre>
</div><br />
Et bien sur si cela ne va pas il y a un reboot du Raspberry Pi par une connexion SSH.<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code python :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:120px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br />3<br />4<br />5<br />6<br />7<br /></div></td><td valign="top"><pre style="margin: 0">&nbsp;
<span style="color: #808080;"># Connexion SSH pour le reboot</span>
<span style="color: #0000ff;">def</span> rebootSSH<span class="br0">&#40;</span>hostSSH, userSSH, passWordSSH<span class="br0">&#41;</span>:
    ssh = paramiko.SSHClient<span class="br0">&#40;</span><span class="br0">&#41;</span>
    ssh.set_missing_host_key_policy<span class="br0">&#40;</span>paramiko.AutoAddPolicy<span class="br0">&#40;</span><span class="br0">&#41;</span><span class="br0">&#41;</span>
    ssh.connect<span class="br0">&#40;</span>hostSSH, username=userSSH, password=passWordSSH<span class="br0">&#41;</span>
    ssh.exec_command<span class="br0">&#40;</span>&laquo; sudo reboot &raquo;<span class="br0">&#41;</span></pre></td></tr></table></pre>
</div>Pour l’utilisation il faut entrèe les host, login et mots de passe pour La connexion à la base de données, le mail et le SSH. Il est possible de mettre les mail à False pour éviter de recevoir un mail par heure.<br />
<br />
Vous trouverez le fichier complet et le fichier de configuration ici : <a href="https://github.com/Michelgard/Python_verif_serveur_par_SQL" target="_blank">https://github.com/Michelgard/Python...erveur_par_SQL</a><br />
<br />
Pour finir une tache CRON toutes les 1/2 heures :<br />
<br />
<div class="bbcode_container">
	<table width="100%" border="0" cellspacing="0" cellpadding="0"><tr>
	<td style="border: 0; padding: 0; text-align: left">Code  :</td>
	<td style="border: 0; padding: 0; text-align: right"><a href="#" onclick="return ano_selectionnerCode(this);">Sélectionner tout</a> -
	<a href="#" onclick="return ano_etendreCode(this);">Visualiser dans une fenêtre à part</a></td></tr></table>
	<pre class="bbcode_code" style="height:60px;"><table cellspacing="0" cellpadding="0"><tr><td valign="top" width="26"><div style="border: 1px dashed gray; padding-left: 5px; padding-right: 5px; margin-right: 5px; text-align: right; font-family: monospace">1<br />2<br /></div></td><td valign="top"><pre style="margin: 0">
/usr/bin/python /var/www/tache_cron/verifSQLserveur/verifSQLserveur.py &gt;&gt; /var/www/tache_cron/erreur_log/cron_verifSQLserveur.log 2&gt;&amp;1</pre></td></tr></table></pre>
</div><br />
Michel<br />
<a href="http://rasp-pi.fr.nf" target="_blank">http://rasp-pi.fr.nf</a></blockquote>

]]></content:encoded>
			<dc:creator>michelgard</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/869848-michelgard/b1208/python-verification-serveur-sql/</guid>
		</item>
		<item>
			<title>Raspberry Pi Domotique par commande vocale avec Wit.ai</title>
			<link>https://www.developpez.net/forums/blogs/869848-michelgard/b649/raspberry-pi-domotique-commande-vocale-wit-ai/</link>
			<pubDate>Sun, 19 Jul 2015 23:01:18 GMT</pubDate>
			<description>Bonjour à tous, 
Je vous...</description>
			<content:encoded><![CDATA[<blockquote class="blogcontent restore">Bonjour à tous,<br />
Je vous joins un petit morceau du dernier article de mon blog. Un programme de domotique  en python sur Raspberry pi de reconnaissance vocale et synthèse vocale avec wit.ai.<br />
<br />
<div class="bbcode_container">
	<div class="bbcode_quote">
		<div class="quote_container">
			<div class="bbcode_quote_container"></div>
			
				<div class="bbcode_postedby">
					<img src="https://forum.developpez.be/images/misc/quote_icon.png" alt="Citation" /> Envoyé par <strong>michelgard</strong>
					
				</div>
				<div class="message"><br />
Dans un précédent tuto (VOIR ICI) j'avais fait avec un arduino une carte ethernet et une commande par page WEB en PHP AJAX de la domotique me permettant d'allumer ou d'éteindre des prises ou lumière en 433Mhz. Après j'ai ajouté une connexion avec une base de données pour avoir sur tous les accès (ordi, tablette, téléphone) la valeur de la commande à l'affichage.<br />
<br />
Tout cela fonction bien et vous trouverez tous les scripts sur GITHUB<br />
<br />
Ensuite j'ai voulu me lancer dans la commande vocale !!! C'était simple à partir d'un raspberry pi je lançais une commande et lui il passe une URL avec cette commande a mon arduino comme le fait ma page WEB. Simple non !!!<br />
<br />
J'ai d'abord voulu faire cela &quot;en circuit fermé&quot; reconnaissance et parole le tout sur le PI mais j'ai rien trouvé de très concluant pour le moment. Soit trop lourd pour un raspberry B+ soit ne fonctionne pas voir même impossible à installer. Le seul produit prometteur étant VOXgenerator de Benoit. Vous trouverez quelques instructions ICI. Mais pour l'instant il est en court de mise au point.<br />
<br />
Donc j'ai cherché sur un autre système avec la reconnaissance vocale par le net (non pas google) mais wit.ai.  Bon maintenant il y a du facebook derrière car la boite des petits français a été acheté par le géant Américain :(<br />
<br />
Donc sur wit il est possible de créer des commandes et d'utiliser du python pour le fonctionnement donc je me suis mis au python. Puissant le truc !!!<br />
<br />
...<br />
<a href="http://rasp-pi.ici.st/raspberry-pi-domotique/" target="_blank">et la suite ici</a><br />
<br />
Bonne lecture</div>
			
		</div>
	</div>
</div></blockquote>

]]></content:encoded>
			<dc:creator>michelgard</dc:creator>
			<guid isPermaLink="true">https://www.developpez.net/forums/blogs/869848-michelgard/b649/raspberry-pi-domotique-commande-vocale-wit-ai/</guid>
		</item>
	</channel>
</rss>
