diff --git a/app/models/measurement.rb b/app/models/measurement.rb new file mode 100644 index 00000000..2c39ebe6 --- /dev/null +++ b/app/models/measurement.rb @@ -0,0 +1,2 @@ +class Measurement < ActiveRecord::Base +end diff --git a/lib/controller.rb b/lib/controller.rb index 1cdb96ff..0bf40af0 100644 --- a/lib/controller.rb +++ b/lib/controller.rb @@ -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" diff --git a/lib/database/dbaccess.rb b/lib/database/dbaccess.rb index 45e06c69..9b98a30d 100644 --- a/lib/database/dbaccess.rb +++ b/lib/database/dbaccess.rb @@ -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 diff --git a/lib/hardware/gcode/ramps.rb b/lib/hardware/gcode/ramps.rb index 73db3e5e..e282c67c 100644 --- a/lib/hardware/gcode/ramps.rb +++ b/lib/hardware/gcode/ramps.rb @@ -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| diff --git a/lib/messaging/messagehandler.rb b/lib/messaging/messagehandler.rb index dc266e68..9756e3ef 100644 --- a/lib/messaging/messagehandler.rb +++ b/lib/messaging/messagehandler.rb @@ -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)