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] <javascript:>> 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] <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