Skip to content

Instantly share code, notes, and snippets.

@boozeman
Last active March 31, 2022 15:29
Show Gist options
  • Save boozeman/e896f0e4a3ec8cd644331403e27a113c to your computer and use it in GitHub Desktop.
Save boozeman/e896f0e4a3ec8cd644331403e27a113c to your computer and use it in GitHub Desktop.
Berry Driver - Convert ADS1115 values to volts
import json
import string
class ADS1115Data : Driver
var convert_to_mv
def ads1115()
# Read needed Sensor data
var sensors = json.load(tasmota.read_sensors())
var raw_adc0 = sensors['ADS1115']['A0']
var raw_adc1 = sensors['ADS1115']['A1']
var raw_adc2 = sensors['ADS1115']['A2']
var raw_adc3 = sensors['ADS1115']['A3']
# Calculate value in millivolts
var adc_mv0 = 6.144 * raw_adc0 / 32767
var adc_mv1 = 6.144 * raw_adc1 / 32767
var adc_mv2 = 6.144 * raw_adc2 / 32767
var adc_mv3 = 6.144 * raw_adc3 / 32767
self.convert_to_mv = [adc_mv0,adc_mv1,adc_mv2,adc_mv3]
return self.convert_to_mv
end
def every_second()
if !self.ads1115 return nil end
self.ads1115()
end
def web_sensor()
if !self.convert_to_mv return nil end #- exit if not initialized -#
var msg = string.format(
"{s}ADC1115 Analog0 mV{m}%.2f V{e}"..
"{s}ADC1115 Analog1 mV{m}%.2f V{e}"..
"{s}ADC1115 Analog2 mV{m}%.2f V{e}"..
"{s}ADC1115 Analog3 mV{m}%.2f V{e}",
self.convert_to_mv[0],self.convert_to_mv[1],self.convert_to_mv[2],self.convert_to_mv[3])
tasmota.web_send_decimal(msg)
end
def json_append()
if !self.convert_to_mv return nil end
var msg = string.format(
",\"ADS1115Volts\":{\"A0\":%.2f,\"A1\":%.2f,\"A2\":%.2f,\"A3\":%.2f}",
self.convert_to_mv[0],self.convert_to_mv[1],self.convert_to_mv[2],self.convert_to_mv[3])
tasmota.response_append(msg)
end
end
ADS1115Data = ADS1115Data()
tasmota.add_driver(ADS1115Data)
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment