Page 1 sur 1

Affichage Dynamique

Posté : sam. 16 mai 2020 15:20
par yuripa
Bonjour à tous,

J'ai un petit script qui fonctionne très bien.

Quand je suis avec Thonny Python IDE, je fait afficher ceci toutes les 1 secondes. Ps: La valeur de T change constamment.

print(' ')
print('Hygrométrie', T)
print(datetime.now())
if GPIO.input(BP_Auto) == 1:
print('Mode AUTO')
if GPIO.input(BP_Manu) == 1:
print('Mode MANU')
if jourok == 1:
print('Jour AVEC arrosage')
if jourok == 0:
print('Jour SANS arrosage')
print(' ')
print('-----------------------------')


Mon script démarre automatiquement au démarrage de mon Rpi, donc sans démarrer Thonny Python IDE.
J'aimerai avoir un affichage des print('bla bla bla') dans une fenêtre qui s'ouvrirait au démarrage de mon script, mais je ne trouve pas de solution.

Si quelqu'un peux m'aider.

Merci d'avance

Re: Affichage Dynamique

Posté : ven. 29 mai 2020 18:38
par Bud Spencer
Personne pour lui filer un coup de main ? trop compliqué ? :roll:

Re: Affichage Dynamique

Posté : ven. 29 mai 2020 21:14
par domi
Compliqué je ne sais pas, mais pas trop ma parti ;)

Re: Affichage Dynamique

Posté : sam. 30 mai 2020 07:55
par jelopo
Bonjour,

Je sais pas trop non plus. Mais je me lance...
Pour ma part, plutôt que de lancer un script, je lancerais un terminal qui lance le script.

Un truc du style:

Code : Tout sélectionner

lxterminal -e <chemin_absolu>/<nom_du_script>
A+

Re: Affichage Dynamique  [RESOLU]

Posté : sam. 30 mai 2020 10:34
par Bud Spencer
Le lancement d’un programme au démarrage du PI est une question qui revient très souvent. Le probleme c’est qu’il y a une multitude de besoins différents et en plus suivant les distris et les versions, il y a une multitude de façons de faire.

Ici, si je comprends bien, l’idée c’est de lancer un script qui s'affiche automatiquement en console une fois la séquence de boot fini. On regrette le bon vieux temps de MS-DOS ou il suffisait de rajouter une ligne dans l’autoexec.bat ( … en fait non, on regrette pas du tout :lol: ). La on parle bien de programme au démarrage et non pas de service puisqu'il est justement sensé etre attaché a une console

Donc ca sous entend que le PI doit démarrer en mode console et non pas en mode desktop et que l'utilisateur PI soit défini en auto-login. Ces 2 options sont configurables avec raspi-config.

Ensuite, on peut faire très simple.
Imaginons un petit script python qui affiche date heure toute les secondes.

Code : Tout sélectionner


import time
while True:
    time.sleep(1)
    print('Date Time %s' % time.ctime())

Je ne nomme dateheure.py et le met dans la racine de home de pi :
( /home/pi/dateheure.py )

J’exécute mon script pour tester, $ python dateheure.py ok il fonctionne ( \o/ encore gagné :mrgreen: ).

Si je veux qu’il s’exécute en ouverture de session (donc juste après l’auto login), je créé un fichier batch que j’appelle par exemple mystart.sh que je mets aussi dans la racine de home de pi ( /home/pi/mystart.sh ) et dedans je mets juste une commande pour lancer mon script pyhton

Code : Tout sélectionner


#!/bin/bash
python dateheure.py

une fois le batch enregistré, je le rend exécutable : $ chmod +x mystart.sh

et pour finir j’édite le fichier /etc/profile ( $ sudo nano /etc/profile ) et à la fin du fichier j’ajoute une ligne :
. /home/pi/mystart.sh
profile.png
profile.png (9.8 Kio) Vu 5867 fois
Attention de ne pas bricoler le reste du fichier si vous êtes débutant !


Je sauvegarde le fichier, je reboot et le tour est joué.
Si le programme est une boucle, il suffit d’un ctrl+c pour sortir

C'est simple et efficace, mais attention ! Chaque console ouverte meme en ssh démarrera une instance du programme ...

oopss je n'avais pas vu ca
yuripa a écrit :
sam. 16 mai 2020 15:20
J'aimerai avoir un affichage des print('bla bla bla') dans une fenêtre qui s'ouvrirait au démarrage de mon script, mais je ne trouve pas de solution.
Donc si "fenêtre", ca sous entend 'environnement graphique'. Pas de problème, la seule chose qui change, c'est la ligne de commande et le fichier dans laquelle on va l'écrire. Le mieu est de garder le meme principe d'un batch enregistré dans le home de l'utilisateur pi et plutôt que d'appeler la commande depuis le fichier /etc/profile, il suffit de le faire depuis le fichier /etc/xdg/lxsession/LXDE-pi/autostart (attention, ici c'est pour buster et de mémoire le chemin est diffèrent avec stretch) et de rajouter à la fin de ce fichier une ligne:
@lxterminal --command="/home/pi/mystart.sh"
Ici, le programme démarrera dans une fenêtre terminal à chaque ouverture d'une session graphique de l'utilisateur PI

Re: Affichage Dynamique

Posté : sam. 30 mai 2020 11:57
par destroyedlolo
Salut,
jelopo a écrit :
sam. 30 mai 2020 07:55
Pour ma part, plutôt que de lancer un script, je lancerais un terminal qui lance le script.

Un truc du style:

Code : Tout sélectionner

lxterminal -e <chemin_absolu>/<nom_du_script>
Oui, c'est ca.
Et en plus tu peux le lancer immédiatement au lancement de la session X en mettant un script du genre de celui-ci : http://destroyedlolo.info/Developpement ... de%20Conky
(il faut évidemment remplacer la ligne Exec par le lxterminal).

Maintenant, pour pousser les vice un peu plus loin, un terminal comme ca n'est pas très beau. L'évolution suivante serait de créer carrément une petite interface graphique pour l'afficher :
  • soit une vraie fenêtre mais je trouve ça un peu invasif
  • soit une widget dans la barre de la fenêtre (je n'ai pas le code python pour ca vu que je n'utilise pas ; je l'ai déjà fait en Lua et en C et c'est très facile a faire, il doit y avoir des tuto sur le web pour python)
  • soit avec justement conky ... mais c'est une autre histoire car il faudra passer entièrement à Lua ou faire communiqué ton python avec conky. Ca ne casse pas 3 pattes a un canard meme si ca reste plus compliqué que les 2 1er solutions
A+