The problem is that I forgot a step. In weewx.conf, you need to set an
appropriate extractor for the string. For example,
[Accumulator]
[[comfort_level]]
accumulator = firstlast
extractor = last
[[lightning_frequency]]
accumulator = firstlast
extractor = last
This means that what will be stored in the database will be the last value
seen during an archive period. An alternative is "first".
One other detail: if you want to use it in tags, you also need to specify
the ".raw" suffix. For example:
<p>Current = $current.comfort_level.raw</p>
<p>First string of the day = $day.comfort_level.first.raw</p>
<p>Last string = $day.comfort_level.last.raw</p>
-tk
On Tue, Aug 17, 2021 at 4:52 AM Tom Keffer <[email protected]> wrote:
> I was able to reproduce the problem.
>
> Let me work on a solution.
>
> -tk
>
> On Mon, Aug 16, 2021 at 9:50 PM [email protected] <[email protected]>
> wrote:
>
>> Tom
>>
>> Added two columns via the schema: comfort_level and
>> lightning_frequency; in which the data types are TEXT. Again the database
>> gets populated with the correct data.
>>
>> Aug 17 00:35:26 raspberrypi weewx[1359] ERROR weewx.manager: Replace
>> failed for database weewx.sdb: table archive_day_comfort_level has 9
>> columns but 5 values were supplied
>> Aug 17 00:35:26 raspberrypi weewx[1359] ERROR weewx.manager: Replace
>> failed for database weewx.sdb: table archive_day_lightning_frequency has 9
>> columns but 5 values were supplied
>> Aug 17 00:35:26 raspberrypi weewx[1359] INFO weewx.manager: Added record
>> 2021-08-17 00:35:00 EDT (1629174900) to database 'weewx.sdb'
>> Aug 17 00:35:26 raspberrypi weewx[1359] ERROR weewx.manager: Replace
>> failed for database weewx.sdb: table archive_day_comfort_level has 9
>> columns but 5 values were supplied
>> Aug 17 00:35:26 raspberrypi weewx[1359] ERROR weewx.manager: Replace
>> failed for database weewx.sdb: table archive_day_lightning_frequency has 9
>> columns but 5 values were supplied
>>
>> This is the schema:
>>
>> table = [('dateTime', 'INTEGER NOT NULL UNIQUE PRIMARY KEY'),
>> ('usUnits', 'INTEGER NOT NULL'),
>> ('interval', 'INTEGER NOT NULL'),
>> ('altimeter', 'REAL'),
>> ('appTemp', 'REAL'),
>> ('appTemp1', 'REAL'),
>> ('barometer', 'REAL'),
>> ('batteryStatus1', 'REAL'),
>> ('batteryStatus2', 'REAL'),
>> ('batteryStatus3', 'REAL'),
>> ('batteryStatus4', 'REAL'),
>> ('batteryStatus5', 'REAL'),
>> ('batteryStatus6', 'REAL'),
>> ('batteryStatus7', 'REAL'),
>> ('batteryStatus8', 'REAL'),
>> ('cloudbase', 'REAL'),
>> ('co', 'REAL'),
>> ('co2', 'REAL'),
>> ('consBatteryVoltage', 'REAL'),
>> ('dewpoint', 'REAL'),
>> ('dewpoint1', 'REAL'),
>> ('ET', 'REAL'),
>> ('extraHumid1', 'REAL'),
>> ('extraHumid2', 'REAL'),
>> ('extraHumid3', 'REAL'),
>> ('extraHumid4', 'REAL'),
>> ('extraHumid5', 'REAL'),
>> ('extraHumid6', 'REAL'),
>> ('extraHumid7', 'REAL'),
>> ('extraHumid8', 'REAL'),
>> ('extraTemp1', 'REAL'),
>> ('extraTemp2', 'REAL'),
>> ('extraTemp3', 'REAL'),
>> ('extraTemp4', 'REAL'),
>> ('extraTemp5', 'REAL'),
>> ('extraTemp6', 'REAL'),
>> ('extraTemp7', 'REAL'),
>> ('extraTemp8', 'REAL'),
>> ('forecast', 'REAL'),
>> ('hail', 'REAL'),
>> ('hailBatteryStatus', 'REAL'),
>> ('hailRate', 'REAL'),
>> ('heatindex', 'REAL'),
>> ('heatindex1', 'REAL'),
>> ('heatingTemp', 'REAL'),
>> ('heatingVoltage', 'REAL'),
>> ('humidex', 'REAL'),
>> ('humidex1', 'REAL'),
>> ('inDewpoint', 'REAL'),
>> ('inHumidity', 'REAL'),
>> ('inTemp', 'REAL'),
>> ('inTempBatteryStatus', 'REAL'),
>> ('leafTemp1', 'REAL'),
>> ('leafTemp2', 'REAL'),
>> ('leafWet1', 'REAL'),
>> ('leafWet2', 'REAL'),
>> ('lightning_distance', 'REAL'),
>> ('lightning_disturber_count', 'REAL'),
>> ('lightning_energy', 'REAL'),
>> ('lightning_noise_count', 'REAL'),
>> ('lightning_strike_count', 'REAL'),
>> ('luminosity', 'REAL'),
>> ('maxSolarRad', 'REAL'),
>> ('nh3', 'REAL'),
>> ('no2', 'REAL'),
>> ('noise', 'REAL'),
>> ('o3', 'REAL'),
>> ('outHumidity', 'REAL'),
>> ('outTemp', 'REAL'),
>> ('outTempBatteryStatus', 'REAL'),
>> ('pb', 'REAL'),
>> ('pm10_0', 'REAL'),
>> ('pm1_0', 'REAL'),
>> ('pm2_5', 'REAL'),
>> ('pressure', 'REAL'),
>> ('radiation', 'REAL'),
>> ('rain', 'REAL'),
>> ('rainBatteryStatus', 'REAL'),
>> ('rainRate', 'REAL'),
>> ('referenceVoltage', 'REAL'),
>> ('rxCheckPercent', 'REAL'),
>> ('signal1', 'REAL'),
>> ('signal2', 'REAL'),
>> ('signal3', 'REAL'),
>> ('signal4', 'REAL'),
>> ('signal5', 'REAL'),
>> ('signal6', 'REAL'),
>> ('signal7', 'REAL'),
>> ('signal8', 'REAL'),
>> ('snow', 'REAL'),
>> ('snowBatteryStatus', 'REAL'),
>> ('snowDepth', 'REAL'),
>> ('snowMoisture', 'REAL'),
>> ('snowRate', 'REAL'),
>> ('so2', 'REAL'),
>> ('soilMoist1', 'REAL'),
>> ('soilMoist2', 'REAL'),
>> ('soilMoist3', 'REAL'),
>> ('soilMoist4', 'REAL'),
>> ('soilTemp1', 'REAL'),
>> ('soilTemp2', 'REAL'),
>> ('soilTemp3', 'REAL'),
>> ('soilTemp4', 'REAL'),
>> ('supplyVoltage', 'REAL'),
>> ('txBatteryStatus', 'REAL'),
>> ('UV', 'REAL'),
>> ('uvBatteryStatus', 'REAL'),
>> ('windBatteryStatus', 'REAL'),
>> ('windchill', 'REAL'),
>> ('windDir', 'REAL'),
>> ('windGust', 'REAL'),
>> ('windGustDir', 'REAL'),
>> ('windrun', 'REAL'),
>> ('windSpeed', 'REAL'),
>> ('lightning_frequency', 'TEXT'),
>> ('comfort_level', 'TEXT'),
>> ]
>>
>> day_summaries = [(e[0], 'scalar') for e in table
>> if e[0] not in ('dateTime', 'usUnits', 'interval')] +
>> [('wind', 'VECTOR')]
>>
>> schema = {
>> 'table': table,
>> 'day_summaries' : day_summaries
>> }
>>
>> Rich
>> On Monday, August 16, 2021 at 10:32:02 PM UTC-4 [email protected] wrote:
>>
>>> Tom
>>>
>>> I tried adding the column using the following command:
>>>
>>> wee_database --add-column=lightning_frequency --type=TEXT
>>>
>>> It does add the column and populates the data but generates an error
>>> during the archival cycle. I guess it looking for integers and real type
>>> values.
>>>
>>> Aug 16 22:00:22 raspberrypi weewx[24285] ERROR weewx.manager: Replace
>>> failed for database weewx.sdb: table archive_day_lightning_frequency has 9
>>> columns but 5 values were supplied
>>> Aug 16 22:00:22 raspberrypi weewx[24285] INFO weewx.manager: Added
>>> record 2021-08-16 22:00:00 EDT (1629165600) to database 'weewx.sdb'
>>> Aug 16 22:00:22 raspberrypi weewx[24285] ERROR weewx.manager: Replace
>>> failed for database weewx.sdb: table archive_day_lightning_frequency has 9
>>> columns but 5 values were supplied
>>>
>>> Next I will try adding using the schema.
>>>
>>> Rich
>>> On Monday, August 16, 2021 at 6:55:55 PM UTC-4 [email protected] wrote:
>>>
>>>> Can't say that I've tried that, but I don't see why it wouldn't work.
>>>> It's certainly simpler.
>>>>
>>>> Let me know how it goes.
>>>>
>>>> On Mon, Aug 16, 2021 at 9:11 AM [email protected] <[email protected]>
>>>> wrote:
>>>>
>>>>> Thanks Tom.
>>>>>
>>>>> I have another question before proceeding. Do I need to physically
>>>>> update the schema to include column and type or could I just use the
>>>>> following command:
>>>>>
>>>>> wee_database --add-column=comments --type=TEXT
>>>>>
>>>>> Rich
>>>>>
>>>>> On Monday, August 16, 2021 at 8:29:16 AM UTC-4 [email protected] wrote:
>>>>>
>>>>>> Good question. Yes, it is possible to store text.
>>>>>>
>>>>>> 1. Assuming you're using sqlite, make sure you read their
>>>>>> documentation on data types: https://sqlite.org/datatype3.html
>>>>>>
>>>>>> 2. Create a new schema accordingly. For example,
>>>>>>
>>>>>> table = [('dateTime', 'INTEGER NOT NULL UNIQUE PRIMARY KEY'),
>>>>>> ('usUnits', 'INTEGER NOT NULL'),
>>>>>> ('interval', 'INTEGER NOT NULL'),
>>>>>> ('outTemp', 'REAL'),
>>>>>> ('comments', 'TEXT')
>>>>>> ]
>>>>>>
>>>>>>
>>>>>> day_summaries = [('outTemp', 'scalar'), ('comments', 'scalar')]
>>>>>>
>>>>>> schema = {
>>>>>> 'table': table,
>>>>>> 'day_summaries' : day_summaries
>>>>>> }
>>>>>>
>>>>>>
>>>>>> This is just an example. Your schema is likely to have many more
>>>>>> types than this.
>>>>>>
>>>>>> 3. See the directions in the Customizing Guide for how to specify
>>>>>> that your new schema be used. *Picking a starting schema
>>>>>> <http://www.weewx.com/docs/customizing.htm#Picking_a_starting_schema>*
>>>>>> .
>>>>>>
>>>>>> 4. Read the developer's notes on Accumulators
>>>>>> <https://github.com/weewx/weewx/wiki/Accumulators>. In your
>>>>>> weewx.conf file, specify that your text type should be accumulated using
>>>>>> the "firstlast" accumulator. This will prevent it from trying to
>>>>>> find the average, etc, of a string.
>>>>>>
>>>>>> [Accumulator]
>>>>>> [[comments]]
>>>>>> accumulator = firstlast
>>>>>>
>>>>>>
>>>>>> That's it. If your new type appears in the archive record, then it
>>>>>> will be included in the database.
>>>>>>
>>>>>> Tags like
>>>>>>
>>>>>> <p>Details: $current.comments, last recorded at $day.comments.last</p>
>>>>>>
>>>>>>
>>>>>> should also work.
>>>>>>
>>>>>>
>>>>>> On Sun, Aug 15, 2021 at 8:43 PM [email protected] <
>>>>>> [email protected]> wrote:
>>>>>>
>>>>>>> In the Weewx DB, the column data types are primary Real or Integer
>>>>>>> but is it possible to store data as Text?
>>>>>>>
>>>>>>> --
>>>>>>> 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/faf66dd7-7e4a-45fa-9737-6f0094024c88n%40googlegroups.com
>>>>>>> <https://groups.google.com/d/msgid/weewx-user/faf66dd7-7e4a-45fa-9737-6f0094024c88n%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/c4c792b5-c214-446e-9e4b-6d76dbc14aabn%40googlegroups.com
>>>>> <https://groups.google.com/d/msgid/weewx-user/c4c792b5-c214-446e-9e4b-6d76dbc14aabn%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/be7ea2ed-51c5-4f1b-bf21-d37f8d2c0898n%40googlegroups.com
>> <https://groups.google.com/d/msgid/weewx-user/be7ea2ed-51c5-4f1b-bf21-d37f8d2c0898n%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/CAPq0zECW_q%2Bv2j_WhKrPewZgf%2BEz_qcJm7%3D0YxUkmWN_DPCSDQ%40mail.gmail.com.