Convertisseur hexadécimal en décimal et en binaire

Moi ça me va de découper l’héxa, mais comment faire ça sous Jeedom ? Faut passer par des scénarios ? Si t’as un début de piste à me donner je suis preneur.

:grinning:

Oui, par scénario.
Eventuellement dans un bloc code de scénario si c’est plus facile pour toi.

hexdec()

https://www.php.net/manual/fr/function.hexdec.php

decbin()

https://www.php.net/manual/fr/function.decbin.php

2 « J'aime »

Tu as raison, pourquoi réinventer la poudre.

:roll_eyes:

Vous êtes bien mignon les développeurs mais je suis pas un as en informatique? J’en fait quoi des codes php ? N’auriez-vous pas au moins un début de piste ? Par ou je commence ? Quel outil du core ou quel plugin j’utilise ?

:face_with_monocle:

En plus quand je vois ça :

Çà ne me rassure pas.

Merci de votre aide !

Hello
dans un bloc code :

$hexa ="3A 4001";
$dec= hexdec ($hexa);
$bin = decbin ($dec);
$scenario->setLog("Valeur binaire = " .$bin);
1 « J'aime »

@Claude69t a tout écrit.
Et pour compléter son code, si tu ne veux pas te contenter de l’avoir dans le log, la valeur binaire est stockée dans la variable bin.

2 « J'aime »

Cela doit fonctionner dans une commande info d’un virtuel.

decbin(hexdec(#[ma][valeur][hexa]#))
2 « J'aime »

Merci Jeandhom,

Çà fonctionne au poil ! Première étape réussie.

Deuxième étape séparer les binaires pour interpréter le message, sais-tu comment faire ?

substr() devrait convenir.

https://www.php.net/manual/fr/function.substr.php

2 « J'aime »

Merci t’es un chef Jeandhom :+1:, je vais pouvoir mettre le sujet en résolu !

1 « J'aime »

Re,

Zut y’a un truc que je ne comprends pas :

C’est ok pour la conversion binaire (j’ai mis ! à la fin pour voir tout le binaire sinon ça me mets 1101E+21

Résultat du test 3 ça me va :

Le test 4 aussi :

Mais au test 5 :


ça devrait me retourner 00 ou 0, non ?

Essaie de passer dans le testeur d’expression.
C’est peut-être le ! qui pose problème.

En fait j’ai direct essayé ça mais c’est pas mieux, et quand je l’enlève en exécutant

substr(#[Monitoring][test][test 2 ]#,  -3, 1)

j’arrive à chopper le + :

image

et E avec substr(#[Monitoring][test][test 2 ]#, -4, 1) donc cohérent quoi !

Je comprends rien ! :slightly_frowning_face:

Qu’y-a-t-il là-dedans?

Pour le post juste au-dessus avec des résultats cohérents il y a ça :

decbin(hexdec(#[Monitoring][Compteur Enedis][STGE]#))

et le résultat de 1.1101E+21

substr(#[Monitoring][test][test 2 ]#,  -4,  3)

me donne le bon résultat, soit : E+2

substr(#[Monitoring][test][test 2 ]#,  -10,  3)

également le bon : 1.1

Sauf que je ne veux pas d’exposant pour traiter mes binaires.

J’ai refais des tests ça à l’air d’être bon… j’ai mis _ à la place de mon !

J’arrête pour ce soir… je referais des tests demain.

En tout cas, merci de votre aide !

Bon ben trouvé.
La fonction decbin() est foireuse.
Jusqu’à 0xfff8, c’est-à-dire 1111111111111000, elle fonctionne. Au-delà, le résultat est faux.

Bonjour,

C’est bizarre ce que tu dis car je ne vois pas de soucis de ce côté là.
J’ai découpé le résultat de la fonction decbin() de Jeedom pour que ce soit lisible, j’ai bien la même valeur qu’avec la calculatrice de Windows :
11 1010 0100 0000 0000 0001

image

Entre la formule decbin(65535) dans le testeur d’expression.
Normalement, tu devrais avoir 1111111111111111
Moi, j’ai 1111111111111100

En effet j’ai la même chose, il faut juste que je décompose en utilisant substr avant la conversion du coup ?