Merge pull request #322 from ameixler/master
Allow accessing multiple Si7021s for temp and humidity info
This commit was merged in pull request #322.
This commit is contained in:
@@ -3,14 +3,18 @@ import time
|
||||
import sys
|
||||
|
||||
|
||||
if len(sys.argv) == 2:
|
||||
if len(sys.argv) == 2 or len(sys.argv) == 3:
|
||||
address = int(sys.argv[1],16)
|
||||
if len(sys.argv) == 3:
|
||||
busNum = int(sys.argv[2],16)
|
||||
else:
|
||||
busNum = 1
|
||||
else:
|
||||
print('-1 | -1')
|
||||
sys.exit(1)
|
||||
|
||||
# Get I2C bus
|
||||
bus = smbus.SMBus(1)
|
||||
bus = smbus.SMBus(busNum)
|
||||
|
||||
# SI7021 address, 0x40(64)
|
||||
# 0xF5(245) Select Relative Humidity NO HOLD master mode
|
||||
|
||||
@@ -800,7 +800,7 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplateP
|
||||
elif sensor['temp_sensor_type'] == "am2320":
|
||||
temp, hum = self.read_am2320_temp() # sensor has fixed address
|
||||
elif sensor['temp_sensor_type'] == "si7021":
|
||||
temp, hum = self.read_si7021_temp(sensor['temp_sensor_address'])
|
||||
temp, hum = self.read_si7021_temp(sensor['temp_sensor_address'], sensor['temp_sensor_i2cbus'])
|
||||
elif sensor['temp_sensor_type'] == "tmp102":
|
||||
temp = self.read_tmp102_temp(sensor['temp_sensor_address'])
|
||||
hum = 0
|
||||
@@ -933,14 +933,14 @@ class EnclosurePlugin(octoprint.plugin.StartupPlugin, octoprint.plugin.TemplateP
|
||||
self.log_error(ex)
|
||||
return (0, 0)
|
||||
|
||||
def read_si7021_temp(self, address):
|
||||
def read_si7021_temp(self, address, i2cbus):
|
||||
try:
|
||||
script = os.path.dirname(os.path.realpath(__file__)) + "/SI7021.py "
|
||||
if self._settings.get(["use_sudo"]):
|
||||
sudo_str = "sudo "
|
||||
else:
|
||||
sudo_str = ""
|
||||
cmd = sudo_str + "python " + script + str(address)
|
||||
cmd = sudo_str + "python " + script + str(address) + " " + str(i2cbus)
|
||||
if self._settings.get(["debug_temperature_log"]) is True:
|
||||
self._logger.debug("Temperature SI7021 cmd: %s", cmd)
|
||||
stdout = (Popen(cmd, shell=True, stdout=PIPE).stdout).read()
|
||||
@@ -1891,4 +1891,4 @@ def __plugin_load__():
|
||||
__plugin_hooks__ = {
|
||||
"octoprint.comm.protocol.gcode.queuing" : __plugin_implementation__.hook_gcode_queuing,
|
||||
"octoprint.plugin.softwareupdate.check_config": __plugin_implementation__.get_update_information
|
||||
}
|
||||
}
|
||||
|
||||
@@ -455,7 +455,8 @@ $(function () {
|
||||
printer_action: ko.observable("filament"),
|
||||
temp_sensor_navbar: ko.observable(true),
|
||||
filament_sensor_timeout: ko.observable(120),
|
||||
filament_sensor_enabled: ko.observable(true)
|
||||
filament_sensor_enabled: ko.observable(true),
|
||||
temp_sensor_i2cbus: ko.observable(1)
|
||||
});
|
||||
};
|
||||
|
||||
@@ -706,4 +707,4 @@ $(function () {
|
||||
elements: ["#tab_plugin_enclosure", "#settings_plugin_enclosure", "#navbar_plugin_enclosure_1", "#navbar_plugin_enclosure_2"]
|
||||
});
|
||||
|
||||
});
|
||||
});
|
||||
|
||||
@@ -582,6 +582,14 @@
|
||||
<code>i2cdetect -y 1</code> on your Raspberry Pi</span>
|
||||
</div>
|
||||
</div>
|
||||
<div class="control-group">
|
||||
<label class="control-label" for="settings-enclosure-dhtPin">{{ _('i2c Bus') }}</label>
|
||||
<div class="controls">
|
||||
<input type="text" class="input-block-level" data-bind="value: temp_sensor_i2cbus">
|
||||
<span class="help-inline">This value should remain 1 unless you've used dtoverlay=i2c-gpio.
|
||||
</span>
|
||||
</div>
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
<!-- ko if: ($data.temp_sensor_type() == "max31855") -->
|
||||
<div class="control-group">
|
||||
@@ -901,4 +909,4 @@
|
||||
</div>
|
||||
<!-- /ko -->
|
||||
</form>
|
||||
</div>
|
||||
</div>
|
||||
|
||||
Reference in New Issue
Block a user