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

Code : Tout sélectionner

sed -e 's/%//g'
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:

Code : Tout sélectionner

grep "Humidite" fichier.txt | awk -F: ' { print $2; }'
awk sait aussi faire des traitements sur des lignes particulières:

Code : Tout sélectionner

awk -F: '/Humidite/ { print $2; }' fichier.txt
Qu'il faut effectivement ensuite retraiter via un sed pour supprimer le % bien que awk sache aussi "tout faire" :mrgreen: :

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:

Code : Tout sélectionner

grep "Humidite" fichier.txt | cut -d: -f 2

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&param=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&param=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&param=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