Hi all

I'm trying to get Filepile working but have come across an error that I
don't understand. Any help appreciated. The database has been extended with
fields to match those below in the data file - am I just missing spaces in
the layout? Should it be AQI25 = 1.60 etc etc

Many thanks

This is my data file;

AQI25=1.60

AQI100=3.30

AQIIndex=6

AQICO2=683


This is my stanza in weewx.conf

##############################################################################


#       This section is for FilePile


[FilePile]


        filename = /home/pi/AQIData.txt

        unit_system = METRIC


##############################################################################


This is my filepile.py (modified from original to suit)


*import* syslog

*import* weewx

*import* weewx.units

*from* weewx.wxengine *import* StdService

*from* weeutil.weeutil *import* to_float


weewx.units.USUnits[*'group_gas_concentration'*] = *'ppm'*

weewx.units.MetricUnits[*'group_gas_concentration'*] = *'ppm'*

weewx.units.MetricWXUnits[*'group_gas_concentration'*] = *'ppm'*

weewx.units.default_unit_format_dict[*'ppm'*]  = *'%.0f'*

weewx.units.default_unit_label_dict[*'ppm'*]  = *' ppm'*


weewx.units.USUnits[*'group_dust'*] = *'microgramm_per_meter_cubic'*

weewx.units.MetricUnits[*'group_dust'*] = *'microgramm_per_meter_cubic'*

weewx.units.MetricWXUnits[*'group_dust'*] = *'microgramm_per_meter_cubic'*

weewx.units.default_unit_format_dict[*'microgramm_per_meter_cubic'*]  =
*'%.1f'*

weewx.units.default_unit_label_dict[*'microgramm_per_meter_cubic'*]  = *'
\xce\xbcg/m\xc2\xb3'*


*class* FilePile(StdService):

    *"""WeeWX service for augmenting a record with data parsed from a
file."""*


    *def** __init__*(self, engine, config_dict):

       * # Initialize my superclass:*

        super(FilePile, self).__init__(engine, config_dict)

*        # Extract our stanza from the configuration dicdtionary*

        filepile_dict = config_dict.get(*'FilePile'*, {})

       * # Get the location of the file ...*

        self.filename = filepile_dict.get(*'filename'*,
*'/var/tmp/filepile.txt'*)

       * # ... and the unit system it will use*

        unit_system_name = filepile_dict.get(*'unit_system'*, *'METRICWX'*
).strip().upper()

       * # Make sure we know about the unit system. If not, raise an
exception.*

        *if* unit_system_name *not* *in* weewx.units.unit_constants:

            *raise* ValueError(*"FilePile: Unknown unit system: %s"* %
unit_system_name)

       * # Use the numeric code for the unit system*

        self.unit_system = weewx.units.unit_constants[unit_system_name]


       * # Mapping from variable names to weewx names*

        self.label_map = filepile_dict.get(*'label_map'*, {})

        syslog.syslog(syslog.LOG_INFO, *"filepile: Using %s with the '%s'
unit system"*

                      % (self.filename, unit_system_name))

        syslog.syslog(syslog.LOG_INFO, *"filepile: Label map is %s"* %
self.label_map)


       * # Bind to the NEW_ARCHIVE_RECORD event*

        self.bind(weewx.NEW_ARCHIVE_RECORD, self.new_archive_record)


    *def** new_archive_record*(self, event):

        new_record_data = {}

        *try*:

            *with* open(self.filename, *'r'*) *as* fd:

                *for* line *in* fd:

                    eq_index = line.find(*'='*)

*                # Ignore all lines that do not have an equal sign*

                    *if* eq_index == -1:

                        *continue*

                    name = line[:eq_index].strip()

                    value = line[eq_index + 1:].strip()

                    new_record_data[self.label_map.get(name, name)] =
to_float(value)

               * # Supply a unit system if one wasn't included in the file*

                *if* *'usUnits'* *not* *in* new_record_data:

                    new_record_data[*'usUnits'*] = self.unit_system

               * # Convert the new values to the same unit system as the
record*

                target_data = weewx.units.to_std_system(new_record_data,
event.record[*'usUnits'*])

               * # Add the converted values to the record:*

                event.record.update(target_data)

                *except* IOError *as* e:

       syslog.syslog(syslog.LOG_ERR, *"FilePile: Cannot open file. Reason:
%s"* % e)

This is the syslog error;

May  7 14:50:16 raspberrypi weewx[6605]: engine: Caught unrecoverable
exception in engine:

May  7 14:50:16 raspberrypi weewx[6605]:     ****  invalid literal for
float(): 1.60#015AQI100=3.30#015AQIIndex=6#015AQICO2=683

May  7 14:50:16 raspberrypi weewx[6605]:     ****  Traceback (most recent
call last):

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/weewx/engine.py", line 890, in main

May  7 14:50:16 raspberrypi weewx[6605]:     ****      engine.run()

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/weewx/engine.py", line 202, in run

May  7 14:50:16 raspberrypi weewx[6605]:     ****
self.dispatchEvent(weewx.Event(weewx.POST_LOOP))

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/weewx/engine.py", line 224, in dispatchEvent

May  7 14:50:16 raspberrypi weewx[6605]:     ****      callback(event)

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/weewx/engine.py", line 574, in post_loop

May  7 14:50:16 raspberrypi weewx[6605]:     ****
self._software_catchup()

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/weewx/engine.py", line 646, in _software_catchup

May  7 14:50:16 raspberrypi weewx[6605]:     ****
self.engine.dispatchEvent(weewx.Event(weewx.NEW_ARCHIVE_RECORD,
record=record, origin='software'))

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/weewx/engine.py", line 224, in dispatchEvent

May  7 14:50:16 raspberrypi weewx[6605]:     ****      callback(event)

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/user/filepile.py", line 91, in new_archive_record

May  7 14:50:16 raspberrypi weewx[6605]:     ****
new_record_data[self.label_map.get(name,
name)] = to_float(value)

May  7 14:50:16 raspberrypi weewx[6605]:     ****    File
"/usr/share/weewx/weeutil/weeutil.py", line 1280, in to_float

May  7 14:50:16 raspberrypi weewx[6605]:     ****      return float(x) if x
is not None else None

May  7 14:50:16 raspberrypi weewx[6605]:     ****  ValueError: invalid
literal for float(): 1.60#015AQI100=3.30#015AQIIndex=6#015AQICO2=683

May  7 14:50:16 raspberrypi weewx[6605]:     ****  Exiting.

-- 
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.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/CACjxfUvKW4goXJ9TZYUWkDm4YdxLqpeP_Ez1EzRheJyJ5_h4ew%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to