Hi! I have an ADS1115 connected to my RPi to make some analog readings.
To do that, I’ve input my two signals into A0 and A2 pins respectively, and created two sensors from sensor template (see code below).
It seems not to work correctly. The two readings seems to be the same, despite the fact that the function adc_read reads each one its own channel:
Sensor 1 (amperes): homeassistant/custom_components/sensor/amperimeter.py
from homeassistant.helpers.entity import Entity
import Adafruit_ADS1x15
def setup_platform(hass, config, add_devices, discovery_info=None):
add_devices([amperimeter()])
class amperimeter(Entity):
# Offset input 0
OFFSET = 3650
def __init__(self):
self._state = 0
self._reading = 0
self._adc = Adafruit_ADS1x15.ADS1115()
@property
def name(self):
return 'Amperimeter'
@property
def state(self):
return self._state
@property
def unit_of_measurement(self):
return 'A'
def update(self):
self._reading = self._adc.read_adc(channel=0,gain=1)
self._state = float("{:.2f}".format((self._reading - self.OFFSET) * 0.00707))
Sensor 2 (volts): homeassistant/custom_components/sensor/voltmeter.py
from homeassistant.helpers.entity import Entity
import Adafruit_ADS1x15
def setup_platform(hass, config, add_devices, discovery_info=None):
add_devices([voltmeter()])
class voltmeter(Entity):
def __init__(self):
self._state = 0
self._reading = 0
self._adc = Adafruit_ADS1x15.ADS1115()
@property
def name(self):
return 'Voltmeter'
@property
def state(self):
return self._state
@property
def unit_of_measurement(self):
return 'V'
def update(self):
self._reading = self._adc.read_adc(channel=2,gain=1)
self._state = float("{:.1f}".format((self._reading) * 0.027))
And my configuration.yaml looks like this:
sensor amperimetro:
- platform: amperimeter
friendly_name: "Amp meter"
sensor voltimetro:
- platform: voltmeter
friendly_name: "Volt meter"
The results are:
Amp meter: 1.89A (that’s OK)
Volt meter: 103.3V (that’s wrong! looks like the same reading than Amp meter, with the math applied to it)
The raw inputs are (from simpletest.py):
Reading ADS1x15 values, press Ctrl-C to quit...
| 0 | 1 | 2 | 3 |
-------------------------------------
| 3735 | 4501 | 7984 | 4528 |
| 3745 | 4480 | 8017 | 4505 |
| 3760 | 4496 | 8036 | 4493 |
...
My setup is:
- Raspberry Pi Zero W
- Raspbian / HA 0.82.1
- Adafruit ADS1115 connected to RPi via SDA/SCL, 5V
- Some circuitry to make the signals don’t cross 0-4V limits
Can anyone help me to figure out why these codes doesn’t work correctly?
Is there another way to do what I need?
Thank you a lot.
Att.
Daniel