Hi! Currently trying to get the Nibe Heat Pump integration to recognize my Nibe F730 through a nibegw on a “raspberry pi zero 2 w”.
As far as I can see my nibegw is up and running, but I cant get the integration to accept it.
any clues on how to proceed?
I see now that my pump is red and giving a modbus alarm. I guess for some reason the nibegw is not ACK the Nibe F730 correctly? connected to the Recv-Q maybe?
I have exactly the same problem with my Nibe F1155 and have already spent hours on it.
My heatpump immediately goes to red/alarm when I enable modbus and only the NibeGW module communicates with it.
What I don’t understand: On my Raspberry I have NibePi (anerdins/node-red-contrib-nibepi#master) running for many months - without an alarm, it ran perfectly. I passed the data via MQTT directly from NodeRed. But now I wanted to replace that and use the HomeAssistant Nibe integration. I have to start the communication via Modbus with NodeRed (aka NibePi), then I can start the NibeGW module as well, and then I can see the measured values in the HomeAssistant integration. If the communication “stands”, I can deactivate NodeRed and everything runs properly (NibeGW => HomeAssistant).
But this is not a solution.
What is still missing ? Does anyone have this running flawlessly ?
as @Arganox describes - “… it turns out the issue is related to running the serial port in canonical vs non-canonical mode”
so, change the following function in the nibegw script to:
int initSerialPort(int fd, int hwflowctrl)
{
struct termios options;
// Get the current options for the port...
tcgetattr(fd, &options);
// Set the baud rates
cfsetispeed(&options, B9600);
cfsetospeed(&options, B9600);
// Enable the receiver and set local mode...
options.c_cflag |= (CLOCAL | CREAD);
// 8 data bits, no parity, 1 stop bit
options.c_cflag &= ~PARENB;
options.c_cflag &= ~CSTOPB;
options.c_cflag &= ~CSIZE;
options.c_cflag |= CS8;
if (hwflowctrl)
options.c_cflag |= CRTSCTS; // Enable hardware flow control
else
options.c_cflag &= ~CRTSCTS; // Disable hardware flow control
// Flow control
options.c_iflag &= ~(IXON | IXOFF | IXANY | ICRNL );
// Local flags
options.c_lflag &= ~(ISIG | ICANON | IEXTEN | ECHO | ECHOE | ECHOK | ECHONL | ECHOCTL | ECHOKE );
options.c_oflag &= ~(OPOST | ONLCR);
options.c_cc[VMIN] = 1; // Min character to be read
options.c_cc[VTIME] = 1; // Time to wait for data (tenth of seconds)
// Set the new options
if (tcsetattr(fd, TCSANOW, &options) < 0 )
{
return -1;
}
return 0;
}
with it the communication stands with me for months flawlessly