Thank you Tom
the service file is doing exactly what we needed.

GOD bless you

On Wednesday, October 18, 2023 at 7:01:27 AM UTC+3 Mks Mk wrote:

>
> added import weewx to the top of file
> it worked
>
> On Wednesday, October 18, 2023 at 6:50:58 AM UTC+3 Mks Mk wrote:
>
>> there is nothing in the log file related to the correction
>>
>> we tried the service but it failed twice
>>
>> 1st run failed with error:
>>
>> Oct 18 06:37:20 debian weewx[3413] CRITICAL __main__:     ****    File 
>> "/usr/share/weewx/user/myservice.py", line 10
>> Oct 18 06:37:20 debian weewx[3413] CRITICAL __main__:     ****      def 
>> new_archive_record(self, event)
>> Oct 18 06:37:20 debian weewx[3413] CRITICAL __main__:     ****           
>>                               ^
>> Oct 18 06:37:20 debian weewx[3413] CRITICAL __main__:     **** 
>>  SyntaxError: invalid syntax
>> Oct 18 06:37:20 debian weewx[3413] CRITICAL __main__:     ****  Exiting.
>>
>> changed to
>>
>> def new_archive_record(self, event):
>>
>> run weewx again but failed with error
>>
>>
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****    File 
>> "/usr/share/weewx/weewxd", line 148, in main
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****     
>>  engine = weewx.engine.StdEngine(config_dict)
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****    File 
>> "/usr/share/weewx/weewx/engine.py", line 93, in __init__
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****     
>>  self.loadServices(config_dict)
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****    File 
>> "/usr/share/weewx/weewx/engine.py", line 161, in loadServices
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****      obj = 
>> weeutil.weeutil.get_object(svc)(self, config_dict)
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****    File 
>> "/usr/share/weewx/user/myservice.py", line 8, in __init__
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****     
>>  self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     **** 
>>  NameError: name 'weewx' is not defined
>> Oct 18 06:42:20 debian weewx[3603] CRITICAL __main__:     ****  Exiting.
>>
>> On Wednesday, October 18, 2023 at 4:42:59 AM UTC+3 Tom Keffer wrote:
>>
>>> Just had a thought. 
>>>
>>> I assume that weewxd is using software record generation. Check in the 
>>> log. If so, [[Corrections]] does not apply the corrections to archive 
>>> records because, in theory, the correction should have already been applied 
>>> in the LOOP packets. Obviously that's not happening here.
>>>
>>> I've created issue #895 <https://github.com/weewx/weewx/issues/895> to 
>>> track.
>>>
>>> In the meantime, what you can do is create a simple service 
>>> <https://www.weewx.com/docs/customizing.htm#Adding_a_service> to do the 
>>> calculation. It would look something like this (NOT TESTED):
>>>
>>> from weewx.engine import StdService
>>>
>>> class Power(StdService):
>>>
>>>   def __init__(self, engine, config_dict):
>>>     super(Power, self).__init__(engine, config_dict)
>>>
>>>     self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)
>>>
>>>   def new_archive_record(self, event)
>>>     ampere = event.record.get('ampere')
>>>     linevoltage = event.record.get('linevoltage')
>>>     if ampere is not None and linevoltage is not None:
>>>       event.record['consumption'] = ampere * linevoltage
>>>     else:
>>>       event.record['consumption'] = None
>>>
>>> This will work provided that linevoltage and ampere do not vary too much 
>>> over the archive interval. Because you are using short intervals (60 
>>> seconds), this is probably not much of a problem.
>>>     
>>>
>>>
>>>
>>>
>>>
>>>
>>> On Tue, Oct 17, 2023 at 6:12 PM Mks Mk <[email protected]> wrote:
>>>
>>>> from database
>>>>
>>>> dateTime usUnits interval consumption          ampere               
>>>>  linevoltage      pf
>>>> 1697583060 1            1                        90.84233333         
>>>>  141           0.9
>>>> 1697583120 1            1                        110.3686667         
>>>>  141           0.9
>>>> 1697583180 1            1                        77.51766667         
>>>>  140.5           0.9
>>>> 1697583240 1            1                        101.4843333         
>>>>  141           0.9
>>>> 1697583300 1            1                        100.0026667         
>>>>  141           0.9
>>>> 1697583360 1            1                        4.977666667         
>>>>  141           0.9
>>>> 1697583420 1            1                        4.907666667   142     
>>>>       0.9
>>>> 1697583480 1            1                        4.927666667   141.5   
>>>>         0.9
>>>> 1697583540 1            1                        4.886         
>>>>  141.3333333   0.9
>>>> 1697583600 1            1                        4.867666667         
>>>>  141            0.9
>>>> 1697583660 1            1                        4.877666667         
>>>>  141            0.9
>>>> 1697583720 1            1                        78.94533333         
>>>>  141            0.9
>>>> 1697583780 1            1                        90.26166667         
>>>>  140.6666667     0.9
>>>>
>>>>
>>>> On Wednesday, October 18, 2023 at 3:35:05 AM UTC+3 Mks Mk wrote:
>>>>
>>>>> Hi Gary
>>>>>
>>>>> it all started here
>>>>> https://groups.google.com/g/weewx-user/c/ltOVkcY1fKc/m/7sQSVGN_AQAJ
>>>>>
>>>>> we were using fixed value for the incoming grid line to calculate the 
>>>>> consumption but it was not accurate enough so we added new sensor to read 
>>>>> the grid incoming line voltage.
>>>>> earlier this formula worked consumption = ampere * 117 / 1000 * 0.88
>>>>> but  consumption = ampere * linevoltage / 1000 * 0.88 did not work
>>>>> the linevoltage input comes from different sensor than ampere,  these 
>>>>> two reading are generated in different loops, so based on Tom advice the 
>>>>> weewx correction will not work
>>>>> thank you
>>>>>
>>>>> On Wednesday, October 18, 2023 at 1:28:55 AM UTC+3 gjr80 wrote:
>>>>>
>>>>>> So what does
>>>>>>
>>>>>> consumption = ((ampere * linevoltage) /1000) * 0.88
>>>>>>
>>>>>> do?
>>>>>>
>>>>>> Gary
>>>>>> On Wednesday, 18 October 2023 at 08:26:25 UTC+10 [email protected] 
>>>>>> wrote:
>>>>>>
>>>>>>> Hi Tom
>>>>>>>
>>>>>>> we run weewx directly and found that 'ampere' & 'linevoltage' are 
>>>>>>> in different loop because the data are coming from two different 
>>>>>>> sensors by 
>>>>>>> sdr.py driver.
>>>>>>> how we can combine these loops into one so weewx can process this 
>>>>>>> formula, or what can we do to get this calculation done.?
>>>>>>>
>>>>>>> Thank you for your support
>>>>>>>
>>>>>>> On Tuesday, October 17, 2023 at 9:26:38 PM UTC+3 Tom Keffer wrote:
>>>>>>>
>>>>>>>> The only symbols that can be used in the [[Corrections]] formula 
>>>>>>>> are other types in the archive record. So unless 'ampere', 
>>>>>>>> 'linevoltage', 
>>>>>>>> and 'pf' all appear in the record, the correction will not work.
>>>>>>>>
>>>>>>>> On Tue, Oct 17, 2023 at 9:48 AM Mks Mk <[email protected]> wrote:
>>>>>>>>
>>>>>>>>> we want to improve the accuracy of our home energy monitor and we 
>>>>>>>>> added new sensor to read the main line voltage so we got two sensors 
>>>>>>>>> and 
>>>>>>>>> the data is logged in weewx database.
>>>>>>>>>
>>>>>>>>>     [[sensor_map]]
>>>>>>>>>
>>>>>>>>>         ampere = current.***.EfPacket
>>>>>>>>>         linevoltage = payload5.*****.RadioHeadASKPacket
>>>>>>>>>
>>>>>>>>> the database have these columns which we created
>>>>>>>>>
>>>>>>>>> consumption
>>>>>>>>> ampere
>>>>>>>>> linevoltage
>>>>>>>>> pf
>>>>>>>>>
>>>>>>>>> we want to calculate the energy consumption so we added this 
>>>>>>>>> correction 
>>>>>>>>>
>>>>>>>>> [StdCalibrate] 
>>>>>>>>>
>>>>>>>>>     [[Corrections]]
>>>>>>>>>         # For each type, an arbitrary calibration expression can 
>>>>>>>>> be given.
>>>>>>>>>         # It should be in the units defined in the StdConvert 
>>>>>>>>> section.
>>>>>>>>>         # Example:
>>>>>>>>>         foo = foo + 0.2
>>>>>>>>> pf = 0.88
>>>>>>>>>         consumption = ((ampere * linevoltage) /1000) * pf
>>>>>>>>>
>>>>>>>>> unfortunately weewx did nothing nor it complained about it. can 
>>>>>>>>> weewx process such formula?
>>>>>>>>>
>>>>>>>>> thanks
>>>>>>>>>
>>>>>>>>> -- 
>>>>>>>>> You received this message because you are subscribed to the Google 
>>>>>>>>> Groups "weewx-user" group.
>>>>>>>>> To unsubscribe from this group and stop receiving emails from it, 
>>>>>>>>> send an email to [email protected].
>>>>>>>>> To view this discussion on the web visit 
>>>>>>>>> https://groups.google.com/d/msgid/weewx-user/26effb7c-ad33-4de8-a9a0-f1390012ec5an%40googlegroups.com
>>>>>>>>>  
>>>>>>>>> <https://groups.google.com/d/msgid/weewx-user/26effb7c-ad33-4de8-a9a0-f1390012ec5an%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>>>>>> .
>>>>>>>>>
>>>>>>>> -- 
>>>> You received this message because you are subscribed to the Google 
>>>> Groups "weewx-user" group.
>>>> To unsubscribe from this group and stop receiving emails from it, send 
>>>> an email to [email protected].
>>>>
>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/weewx-user/fa342793-222a-4773-9bde-5bf97cf88dddn%40googlegroups.com
>>>>  
>>>> <https://groups.google.com/d/msgid/weewx-user/fa342793-222a-4773-9bde-5bf97cf88dddn%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>

-- 
You received this message because you are subscribed to the Google Groups 
"weewx-user" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/312b8a78-d433-4585-8514-cbc24ad65b1dn%40googlegroups.com.

Reply via email to