Ok....so as usual: the user! :-D Thanks for your patience and help!
Regards, Christian Am Montag, 4. Dezember 2017 13:18:14 UTC+1 schrieb Tom Keffer: > > I don't think so. "hail" is treated no differently than "rain." > > -tk > > On Sun, Dec 3, 2017 at 6:42 PM, 'Christian Peters' via weewx-user < > [email protected] <javascript:>> wrote: > >> Tom, >> >> I got it working...but I don't now why?! :-D >> >> To clarify I used a second instance of weewx running wxMesh. As I has >> only one rain bucket per weewx I thougth I could change back in the weewx >> instance running wxMesh to the rain database entry. >> My binding for wxMesh is now 'rain=rain'. >> I changed in the wxMesh driver to METRICWX as I want the mm for rain and >> send 0.1 as value per bucket tip. 5 time tip: wxMesh grabs 0.5 >> >> wxMesh: Got message >> TIME:0,radiation:0.25,cpm:45,cps:1,temp_2m:50.81,temp_5cm:50.60,temp_dht22:19.70,hum_dht22:38.50,rain:0.50 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: Working on payload : >> TIME:0,radiation:0.25,cpm:45,cps:1,temp_2m:50.81,temp_5cm:50.60,temp_dht22:19.70,hum_dht22:38.50,rain:0.50 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: TIME value: 1512346642 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: radiation value: 0.25 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: cpm value: 45 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: cps value: 1 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: temp_2m value: 50.81 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: temp_5cm value: 50.60 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: temp_dht22 value: 19.70 >> Dec 4 01:17:22 sensweewx[24607]: wxMesh: key: hum_dht22 value: 38.50 >> Dec 4 01:17:22 rumo sensweewx[24607]: wxMesh: key: *rain value: 0.50* >> Dec 4 01:17:22 rumo sensweewx[24607]: wxMesh: Sleeping for 5 >> >> The query in my main weewx instance to the wxMesh (sensweewx with mqtt): >> >> <tr> >> <td class="stats_label">Rain today Lambrecht</td> >> <td >> class="stats_data">$day($data_binding='mqtt_binding').rain.sum</td> >> </tr> >> >> and the result is now ok: >> >> Rain today Lambrecht: 0,5 mm >> >> Maybe the mapping to hail was the problem...now all works as expected!? >> >> >> Regards, >> >> Christian >> >> >> >> >> >> Am Sonntag, 3. Dezember 2017 20:14:42 UTC+1 schrieb Tom Keffer: >>> >>> I'm still a little hazy on what the issue is. What do you mean by "the >>> values don't match"? Which values? And I don't know where your website is. >>> >>> The wxMesh driver (at least as posted here >>> <https://github.com/morrowwm/weewxMQTT/blob/master/bin/user/wxMesh.py>) >>> expects weewx.METRIC units, that is, rain (and hail) should be in >>> centimeters, not millimeters. You can't just simply change to >>> weewx.METRICWX in your copy, because then the other units will be wrong. >>> >>> Run weewx from the command line and watch what it prints. Tip the bucket >>> and see what value gets printed. Is it what you expected? >>> >>> -tk >>> >>> On Sun, Dec 3, 2017 at 9:16 AM, 'Christian Peters' via weewx-user < >>> [email protected]> wrote: >>> >>>> Tom, >>>> >>>> I use the wxMesh driver but I think your demo code is imlemented in >>>> that way you posted: >>>> >>>> #!/usr/bin/python >>>> # >>>> # weewx driver that reads data from MQTT subscription >>>> # >>>> # This program is free software: you can redistribute it and/or modify >>>> it under >>>> # the terms of the GNU General Public License as published by the Free >>>> Software >>>> # Foundation, either version 3 of the License, or any later version. >>>> # >>>> # This program is distributed in the hope that it will be useful, but >>>> WITHOUT >>>> # ANY WARRANTY; without even the implied warranty of MERCHANTABILITY >>>> or FITNESS >>>> # FOR A PARTICULAR PURPOSE. >>>> # >>>> # See http://www.gnu.org/licenses/ >>>> >>>> # >>>> # The units must be weewx.US: >>>> # degree_F, inHg, inch, inch_per_hour, mile_per_hour >>>> # >>>> # To use this driver, put this file in the weewx user directory, then >>>> make >>>> # the following changes to weewx.conf: >>>> # >>>> # [Station] >>>> # station_type = wxMesh >>>> # [wxMesh] >>>> # host = localhost # MQTT broker hostname >>>> # topic = weather # topic >>>> # driver = user.wxMesh >>>> # >>>> # If the variables in the file have names different from those in >>>> weewx, then >>>> # create a mapping such as this: >>>> # >>>> # [wxMesh] >>>> # ... >>>> # [[label_map]] >>>> # temp = outTemp >>>> # humi = outHumidity >>>> # in_temp = inTemp >>>> # in_humid = inHumidity >>>> >>>> from __future__ import with_statement >>>> import syslog >>>> import time >>>> import paho.mqtt.client as mqtt >>>> import weewx.drivers >>>> >>>> DRIVER_VERSION = "0.1" >>>> >>>> def logmsg(dst, msg): >>>> syslog.syslog(dst, 'wxMesh: %s' % msg) >>>> >>>> def logdbg(msg): >>>> logmsg(syslog.LOG_DEBUG, msg) >>>> >>>> def loginf(msg): >>>> logmsg(syslog.LOG_INFO, msg) >>>> >>>> def logerr(msg): >>>> logmsg(syslog.LOG_ERR, msg) >>>> >>>> def _get_as_float(d, s): >>>> v = None >>>> if s in d: >>>> try: >>>> v = float(d[s]) >>>> except ValueError, e: >>>> logerr("cannot read value for '%s': %s" % (s, e)) >>>> return v >>>> >>>> def loader(config_dict, engine): >>>> return wxMesh(**config_dict['wxMesh']) >>>> >>>> class wxMesh(weewx.drivers.AbstractDevice): >>>> """weewx driver that reads data from a file""" >>>> >>>> def __init__(self, **stn_dict): >>>> # where to find the data file >>>> self.host = stn_dict.get('host', 'localhost') >>>> self.topic = stn_dict.get('topic', 'weather') >>>> # how often to poll the weather data file, seconds >>>> self.poll_interval = float(stn_dict.get('poll_interval', 5.0)) >>>> # mapping from variable names to weewx names >>>> self.label_map = stn_dict.get('label_map', {}) >>>> >>>> loginf("host is %s" % self.host) >>>> loginf("topic is %s" % self.topic) >>>> loginf("polling interval is %s" % self.poll_interval) >>>> loginf('label map is %s' % self.label_map) >>>> >>>> self.payload = "Empty" >>>> #self.payloadList = [payload] >>>> self.client = mqtt.Client(client_id="XXX", protocol=mqtt.MQTTv31) >>>> >>>> #self.client.on_connect = self.on_connect >>>> self.client.on_message = self.on_message >>>> >>>> self.client.username_pw_set("XXX", "XXX") >>>> self.client.connect(self.host, 1883, 60) >>>> self.client.subscribe(self.topic, qos=1) >>>> >>>> # The callback for when a PUBLISH message is received from the server. >>>> def on_message(self, client, userdata, msg): >>>> self.payload = str(msg.payload) >>>> logdbg("Got message %s" % str(msg.payload)) >>>> >>>> def genLoopPackets(self): >>>> while True: >>>> self.client.loop() >>>> # read whatever values we can get from the MQTT broker >>>> logdbg("Working on payload : %s" % self.payload) >>>> if self.payload != "Empty" : >>>> data = {} >>>> row = self.payload.split(","); >>>> for datum in row: >>>> (key,value) = datum.split(":") >>>> data[key] = value >>>> if( key=="TIME" and data[key] == "0"): >>>> data[key] = str(int(time.time())) >>>> logdbg("key: "+key+" value: "+data[key]) >>>> >>>> *# map the data into a weewx loop packet* >>>> * _packet = {'usUnits': weewx.METRICWX}* >>>> *for vname in data:* >>>> * _packet[self.label_map.get(vname, vname)] = _get_as_float(data, >>>> vname)* >>>> >>>> *yield _packet* >>>> self.payload = "Empty" >>>> >>>> logdbg("Sleeping for %d" % self.poll_interval) >>>> time.sleep(self.poll_interval) >>>> self.client.disconnect() >>>> @property >>>> def hardware_name(self): >>>> return "wxMesh" >>>> >>>> I got 0.1mm on Payload hail...but If I look at the values they doesn't >>>> match (printed on my website). >>>> If I change to 'US' units then my Celsius values mapped wrong so I >>>> think in general changing to METRICWX in the wxMesh driver works. >>>> >>>> I think I have to look in the database what hail values were written if >>>> I simulate a 0.1mm rain event (at the moment one switch to press...just >>>> before wirering to the bucket in the garden).... >>>> >>>> Thanks for you help. >>>> >>>> Regards, >>>> >>>> Christian >>>> >>>> Am Sonntag, 3. Dezember 2017 14:50:27 UTC+1 schrieb Tom Keffer: >>>>> >>>>> You're being a little vague on the details. What results are you >>>>> getting? And, what do you mean by "send 0.1 (mm)?" Do you mean in the >>>>> loop >>>>> packets? If so, your genLoopPackets() function should look something >>>>> like this (NOT TESTED): >>>>> >>>>> def genLoopPackets(): >>>>> data = {'dateTime': time.time(), 'usUnits': weewx.METRIC} >>>>> data['outTemp'] = (something) >>>>> ... >>>>> data['hail'] = 0.1 # NB: This would be 0.1 cm, or 1mm >>>>> >>>>> yield data >>>>> >>>>> There are a two other assumptions as well: >>>>> >>>>> 1. You have not implemented genArchiveRecords() and are, >>>>> therefore, depending on software record generation to turn your loop >>>>> packets into archive records. >>>>> 2. The observation type 'hail' is in your schema. This is the >>>>> normal situation with the default "wview" schema, so I'm assuming you >>>>> have >>>>> not changed it. >>>>> >>>>> >>>>> -tk >>>>> >>>>> >>>>> >>>>> On Sun, Dec 3, 2017 at 6:56 AM, 'Christian Peters' via weewx-user < >>>>> [email protected]> wrote: >>>>> >>>>>> Tom, >>>>>> >>>>>> that seems not to solve my problem. I send 0.1 (mm) but didn't get >>>>>> that into weewx. >>>>>> As I already have a rain bucket with the VPII I used 'hail' and 'hail >>>>>> rate". Could these be a problem or can't I use it for a second rain >>>>>> bucket >>>>>> (same computation as rain?). >>>>>> >>>>>> Regard, >>>>>> >>>>>> Chrstian >>>>>> >>>>>> Am Sonntag, 26. November 2017 15:09:33 UTC+1 schrieb Tom Keffer: >>>>>>> >>>>>>> That could be it. weewx.METRIC has rainfall in cm, weewx.METRICWX in >>>>>>> mm. See the Units <http://weewx.com/docs/customizing.htm#units> >>>>>>> appendix in the Customizing Guide. >>>>>>> >>>>>>> -tk >>>>>>> >>>>>>> On Sun, Nov 26, 2017 at 8:02 AM, 'Christian Peters' via weewx-user < >>>>>>> [email protected]> wrote: >>>>>>> >>>>>>>> Tom, >>>>>>>> >>>>>>>> thank you for that hint. So emitting in mm was the right change. >>>>>>>> I just wonder why my temp values are ok but my rain data isn't!? >>>>>>>> Just found that on the wxMesh driver: >>>>>>>> >>>>>>>> # map the data into a weewx loop packet >>>>>>>> _packet = {'usUnits': weewx.METRIC} >>>>>>>> >>>>>>>> So I think I have to switch to METRICWX. >>>>>>>> >>>>>>>> Regards, >>>>>>>> >>>>>>>> Christian >>>>>>>> >>>>>>>> >>>>>>>> >>>>>>>> -- >>>>>>>> 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]. >>>>>>>> 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 [email protected]. >>>>>> 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 [email protected]. >>>> 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 [email protected] <javascript:>. >> 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 [email protected]. For more options, visit https://groups.google.com/d/optout.
