Good work Bob, well done getting it sorted :) Cheers Colin
On Wed, 1 Dec 2021 at 09:21, [email protected] <[email protected]> wrote: > I'm very happy to say that I have three successful (hourly) readings of > CO2 in the weewx db, thanks to everyone who has been patient and helpful > with an 81-year-old retired librarian attempting to do something that was > beyond his reach. > [I just heard a cumulative sigh of relief circle > the globe] > In the end, my main problem was adjusting the elements in weewx.conf with > a combination of some of the last suggestions. I found that the sensor, > once every 24 hours, sends out a different string of data with battery > information which doesn't include any CO2 data. My next step is setting > up a display of the data with a graph on my main page. > > Many thanks again to everyone who helped solve my problem. I now have > another window into the ills that plague our planet.... > > Cheers, > Bob > http://grattans.org/wx > > On Tuesday, November 30, 2021 at 12:15:33 AM UTC-5 vince wrote: > >> I'd go with something like...... >> >> [[topics]] >> [[[mytopic]]] >> [[[[CO2_Value_PPM]]]] >> name = co2 >> contains total = false >> conversion type = float >> [[[[measurementID]]]] >> ignore = true >> [[[[report_telemetry]]]] >> ignore = true >> >> Define the topic to subscribe to. >> Do not ignore the one element therein that you want. >> Ignore the elements you don't want. >> >> On Monday, November 29, 2021 at 6:20:28 PM UTC-8 [email protected] >> wrote: >> >>> *"Is it possible to have weewx ignore these elements and only process >>> the "CO2_Value_PPM": 419 ?" *Yes, Rich provided the possible solution. >>> >>> * "I'm not sure what "float" does but mayve that's a problem...?" *A >>> float is a real number. It is trying to convert 'report_telemetry' which >>> is a string to a real number causing the failure. >>> >>> On Monday, November 29, 2021 at 9:05:54 PM UTC-5 [email protected] >>> wrote: >>> >>>> Bob, >>>> You are correct. The extra data is causing the problem. Due to a poor >>>> early design decision, MQTTSubscribe defaults to converting everything to >>>> float. Obviously, 'report_telemetry' cannot be converted to float. The >>>> following configuration should work. It ignores all but 'CO2_Value_PPM'. >>>> [[topics]] >>>> [[[mytopic]]] >>>> ignore = true >>>> [[[[CO2_Value_PPM]]]] >>>> name = co2 >>>> ignore = false >>>> If that doesn't work, let me know and I can give a different >>>> configuration. >>>> rich >>>> >>>> On Monday, 29 November 2021 at 19:53:46 UTC-5 [email protected] wrote: >>>> >>>>> Last post of the day, I promise! >>>>> I think the node-red flow is working the way it should and reporting >>>>> the parsed message as in my last post. >>>>> >>>>> weewx.conf configuration (changed topic to "mytopic" in the flow and >>>>> in weewx). >>>>> >>>>> [MQTTSubscribeService] >>>>> # This section is for the MQTTSubscribe service. >>>>> enable = true # false >>>>> >>>>> # The MQTT server. >>>>> # Default is localhost. >>>>> host = localhost >>>>> port = 1883 >>>>> keepalive = 60 >>>>> >>>>> username = None #admin #None >>>>> password = None #admin #None >>>>> binding = loop >>>>> >>>>> [[message_callback]] >>>>> type = json #REPLACE_ME >>>>> >>>>> # mytopic is the topic to subscribe to. >>>>> [[topics]] >>>>> >>>>> unit_system = US >>>>> >>>>> [[[mytopic]]] >>>>> >>>>> #data sent from RAK7244 >>>>> #ignore = true >>>>> [[[[CO2_Value_PPM]]]] >>>>> #weewx db field name >>>>> name = co2 >>>>> ignore = false >>>>> contains total = false >>>>> conversion type = float >>>>> #units = ppm >>>>> #[[[SECOND/REPLACE_ME]]] >>>>> >>>>> *This is the weewx.log debug info:* >>>>> >>>>> Nov 29 19:20:58 n4mrv weewx[17143] DEBUG user.MQTTSubscribe: (Service) >>>>> MessageCallbackProvider data-> incoming topic: mytopic, QOS: 0, retain: 0, >>>>> payload: b'{\n "CO2_Value_PPM": 419,\n "measurementId": 4100,\n >>>>> "type": "report_telemetry"\n}' >>>>> Nov 29 19:20:58 n4mrv weewx[17143] ERROR user.MQTTSubscribe: (Service) >>>>> MessageCallbackProvider on_message_json failed with <class >>>>> 'user.MQTTSubscribe.ConversionError'> and reason Failed converting field >>>>> type with value report_telemetry using 'lambda x: to_float(x)' with reason >>>>> could not convert string to float: 'report_telemetry'.. >>>>> Nov 29 19:20:58 n4mrv weewx[17143] ERROR user.MQTTSubscribe: (Service) >>>>> **** MessageCallbackProvider Ignoring topic=mytopic and payload=b'{\n >>>>> "CO2_Value_PPM": 419,\n "measurementId": 4100,\n "type": >>>>> "report_telemetry"\n}' >>>>> Nov 29 19:20:58 n4mrv weewx[17143] ERROR user.MQTTSubscribe: (Service) >>>>> **** MessageCallbackProvider Traceback (most recent call last):#012 File >>>>> "/home/weewx/bin/user/MQTTSubscribe.py", line 1263, in _convert_value#012 >>>>> return conversion_func['compiled'](value)#012 File "<string>", line 1, >>>>> in >>>>> <lambda>#012 File "/home/weewx/bin/weeutil/weeutil.py", line 1276, in >>>>> to_float#012 return float(x) if x is not None else None#012ValueError: >>>>> could not convert string to float: 'report_telemetry'#012#012During >>>>> handling of the above exception, another exception >>>>> occurred:#012#012Traceback (most recent call last):#012 File >>>>> "/home/weewx/bin/user/MQTTSubscribe.py", line 1427, in >>>>> _on_message_json#012 >>>>> (fieldname, value) = self._update_data(fields, fields_conversion_func, >>>>> lookup_key, data_flattened[key], unit_system)#012 File >>>>> "/home/weewx/bin/user/MQTTSubscribe.py", line 1230, in _update_data#012 >>>>> value = self._convert_value(fields, default_field_conversion_func, >>>>> orig_name, orig_value)#012 File "/home/weewx/bin/user/MQTTSubscribe.py", >>>>> line 1268, in _convert_value#012 raise ConversionError("Failed >>>>> converting field %s with value %s using '%s' with reason %s." >>>>> \#012user.MQTTSubscribe.ConversionError: Failed converting field type with >>>>> value report_telemetry using 'lambda x: to_float(x)' with reason could not >>>>> convert string to float: 'report_telemetry'. >>>>> Nov 29 19:20:59 n4mrv weewx[17143] DEBUG user.purple: >>>>> new_loop_packet(Event type: <class 'weewx.NEW_LOOP_PACKET'> | packet: >>>>> {'dateTime': 1638231660, 'usUnits': 1, 'barometer': 30.091, 'inTemp': >>>>> 79.0, >>>>> 'inHumidity': 27.0, 'outTemp': 33.7, 'windSpeed': 0.0, 'windSpeed10': 0.0, >>>>> 'windDir': 0, 'extraTemp1': 72.0, 'soilTemp1': 51.0, 'soilTemp2': 97.0, >>>>> 'soilTemp4': 47.0, 'leafTemp1': 51.0, 'leafTemp2': 97.0, 'outHumidity': >>>>> 74.0, 'rainRate': 0.0, 'UV': 0.0, 'radiation': 0.0, 'stormRain': 0.0, >>>>> 'dayRain': 0.0, 'monthRain': 0.6, 'yearRain': 41.65, 'dayET': 0.051, >>>>> 'monthET': 1.15, 'yearET': 24.95, 'leafWet4': 0.0, 'insideAlarm': 0, >>>>> 'rainAlarm': 0, 'outsideAlarm1': 0, 'outsideAlarm2': 0, 'extraAlarm1': 0, >>>>> 'extraAlarm2': 0, 'extraAlarm3': 0, 'extraAlarm4': 0, 'extraAlarm5': 0, >>>>> 'extraAlarm6': 0, 'extraAlarm7': 0, 'extraAlarm8': 0, 'soilLeafAlarm1': 0, >>>>> 'soilLeafAlarm2': 0, 'soilLeafAlarm3': 0, 'soilLeafAlarm4': 0, >>>>> 'txBatteryStatus': 0, 'consBatteryVoltage': 4.72, 'forecastIcon': 6, >>>>> 'forecastRule': 44, 'sunrise': 1638187560, 'sunset': 1638222720, 'rain': >>>>> 0.0, 'windGust': 0.0, 'windGustDir': None}) >>>>> Nov 29 19:20:59 n4mrv weewx[17143] DEBUG user.purple: new_loop_packet: >>>>> self.cfg.concentrations: Concentrations(timestamp=1638231655, pm1_0=4.425, >>>>> pm10_0=6.5649999999999995, pm2_5_cf_1=5.39, pm2_5_cf_1_b=7.39, >>>>> current_temp_f=42, current_humidity=45) >>>>> Nov 29 19:20:59 n4mrv weewx[17143] DEBUG user.purple: Time of reading >>>>> being inserted: 2021-11-29 19:20:55 EST (1638231655) >>>>> Nov 29 19:20:59 n4mrv weewx[17143] DEBUG user.purple: Inserted >>>>> packet[pm1_0]: 4.425000 into packet. >>>>> Nov 29 19:20:59 n4mrv weewx[17143] DEBUG user.purple: Inserted >>>>> packet[pm2_5]: 4.534270 into packet. >>>>> Nov 29 19:20:59 n4mrv weewx[17143] DEBUG user.purple: Inserted >>>>> packet[pm10_0]: 6.565000 into packet. >>>>> Nov 29 19:20:59 n4mrv weewx[17143] DEBUG user.MQTTSubscribe: (Service) >>>>> data-> final packet is 2021-11-29 19:21:00 EST (1638231660): barometer: >>>>> 30.091, consBatteryVoltage: 4.72, dateTime: 1638231660, dayET: 0.051, >>>>> dayRain: 0.0, extraAlarm1: 0, extraAlarm2: 0, extraAlarm3: 0, extraAlarm4: >>>>> 0, extraAlarm5: 0, extraAlarm6: 0, extraAlarm7: 0, extraAlarm8: 0, >>>>> extraTemp1: 72.0, forecastIcon: 6, forecastRule: 44, inHumidity: 27.0, >>>>> insideAlarm: 0, inTemp: 79.0, leafTemp1: 51.0, leafTemp2: 97.0, leafWet4: >>>>> 0.0, monthET: 1.15, monthRain: 0.6, outHumidity: 74.0, outsideAlarm1: 0, >>>>> outsideAlarm2: 0, outTemp: 33.7, pm1_0: 4.425, pm10_0: 6.5649999999999995, >>>>> pm2_5: 4.53427, pm2_5_aqi: 18.75, pm2_5_aqi_color: 32768, radiation: 0.0, >>>>> rain: 0.0, rainAlarm: 0, rainRate: 0.0, soilLeafAlarm1: 0, soilLeafAlarm2: >>>>> 0, soilLeafAlarm3: 0, soilLeafAlarm4: 0, soilTemp1: 51.0, soilTemp2: 97.0, >>>>> soilTemp4: 47.0, stormRain: 0.0, sunrise: 1638187560, sunset: 1638222720, >>>>> txBatteryStatus: 0, usUnits: 1, UV: 0.0, windDir: 0, windGust: 0.0, >>>>> windGustDir: None, windSpeed: 0.0, windSpeed10: 0.0, yearET: 24.95, >>>>> yearRain: 41.65 >>>>> >>>>> It seems that there is something wrong with the format coming into >>>>> weewx from the flow. It may be confused by the other two >>>>> elements "measurementId": 4100, and "type": "report_telemetry" which cause >>>>> the whole thing to fail. Is it possible to have weewx ignore these >>>>> elements >>>>> and only process the "CO2_Value_PPM": 419 ? I'm not sure what "float" >>>>> does >>>>> but mayve that's a problem...? >>>>> Thanks again and I'll have another look tomorrow. >>>>> Cheers, >>>>> Bob >>>>> On Monday, November 29, 2021 at 5:38:37 PM UTC-5 vince wrote: >>>>> >>>>>> On Monday, November 29, 2021 at 2:05:05 PM UTC-8 [email protected] >>>>>> wrote: >>>>>> >>>>>>> I removed the function and it looks better. Last debug going into >>>>>>> mqtt_publish: >>>>>>> >>>>>>> 11/29/2021, 4:17:17 PMnode: mqtt_payload >>>>>>> <http://localhost:1880/#>application/18/device/2cf7f12122500013/rx >>>>>>> : msg.payload : string[87] >>>>>>> string[87] >>>>>>> { "CO2_Value_PPM": 399, "measurementId": 4100, "type": >>>>>>> "report_telemetry" } >>>>>>> <http://localhost:1880/#> >>>>>>> >>>>>>> However, weewx still doesn't seem to like it. I'll try changing >>>>>>> topics to "mytopic" and see what happens. >>>>>>> >>>>>> >>>>>> Sigh - just set the topic in weewx.conf to whatever you are >>>>>> publishing via node-red, and reset weewx. >>>>>> Until you do that, it's not going to work. >>>>>> >>>>>> It does not matter what topic you publish to, just keep your naming >>>>>> consistent and theoretically relevant so you can figure it out a year >>>>>> from >>>>>> now when you want to decipher what the heck you did :-) >>>>>> >>>>>> -- > 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/a777ce3b-7e97-411c-b800-093641163d6en%40googlegroups.com > <https://groups.google.com/d/msgid/weewx-user/a777ce3b-7e97-411c-b800-093641163d6en%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/CACjxfUtV_eLhXJRU3FPZ86Bukd5O%3D%3DrK4atWMeO19Fw15ZhJYQ%40mail.gmail.com.
