With help from a friend I've got the data txt file sorted into the right
format so hopefully this will be easy from here.

I assume I still need some 'units' detail somewhere along the line in the
[FilePile] stanza?

Cheers
Colin

On Wed, Apr 24, 2019 at 7:48 AM Colin Larsen <colin.lar...@gmail.com> wrote:

> This is how the data is constructed and sent in Arduino, it's sent as a
> complete line of ascii data
>
> // ----- AQI Data for Weewx -----
>
>     Data = F("AQI25=");
>     Data += String(AQI_Monitor.AQI_PM2_5 / 10.0);
>     Data += F(",AQI100=");
>     Data += String(AQI_Monitor.AQI_PM10_0 / 10.0);
>     Data += F(",AQIIndex=");
>     Data += String(AQI_Monitor.AQI_Index / 10);
>     Data += F(",AQICO2=");
>     Data += String(AQI_Monitor.GAS_1);
>
> Then sent using
>
> // -------- Send AQI Datapacket ------------
>      udp1.beginPacket(broadcastIP, AQI_BROADCAST_PORT);
>      udp1.write((const uint8_t*)Data.c_str(), strlen(Data.c_str()));
>      udp1.endPacket();
>      udp1.stop();
>
> So I'm unsure how to get line feeds in there instead of the comma
> delimiter.
>
> Seems it would be easier to look for the comma in the txt file :)
>
> Cheers
> Colin
>
> On Wed, Apr 24, 2019 at 7:31 AM Colin Larsen <colin.lar...@gmail.com>
> wrote:
>
>> Ok that sure looks like it would do the job but with my file format I
>> would need to use "," as a delimiter between records rather than a new line
>> something like (borrowed from another similar utility). I have never done
>> Python so I'm a little lost on how to change this sorry
>>
>> with open(self.filename) as f:
>> for line,row in enumerate(f.readlines()):
>> if line == 0:
>> names = row.strip().split(",")
>> if line == 0:
>> units = row.strip().split(",")
>>
>>
>>
>>
>>
>>
>>
>> On Wed, Apr 24, 2019 at 1:40 AM Thomas Keffer <tkef...@gmail.com> wrote:
>>
>>> Because of the syntax, it's tempting to look at a ConfigObj file and
>>> think of it as assigning the right hand side to the left hand side. But,
>>> it's really not. It's a mapping. The left hand side *maps to* the right
>>> hand side.
>>>
>>> As a key:value comes in from the file, we need to know what to do with
>>> the key. Given a key, what WeeWX name do we assign it to? With a mapping,
>>> we look it up, then do the assignment to the value. If we did it the other
>>> way around, we'd have to search all the *values* in the mapping to find
>>> what it should be mapped to. That's backwards from the way dictionaries
>>> work.
>>>
>>> -tk
>>>
>>> On Tue, Apr 23, 2019 at 5:51 AM Andrew Milner <
>>> andrew.s.r.mil...@gmail.com> wrote:
>>>
>>>> Tom
>>>> Forgive me for being a pedant - but shouldn't the label map for
>>>> filepile have the arguments the other way round
>>>> ie rather than
>>>>  myVoltage = Supply Voltage
>>>> it should be
>>>>  SupplyVoltage = myVoltage
>>>> ie
>>>>   weewx destination field = source data field
>>>>
>>>> normally left of equals sign is the result of operations right of
>>>> equals sign
>>>> eg
>>>>   a = 3 + 2 would put 5 into a
>>>>
>>>>
>>>>
>>>> On Tuesday, 23 April 2019 14:45:38 UTC+3, Thomas Keffer wrote:
>>>>>
>>>>> Take a look at Filepile <https://github.com/tkeffer/filepile>. It may
>>>>> do what you want, or help you write your own.
>>>>>
>>>>> -tk
>>>>>
>>>>> On Mon, Apr 22, 2019 at 7:43 PM <colin...@gmail.com> wrote:
>>>>>
>>>>>> Hi all
>>>>>>
>>>>>> I have devised a method to export my Air Quality Data (AQI) from my
>>>>>> Arduino based weather station to Weewx (it can't be sent via the usb port
>>>>>> with the rest of the data). It involves sending the data via a UDP
>>>>>> broadcast packet from the station, this is then captured by a small 
>>>>>> Python
>>>>>> script on my Weewx Pi and written to a txt file.
>>>>>>
>>>>>> The txt file data looks like this
>>>>>> AQI25=5.50,AQI100=4.10,AQIIndex=22,AQICO2=967
>>>>>>
>>>>>> From the Weewx wiki I have crafted the beginning of a service to
>>>>>> import the data to my Wewwx database (extended with the 4 new data 
>>>>>> fields)
>>>>>> but I'm not sure how to complete that task. So far I have this, which I
>>>>>> think will grab the first value - how do I parse the other 3? Is it as
>>>>>> simple as just adding more lines such as event.record['AQI100'] =
>>>>>> float(value) etc?
>>>>>>
>>>>>> *import* syslog
>>>>>>
>>>>>> *import* weewx
>>>>>>
>>>>>> *from* weewx.wxengine *import* StdService
>>>>>>
>>>>>>
>>>>>> *class* WDAQIService(StdService):
>>>>>>
>>>>>>     *def** __init__*(self, engine, config_dict):
>>>>>>
>>>>>>         super(WDAQIService, self).__init__(engine, config_dict)
>>>>>>
>>>>>>         d = config_dict.get(*'WDAQIService'*, {})
>>>>>>
>>>>>>         self.filename = d.get(*'filename'*, *'/home/pi/AQIData.txt'*)
>>>>>>
>>>>>>         syslog.syslog(syslog.LOG_INFO, *"WDAQIImport: using %s"* %
>>>>>> self.filename)
>>>>>>
>>>>>>         self.bind(weewx.NEW_ARCHIVE_RECORD, self.read_file)
>>>>>>
>>>>>>
>>>>>>     *def** read_file*(self, event):
>>>>>>
>>>>>>         *try*:
>>>>>>
>>>>>>             *with* open(self.filename) *as* f:
>>>>>>
>>>>>>                 value = f.read()
>>>>>>
>>>>>>             syslog.syslog(syslog.LOG_DEBUG, *"WDAQIImport: found
>>>>>> value of %s"* % value)
>>>>>>
>>>>>>             event.record[*'AQI25'*] = float(value)
>>>>>>
>>>>>>         *except* Exception *as* e:
>>>>>>
>>>>>>             syslog.syslog(syslog.LOG_ERR, *"WDAQIImport: cannot read
>>>>>> value: %s"* % e)
>>>>>>
>>>>>> Thanks
>>>>>> Colin
>>>>>>
>>>>>> --
>>>>>> 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 weewx...@googlegroups.com.
>>>>>> For more options, visit https://groups.google.com/d/optout.
>>>>>>
>>>>> --
>>>> 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 weewx-user+unsubscr...@googlegroups.com.
>>>> For more options, visit https://groups.google.com/d/optout.
>>>>
>>> --
>>> 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 weewx-user+unsubscr...@googlegroups.com.
>>> For more options, visit https://groups.google.com/d/optout.
>>>
>>

-- 
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 weewx-user+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to