saving measurement after reading pin value

pull/24/head
TimEvWw 2014-10-17 20:38:27 -01:00
parent 1b5810bb2f
commit 706ad1dd45
5 changed files with 60 additions and 23 deletions

View File

@ -0,0 +1,2 @@
class Measurement < ActiveRecord::Base
end

View File

@ -193,7 +193,7 @@ class Controller
when "PIN WRITE"
$bot_hardware.pin_std_set_value(command_line.pin_nr, command_line.pin_value_1)
when "PIN READ"
$bot_hardware.pin_std_read_value(command_line.pin_nr)
$bot_hardware.pin_std_read_value(command_line.pin_nr, command_line.external_info)
when "PIN MODE"
$bot_hardware.pin_std_set_mode(command_line.pin, command_line.pin_mode)
when "PIN PULSE"

View File

@ -7,6 +7,7 @@ require './app/models/command_line.rb'
require './app/models/refresh.rb'
require './app/models/log.rb'
require './app/models/parameter.rb'
require './app/models/measurement.rb'
# retrieving and inserting commands into the schedule queue for the farm bot
# using sqlite
@ -153,10 +154,10 @@ class DbAccess
# read measurement list
#
def read_measurement_list()
measurements = Measuerements.find(:all)
measurements = Measurement.all
measurements_list = Array.new
measurement.each do |meas|
measurements.each do |meas|
item =
{
'id' => meas.measurement_id,
@ -164,17 +165,18 @@ class DbAccess
'timestamp' => meas.created_at,
'value' => meas.value
}
measurement_list << item
measurements_list << item
end
measurement_list
measurements_list
end
# delete a measurement from the database
#
def delete_measurement(id)
Log.where("measurement_id = (?)", id).find_each do |log|
log.delete
if Measurement.exists?(id)
meas = Measurement.where("measurement_id = (?)", id).first
meas.delete
end
end

View File

@ -34,13 +34,13 @@ class HardwareInterface
@bot_dbaccess = $bot_dbaccess
@axis_x_pos = 0
@axis_y_pos = 0
@axis_z_pos = 0
@axis_x_pos = 0
@axis_y_pos = 0
@axis_z_pos = 0
@axis_x_pos_conv = 0
@axis_y_pos_conv = 0
@axis_z_pos_conv = 0
@axis_x_pos_conv = 0
@axis_y_pos_conv = 0
@axis_z_pos_conv = 0
@axis_x_steps_per_unit = 0
@axis_y_steps_per_unit = 0
@ -48,10 +48,12 @@ class HardwareInterface
load_param_values_non_arduino()
@device_version = 'unknown'
@param_version_db = 0
@param_version_ar = 0
@params_in_sync = false
@device_version = 'unknown'
@param_version_db = 0
@param_version_ar = 0
@params_in_sync = false
@external_info = ""
end
@ -68,8 +70,11 @@ class HardwareInterface
# read standard pin
#
def pin_std_read_value(pin)
execute_command("F42 P#{pin}", false, @status_debug_msg)
def pin_std_read_value(pin, external_info)
@external_info = external_info
# execute_command("F42 P#{pin}", false, @status_debug_msg)
execute_command("F42 P#{pin}", true, true)
@external_info = ''
end
# set standard pin mode
@ -412,6 +417,11 @@ class HardwareInterface
@bot_dbaccess.write_parameter(param['name'],value)
end
# save a pin measurement
#
def save_pin_value(pin_id, pin_val)
@bot_dbaccess.write_measuements(pin_val, @external_info)
end
## ARDUINO HANLDING
## ****************
@ -560,6 +570,27 @@ class HardwareInterface
end
end
when 'R41'
pin_id = -1
pin_val = 0
text.split(' ').each do |param|
par_code = param[0..0].to_s
par_value = param[1..-1].to_i
case par_code
when 'P'
pin_id = par_value
when 'V'
pin_val = par_value
end
end
if pin_id >= 0
save_pin_value(pin_id, pin_val)
end
when 'R81'
text.split(' ').each do |param|

View File

@ -8,6 +8,8 @@ class MessageHandler
attr_accessor :message
## general handling messages
def initialize
@dbaccess = DbAccess.new
@last_time_stamp = ''
@ -16,7 +18,7 @@ class MessageHandler
# A list of MessageHandler methods (as strings) that a Skynet User may access.
#
def whitelist
["single_command","crop_schedule_update","read_parameters","write_parameters","read_logs","read_status"]
["single_command","crop_schedule_update","read_parameters","write_parameters","read_logs","read_status","read_measurements","delete_measurements"]
end
# Handle the message received from skynet
@ -66,7 +68,7 @@ class MessageHandler
self.send(requested_command, message)
else
@dbaccess.write_to_log(2,'message type not in white list')
self.error(message)
send_error(sender, time_stamp, 'message type not in white list')
end
rescue Exception => e
err_snd = true
@ -114,7 +116,7 @@ class MessageHandler
@last_time_stamp = time_stamp
measurement_list = @dbaccess.read_measurements()
measurements_list = @dbaccess.read_measurement_list()
return_message =
{
@ -146,7 +148,7 @@ class MessageHandler
@last_time_stamp = time_stamp
if payload.has_key? 'ids'
message_contents['ids'].each do |id|
payload['ids'].each do |id|
@dbaccess.delete_measurement(id)