Unexpected Posted January 18, 2015 at 07:29 PM Share Posted January 18, 2015 at 07:29 PM Hallo zusammen, da die WIFI Extension noch kein WebSocket kann, frage ich mich wie ich am einfachen Temperatur-und Humudity-Werte auf meiner kleinen Intranetseite anzeigen lassen kann. Ich habe jeweils zwei Pis im LAN die jeweils einen Master angeschlossen haben mit diversen Sensoren. Auf den Balkon wollte ich die WIFI Extension einsetzten und irgendwie die Werte mit in die Seite einbinden... Ohne Datenbank etc.. Jemand eine einfache schöne Lösung? Grüße Unex Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted January 19, 2015 at 01:00 PM Share Posted January 19, 2015 at 01:00 PM Hallo Unexpected, nimm doch einfach die Shellbindings. Per Script aufrufen und dann in die Webseite einbauen? Der Loetkolben Quote Link to comment Share on other sites More sharing options...
Nic Posted January 19, 2015 at 01:45 PM Share Posted January 19, 2015 at 01:45 PM Oder alternativ mit den PHP Bindings oder serverseitig mit den Javascript Bindings und einem simplen Http-Server aus Node.js: http://www.sitepoint.com/creating-a-http-server-in-node-js/ Quote Link to comment Share on other sites More sharing options...
Unexpected Posted January 19, 2015 at 08:19 PM Author Share Posted January 19, 2015 at 08:19 PM Hallo ihr beiden, vielen Dank für die schnellen Antworten. Derzeit läuft noch ein Apache auf einem von den beiden Pi's. die Shellbindungs verstehe ich grundlegend, aber wie kann ich die in eine html seite einbauen? Kann mir jemand ein kleines Beispiel eindes Scrips geben? Evtl. stehe ich hier auch gerade einfach aufm schlauch. Javascript verwende ich derzeit schon, um die Temp und Hum Werte von den Mastern von den Pis anzuzeigen, werden dann in ein Textfeld eingetragen, wie die js Beispiele. Grüße Unex Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted January 19, 2015 at 08:54 PM Share Posted January 19, 2015 at 08:54 PM Ich habe den "umgekehrten" Weg gewaehlt. Ich sammel alle x Minuten die Werte per Cron und baue eine Webseite auf. Diese kann man dann per Browser abrufen. D.h., dass beim Abruf der Webseite nichts aktives mehr passiert, da die Daten schon vorliegen. Ich habe das seinerzeit sogar ohne Shellbindungs, sondern einfach per Shell, gemacht, da es die Bindings noch nicht gab. Der Loetkolben. Quote Link to comment Share on other sites More sharing options...
Unexpected Posted January 19, 2015 at 09:03 PM Author Share Posted January 19, 2015 at 09:03 PM WOW Loetkolben! Cool! Danke dir! Das sieht klasse aus! Werde ich mich mal einlesen! :-) Grüße Unex Quote Link to comment Share on other sites More sharing options...
Unexpected Posted January 20, 2015 at 09:01 PM Author Share Posted January 20, 2015 at 09:01 PM Ich habe leider gleich noch eine Frage: Ich habe die Datei von dir runtergeladen und testen wollen. Beim aufrufen des "./temperatur-get.sh x" oder auch nur "./temperatur-get.sh" kommt folgendes: No Packet machted 20150120_21:55:02;1421787302; Ich habe auch gecheckt ob alle Pakete installiert sind. Sind sie. und ich habe auch zwei verschiedene IP Adressen und verschiedene Temp Bricklets ausprobiert. Hast du eine Idee? Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted January 20, 2015 at 09:54 PM Share Posted January 20, 2015 at 09:54 PM Ich denke das bekommen wir hin. - Hast du auch die UID angepasst? - "No Packet machted" bedeutet, dass in der Antwort vom Stack keine passenden Informationen drin sind. - Hast die den Brickv aus? Wenn der auf dem Stack aktiv ist, kommt es evtl. zu "Daten-" Problemen. Bitte mal um Info. Ich kloeppel das mal die aktuelle Version des Scriptes ins Posting fuer Copy&Paste oder zum Vergleich. Hauptsaechlich kann man mehr Parameter uebergeben wie IP, etc und unten ist ein Puffer groesser geworden. Auch kann man die Daten die kommen automatisch abspeichern lassen. #!/bin/bash # 23.04.2013: Abfangen von langen Paketen. size 16384 und maching of receivepattern # 02.2014: -w auf 1MByte erweitert # 27.02.2014: "head -1" eingefuegt, da es mehrere Matches geben kann HOST=192.168.1.1 PORT=4223 tUID=XXX #echo "echo \$0 : $0" #echo "echo \$(which \$0) : $(which $0)" #echo "echo \$(dirname \$0) : $(dirname $0)" #echo "echo \$(basename \$0) : $(basename $0)" #echo "." LOGFILEOUTOUTFORMAT=0 RECEIVEPACKETSTORE=0 RECEIVEPACKETPATH=$(dirname $0) # -x -h host -p port -u uid -r -R receivepacketpath while [ $# -gt 0 ] #Solange die Anzahl der Parameter ($#) größer 0 do # echo "Dollar1:$1" #Ausgabe des ersten Parameters if [ "$1" = "-x" ] ; then LOGFILEOUTOUTFORMAT=1 ;fi if [ "$1" = "-h" ] ; then HOST=$2 ;fi if [ "$1" = "-p" ] ; then PORT=$2 ;fi if [ "$1" = "-u" ] ; then tUID=$2 ;fi if [ "$1" = "-r" ] ; then RECEIVEPACKETSTORE=1 ;fi # Wenn -r angegeben ist werden die Paket in -R abgelegt. Siehe weiter unten. if [ "$1" = "-R" ] ; then RECEIVEPACKETPATH=$2 ;fi shift done #---------------------------------------------------------------------------------- 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" RECEIVEPATTERN=`echo -n -e $HEXDECODEDSTR"\x0a\x01\x18\x00" | od -A n -t x1 | tr -d " "` RECEIVEPACKET=`echo -n -e "$SENDPACKET" | nc -w1 $HOST $PORT | xxd -p` if [ "$RECEIVEPACKETSTORE" = "1" ] ; then echo -n -e "$RECEIVEPACKET" | xxd -r -p > $RECEIVEPACKETPATH/receivepacket/RECEIVEPACKET.temperatur.`date "+%Y%m%d_%H%M%S"` fi FOUNDSTART=`echo -e -n $RECEIVEPACKET | xxd -r -p | od -w1048576 -A n -t x1 | tr -d " " | grep -o -F $RECEIVEPATTERN -b | head -1 | cut -f1 -d ":"` if [[ "$FOUNDSTART" != "" ]] ; then FOUNDSTART=`expr $FOUNDSTART + 17` FOUNDEND=`expr $FOUNDSTART + 3` TEMP1=`echo -e -n $RECEIVEPACKET | xxd -r -p | od -w1048576 -A n -t x2 | tr -d " " | cut -b $FOUNDSTART-$FOUNDEND | tr "[:lower:]" "[:upper:]"` TEMP2=`echo "scale=2 ; ibase=16; $TEMP1 / 64" | bc` if [ "$LOGFILEOUTOUTFORMAT" = "1" ] ; 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 else echo "No Packet machted" >&2 echo "`date +%Y%m%d_%H:%M:%S';'%s`;" fi # DATAFORMAT: 20120514_08:42:02;1336977722;20.62 Aber: Du kannst auch die Shellbindings nutzen um dieses Logfile zu erzeugen. Dem draw-script ist es ja egal womit die Daten gesammelt worden sind. Der Loetkolben Quote Link to comment Share on other sites More sharing options...
Unexpected Posted January 21, 2015 at 07:53 PM Author Share Posted January 21, 2015 at 07:53 PM Danke dir für den Support! - Hast du auch die UID angepasst? habe ich überprüft - Hast die den Brickv aus? Wenn der auf dem Stack aktiv ist, kommt es evtl. zu "Daten-" Problemen. Hatte ich gestern nicht, habe ich abern noch einmal mit getestet. geht weiterhin nicht. Nun kommt temperatur-get.sh: 40: temperatur-get.sh: Syntax error: Bad for loop variable Ich habe jetzt mal die Shell API Bindings ausprobiert... nach leichten Startschwierigkeiten funktioniert ein einfach Exemplar nun. Allerdings bekomme ich eine Fehlermeldung wenn ich auf einen Pi oder eine WLAN Ext. zugreifen möchte, die Authentication nutzt. kann ich das noch irgendwo mit angeben? oder gehen die Bindings nur ihne Auth.? Habe ich da etwas überlesen? Edit.: noch einmal das Skript ausgeführt und nun bekomme ich wieder "No Packet machted" Quote Link to comment Share on other sites More sharing options...
Loetkolben Posted January 22, 2015 at 01:05 AM Share Posted January 22, 2015 at 01:05 AM Hallo Unexpected, die Tinkerforgeauthorisierung wird natuerlich nicht unterstuetzt. Das bitte abschalten. Hast du mal die Pakete mitloggen lassen? (-r Schalter) Wie sehen die denn aus? Die Fehlermeldung "40: ... Bad for loop variable" deutet auf ein Problem in der Berechnung der UID hin. "expr" ist aber installiert? Der Loetkolben Quote Link to comment Share on other sites More sharing options...
numark1 Posted January 27, 2015 at 12:10 PM Share Posted January 27, 2015 at 12:10 PM Nur der Vollständigkeit halber weise ich auch nochmal auf meinen Ansatz hin. PHP Bindungs, Shell Bindings und ebenfalls Intranet Seite mit Steuerung. http://www.digcre.de/2014/04/03/tinkerforge-smarthome-from-scratch-teil-2-website-zum-datenabruf-mit-bootstrap-aufsetzen/ Quote Link to comment Share on other sites More sharing options...
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.