Page 1 sur 1
recuperer info fichier .txt
Publié : 31 mars 2016, 07:49
par jeromec
Bonjour
je suis nouveau sur le forum
je suis possesseur d'un pi depuis pas mal de temps mais tout newbie avec domoticz
c'est mon ère qui m'a lancé dedans, il fait des trucs vraiment pas mal
quant à moi je veux commencer modestement
j'ai un script python qui interrroge des capteurs pour alimenter un site
ce script génère aussi un fichier .txt
j'aimerai récupérer les infos relatives à l'humidité pour les envoyer vers domoticz
le fichier texte ressemble à ça :
Code : Tout sélectionner
heure:2016-03-31 07:30:29.978700
CpuTemp:47.615c
Humidite:36.0%
Temperature:19.5C
Pression:1011hpa
Luminosite:2.0lx
Il ne pleut pas!
je ne voudrai que les % d'hulidité pour l'instant
j'ai essayé de modifier un script domoticz déjà existant mais sans succès
j'ai du mal avec grep et awk
quelqu'un pourrait-il m'aider et m'aiguiller ?
merci d'avance
Re: recuperer info fichier .txt
Publié : 31 mars 2016, 08:13
par jackslayter
Code : Tout sélectionner
cat fichier .txt | grep 'Humidite' | sed -e 's/://g' | awk '{print $2}'
si tu veux supprimer le % ajoute
après le premier sed
Re: recuperer info fichier .txt
Publié : 31 mars 2016, 09:50
par rimram31
awk sert justement a aller chercher des délimiteurs dans un fichier type ligne/colonnes:
awk sait aussi faire des traitements sur des lignes particulières:
Qu'il faut effectivement ensuite retraiter via un sed pour supprimer le % bien que awk sache aussi "tout faire"

:
Code : Tout sélectionner
awk -F: '/Humidite/ { gsub(/%/,"",$2); print $2; }' fichier.txt
même si là, de mon point de vue en tout cas, on perd en clarté.
http://www.gnu.org/software/gawk/manual/gawk.html
Pour être complet, on peut aussi utiliser
cut pour découper une ligne avec des séparateurs:
Re: recuperer info fichier .txt
Publié : 31 mars 2016, 12:18
par jeromec
merci pour les réponses rapides , je m'y penche ce soir et je vous dis quoi
Re: recuperer info fichier .txt
Publié : 31 mars 2016, 18:53
par jeromec
Merci pour les réponses, cela fonctionne parfaitement pour le pourcentage d'humidité
j'aimerai maintenant creer un sensor texte qui m'affiche la dernière ligne du fichier cité plus haut ("il pleut" ou "il ne pleut pas")
j'ai essayé plusieurs choses mais à chaque fois j'ai un message d'erreur
Code : Tout sélectionner
#!/bin/sh
# Domoticz server
SERVER="192.168.1.39:8080"
PLUIE=$(awk '{ ligne=$0 } END' /var/www/CurrentTemperature.txt)
# Send data
curl -s -i -H "Accept: application/json" "http://$SERVER/json.htm?type=command¶m=udevice&idx=7&nvalue=0&svalue=$PLUIE"
PLUIE=""
et le message d'erreur
Code : Tout sélectionner
awk: line 1: syntax error at or near end of line
HTTP/1.1 200 OK
Content-Length: 53
Content-Type: application/json;charset=UTF-8
Cache-Control: no-cache
Pragma: no-cache
Access-Control-Allow-Origin: *
{
"status" : "OK",
"title" : "Update Device"
}
je vais continuer à chercher mais je ne sais pas quel est le probleme.
merci encore
Re: recuperer info fichier .txt
Publié : 31 mars 2016, 20:32
par jeromec
bon, j'ai partiellement résolu le problème avec ce script
Code : Tout sélectionner
#!/bin/sh
# Domoticz server
SERVER="192.168.1.39:8080"
PLUIE=$(cat "/var/www/CurrentTemperature.txt"| tail -n 1)
# Send data
curl -s -i -H "Accept: application/json" "http://$SERVER/json.htm?type=command¶m=udevice&idx=7&nvalue=0&svalue=$PLUIE"
echo $PLUIE
le problème venait aussi je pense du fait que la ligne que je voulais utiliser contenait des espaces (Il ne pleut pas!) j'ai contourné le problème en ajoutant des tirets dans le script (Il-ne-pleut-pas!)
ce n'est pas très beau mais ça fonctionne.
si quelqu'un a une idée élégante je suis preneur
en tout cas merci pour l'aide pour l'humidité.
jerome
Re: recuperer info fichier .txt
Publié : 01 avr. 2016, 08:49
par jackslayter
ajoute des %20 au lieu des espaces
Re: recuperer info fichier .txt
Publié : 01 avr. 2016, 11:51
par rimram31
Effectivement problème d'encodage d'url (certains caractères doivent être encodés).
Moins compact mais passe partout:
Code : Tout sélectionner
curl -G "http://$SERVER/json.htm" --data type=command --data param=udevice --data idx=7 --data nvalue=0 --data-urlencode svalue="$PLUIE"
on laisse a curl le soin de s'occuper de tout ça

Re: recuperer info fichier .txt
Publié : 06 avr. 2016, 00:34
par jeromec
merci ça marche super !
le seul petit souci, c'est pour le script bash qui récupère l'humidité à partit d'un .txt
l'humidité est bien affichée dans le widget mais pas moyen d'avoir un graph
Code : Tout sélectionner
HUM=$(awk -F: '/Humidite/ { gsub(/%/,"",$2); print $2; }' /var/www/CurrentTemperature.txt)
Code : Tout sélectionner
curl -s -i -H "Accept: application/json" "http://$USER:$PWD@$SERVER/json.htm?type=command¶m=udevice&idx=5&nvalue=$HUM"
je pense que cela vient du type de données, mais je ne sais pas les manipuler en bash.
merci encore !
jerome