Mqtt публикует сообщения на localhost.А телеграф отслеживает localhost, но не может отправить его на приток.что может быть не так? - PullRequest
0 голосов
/ 07 февраля 2019

Здесь, если подключение telegraf к infxdb успешно, потому что, когда я перезапускаю telegraf, он создает базу данных, которую я упомянул в файле конфигурации.Но сообщения, которые публикуются mqtt, не принимаются телеграфом. Я даже пытался поместить его в файл, но он пуст.так что-то не так.

import paho.mqtt.client as mqtt
from influxdb import InfluxDBClient
import  json

influxclient = InfluxDBClient(host='localhost', port=8086)
# This is the Publisher

dict_msg={"temperature":"20.5"}
msg = json.dumps(dict_msg)

MQTT_HOST = "127.0.0.1"
MQTT_PORT = 1883
MQTT_KEEPALIVE_INTERVAL = 45
MQTT_TOPIC = "sensors"

count = 0

# Define on_publish event function 
def on_publish(client, userdata, mid):
print("Message Published..")


# Initiate MQTT Client
mqttc = mqtt.Client()

mqttc.on_publish = on_publish

# Connect with MQTT Broker
mqttc.connect(MQTT_HOST, MQTT_PORT, MQTT_KEEPALIVE_INTERVAL)

x = 0
while x <= 100000:
    # Publish message to MQTT Broker
    mqttc.publish(MQTT_TOPIC,msg)
    # influx_line_protocol = ("published,counts" = count)
    # print(count)
    x += 1

mqttc.loop(30)
# Disconnect from MQTT_Broker
mqttc.disconnect()`

Вот конфиг телеграфа и мой код издателя mqtt, который дан.Я хочу, чтобы мои опубликованные сообщения были сохранены в файле effxdb.

telegraf сообщает, что подключен, как указано ниже, но не отправляет никаких сообщений от издателя.зависает здесь

2019-02-07T11:02:18Z I! [agent] Config: Interval:10s, Quiet:false, Hostname:"shekhar-Inspiron-3441", Flush Interval:10s
2019-02-07T11:02:18Z I! [inputs.mqtt_consumer] Connected [tcp://127.0.0.1:1883]

и в конфигурации mqtt

[[inputs.mqtt_consumer]]
## MQTT broker URLs to be used. The format should be 
scheme://host:port,
## schema can be tcp, ssl, or ws.
servers = ["tcp://127.0.0.1:1883"]

## Topics to subscribe to
topics = [
  "telegraf/sensors/#",
   ]
data_format = "influx"

пробовал также с json.не повезло.

любая помощь приветствуется.

1 Ответ

0 голосов
/ 08 февраля 2019

Были 2 неправильные вещи:

  1. Вы не сконфигурировали свой вывод InfluxDB в telegraf.conf
  2. Ваши показания температуры - это строка, а не тип числа

Я предоставил вам рабочий пример использования плагина MQTT здесь:

https://github.com/rawkode/influxdb-examples/tree/master/telegraf/mqtt

PS: кросс-пост от Shekhar.Копирование моего ответа здесь, с демонстрацией;в случае, если кто-то еще сталкивается с подобной проблемой.

https://community.influxdata.com/t/mqtt-publishing-the-messages-but-telegraf-cannot-send-it-to-the-influxdb/8462/7

...