19/12/2010, 23:17:44
Roby, ton script m'intéresse au plus haut point. Mais j'ai 1 soucis...
si en entrée j'ai 19.9375, le script me ressort 7C9.
Derriere, il me fais donc ceci : /usr/local/bin/groupwrite ip:
192.168.0.17 4/6/51 7C9
j'ai 1 trace dans linknx
Write from 0.0.0 to 4/6/51: C9
2010-12-19 23:10:39 [ERROR] ValueObject: Invalid packet received for
ValueObject (too short)
La définition dans linknx est
<object id="1w_Temp_SAM" gad="4/6/51" type="9.xxx" flags="cwu"
init="persist" log="true">Temperature Salle a manger</object>
j'ai un doute que ton code soit 'complet' ? il me semble que je
devrais avoir qqe chose du style 07 C9 en sortie par ex.
sinon, je ne comprends vraiment pas ce qu'il se passe. Any help ?
Merci
Arnaud
On 21 nov, 16:49, Roby <goo...@macuba.net> wrote:
> Bon, mais personne se moque, j'avais prévu de l'optimiser
>
> #!/bin/sh
>
> var=`exec /opt/owfs/bin/owread /1F.156C08000000/main/10.A5A3B5010800/
> temperature | tr -d " "`
> #var=-22.06
> nb=0
> var=$(echo "$var*100/1" |bc) #/1 pour suppression de la virgule
> if [ $var -gt 0 ]
> then
> while [ $var -gt 2047 ]
> do
> nb=$nb+1
> var=$(echo "$var/2" |bc)
> done
> nb=$(echo "$nb*2048" |bc)
> var=$(echo "ibase=10;obase=16;$var+$nb"|bc)
> elif [ $var -lt 0 ]
> then
> var=$(echo "$var*-1" |bc) #*1 pour revenir en positif
> while [ $var -gt 2047 ]
> do
> nb=$nb+1
> var=$(echo "$var/2" |bc)
> done
> nb=$(echo "$nb*2048" |bc)
> echo $var
> var=$(echo "ibase=10;obase=16;4096-$var+$nb+32768-2048"|bc)
> fi
> #verification si 4 caract
> if [ ${#var} = 1 ]
> then
> var="00 0${var}"
> elif [ ${#var} = 2 ]
> then
> var="00 ${var}"
> elif [ ${#var} = 3 ]
> then
> var="0${var}"
> var1=`expr substr $var 1 2`
> var2=`expr substr $var 3 2`
> var="${var1} ${var2}"
> elif [ ${#var} = 4 ]
> then
> var1=`expr substr $var 1 2`
> var2=`expr substr $var 3 2`
> var="${var1} ${var2}"
> fi
> exec /usr/local/bin/groupwrite ip:192.168.5.5 9/5/3 $var
si en entrée j'ai 19.9375, le script me ressort 7C9.
Derriere, il me fais donc ceci : /usr/local/bin/groupwrite ip:
192.168.0.17 4/6/51 7C9
j'ai 1 trace dans linknx
Write from 0.0.0 to 4/6/51: C9
2010-12-19 23:10:39 [ERROR] ValueObject: Invalid packet received for
ValueObject (too short)
La définition dans linknx est
<object id="1w_Temp_SAM" gad="4/6/51" type="9.xxx" flags="cwu"
init="persist" log="true">Temperature Salle a manger</object>
j'ai un doute que ton code soit 'complet' ? il me semble que je
devrais avoir qqe chose du style 07 C9 en sortie par ex.
sinon, je ne comprends vraiment pas ce qu'il se passe. Any help ?
Merci
Arnaud
On 21 nov, 16:49, Roby <goo...@macuba.net> wrote:
> Bon, mais personne se moque, j'avais prévu de l'optimiser
>
> #!/bin/sh
>
> var=`exec /opt/owfs/bin/owread /1F.156C08000000/main/10.A5A3B5010800/
> temperature | tr -d " "`
> #var=-22.06
> nb=0
> var=$(echo "$var*100/1" |bc) #/1 pour suppression de la virgule
> if [ $var -gt 0 ]
> then
> while [ $var -gt 2047 ]
> do
> nb=$nb+1
> var=$(echo "$var/2" |bc)
> done
> nb=$(echo "$nb*2048" |bc)
> var=$(echo "ibase=10;obase=16;$var+$nb"|bc)
> elif [ $var -lt 0 ]
> then
> var=$(echo "$var*-1" |bc) #*1 pour revenir en positif
> while [ $var -gt 2047 ]
> do
> nb=$nb+1
> var=$(echo "$var/2" |bc)
> done
> nb=$(echo "$nb*2048" |bc)
> echo $var
> var=$(echo "ibase=10;obase=16;4096-$var+$nb+32768-2048"|bc)
> fi
> #verification si 4 caract
> if [ ${#var} = 1 ]
> then
> var="00 0${var}"
> elif [ ${#var} = 2 ]
> then
> var="00 ${var}"
> elif [ ${#var} = 3 ]
> then
> var="0${var}"
> var1=`expr substr $var 1 2`
> var2=`expr substr $var 3 2`
> var="${var1} ${var2}"
> elif [ ${#var} = 4 ]
> then
> var1=`expr substr $var 1 2`
> var2=`expr substr $var 3 2`
> var="${var1} ${var2}"
> fi
> exec /usr/local/bin/groupwrite ip:192.168.5.5 9/5/3 $var