From e87352bed577102b1e6c3bc44d242ef7856af393 Mon Sep 17 00:00:00 2001 From: Pat Thoyts Date: Wed, 18 May 2016 10:03:51 +0100 Subject: [PATCH] Removed the tcl monitor program --- monitor.tcl | 116 ---------------------------------------------------- 1 file changed, 116 deletions(-) delete mode 100644 monitor.tcl diff --git a/monitor.tcl b/monitor.tcl deleted file mode 100644 index b5fd092..0000000 --- a/monitor.tcl +++ /dev/null @@ -1,116 +0,0 @@ -#/usr/bin/env tclsh -# -# URL=https://api.thingspeak.com/update -# KEY=QXY49R9TYM0LYCB2 -# curl --data "key=$KEY&field1=$Temp0&field2=$Pressure0&field3=$Lux" $URL - -package require Tcl 8.6 -package require http -package require tls -package require autoproxy - -variable URL "http://api.thingspeak.com/update" -variable KEY "1HWAT971G1N0RJ6U" - -proc OnHttpComplete {tok} { - puts "[http::status $tok] $tok" - http::cleanup $tok -} - -proc avg {lst} { - set count [llength $lst] - foreach v $lst { - set sum [expr {$sum + $v}] - } - return [expr {$sum / double($count)}] -} - -proc median {lst} { - set lst [lsort -real $lst] - set len [llength $lst] - if {$len & 1} { - # odd number of elements - return [lindex $lst [expr {($len-1)/2}]] - } else { - # for even number, interpolate center pair - set idx2 [expr {$len / 2}] - set idx1 [expr {$idx2-1}] - return [expr {([lindex $lst $idx1] + [lindex $lst $idx2]) / 2.0}] - } -} - -proc upload {} { - variable URL - variable KEY - variable TEMPERATURES - variable HUMIDITIES - variable PRESSURES - - set A [median $TEMPERATURES] - set B [set C 0] - if {[llength $HUMIDITIES] > 0} { set B [median $HUMIDITIES] } - if {[llength $PRESSURES] > 0} {set C [median $PRESSURES] } - set TEMPERATURES [set HUMIDITIES [set PRESSURES {}]] - set req [http::formatQuery api_key $KEY field1 $A field2 $B field3 $C] - set tok [http::geturl $URL -query $req -timeout 500 -command [list OnHttpComplete]] - http::wait $tok -} - -proc main {port {baudrate 57600}} { - variable TEMPERATURES {} - variable HUMIDITIES {} - variable PRESSURES {} - - http::register https 443 [list autoproxy::tls_socket -ssl2 0 -ssl3 0 -tls1 1] - autoproxy::init - puts "# proxy: [autoproxy::cget -proxy_host]" - - set sio [open $port r] - fconfigure $sio -buffering line -encoding ascii -translation {auto crlf} -mode $baudrate,n,8,1 - while {[gets $sio line] != -1} { - if {[string match "# *" $line]} { puts $line; continue } - set T {} - set H {} - set P {} - if {[catch { - foreach sensor [lrange [split $line "\["] 1 end] { - set sensor [string trim $sensor "\[\] "] - lassign $sensor id ts t h p - lappend T [expr {double($t)}] - if {$h != 0} {lappend H [expr {double($h)}]} - if {$p != 0} {lappend P [expr {double($p)}]} - } - set temperature [median $T] - lappend TEMPERATURES $temperature - if {[llength $H] > 0} { - set humidity [median $H] - lappend HUMIDITIES $humidity - } else { - set humidity -1 - } - if {[llength $P]} { - set pressure [median $P] - lappend PRESSURES $pressure - } else { - set pressure -1 - } - puts [format "%d %.2f %.2f %.2f : {$T} {$H} {$P}" \ - [clock seconds] $temperature $humidity $pressure] - # every 5 minutes - if {[llength $TEMPERATURES] > (60 * 5)} { - upload - } - } err]} { - puts "! $line\n! $::errorInfo" - } - } - return 0 -} - -if {!$tcl_interactive} { - set r [catch [linsert $argv 0 main] err] - if {$r} { - puts stderr $::errorInfo - } - exit $r -} -- 2.23.0