Versions Compared

Key

  • This line was added.
  • This line was removed.
  • Formatting was changed.

...

  1. Делаем копию файла configuration/chirpstack/region_ru864.toml → region_ru865.toml
  2. Редактируем содержимое region_ru865.toml - два дефолтных канала оставляем неизменными, оставшиеся 5 каналов модифицируем в соответствии с новыми частотами. Так же меняем id региона:
    Code Block
    languageyml
    linenumberstrue
    collapsetrue
    [[regions]]
    
      # ID is an user-defined identifier for this region.
      id="ru865"
    
      # Description is a short description for this region.
      description="RU864 (non standard channels)"
    
      # Common-name refers to the common-name of this region as defined by
      # the LoRa Alliance.
      common_name="RU864"
    
    
      # Gateway configuration.
      [regions.gateway]
    
        # Force gateways as private.
        #
        # If enabled, gateways can only be used by devices under the same tenant.
        force_gws_private=false
    
    
        # Gateway backend configuration.
        [regions.gateway.backend]
    
          # The enabled backend type.
          enabled="mqtt"
    
          # MQTT configuration.
          [regions.gateway.backend.mqtt]
    
            # Topic prefix.
            #
            # The topic prefix can be used to define the region of the gateway.
            # Note, there is no need to add a trailing '/' to the prefix. The trailing
            # '/' is automatically added to the prefix if it is configured.
            topic_prefix="ru865"
    
            # MQTT server (e.g. scheme://host:port where scheme is tcp, ssl or ws)
            server="tcp://$MQTT_BROKER_HOST:1883"
    
            # Connect with the given username (optional)
            username=""
    
            # Connect with the given password (optional)
            password=""
    
            # Quality of service level
            #
            # 0: at most once
            # 1: at least once
            # 2: exactly once
            #
            # Note: an increase of this value will decrease the performance.
            # For more information: https://www.hivemq.com/blog/mqtt-essentials-part-6-mqtt-quality-of-service-levels
            qos=0
    
            # Clean session
            #
            # Set the "clean session" flag in the connect message when this client
            # connects to an MQTT broker. By setting this flag you are indicating
            # that no messages saved by the broker for this client should be delivered.
            clean_session=false
    
            # Client ID
            #
            # Set the client id to be used by this client when connecting to the MQTT
            # broker. A client id must be no longer than 23 characters. If left blank,
            # a random id will be generated by ChirpStack.
            client_id=""
    
            # Keep alive interval.
            #
            # This defines the maximum time that that should pass without communication
            # between the client and server.
            keep_alive_interval="30s"
    
            # CA certificate file (optional)
            #
            # Use this when setting up a secure connection (when server uses ssl://...)
            # but the certificate used by the server is not trusted by any CA certificate
            # on the server (e.g. when self generated).
            ca_cert=""
    
            # TLS certificate file (optional)
            tls_cert=""
    
            # TLS key file (optional)
            tls_key=""
    
    
        # Gateway channel configuration.
        #
        # Note: this configuration is only used in case the gateway is using the
        # ChirpStack Concentratord daemon. In any other case, this configuration 
        # is ignored.
        [[regions.gateway.channels]]
          frequency=868900000
          bandwidth=125000
          modulation="LORA"
          spreading_factors=[7, 8, 9, 10, 11, 12]
    
        [[regions.gateway.channels]]
          frequency=869100000
          bandwidth=125000
          modulation="LORA"
          spreading_factors=[7, 8, 9, 10, 11, 12]
    
        # there are regular channels
    
        # [[regions.gateway.channels]]
        #   frequency=864100000
        #   bandwidth=125000
        #   modulation="LORA"
        #   spreading_factors=[7, 8, 9, 10, 11, 12]
        # 
        # [[regions.gateway.channels]]
        #   frequency=864300000
        #   bandwidth=125000
        #   modulation="LORA"
        #   spreading_factors=[7, 8, 9, 10, 11, 12]
        # 
        # [[regions.gateway.channels]]
        #   frequency=864500000
        #   bandwidth=125000
        #   modulation="LORA"
        #   spreading_factors=[7, 8, 9, 10, 11, 12]
        # 
        # [[regions.gateway.channels]]
        #   frequency=864700000
        #   bandwidth=125000
        #   modulation="LORA"
        #   spreading_factors=[7, 8, 9, 10, 11, 12]
        # 
        # [[regions.gateway.channels]]
        #   frequency=864900000
        #   bandwidth=125000
        #   modulation="LORA"
        #   spreading_factors=[7, 8, 9, 10, 11, 12]
    
        # there are non standard channels
    
        [[regions.gateway.channels]]
          frequency=865100000
          bandwidth=125000
          modulation="LORA"
          spreading_factors=[7, 8, 9, 10, 11, 12]
    
        [[regions.gateway.channels]]
          frequency=865300000
          bandwidth=125000
          modulation="LORA"
          spreading_factors=[7, 8, 9, 10, 11, 12]
    
        [[regions.gateway.channels]]
          frequency=865500000
          bandwidth=125000
          modulation="LORA"
          spreading_factors=[7, 8, 9, 10, 11, 12]
    
        [[regions.gateway.channels]]
          frequency=865700000
          bandwidth=125000
          modulation="LORA"
          spreading_factors=[7, 8, 9, 10, 11, 12]
    
        [[regions.gateway.channels]]
          frequency=865900000
          bandwidth=125000
          modulation="LORA"
          spreading_factors=[7, 8, 9, 10, 11, 12]
    
      # Region specific network configuration.
      [regions.network]
        
        # Installation margin (dB) used by the ADR engine.
        #
        # A higher number means that the network-server will keep more margin,
        # resulting in a lower data-rate but decreasing the chance that the
        # device gets disconnected because it is unable to reach one of the
        # surrounded gateways.
        installation_margin=10
    
        # RX window (Class-A).
        #
        # Set this to:
        # 0: RX1 / RX2
        # 1: RX1 only
        # 2: RX2 only
        rx_window=0
    
        # RX1 delay (1 - 15 seconds).
        rx1_delay=1
    
        # RX1 data-rate offset
        rx1_dr_offset=0
    
        # RX2 data-rate
        rx2_dr=0
    
        # RX2 frequency (Hz)
        rx2_frequency=869100000
    
        # Prefer RX2 on RX1 data-rate less than.
        #
        # Prefer RX2 over RX1 based on the RX1 data-rate. When the RX1 data-rate
        # is smaller than the configured value, then the Network Server will
        # first try to schedule the downlink for RX2, failing that (e.g. the gateway
        # has already a payload scheduled at the RX2 timing) it will try RX1.
        rx2_prefer_on_rx1_dr_lt=0
    
        # Prefer RX2 on link budget.
        #
        # When the link-budget is better for RX2 than for RX1, the Network Server will first
        # try to schedule the downlink in RX2, failing that it will try RX1.
        rx2_prefer_on_link_budget=false
    
        # Downlink TX Power (dBm)
        #
        # When set to -1, the downlink TX Power from the configured band will
        # be used.
        #
        # Please consult the LoRaWAN Regional Parameters and local regulations
        # for valid and legal options. Note that the configured TX Power must be
        # supported by your gateway(s).
        downlink_tx_power=-1
    
        # ADR is disabled.
        adr_disabled=false
    
        # Minimum data-rate.
        min_dr=0
    
        # Maximum data-rate.
        max_dr=5
    
    
        # Rejoin-request configuration (LoRaWAN 1.1)
        [regions.network.rejoin_request]
    
          # Request devices to periodically send rejoin-requests.
          enabled=false
    
          # The device must send a rejoin-request type 0 at least every 2^(max_count_n + 4)
          # uplink messages. Valid values are 0 to 15.
          max_count_n=0
    
          # The device must send a rejoin-request type 0 at least every 2^(max_time_n + 10)
          # seconds. Valid values are 0 to 15.
          #
          # 0  = roughly 17 minutes
          # 15 = about 1 year
          max_time_n=0
        
    
        # Class-B configuration.
        [regions.network.class_b]
    
          # Ping-slot data-rate. 
          ping_slot_dr=3
    
          # Ping-slot frequency (Hz)
          #
          # set this to 0 to use the default frequency plan for the configured region
          # (which could be frequency hopping).
          ping_slot_frequency=0
    
        [[regions.network.extra_channels]]
        frequency=865100000
        min_dr=0
        max_dr=5
    
        [[regions.network.extra_channels]]
        frequency=865300000
        min_dr=0
        max_dr=5
    
        [[regions.network.extra_channels]]
        frequency=865500000
        min_dr=0
        max_dr=5
    
        [[regions.network.extra_channels]]
        frequency=865700000
        min_dr=0
        max_dr=5
    
        [[regions.network.extra_channels]]
        frequency=865900000
        min_dr=0
        max_dr=5
    
    

3. Редактируем общий файл конфигурации регионов - добавляем новый ru865:

Code Block
languageyml
linenumberstrue
collapsetrue
# Logging.
[logging]

  # Log level.
  #
  # Options are: trace, debug, info, warn error.
  level="info"


# PostgreSQL configuration.
[postgresql]

  # PostgreSQL DSN.
  #
  # Format example: postgres://<USERNAME>:<PASSWORD>@<HOSTNAME>/<DATABASE>?sslmode=<SSLMODE>.
  #
  # SSL mode options:
  #  * disable - no SSL
  #  * require - Always SSL (skip verification)
  #  * verify-ca - Always SSL (verify that the certificate presented by the server was signed by a trusted CA)
  #  * verify-full - Always SSL (verify that the certification presented by the server was signed by a trusted CA and the server host name matches the one in the certificate)
  dsn="postgres://chirpstack:chirpstack@$POSTGRESQL_HOST/chirpstack?sslmode=disable"

  # Max open connections.
  #
  # This sets the max. number of open connections that are allowed in the
  # PostgreSQL connection pool.
  max_open_connections=10

  # Min idle connections.
  #
  # This sets the min. number of idle connections in the PostgreSQL connection
  # pool (0 = equal to max_open_connections).
  min_idle_connections=0


# Redis configuration.
[redis]

  # Server address or addresses.
  #
  # Set multiple addresses when connecting to a cluster.
  servers=[
    "redis://$REDIS_HOST/",
  ]

  # TLS enabled.
  tls_enabled=false

  # Redis Cluster.
  #
  # Set this to true when the provided URLs are pointing to a Redis Cluster
  # instance.
  cluster=false


# Network related configuration.
[network]

  # Network identifier (NetID, 3 bytes) encoded as HEX (e.g. 010203).
  net_id="000000"

  # Enabled regions.
  #
  # Multiple regions can be enabled simultaneously. Each region must match
  # the 'name' parameter of the region configuration in '[[regions]]'.
  enabled_regions=[
    "as923",
    "as923_2",
    "as923_3",
    "as923_4",
    "au915_0",
    "cn470_10",
    "cn779",
    "eu433",
    "eu868",
    "in865",
    "ism2400",
    "kr920",
    "ru864",
    "ru865",
    "us915_0",
    "us915_1",
  ]


# API interface configuration.
[api]

  # interface:port to bind the API interface to.
  bind="0.0.0.0:8080"

  # Secret.
  #
  # This secret is used for generating login and API tokens, make sure this
  # is never exposed. Changing this secret will invalidate all login and API
  # tokens. The following command can be used to generate a random secret:
  #   openssl rand -base64 32
  secret="you-must-replace-this"


[integration]
  enabled=["mqtt"]

  [integration.mqtt]
    server="tcp://$MQTT_BROKER_HOST:1883/"
    json=true

4. Редактируем файл docker-compose.yml - добавляем новый экземпляр моста chirpstack-gateway-bridge-ru865 с новым внешним портом 1701:

Code Block
languageyml
linenumberstrue
collapsetrue
  chirpstack-gateway-bridge:
    image: chirpstack/chirpstack-gateway-bridge:4
    restart: unless-stopped
    ports:
      - 1700:1700/udp
    volumes:
      - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
    environment:
      - INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=ru864/gateway/{{ .GatewayID }}/event/{{ .EventType }}
      - INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=ru864/gateway/{{ .GatewayID }}/state/{{ .StateType }}
      - INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=ru864/gateway/{{ .GatewayID }}/command/#
    depends_on:
      - mosquitto
    logging:
      driver: json-file
      options:
        max-size: 100m
        max-file: "5"

  chirpstack-gateway-bridge-ru865:
    image: chirpstack/chirpstack-gateway-bridge:4
    restart: unless-stopped
    ports:
      - 1701:1700/udp
    volumes:
      - ./configuration/chirpstack-gateway-bridge:/etc/chirpstack-gateway-bridge
    environment:
      - INTEGRATION__MQTT__EVENT_TOPIC_TEMPLATE=ru865/gateway/{{ .GatewayID }}/event/{{ .EventType }}
      - INTEGRATION__MQTT__STATE_TOPIC_TEMPLATE=ru865/gateway/{{ .GatewayID }}/state/{{ .StateType }}
      - INTEGRATION__MQTT__COMMAND_TOPIC_TEMPLATE=ru865/gateway/{{ .GatewayID }}/command/#
    depends_on:
      - mosquitto
    logging:
      driver: json-file
      options:
        max-size: 100m
        max-file: "5"


Настройка второй БС: