Class: Mushy::SenseHatEnvironmentalSensors

Inherits:
SimplePythonProgram show all
Defined in:
lib/mushy/fluxs/sense_hat_environmental_sensors.rb

Instance Attribute Summary

Attributes inherited from Flux

#config, #flow, #id, #masher, #parent_fluxs, #subscribed_to, #type

Class Method Summary collapse

Instance Method Summary collapse

Methods inherited from SimplePythonProgram

#adjust, default_config, #process

Methods inherited from Bash

#process

Methods inherited from Flux

#convert_this_to_an_array, #convert_to_symbolized_hash, #execute, #execute_single_event, #group_these_results, #guard, #ignore_these_results, inherited, #initialize, #join_these_results, #limit_these_results, #merge_these_results, #model_these_results, #outgoing_split_these_results, #process, #shape_these, #sort_these_results, #standardize_these

Constructor Details

This class inherits a constructor from Mushy::Flux

Class Method Details

.default_measurementsObject



34
35
36
# File 'lib/mushy/fluxs/sense_hat_environmental_sensors.rb', line 34

def self.default_measurements
  [:humidity, :temperature, :pressure]
end

.detailsObject



5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
# File 'lib/mushy/fluxs/sense_hat_environmental_sensors.rb', line 5

def self.details
  {
    name: 'SenseHatEnvironmentalSensors',
    description: 'Pull values from the Sense HAT environmental sensors.',
    config: Mushy::SimplePythonProgram.default_config,
  }.tap do |c|
    measurements
      .sort_by { |x| default_measurements.include?(x) ? 0 : 1 }
      .each do |measurement|
        c[:config][measurement] = {
                                    description: "Pull #{measurement}.",
                                    type:        'boolean',
                                    shrink:      true,
                                    value:       default_measurements.include?(measurement) ? 'true' : '',
                                  }
    end
  end
end

.measurementsObject



24
25
26
27
28
29
30
31
32
# File 'lib/mushy/fluxs/sense_hat_environmental_sensors.rb', line 24

def self.measurements
  [
    :humidity,
    :temperature,
    :temperature_from_humidity,
    :temperature_from_pressure,
    :pressure,
  ]
end

Instance Method Details

#python_program(event, config) ⇒ Object



38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
# File 'lib/mushy/fluxs/sense_hat_environmental_sensors.rb', line 38

def python_program event, config
  values = self.class.measurements
               .select { |x| config[x] == 'true' }
               .reduce({}) { |t, i| t[i] = "get_#{i}"; t}
               .map { |m| "\"#{m[0]}\": sense.#{m[1]}()" }
               .join(',')

  <<PYTHON
from sense_hat import SenseHat
import json
sense = SenseHat()
value = json.dumps({#{values}})
print(value)
PYTHON
end