-
Notifications
You must be signed in to change notification settings - Fork 25
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
Value too small or too large #59
Comments
According to this tool, binary representation of 13364801568768.00000 is As far as I remember, there were issues in libmodbus regarding byte order (e.g. stephane/libmodbus/issues/358 and stephane/libmodbus/pull/441). This is one of the reasons libzbxmodbus has its own patched libmodbus. Unfortunately, it is indistinguishable from mainstream libmodbus (#22). My best guess at this point is that during upgrade of Zabbix you accidentally upgraded libmodbus as well and mainstream version has overwritten the patched one. |
I had the same thought (an unpatched libmodbus). So before the last re-install of libzbxmodbus, I removed the libmodbus files. For the reinstall I did |
Yes, it should. I would check the output of
and verify the modification time of |
While I would swear on stack of holy texts that I tried "0" for the endian-ness, I just re-tried and it is working. I did discover that I need to specify "float" and not "f" for the data type. So I will switch all my keys to use "float, MLE" so that it is more explicit. Thanks for the help! |
I believe with your test command |
It certainly would seem that way, but:
which is what I compiled via git around lunchtime. I am still confused, but glad it is working. |
Since updating to Zabbix 4.0.6 I have been getting values too small or too large from a Campbell Scientific data logger. libzbxmodbus is working for a dozen other meters I am monitoring. There have been no changes to the data loggers for many years. I have been successfully retrieving data with libzbxmodbus for 18 months, prior to the upgrade.
Checking with
modpoll -m tcp -t 3:float -a 1 -r 33 -c 1 -1 <ip_addr>
I get 57.0025 (the measurement is relative humidity). In Zabbix I am usingmodbus_read_registers[<ip_addr>, 1, 32, 4, float, LE]
and I see 'Value 13364801568768.00000 is too small or too large'.I've taken packet captures and decoded the modbus messages for both modpoll and libzbxmodbus. I see the same data for each method (more or less - it varies by ~1% each reading).
I have tried all combinations of data type and endian-ness without luck. I have recompiled and reinstalled (via git) twice. What am I missing?
The text was updated successfully, but these errors were encountered: