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.

Reply via email to