Looking for example MQTTSubscribe configurations

295 views
Skip to first unread message

bell...@gmail.com

unread,
May 24, 2021, 7:15:22 PM5/24/21
to weewx-user
Hi,
With the flexibility of MQTTSubscribe comes some complexity to configuring it. To make it easier for people to ‘get up and running’,  I am looking for sample configurations. This would be samples for publicly documented software such as tasmota (https://tasmota.github.io/docs/Supported-Peripherals/) , rtl_433 (https://triq.org/rtl_433/OPERATION.html#outputs), weewx-mqtt (https://github.com/matthewwall/weewx-mqtt), etc.

Since version 2.0 of MQTTSubscribe removed most deprecated options, the sample should have been run/tested against MQTTSubscribe 2.0 or higher. It should also include some sample MQTT data and any necessary background information.

I’ve primed the pump with some samples for the Acutite-606tx and Acutite-00275rm using rtl_433. These can be seen here, https://github.com/bellrichm/WeeWX-MQTTSubscribe/tree/master.

You can provide the configuration data via a pull request, email, attachment, etc. - whatever is easiest for you.

Thanks for your help.
rich

vince

unread,
May 24, 2021, 8:44:08 PM5/24/21
to weewx-user
> On Monday, May 24, 2021 at 4:15:22 PM UTC-7 bell...@gmail.com wrote:
>You can provide the configuration data via a pull request, email, attachment, etc. - whatever is easiest for you.

Here's my simple example that dials back logging a bit and subscribes to pieces of a pre-existing MQTT item...

[Logging]
    [[loggers]]
        [[[user.MQTTSubscribe]]]
            level = INFO

[MQTTSubscribeService]
    enable = True
    host = 192.168.1.171
    port = 1883
    keepalive = 60
    username = None
    password = None
    binding = loop
    [[message_callback]]
        type = json
    [[topics]]
        unit_system = US

    #--- these come from r:/usr/local/bin every 5 minutes via cron
    #
    #  mosquitto_sub -t BaseballRoomConditions -h nuc2
    #     {"dateTime": 1621715702, "extraTemp1": 63.16, "extraTemp2": 63.5, "pi": 100.28}
    #

        [[[BaseballRoomConditions]]]
            [[[[dateTime]]]]
                ignore = True
            [[[[extraTemp1]]]]
                name = extraTemp1
                units = degree_F
            [[[[extraTemp2]]]]
                name = extraTemp2
                units = degree_F
            [[[[pi]]]]
                ignore = True

storm...@gmail.com

unread,
Aug 18, 2021, 6:59:46 PM8/18/21
to weewx-user
Here is what I have currently.   It is definitely a work in progress.  I'm subscribing to a broker on a second RPI, which receiving its data from two SDRs.  Additionally goes out on web (Every 5 minutes) to download Alerts. 

[MQTTSubscribeService]

    # This section is for the MQTTSubscribe service.
    # Turn the service on and off.
    # Default is: true
    # Only used by the service.
    enable = true
    
    # The MQTT server.
    # Default is localhost.
    host = 192.168.1.240
    
    # The port to connect to.
    # Default is 1883.
    port = 1883
    
    # Maximum period in seconds allowed between communications with the broker.
    # Default is 60.
    keepalive = 60
    
    # username for broker authentication.
    # Default is None.
    username = None
    
    # password for broker authentication.
    # Default is None.
    password = None
    
    # The binding, loop or archive.
    # Default is: loop
    # Only used by the service.
    binding = loop
    
    # The message handler to use
    [[message_callback]]

        # The format of the MQTT payload.
        # Currently support: individual, json, keyword
        # Must be specified.
        type = json
    
    # The topics to subscribe to.
    [[topics]]
        
        # Units for MQTT payloads without unit value.
        # Valid values: US, METRIC, METRICWX
        # Default is: US
        unit_system = US
        
        # With the exception of wind data, by default a packet is created for every MQTT message received.
        # When this is true, MQTTSubscribe attempts to collect observations across messages into a packet.
        # Default is False.
        # This is experimental and may be removed.
        collect_observations = True

        # With the exception of wind data, by default a queue is created for every MQTT topic.
        # When this is true, MQTTSubsribe uses a single queue for all non wind data.
        # This is useful when 'collect_observations = True'.
        # Default is False.
        # This is experimental and may be removed.
        single_queue = True
      
      
  ##########################################################################################
  #              Fineoffset-WH51 Sensors
  #              SDR # 2 
  #              915 MHz
  ########################################################################################## 
      
      
        [[[Fineoffset-WH51/00e121/]]]
          
            [[[[model]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_mV]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[boost]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[moisture]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = soilMoist1
                
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = False
                
                # True if the incoming data is cumulative.
                # Valid values: True, False
                # Default is False
                contains_total = False
                
                # The conversion type necessary for WeeWX compatibility
                # Valid values: bool, float, int, none
                # Default is float
                conversion_type = float      
            
            [[[[ad_raw]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            
            [[[[mic]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[mod]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[freq1]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[freq2]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[rssi]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[snr]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[noise]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
        
        [[[Fineoffset-WH51/00e002/]]]
            
            [[[[model]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_mV]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[boost]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[moisture]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = soilMoist2
                
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = False
                
                # True if the incoming data is cumulative.
                # Valid values: True, False
                # Default is False
                contains_total = False
                
                # The conversion type necessary for WeeWX compatibility
                # Valid values: bool, float, int, none
                # Default is float
                conversion_type = float
                  
            
            [[[[ad_raw]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            
            [[[[mic]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[mod]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[freq1]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[freq2]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[rssi]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[snr]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[noise]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
  
  ##########################################################################################
  #              Acurite-6045M Sensors
  #              SDR # 1 
  #              433 MHz
  ##########################################################################################              
        
        [[[Acurite-6045M/247/]]]
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[temperature_F]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning1_temperature_F
                ignore = False
                contains_total = False
                conversion_type = float          
            
            [[[[humidity]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning1_humidity
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[strike_count]]]]
                ignore = True
            
            [[[[storm_dist]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning1_storm_dist
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[active]]]]
                ignore = True
            
            [[[[rfi]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning1_rfi
                ignore = False
                contains_total = True
                conversion_type = int
            
            [[[[number_strike_count]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning1_number_strike_count
                ignore = False
                contains_total = True
                conversion_type = int
  
           [[[[lightning_frequency]]]]
           
               # The WeeWX name.
               # Default is the name from MQTT.
                 name = lightning1_frequency
                 ignore = False  
                 conversion_type = None
        
         [[[Acurite-6045M/121/]]]
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[temperature_F]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning2_temperature_F
                ignore = False
                contains_total = False
                conversion_type = float          
            
            [[[[humidity]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning2_humidity
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[strike_count]]]]
                ignore = True
            
            [[[[storm_dist]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning2_storm_dist
                 ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[active]]]]
                ignore = True
            
            [[[[rfi]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning2_rfi
                ignore = False
                contains_total = True
                conversion_type = int
            
            [[[[number_strike_count]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning2_number_strike_count
                ignore = False
                contains_total = True
                conversion_type = int
  
           [[[[lightning_frequency]]]]
           
               # The WeeWX name.
               # Default is the name from MQTT.
                 name = lightning2_frequency
                 ignore = False  
                 conversion_type = None
        
        [[[Acurite-6045M/207/]]]
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[temperature_F]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning3_temperature_F
                ignore = False
                contains_total = False
                conversion_type = float          
            
            [[[[humidity]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning3_humidity
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[strike_count]]]]
                ignore = True
            
            [[[[storm_dist]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning3_storm_dist
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[active]]]]
                ignore = True
            
            [[[[rfi]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning3_rfi
                ignore = False
                contains_total = True
                conversion_type = int
            
            [[[[number_strike_count]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning3_number_strike_count
                ignore = False
                contains_total = True
                conversion_type = int
  
           [[[[lightning_frequency]]]]
           
               # The WeeWX name.
               # Default is the name from MQTT.
                 name = lightning3_frequency
                 ignore = False  
                 conversion_type = None
        
         [[[Acurite-6045M/147/]]]
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[temperature_F]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning4_temperature_F
                ignore = False
                contains_total = False
                conversion_type = float          
            
            [[[[humidity]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning4_humidity
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[strike_count]]]]
                ignore = True
            
            [[[[storm_dist]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning4_storm_dist
                ignore = False
                contains_total = False
                conversion_type = float

            
            [[[[active]]]]
                ignore = True
            
            [[[[rfi]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning4_rfi
                ignore = False
                contains_total = True
                conversion_type = int
            
            [[[[number_strike_count]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning4_number_strike_count
                ignore = False
                contains_total = True
                conversion_type = int
  
           [[[[lightning_frequency]]]]
           
               # The WeeWX name.
               # Default is the name from MQTT.
                 name = lightning4_frequency
                 ignore = False  
                 conversion_type = None
        
        
         [[[Acurite-6045M/228/]]]
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[temperature_F]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning5_temperature_F
                ignore = False
                contains_total = False
                conversion_type = float          
            
            [[[[humidity]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning5_humidity
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[strike_count]]]]
                ignore = True
            
            [[[[storm_dist]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning5_storm_dist
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[active]]]]
                ignore = True
            
            [[[[rfi]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning5_rfi
                ignore = False
                contains_total = True
                conversion_type = int
            
            [[[[number_strike_count]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning5_number_strike_count
                ignore = False
                contains_total = True
                conversion_type = int
  
           [[[[lightning_frequency]]]]
           
               # The WeeWX name.
               # Default is the name from MQTT.
                 name = lightning5_frequency
                 ignore = False  
                 conversion_type = None
        
        [[[Acurite-6045M/14052/]]]
            
            [[[[id]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[battery_ok]]]]
                # True if the incoming data should not be processed into WeeWX.
                # Valid values: True, False
                # Default is False
                ignore = True
            
            [[[[temperature_F]]]]
                
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning6_temperature_F
                ignore = False
                contains_total = False
                conversion_type = float          
            
            [[[[humidity]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning6_humidity
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[strike_count]]]]
                ignore = True
            
            [[[[storm_dist]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning6_storm_dist
                ignore = False
                contains_total = False
                conversion_type = float
            
            [[[[active]]]]
                ignore = True
            
            [[[[rfi]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning6_rfi
                ignore = False
                contains_total = True
                conversion_type = int
            
            [[[[number_strike_count]]]]
                # The WeeWX name.
                # Default is the name from MQTT.
                name = lightning6_number_strike_count
                ignore = False
                contains_total = True
                conversion_type = int
  
           [[[[lightning_frequency]]]]
           
               # The WeeWX name.
               # Default is the name from MQTT.
                 name = lightning6_frequency
                 ignore = False  
                 conversion_type = None
                 
                 
   
  ##########################################################################################
  #              Acurite-5n1 Sensors
  #              SDR # 1 
  #              433 MHz
  ##########################################################################################       

        
        [[[Acurite-5n1/1531/]]]
            # The WeeWX name.
            # Default is the name from MQTT.
            name = comfort_level
            conversion_type = None
            
            
  ##########################################################################################
  #              NWS Alerts
  #              GET Method (For County Only)
  #              Updated Every 5 Minutes
  ##########################################################################################          
            
        [[[Alerts/NWS/]]]
            
            [[[[alert_NWS0]]]]

               name = alert_0
               conversion_type = None
               
            [[[[alert_NWS1]]]]

               name = alert_1
               conversion_type = None
               
            [[[[alert_NWS2]]]]

               name = alert_2
               conversion_type = None
               
            [[[[alert_NWS3]]]]

               name = alert_3
               conversion_type = None
               
            [[[[alert_NWS4]]]]

               name = alert_4
               conversion_type = None
               
            [[[[alert_NWS5]]]]

               name = alert_5
               conversion_type = None 
               
            [[[[alert_NWS6]]]]

               name = alert_6
               conversion_type = None
               
            [[[[alert_NWS7]]]]

               name = alert_7
               conversion_type = None
               
            [[[[alert_NWS8]]]]

               name = alert_8
               conversion_type = None
               
            [[[[alert_NWS9]]]]

               name = alert_9
               conversion_type = None
               
            [[[[alert_NWS10]]]] 
        
               name = alert_10
               conversion_type = None  
Reply all
Reply to author
Forward
0 new messages