Note de ce sujet :
  • Moyenne : 0 (0 vote(s))
  • 1
  • 2
  • 3
  • 4
  • 5
Affichage température dans knxweb2
#1
Bon, j'essaye d'afficher une température qui est envoyée cycliquement sur le bus par mes boutons poussoir (Eelectron).

La valeur est bien écrite (vue avec vbusmonitor), mais je n'arrive pas à l'afficher dans knxweb2. J'ai créé un champ texte, avec comme pattern '$1'. Mais je n'ai rien qui s'affiche.

J'ai loupé un truc ?
Répondre
#2
Ok, je viens de piger. Il faut écrire la regex dans le champ 'pattern', en utilisant les groupes, puis récupérer les groupes dans le champ texte...
Répondre
#3
Voici d'ailleurs une petite expression régulière pour changer le . en , et pour ne garder qu'une seule décimale, en rajoutant l'unité :

pattern : (\d*)\.{0,1}(\d{0,1})(\d*)
texte : $1,$2°C

Bon, ça ne fait pas l'arrondi ; pour ça, il faut utiliser un peu de maths ; pas encore regardé comment faire (via formula, je pense)...
Répondre
#4
Super, merci pour le truc ! Smile
c'est bien plus agréable comme ça
Répondre
#5
Si c'est pu PCRE j'aurais écris le pattern comme ça

(\d+)\.(\d).*

Mais faut voir ce qu'on a en entrée de la REGEX (y a t'il toujours le point et des décimales ? La température peut-elle être négative ?) et tester, j'ai souvent eu des surprises entre le comportement attendu et réel..

bon c'est pas un forum sur les expressions régulières, du coup ->[]
Répondre
#6
La t° ne peut pas être négative en effet.. je l'ai constaté ce matin. Est-ce un problème de patern ou un problème dans linknx, je n'ai pas encore vérifié.

(20/10/2015, 09:18:33)kamigaz a écrit : bon c'est pas un forum sur les expressions régulières, du coup ->[]
non ne sort pas ! Sad toute solution est toujours utile! Big Grin

Particulièrement pour comprendre les paterns.. pour le moment je n'ai encore rien compris Tongue
Répondre
#7
Wink

En PCRE pour gérer la temp négative :
(-?\d+)\.(\d).*

Les expressions régulières sont super pratiques mais nécessitent de bien s'y plonger pour les comprendre, certains caractères pouvant changer de signification suivant leur utilisation...

Ici les parenthèses signifient une capture qu'on retrouvera dans $1, $2 etc
-? pour 0 ou 1 signe '-', c'est l'équivalent de {0,1}
\d+ pour 1 ou n signe décimal (équivalent de \d{1,} ou [0-9]{1,})
\. pour le ., car le point seul signifie n'importe quel caractère, or on veut explicitement le caractère '.' ici
re \d pour la décimale
ensuite .* en dehors des parenthèses pour dire que tout le reste ne nous intéresse pas (n'importe quel caractère présent 0 ou n fois).

Pas moyen d'arrondir avec de pures expressions régulières par contre.
Je n'ai pas de super tuto a donner sur les regex mais c'est vrai qu'une fois qu'on connait c'est très sympa à utiliser.

Smile
Répondre
#8
Super, merci... pour les explications aussi!
Je vais tester ça.
Répondre
#9
En effet, ça fonctionne aussi en négatif avec cette expression mise dans pattern : (-?\d+)\.(\d).*
et ceci dans texte : $1,$2°c
Comme ça c'est parfait !


Répondre
#10
Cool !
Content de pouvoir renvoyer l'ascenseur de temps en temps Shy
Répondre
#11
ha zut, quand on a une valeur entière, ça ne fonctionne plus. J'ai eu une t° à 20° tout rond, plus rien n'était affiché dans knxweb...
Je pense qu'il n'y a pas de solution pour ce cas particulier si je ne me trompe pas.
Répondre
#12
Si, il y a toujours une solution Wink

Essaye :

(-?\d+)\.?(\d?).*
Répondre
#13
Oui en effet, comme ça je retrouve l'affichage de ma t°, merci.
En cas de chiffre rond, j'ai "20, °c", je dois encore chercher comment afficher "20,0 °c", mais je vais trouver (le temps surtout...)
Répondre
#14
Je déterre ce post car je viens de mettre en place Knxweb2.
Pour ma part j'utilise le pattern (.*) qui récupère la température sans mise en forme spécifique. Ensuite au niveau de la variable text je mets $1°C pour un affichage suivi de °C
Le perfectionnement de soi et l'accession à sa légende personnelle passe obligatoirement par le partage de son savoir et de son expérience avec les profanes en demande d'initiation. (R. Bach)
Répondre


Atteindre :


Utilisateur(s) parcourant ce sujet : 1 visiteur(s)