I get the same value, when read via i2c - stm32 + hih6030
Just by looking at those lines of code, I think the error might occur in your casting code:

//SCALE AND CAST
buffer-&gt;humidity = (double)(temp_humidity * 100 / (pow(2,14) - 1));
buffer-&gt;temperature = (double)(temp_temperature / (pow(2, 14) - 1) * 165 - 40);


As you do it, the values get casted after the scaling calculations are done, right before saving. This means the calculations are still done as integers. So as the humidity and temperature probably only vary a little bit, you lose these changes right there.

To execute a calculation as double, at least one operand has to be a double value. Try it like this:

//SCALE AND CAST
buffer-&gt;humidity = ((double)temp_humidity * 100 / (pow(2,14) - 1));
buffer-&gt;temperature = ((double)temp_temperature / (pow(2, 14) - 1) * 165 - 40);


I hope this works for you