sipvoip
(Nathan Stratton)
October 4, 2016, 4:23pm
1
I have several PoKeys 57E boards that I talk to via modbus-1.9.0-SNAPSHOT, one of them is giving me errors and I can’t see why.
2016-10-04 12:18:45 ERROR o.o.b.m.internal.ModbusSlave[:418]- ModbusSlave (second_ponet) error getting response from slave
java.lang.IndexOutOfBoundsException: null
at net.wimpi.modbus.util.BitVector.byteIndex(BitVector.java:240)
at net.wimpi.modbus.util.BitVector.getBit(BitVector.java:142)
at org.openhab.binding.modbus.internal.ModbusBinding.internalUpdateItem(ModbusBinding.java:339)
at org.openhab.binding.modbus.internal.ModbusSlave.updateItem(ModbusSlave.java:433)
at org.openhab.binding.modbus.internal.ModbusSlave.update(ModbusSlave.java:415)
at org.openhab.binding.modbus.internal.ModbusBinding.execute(ModbusBinding.java:378)
My openhab.cfg
# Modbus
modbus:poll=250
modbus:tcp.water.connection=10.88.64.45
modbus:tcp.water.length=55
modbus:tcp.water.type=coil
modbus:tcp.basement.connection=10.88.64.46
modbus:tcp.basement.length=55
modbus:tcp.basement.type=coil
modbus:tcp.basement_shared.connection=10.88.64.46
modbus:tcp.basement_shared.start=200
modbus:tcp.basement_shared.length=2
modbus:tcp.basement_shared.type=coil
modbus:tcp.basement_ponet.connection=10.88.64.46
modbus:tcp.basement_ponet.start=2071
modbus:tcp.basement_ponet.length=8
modbus:tcp.basement_ponet.type=coil
modbus:tcp.first.connection=10.88.64.47
modbus:tcp.first.length=55
modbus:tcp.first.type=coil
modbus:tcp.first_ponet.connection=10.88.64.47
modbus:tcp.first_ponet.start=2071
modbus:tcp.first_ponet.length=8
modbus:tcp.first_ponet.type=coil
modbus:tcp.first_shared.connection=10.88.64.47
modbus:tcp.first_shared.start=200
modbus:tcp.first_shared.length=2
modbus:tcp.first_shared.type=coil
modbus:tcp.second.connection=10.88.64.48
modbus:tcp.second.length=55
modbus:tcp.second.type=coil
modbus:tcp.second_ponet.connection=10.88.64.48
modbus:tcp.second_ponet.start=2071
modbus:tcp.second_ponet.length=8
modbus:tcp.second_ponet.type=coil
modbus:tcp.shed.connection=10.88.64.49
modbus:tcp.shed.length=55
modbus:tcp.shed.type=coil
ssalonen
(Ssalonen)
October 4, 2016, 6:53pm
2
Could you share your item definitions? Please check the index in the item against the slave length.
Best
Sami
sipvoip
(Nathan Stratton)
October 4, 2016, 8:43pm
3
Sure;
Group HVAC (All)
Group Basement_HVAC (HVAC)
Group First_Floor_HVAC (HVAC)
Group Second_Floor_HVAC (HVAC)
Group Damper (HVAC)
Number HVAC_Period "Chart Period"
Number Avg_Temperature "Average Room Temperature [%.1f °F]" <temperature> (Temperature)
Number Avg_Humidity "Average Room Humidity [%.1f %%]" <temperature> (Humidity)
// Basement
Number Basement_HVAC_Supply "Basement HVAC Supply Temp [%.1f °F]" <hvac> (Basement_HVAC) {http="<[http://10.88.64.46/devStat.xml:60000:XSLT(hvac_supply.xsl)]"}
Number Basement_HVAC_Return "Basement HVAC Return Temp [%.1f °F]" <hvac> (Basement_HVAC) {http="<[http://10.88.64.46/devStat.xml:60000:XSLT(hvac_return.xsl)]"}
Number Basement_HVAC_Delta "Basement HVAC Delta Temp [%.1f °F]" <hvac> (HVAC)
Switch Basement_Damper "Basement Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="basement_ponet:1", autoupdate="false"}
Switch Office_Damper "Office Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="basement_ponet:2", autoupdate="false"}
Switch Shop_Damper "Shop Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="basement_ponet:3", autoupdate="false"}
Switch Electric_Room_Damper "Electric Room Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="basement_ponet:4", autoupdate="false"}
Switch Water_Room_Damper "Water Room Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="basement_ponet:5", autoupdate="false"}
Switch Basement_Storage_Damper "Basement Storage Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="basement_ponet:6", autoupdate="false"}
// First Floor
Number First_Floor_HVAC_Supply "1st Floor HVAC Supply Temp [%.1f °F]" <hvac> (First_Floor_HVAC) {http="<[http://10.88.64.47/devStat.xml:30000:XSLT(hvac_supply.xsl)]"}
Number First_Floor_HVAC_Return "1st Floor HVAC Return Temp [%.1f °F]" <hvac> (First_Floor_HVAC) {http="<[http://10.88.64.47/devStat.xml:30000:XSLT(hvac_return.xsl)]"}
Number First_Floor_HVAC_Delta "1st Floor HVAC Delta Temp [%.1f °F]" <hvac> (HVAC)
Switch First_Floor_Damper "First Floor Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="first_ponet:1", autoupdate="false"}
Switch Living_Room_Damper "Living Room Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="first_ponet:2", autoupdate="false"}
Switch Master_Bedroom_Damper "Master Bedroom Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="first_ponet:3", autoupdate="false"}
Switch Guest_Bedroom_Damper "Guest Bedroom Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="first_ponet:4", autoupdate="false"}
Switch Kitchen_Damper "Kitchen Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="first_ponet:5", autoupdate="false"}
// Second Floor
Number Second_Floor_HVAC_Supply "2nd Floor HVAC Supply Temp [%.1f °F]" <hvac> (Second_Floor_HVAC) {http="<[http://10.88.64.48/devStat.xml:30000:XSLT(hvac_supply.xsl)]"}
Number Second_Floor_HVAC_Return "2nd Floor HVAC Return Temp [%.1f °F]" <hvac> (Second_Floor_HVAC) {http="<[http://10.88.64.48/devStat.xml:30000:XSLT(hvac_return.xsl)]"}
Number Second_Floor_HVAC_Delta "2nd Floor HVAC Delta Temp [%.1f °F]" <hvac> (HVAC)
Switch Second_Floor_Damper "Second Floor Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:1", autoupdate="false"}
Switch Great_Room_Damper "Great Room Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:2", autoupdate="false"}
Switch Emma_Bedroom_Damper "Emma's Bedroom Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:3", autoupdate="false"}
Switch Joshua_Bedroom_Damper "Joshua's Bedroom Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:4", autoupdate="false"}
Switch Breezeway_Damper "Breezeway Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:5", autoupdate="false"}
Switch Apartment_Damper "Apartment Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:6", autoupdate="false"}
Switch Mom_Bedroom_Damper "Mom's Bedroom Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:7", autoupdate="false"}
Switch Dad_Bedroom_Damper "Dad's Bedroom Damper [MAP(damper.map):%s]" <damper> (Damper) {modbus="second_ponet:8", autoupdate="false"}
rossko57
(Rossko57)
October 5, 2016, 1:23am
4
The indexing starts from zero; I think you want to read/write coils 0-7 not 1-8. Reading coil index 8 from a modbus slave with config length 8 gives your error.
You should check your other coils correspond to the hardware channels you expect as well !
1 Like
sipvoip
(Nathan Stratton)
October 5, 2016, 6:23pm
5
I originally started from 0, but it was not working right in hardware. The odd part is that I can control the relay 1 - 8 on the board.
sipvoip
(Nathan Stratton)
October 5, 2016, 6:36pm
6
I started at the wrong spot, I was starting at 2071 and should have started 2072. So 2071 + 1 was 2072 where as if I started with correct 2072 + 0 would be 2072.