guillaumezin / DomoticzEbusd

ebusd plugin for Domoticz
MIT License
14 stars 5 forks source link

'CDevice_update' failed 'OverflowError':'Python int too large to convert to C long'. #6

Closed MFxMF closed 5 years ago

MFxMF commented 5 years ago

System can not get value from bai prenergysumhc1 current value is:2153635038 Is too big for domoticz?

2019-03-04 21:54:52.697 (Saunier Duval ) Handle 2019-03-04 21:54:52.697 (Saunier Duval ) Telnet write: read -f -v -c bai prenergysumhc1
2019-03-04 21:54:52.697 (Saunier Duval ) Pushing 'WriteDirective' on to queue 2019-03-04 21:54:52.697 (Saunier Duval ) Processing 'WriteDirective' message 2019-03-04 21:54:52.697 (Saunier Duval ) Sending 35 bytes of data 2019-03-04 21:54:52.698 (Saunier Duval ) 72 65 61 64 20 2d 66 20 20 2d 76 20 2d 63 20 62 61 69 20 70 read.-f..-v.-c.bai.p 2019-03-04 21:54:52.698 (Saunier Duval ) 72 65 6e 65 72 67 79 73 75 6d 68 63 31 0d 0a .. .. .. .. .. renergysumhc1.. 2019-03-04 21:54:52.733 (Z-Wave) Usage (Unknown) 2019-03-04 21:54:52.738 (Z-Wave) General/kWh (kWh Meter) 2019-03-04 21:54:52.784 (Z-Wave) General/Voltage (Voltage) 2019-03-04 21:54:52.793 (Saunier Duval ) Pushing 'ReadEvent' on to queue 2019-03-04 21:54:52.799 (Saunier Duval ) Processing 'ReadEvent' message 2019-03-04 21:54:52.799 (Saunier Duval ) Received 32 bytes of data 2019-03-04 21:54:52.799 (Saunier Duval ) 62 61 69 20 50 72 45 6e 65 72 67 79 53 75 6d 48 63 31 20 3d bai.PrEnergySumHc1.= 2019-03-04 21:54:52.799 (Saunier Duval ) 32 31 35 33 36 33 35 30 33 38 0a 0a .. .. .. .. .. .. .. .. 2153635038.. 2019-03-04 21:54:52.799 (Saunier Duval ) Pushing 'onMessageCallback' on to queue 2019-03-04 21:54:52.799 (Saunier Duval ) Processing 'onMessageCallback' message 2019-03-04 21:54:52.800 (Saunier Duval ) Calling message handler 'onMessage'. 2019-03-04 21:54:52.800 (Saunier Duval ) onMessage called 2019-03-04 21:54:52.800 (Saunier Duval ) Parse telnet buffer size 32 2019-03-04 21:54:52.800 (Saunier Duval ) Reveived value: 'bai PrEnergySumHc1 =2153635038' 2019-03-04 21:54:52.801 (Saunier Duval ) Save whole fields values 2153635038 2019-03-04 21:54:52.801 Error: (CDevice_update) bai:prenergysumhc1: Failed to parse parameters: 'nValue', 'sValue', 'Image', 'SignalLevel', 'BatteryLevel', 'Options', 'TimedOut', 'Name', 'TypeName', 'Type', 'Subtype', 'Switchtype', 'Used', 'Description', 'Color' or 'SuppressTriggers' expected. 2019-03-04 21:54:52.801 Error: (Saunier Duval ) 'CDevice_update' failed 'OverflowError':'Python int too large to convert to C long'. 2019-03-04 21:54:52.802 (Saunier Duval ) handleFifo() called 2019-03-04 21:54:52.802 (Saunier Duval ) Handle 2019-03-04 21:54:52.802 (Saunier Duval ) Telnet write: read -f -v -c bai hwcwaterflow

MFxMF commented 5 years ago

Clear.

Rpi 32bit model name : ARMv7 Processor rev 5 (v7l)

pi@raspberrypi:~/domoticz/plugins/DomoticzEbusd$ python -c 'import sys; print(sys.maxsize)' 2147483647

guillaumezin commented 5 years ago

I could still divide too big numbers, for instance if this is Wh, it will become kWh. Do you know the unit of prenergysumhc1?

MFxMF commented 5 years ago

Honestly I don't know. In my case I calculating (prenergysumhwc1+prenergysumhc1)/850 and result is gas usage m^3

z1mEk commented 5 years ago

it's a very inaccurate way of counting

guillaumezin commented 5 years ago

Could you propose a better way? Do you have a clue on the type and unit of data inside prenergysum?

guillaumezin commented 5 years ago

Could you try version 1.3.9?

z1mEk commented 5 years ago

Could you propose a better way? Do you have a clue on the type and unit of data inside prenergysum?

I do not have specific information. Hc1 and Hwc1 have a different divisor. I set it empirically. Accuracy for 1 year +/- 2 m3.

#!/bin/bash

energyhc1=`ebusctl r -f PrEnergySumHc1`
energyhwc1=`ebusctl r -f PrEnergySumHwc1`

dz_hc1="747.351"
dz_hwc1="672.730"

VALUE=$(echo "$energyhc1/$dz_hc1+$energyhwc1/$dz_hwc1" | bc -l | xargs printf %.0f)
MFxMF commented 5 years ago

Could you try version 1.3.9?

It looks like it works. Thank you.