Thanks .  I will also have a try with an XTYPE extension

Le mercredi 6 décembre 2023 à 16:21:57 UTC+1, Karen K a écrit :

> Maybe, writing an XTYPE extension instead of a service would be a 
> solution. There you have access to the archive record and you can create 
> new observation types, that can be saved to the database.
>
> Jacques Terrettaz schrieb am Mittwoch, 6. Dezember 2023 um 07:16:19 UTC+1:
>
>> Thanks.
>>
>> Right now I think will follow option 2 and I am looking forward to use 
>> the separate extraction of records from accumulators in version 5.1 !
>>
>>
>> Le 5 déc. 2023 à 23:36, gjr80 <[email protected]> a écrit :
>>
>> Like I said, depends whether you wanted to morph the archive record or 
>> not.
>>
>> Since you are clearly happy to get your hands dirty a couple of 
>> workarounds come to mind:
>>
>> 1. Bind your service to both NEW_LOOP_PACKET and NEW_ARCHIVE_RECORD. 
>> When a new loop packet comes in check it for the Ecowitt obs you want and 
>> save the value as a property of your service. When NEW_ARCHIVE_RECORD 
>> occurs use the saved property to do what you want to the archive record. As 
>> long as your service appears after the gw1000 service and before 
>> StdArchive it should be fine. A couple of variations, keep a timestamp 
>> of the Ecowitt value and you can decide whether to alter the archive record 
>> or not depending on whether the Ecowitt data is stale or not.
>>
>> 2. If you particularly want to do something based on the archive period 
>> value of the Ecowitt obs then bind your service to NEW_LOOP_PACKET, 
>> NEW_ARCHIVE_RECORD and END_ARCHIVE_PERIOD. You can get the Ecowitt value 
>> from the loop packet and accumulate it, on the END_ARCHIVE_PERIOD event 
>> you can calculate the archive period value for the Ecowitt obs (eg simple 
>> average) snd reset the accumulated value and then on NEW_ARCHIVE_PERIOD 
>> you can modify the archive record. Again as long your service appears after 
>> the gw1000 service and before StdArchive it should be fine.
>>
>> There are probably other possibilities. Will be much easier when v5.1 
>> comes out with a split StdArchive :) :)
>>
>> Gary
>> On Wednesday 6 December 2023 at 05:58:37 UTC+10 [email protected] wrote:
>>
>>> Thanks for the suggestion Gary. But in that case, with a service in 
>>> archive_ 
>>> services (after StdArchive) or in report_services , it is a read-only 
>>> access to the full archive record.
>>>
>>> The idea of my service was to read some GW1000 sensor archive record 
>>> values, and depending on these value modify another  non-GW1000 archive 
>>> record value.  If I understand well, this has to be done before 
>>> StdArchive, i.e before the archive record is finalized and written to 
>>> the database.
>>>
>>>
>>>
>>> Le 5 déc. 2023 à 20:27, gjr80 <[email protected]> a écrit :
>>>
>>> Not quite true. If you include your service in archive_services (after 
>>> StdArchive) or anywhere in report_services  it will have access to the 
>>> augmented archive record (even restful_services will work but that just 
>>> doesn't sound right to me).
>>>
>>> Gary
>>>
>>> On Wednesday, 6 December 2023 at 03:50:02 UTC+10 [email protected] 
>>> wrote:
>>>
>>>> Yes, this is the case. The GW1000 gateway service only adds sensor 
>>>> values to the LOOP packets. So in that case, there is no way to capture 
>>>> the 
>>>> archive record of GW1000 sensors using a custom service.
>>>>
>>>> Thanks for your reply
>>>>
>>>>
>>>> Le 5 déc. 2023 à 16:38, Tom Keffer <[email protected]> a écrit :
>>>>
>>>> As you're hinting, it depends on details of how GatewayService adds 
>>>> outTemp5. 
>>>>
>>>> Service StdArchive is responsible for taking the accumulated LOOP 
>>>> packets and turning them into an archive record. So, if GatewayService 
>>>> only 
>>>> adds outTemp5 to the LOOP packets and depends on StdArchive to turn them 
>>>> into archive records, outTemp5 won't appear until *after* StdArchive 
>>>> has run.
>>>>
>>>> On the other hand, if GatewayService puts outTemp5 in the archive 
>>>> record, it should be in there by the time MyService sees the record.
>>>>
>>>>
>>>> On Tue, Dec 5, 2023 at 2:32 AM [email protected] <[email protected]> 
>>>> wrote:
>>>>
>>>>> I have weewx (4.10.2) configured with the Davis Vantage 2 driver, and 
>>>>> additionally the GW1000 gateway service provides values for some more 
>>>>> temperature sensors.
>>>>> Everything is working properly , and GW1000 temperature values (mapped 
>>>>> as extraTempX) are recorded in the archive database and  appear in LOOP 
>>>>> packets.
>>>>>
>>>>> I am working on a new service, triggered by the NEW_ARCHIVE_RECORD 
>>>>> event,  that needs to read the record values of the some of the extraTemp 
>>>>> captured by the GW10000. 
>>>>>
>>>>> In this exemple :
>>>>>
>>>>> class MyService(StdService):
>>>>>    def __init__(self, engine, config_dict):
>>>>>      super(MyService self).__init__(engine, config_dict)
>>>>>             manager_dict = 
>>>>> weewx.manager.get_manager_dict_from_config(config_dict, 'wx_binding')
>>>>>      self.db_manager = weewx.manager.open_manager(manager_dict)
>>>>> self.bind(weewx.NEW_ARCHIVE_RECORD, self.newArchiveRecord)
>>>>>
>>>>>   def newArchiveRecord(self, event):
>>>>> if event.record.get('extraTemp5') is not None:
>>>>> loginf("record extraTemp5 is : %f " % (event.record['extraTemp5']))
>>>>> else:
>>>>> loginf("no extraTemp5 in record" )
>>>>> if event.record.get('OutTemp') is not None:
>>>>> loginf("record OutTemp is : %f " % (event.record['outTemp']))
>>>>> else:
>>>>> loginf("no outTemp in record" )
>>>>>
>>>>> When this new service is running, I have always in the log "no 
>>>>> extraTemp5 in record"  ( the outTemp value is correctly logged) , but 
>>>>> ultimately the value of extraTemp5 is written in the archive table of the 
>>>>> database. So at the time weewx triggers a NEW_ARCHIVE_RECORD event, there 
>>>>> is no data coming from the GW1000 in the archive record.
>>>>>
>>>>> Does it means that the archive values of the parameters coming from 
>>>>> GW1000 service, and presumably generated by weewx since the GW1000 
>>>>> service 
>>>>> is generating LOOP packets only, are inserted in the archive record after 
>>>>> the NEW_ARCHIVE_RECORD event is triggered?
>>>>>
>>>>> in weewx.conf, the services are as follows :
>>>>> data_services = user.gw1000.GatewayService
>>>>> process_services = weewx.engine.StdConvert, weewx.engine.StdCalibrate, 
>>>>> weewx.engine.StdQC, weewx.wxservices.StdWXCalculate, 
>>>>> user.sunduration.SunshineDuration, user.myservice.MyService
>>>>>
>>>>> -- 
>>>>> 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/99eadb93-8622-4663-b511-cb2477d5c4fen%40googlegroups.com
>>>>>  
>>>>> <https://groups.google.com/d/msgid/weewx-user/99eadb93-8622-4663-b511-cb2477d5c4fen%40googlegroups.com?utm_medium=email&utm_source=footer>
>>>>> .
>>>>>
>>>>
>>>> -- 
>>>>
>>>> You received this message because you are subscribed to a topic in the 
>>>> Google Groups "weewx-user" group.
>>>> To unsubscribe from this topic, visit 
>>>> https://groups.google.com/d/topic/weewx-user/sStF634U7Rw/unsubscribe.
>>>> To unsubscribe from this group and all its topics, send an email to 
>>>> [email protected].
>>>> To view this discussion on the web visit 
>>>> https://groups.google.com/d/msgid/weewx-user/CAPq0zECMS9hMGQSgNK4_mSfP4MyxpXLqR1WXhACE9-0spssX2g%40mail.gmail.com
>>>>  
>>>> <https://groups.google.com/d/msgid/weewx-user/CAPq0zECMS9hMGQSgNK4_mSfP4MyxpXLqR1WXhACE9-0spssX2g%40mail.gmail.com?utm_medium=email&utm_source=footer>
>>>> .
>>>>
>>>>
>>>>
>>> -- 
>>> You received this message because you are subscribed to a topic in the 
>>> Google Groups "weewx-user" group.
>>> To unsubscribe from this topic, visit 
>>> https://groups.google.com/d/topic/weewx-user/sStF634U7Rw/unsubscribe.
>>> To unsubscribe from this group and all its topics, send an email to 
>>> [email protected].
>>>
>>> To view this discussion on the web visit 
>>> https://groups.google.com/d/msgid/weewx-user/abec7d74-1320-4c8a-9d86-e1d5a941bbe4n%40googlegroups.com
>>>  
>>> <https://groups.google.com/d/msgid/weewx-user/abec7d74-1320-4c8a-9d86-e1d5a941bbe4n%40googlegroups.com?utm_medium=email&utm_source=footer>
>>> .
>>>
>>>
>>>
>> -- 
>> You received this message because you are subscribed to a topic in the 
>> Google Groups "weewx-user" group.
>> To unsubscribe from this topic, visit 
>> https://groups.google.com/d/topic/weewx-user/sStF634U7Rw/unsubscribe.
>> To unsubscribe from this group and all its topics, send an email to 
>> [email protected].
>>
>> To view this discussion on the web visit 
>> https://groups.google.com/d/msgid/weewx-user/65d02f78-6f61-40ba-b118-43006131a3cdn%40googlegroups.com
>>  
>> <https://groups.google.com/d/msgid/weewx-user/65d02f78-6f61-40ba-b118-43006131a3cdn%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/cb9308ff-7898-4ddf-aaba-60c7cc77040fn%40googlegroups.com.

Reply via email to