Loetkolben Posted April 12, 2013 at 06:38 PM Posted April 12, 2013 at 06:38 PM Hallo zusammen, ich bin ja nun wirklich kein Freund vom neuen Protokoll obwohl ich einsehe, dass Verbesserungen notwendig waren. Ich habe mich lange vor der Umstellung gedrueckt, weil mir zum einen die Zeit fehlte und zum anderen gab es keine passende Software zum abfragen. Diese Bitfummelei und dann auch noch diese Base58 rechnerei nervt absolut und war sonst nicht notwendig! - Nun habe ich es zum groessten Teil hinter mir. Wenn ich alle Scripte angepasst habe werde ich die Flashtour durch den Bekanntenkreis starten. Ich habe mich heute hingesetzt und (das wichtigste) Scriptlet zuerst gemacht. Hiermit kann man per shell die Temperatur vom Temperaturbricket UNKOMPLIZIERT abfragen. Die ganzen Bindings halte ich fuer Overkill und muessen immer erst installiert werden. In Protokollversion 1 reichten noch 3 Zeilen aus, jetzt ist es ein halbes Buch. Kurzanleitung: Nach dem Auspacken (oder wer will mit c&p): IP, Port und UID im Script und ggf. Ausfuehrungsrechte anpassen. Das war es schon. Ich habe es auf Debian squeeze ausprobiert. Soviel ich weiss muss man bei Ubuntu das "nc -w1" gegen ein "nc -q1" austauschen. Anpassungen an andere einfache Funktionen anderer Bricklets sind problemlos moeglich. Dazu nur die FunktionID im Bit und Bytekram finden (\x01) und ggf. den Payload der zurueckgesendetet wird anders behandeln ( Kommaschieberei, Division durch Hundert oder Tausend "/ 64" ). - Bei Fragen helfe ich auch gerne weiter. #!/bin/bash # Loetkolbenzauberkiste - Temperaturbricklet Protokoll Version 2 HOST=192.168.1.20 PORT=4223 tUID=abc ALPHABET="123456789abcdefghijkmnopqrstuvwxyzABCDEFGHJKLMNPQRSTUVWXYZ" BASECOUNT=`expr length $ALPHABET` DECODED=0 MULTI=1 for ((i=`expr length $tUID - 1` ; i > -1 ; i--)) do VALUE=${tUID:$i:1} DECODEDVALUE=`expr index $ALPHABET $VALUE` DECODEDVALUE=`expr $DECODEDVALUE - 1` DECODED=`expr $DECODED + $MULTI \* $DECODEDVALUE` MULTI=`expr $MULTI \* $BASECOUNT` done HEXDECODEDSTR="" HEXDECODED=`printf "%08x" $DECODED` for i in {6,4,2,0} do DIGIT=${HEXDECODED:$i:2} HEXDECODEDSTR=$HEXDECODEDSTR"\x"$DIGIT done SENDPACKET=$HEXDECODEDSTR"\x08\x01\x18\x00" TEMP1=`echo -n -e "$SENDPACKET" | nc -w1 $HOST $PORT | od -A n -t x2 | tr -d " " | cut -b 17- | tr "[:lower:]" "[:upper:]"` TEMP2=`echo "scale=2 ; ibase=16; $TEMP1 / 64" | bc` if [ "$1" = "x" ] ; then echo "`date +%Y%m%d_%H:%M:%S';'%s`;$TEMP2" else echo -e "\nDie Temperatur betraegt: $TEMP2 Grad.\nParameter x gibt Logfileoutputformat.\n" fi Edit, Nachtrag: Das ganze funktioniert nur bei Temperaturbricklets die an einem USB Stack angeschlossen sind. WLAN Stacks verhalten sich hier anders. Viel Spass und vielleich liefert ja jemand ein Feedback. Der Loetkolbentemperatur-get2_short.tar.gz Quote
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.