hello tout le monde !
alors voilà, je reçois une chaîne de caractère de l'IPX (V3) comme celle-ci dès qu'une entrée/sortie/compteur change de valeur.
Comment peut-on traité la chaîne de manière la plus optimisée possible afin de ressortir les info suivantes :
la valeur de "C1"
les 12 premiers bits de "O"
les 8 premiers bits de "I"
actuellement j'utilise des fonctions de ce type :
pour les Output :
_Pos1, _ = string.find(value, "O=")
_GroupeBin = string.sub(value, _Pos1+2, _Pos1+2+11)
pour le compteur :
_Pos1, _ = string.find(value, "C1=")
_Pos2, _ = string.find(value, "&C2")
string.sub(value, _Pos1, _Pos2-1))
et pire encore, quand je veux parcourir tous les bits des output un par un pour mettre à jour les QA (child) :
for i = 1, string.len(_GroupeBin) do
if string.sub(_GroupeBin, i, i) == "1" then
...
else
...
end
end
Le soucis est que par exemple quand le compteur d'eau tourne, il me fait clignoter l'IN 1 environ 2 fois par seconde...
Donc j'ai minimum dans ce cas 2 trames à analyser par seconde... (sans compter l'incrémentation du compteur C1)
Et la box calcule sévère avec ce genre de scripts...
ça marche très bien, c'est stable, mais je vois la CPU qui monte en flèche...
y a certainement moyen d'optimiser cela, mais j'avoue que je trouve pas grand chose...
Si vous avez des idées !!
merci à vous !!