Hello
Your initInputs() function is only setting the first pin on each port as an input.
The setPortDirection function takes an 8 bit value between 0 and 255 for the second parameter. Each bit within the number represents one of the pins on the selected port so for example if you wanted to set pin 3 as an input and the other pins as outputs you would write 0b00000100 or 4 to the port. As you want all of the pins to be inputs you need to use setPortDirection(0, 255); and setPortDirection(1, 255); setInterruptType() works in the same way so you need to write 255 instead of 1 to each port.
Try changing your function to the code below and see if this helps.
initInputs() {
this.expanderIO.setPortDirection(0, 255);
this.expanderIO.setPortDirection(1, 255);
this.expanderIO.setInterruptType(0, 255);
this.expanderIO.setInterruptType(1, 255);
this.startListening();
}
On your inputs do you have pull-down resistors connected between the input and ground?
When using buttons if they are connected to 5V you will need pull-down resistors connected to ground so the input is pulled to 0V when the button is not pressed.
If the button is connected to ground you need pull-up resistors connected to 5V to pull the input high when the button is not pressed.
Without any pull-down or pull-up resistors when the button is open the input will be left in a floating state where it is neither at 0V or 5V. When the input is floating any stray capacitance or noise on the input wire can cause the input to register a change in state which could be the cause of your problems.