I've taken a look at your extension, and I've been able to replicate the
problem.

You are defining some new types (such as 'uptime', or 'linkUptime') that
are assigned to group_deltatime, which is a perfectly reasonable thing to
do. The problem is that there is no 'context' to go along with them to
specify what string format to use, which causes the TypeError.

This is a use case that I had not anticipated, although I really should
have. I had assumed that members of group_deltatime would always be
generated programmatically, not from a database. In retrospect, a silly
assumption.

I've done a commit to supply a sensible default context if none has been
supplied. Commit 279bb45
<https://github.com/weewx/weewx/commit/279bb450ab801c80a12b8ceadd0144e16c473bea>
.

Here's the patch:

Index: bin/weewx/units.py
===================================================================
diff --git a/bin/weewx/units.py b/bin/weewx/units.py
--- a/bin/weewx/units.py (revision ce49dbdf5d9125550594e3ba58ebbfc0a67073ea)
+++ b/bin/weewx/units.py (date 1644711155863)
@@ -741,6 +741,8 @@
         elif val_t[2] == "group_deltatime":
             # Get a delta-time format string. Use a default if the user
did not supply one:
             if useThisFormat is None:
+                if context == 'current':
+                    context = 'delta_time'
                 format_string = self.time_format_dict.get(context,
DEFAULT_DELTATIME_FORMAT)
             else:
                 format_string = useThisFormat

If the default delta time formatting doesn't work, you can supply an
explicit formatting. Formatting for delta times is a little different from
regular types because interpolation must be used to cover all the different
parts of the string. For example, instead of

$current.linkUptime


use

$current.linkUptime.format("%(hour)d%(hour_label)s,
%(minute)d%(minute_label)s, %(second)d%(second_label)s")


or

$current.linkUptime.format("%(day)d%(day_label)s, %(hour)d%(hour_label)s,
%(minute)d%(minute_label)s")


Hopefully, you get the idea.

To get you going now, you can either supply the patch I included above, or
you can use explicit formatting. Either will work.

-tk



On Sat, Feb 12, 2022 at 2:55 PM 'Werner Krenn' via weewx-user <
weewx-user@googlegroups.com> wrote:

> vince,
>
> see https://github.com/WernerKr/weewx-davishealthapi
> There is no
> ... ValueHelper(delta_time_vt, *context='long_delta',* 
> formatter=self.generator.formatter,
> converter=self.generator.converter)
> or so.
> If now (V4.6) all values from the database with "group_deltatime' need
> extra converting for showing, then that makes sense.
>
> vince schrieb am Samstag, 12. Februar 2022 um 20:07:58 UTC+1:
>
>> On Saturday, February 12, 2022 at 10:41:49 AM UTC-8
>> xzei...@googlemail.com wrote:
>>
>>> raised alway an execption here:
>>>>>     <tr>
>>>>>       <td class="label">$obs.label.uptime</td>
>>>>>       <td
>>>>> class="data">$current($max_delta=3600,$data_binding='davishealthapi_binding').uptime</td>
>>>>>     </tr>
>>>>>
>>>>>
>> It is likely associated with your weewx-davishealthapi extension....
>>
>> Do "wee_extension --list" and you should see that you have that
>> installed.
>>
> --
> 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/aa325a81-83b5-4760-bfe5-06cbbf44ce3an%40googlegroups.com
> <https://groups.google.com/d/msgid/weewx-user/aa325a81-83b5-4760-bfe5-06cbbf44ce3an%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 weewx-user+unsubscr...@googlegroups.com.
To view this discussion on the web visit 
https://groups.google.com/d/msgid/weewx-user/CAPq0zEBz%2Bu86%2Bz565hdciFvdGd3wKzR9x5qyWYwNV2u%3DinsrbA%40mail.gmail.com.

Reply via email to