MQTT Weiterleitung per Bridge Konfiguration an swarm.hiveeyes.org


#1

Ich betreibe Kotori auf meinem RasPi daheim. Die Weiterleitung zum Datenschwarm bekomme ich leider nicht funktionsfähig. Mosquitto ist leider sehr sparsam mit Debug-Meldungen. Im Logfile tauchen keine Fehler auf, aber Kotori verbindet nicht mehr zum lokalen MQTT Broker, sobald ich eine Bridge konfiguriert habe.

Hab mich an der Konfiguration von @Alex orientiert (Punkt 3.1.2):

Bei mir sieht das dann so aus:

connection hiveeyes
address swarm.hiveeyes.org:1883
#bridge_cafile /etc/letsencrypt/RootCA-lets-encrypt
topic hiveeyes/# in
topic hiveeyes/UID/+/+/data/__json__ out
clientid UID
start_type automatic
try_private false
remote_user EMAIL
remote_password PASSWORD

Fällt euch etwas auf? Habe ich clientid und topic ... out richtig? Brauche ich das LE Zertifikat?

Bei mir läuft Kotori 0.15.0

Habe es auch mal mit einem Testaccount auf cloudmqtt.com versucht, aber ebenfalls ohne Erfolg.

Danke für eure Hinweise


Using the Adafruit Feather M0 LoRa (RFM95) and TTN
#2

Hi Matthias,

schön, dass Du Deine Daten auch zu uns auf die Plattform schicken willst!

Folgende Dinge fallen uns dazu ein:

  • topic hiveeyes/UID/+/+/data/__json__ out: Das ist die Konvention, die von @Alex’ Homie-basierter Firmware verwendet wird, um Daten auf dem Bus abzukippen. Das müsstest Du bei Dir vermutlich anpassen auf topic hiveeyes/UID/+/+/data.json out
  • Hast Du die richtigen Parameter bei UID, EMAIL und PASSWORD eingesetzt? Wir haben sie Dir neulich per PM mitgeteilt, richtig?

Vielleicht klappt das mit diesen Änderungen ja gleich auf Anhieb. Ansonsten bekommen wir das bestimmt in den Griff, wenn wir tiefer unter die Haube schauen. Sag einfach Bescheid…

Viele Grüße,
Andreas.


#3

UID usw hatte ich natürlich schon ersetzt und das topic hatte ich auch schon entsprechend durchprobiert. Immer ohne Erfolg.

mosquitto.log redet nur sparsam und belanglos mit mir trotz log_type all

und Kotori sagt:

2017-04-06 14:35:15,947 [root                     ] INFO   : Root configuration file is /etc/kotori/kotori.ini
2017-04-06 14:35:15,949 [root                     ] INFO   : Requested configuration files: /opt/kotori/.kotori.ini, /etc/kotori/kotori.ini
2017-04-06 14:35:15,963 [root                     ] INFO   : Expanded configuration files:  /opt/kotori/.kotori.ini, /etc/kotori/kotori.ini, /etc/kotori/apps-enabled/hiveeyes.ini
2017-04-06 14:35:15,976 [root                     ] INFO   : Used configuration files:      /etc/kotori/kotori.ini, /etc/kotori/apps-enabled/hiveeyes.ini
2017-04-06T14:35:15+0200 [kotori                             ] INFO: Starting Kotori version 0.15.0
2017-04-06T14:35:15+0200 [kotori                             ] INFO: Using configuration file /etc/kotori/kotori.ini
2017-04-06T14:35:15+0200 [kotori.core                        ] INFO: Enabling applications ['hiveeyes.data-export', 'hiveeyes.firmware-builder', 'hiveeyes.http-acquisition']
2017-04-06T14:35:15+0200 [kotori.core                        ] INFO: Starting application "hiveeyes.data-export"
2017-04-06T14:35:20+0200 [kotori.io.protocol.forwarder       ] INFO: Starting ProtocolForwarderService(hiveeyes.data-export-forwarder)
2017-04-06T14:35:20+0200 [kotori.io.protocol.forwarder       ] INFO: Forwarding payloads from http:/api/{realm:hiveeyes}/{network:.*}/{gateway:.*}/{node:.*}/{slot:(data|event)}.{suffix} [GET] to influxdb:/{database}?measurement={measurement}
2017-04-06T14:35:20+0200 [kotori.io.protocol.http            ] INFO: HttpChannelContainer init
2017-04-06T14:35:20+0200 [kotori.io.protocol.http            ] INFO: Connecting to Metadata storage database (MongoDB)
2017-04-06T14:35:20+0200 [kotori.io.protocol.http            ] INFO: Starting HTTP service on localhost:24642
2017-04-06T14:35:20+0200 [kotori.io.protocol.http.LocalSite  ] INFO: Starting factory <kotori.io.protocol.http.LocalSite instance at 0x7179f170>
2017-04-06T14:35:20+0200 [kotori.io.protocol.http            ] INFO: Registering endpoint at path '/api/{realm:hiveeyes}/{network:.*}/{gateway:.*}/{node:.*}/{slot:(data|event)}.{suffix}' for methods [u'GET']
2017-04-06T14:35:20+0200 [kotori.io.protocol.target          ] INFO: Starting ForwarderTargetService(hiveeyes-hiveeyes.data-export) for serving address influxdb:/{database}?measurement={measurement} []
2017-04-06T14:35:20+0200 [kotori.core                        ] INFO: Starting application "hiveeyes.firmware-builder"
2017-04-06T14:35:21+0200 [kotori.firmware.service            ] INFO: Providing firmware for https://github.com/hiveeyes/arduino at http:/api/hiveeyes/{HE_USER:.*}/{HE_SITE:.*}/{HE_HIVE:.*}/firmware.{suffix}
2017-04-06T14:35:21+0200 [kotori.io.protocol.http            ] INFO: Registering endpoint at path '/api/hiveeyes/{HE_USER:.*}/{HE_SITE:.*}/{HE_HIVE:.*}/firmware.{suffix}' for methods []
2017-04-06T14:35:21+0200 [kotori.firmware.service            ] INFO: Starting FirmwareBuilderService. name=service-fb-hiveeyes, channel={'enable': 'true', 'realm': 'hiveeyes', 'patch_files': '*.ino, *.pde, *.cpp, *.h, Makefile*', 'repository': 'https://github.com/hiveeyes/arduino', 'application': 'kotori.firmware.service:boot', 'source': 'http:/api/hiveeyes/{HE_USER:.*}/{HE_SITE:.*}/{HE_HIVE:.*}/firmware.{suffix}', 'type': 'application', 'name': 'hiveeyes.firmware-builder'}
2017-04-06T14:35:21+0200 [kotori.core                        ] INFO: Starting application "hiveeyes.http-acquisition"
2017-04-06T14:35:21+0200 [kotori.io.protocol.forwarder       ] INFO: Starting ProtocolForwarderService(hiveeyes.http-acquisition-forwarder)
2017-04-06T14:35:21+0200 [kotori.io.protocol.forwarder       ] INFO: Forwarding payloads from http:/api/hiveeyes/{address:.*}/{slot:(data|event)} [POST] to mqtt:/hiveeyes/{address}/{slot}.json
2017-04-06T14:35:21+0200 [kotori.io.protocol.http            ] INFO: Registering endpoint at path '/api/hiveeyes/{address:.*}/{slot:(data|event)}' for methods [u'POST']
2017-04-06T14:35:21+0200 [kotori.io.protocol.target          ] INFO: Starting ForwarderTargetService(hiveeyes-hiveeyes.http-acquisition) for serving address mqtt:/hiveeyes/{address}/{slot}.json []
2017-04-06T14:35:21+0200 [kotori.daq.intercom.mqtt.base      ] INFO: Starting PahoMqttAdapter. name=hiveeyes-hiveeyes.http-acquisition-downstream, broker=localhost:1883, object=<kotori.daq.intercom.mqtt.paho.PahoMqttAdapter object at 0x6faf3d70>
2017-04-06T14:35:21+0200 [kotori.daq.intercom.mqtt.paho      ] CRITICAL: Error connecting to MQTT broker but retrying each 5 seconds
2017-04-06T14:35:21+0200 [kotori.core                        ] INFO: Enabling vendors ['hiveeyes']
2017-04-06T14:35:21+0200 [kotori.daq.graphing.grafana        ] INFO: Starting GrafanaManager "HiveeyesGrafanaManager". grafana=localhost:3300
2017-04-06T14:35:21+0200 [kotori.daq.services.mig            ] INFO: Starting MqttInfluxGrafanaService. name=service-mig-hiveeyes, channel={'realm': 'hiveeyes', 'mqtt_topics': 'hiveeyes/#', 'enable': 'true', 'type': 'vendor'}
2017-04-06T14:35:21+0200 [kotori.daq.intercom.mqtt.base      ] INFO: Starting PahoMqttAdapter. name=mqtt-hiveeyes, broker=localhost:1883, object=<kotori.daq.intercom.mqtt.paho.PahoMqttAdapter object at 0x6fa29f90>
2017-04-06T14:35:21+0200 [kotori.daq.intercom.mqtt.paho      ] CRITICAL: Error connecting to MQTT broker but retrying each 5 seconds

#4

Achso, na das ist natürlich eindeutig! Aber wenn Kotori gar nicht mit Deinem lokalen MQTT Broker reden kann, dann dürfte auch nie etwas im Grafana angekommen sein!?


#5

Nehme ich die Bridge-Konfiguration raus, dann funktioniert wieder alles (+Influx+Grafana).


#6

Das heißt auf Deutsch, dass der lokale Broker nichts mehr annimmt, sobald diese Konfiguration angeschaltet wurde. Da scheint etwas im Argen zu sein ;]. Das müsste ich nachstellen, vielleicht kann in der Zwischenzeit auch @Alex helfen.

Wir kriegen das hin!


#7

Läuft Mosquitto denn überhaupt los und hört auf seinem designierten Port? ("lsof -i -P | grep mosquitto")


#8
pi@pi ~ $ lsof -i -P | grep mosquitto
pi@pi ~ $ sudo systemctl status mosquitto.service 
● mosquitto.service - LSB: mosquitto MQTT v3.1 message broker
   Loaded: loaded (/etc/init.d/mosquitto)
   Active: active (running) since Do 2017-04-06 14:35:41 CEST; 49min ago
  Process: 12318 ExecStop=/etc/init.d/mosquitto stop (code=exited, status=0/SUCCESS)
  Process: 12325 ExecStart=/etc/init.d/mosquitto start (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/mosquitto.service
       └─12330 /usr/sbin/mosquitto -c /etc/mosquitto/mosquitto.conf

Apr 06 14:35:41 pi mosquitto[12325]: Starting network daemon:: mosquitto.
Apr 06 14:35:41 pi systemd[1]: Started LSB: mosquitto MQTT v3.1 message broker.

#9

Seltsam: Er läuft also, hat aber keinen lokalen Port offen. Das hatte ich vermutet, ohne bisher die Ursache zu kennen. Korrekt sieht das so aus:

# lsof -i -P | grep mosquitto | grep LISTEN
mosquitto 31565   mosquitto    4u  IPv4 23757145      0t0  TCP *:1883 (LISTEN)
mosquitto 31565   mosquitto    5u  IPv6 23757146      0t0  TCP *:1883 (LISTEN)
mosquitto 31565   mosquitto    6u  IPv4 23757149      0t0  TCP *:8883 (LISTEN)
mosquitto 31565   mosquitto    7u  IPv6 23757150      0t0  TCP *:8883 (LISTEN)

Vermutlich sieht es bei Dir ähnlich aus, wenn Du die - scheinbar derzeit invalide - Bridge Konfiguration wieder rausnimmst und sich Kotori dann auch korrekt verbinden kann?


#10

Wenn ich auf die Schnelle Deine Konfiguration in eine Datei tue und meinen lokalen mosquitto damit starten will, dann kommt in der Tat ein Fehler:

$ mosquitto -c mosquitto_bridge.conf
Error: Unknown configuration variable "remote_user".
Error found at mosquitto_bridge.conf:9.
Error: Unable to open configuration file.

Die upstream Konfiguration spricht hier von “remote_username”, “remote_user” scheint also falsch zu sein:

Wenn man die Direktive in der Konfiguration von “remote_user” auf “remote_username” ändert, dann geht tatsächlich deutlich mehr:

$ mosquitto -c mosquitto_bridge.conf
1491485822: mosquitto version 1.4.8 (build date 2016-05-26 22:03:30+0200) starting
1491485822: Config loaded from mosquitto_bridge.conf.
1491485822: Opening ipv4 listen socket on port 1883.
1491485822: Opening ipv6 listen socket on port 1883.
1491485822: Connecting bridge hiveeyes (swarm.hiveeyes.org:1883)
1491485829: Connection Refused: not authorised
1491485829: Socket error on client local.UID, disconnecting.

Connection Refused: not authorised kommt, weil ich keine korrekten credentials eingetragen hatte.

Vielleicht hilft das auch bei Dir, um weiterzukommen?


#11

nein, der Befehl gibt auch dann nichts zurück.


#12

Evtl. gibt er mit “sudo ...” mehr aus?


#13

Das hat nun auch mit korrekten credentials bei uns im Trockendock gut geklappt:

Wir hoffen Du bekommst das auch hin. Verschlüsselung via SSL bzw. TLS geht leider noch nicht, sorry.


#14

6 posts were split to a new topic: TLS Zertifikat für MQTT broker auf swarm.hiveeyes.org ist abgelaufen


TLS Zertifikat für MQTT broker auf swarm.hiveeyes.org ist abgelaufen
#15

ja, mit sudo ähnelt der Output deinem.

Mit der Config bin ich auch weiter. Meine (fast 3 Jahre alte) mosquitto Version verlangt noch ein überholtes Schema, welches username und passwort nutzt – also ohne remote_.

mosquitto.log brüllt jetzt regelrecht. Aber auf swarm.hiveeyes wird noch nichts empfangen

1491502435: mosquitto version 1.3.4 (build date 2014-08-22 06:10:51+0000) starting
1491502435: Config loaded from /etc/mosquitto/mosquitto.conf.
1491502435: Opening ipv4 listen socket on port 1883.
1491502435: Opening ipv6 listen socket on port 1883.
1491502435: Bridge eaf47aba-f082-4d07-b7d5-646026107b03 doing local SUBSCRIBE on topic hiveeyes/in
1491502435: Bridge eaf47aba-f082-4d07-b7d5-646026107b03 doing local SUBSCRIBE on topic hiveeyes/eaf47aba-f082-4d07-b7d5-646026107b03/+/+/data.json
1491502435: Connecting bridge hiveyes (swarm.hiveeyes.org:1883)
1491502435: Bridge eaf47aba-f082-4d07-b7d5-646026107b03 sending CONNECT
1491502435: Received CONNACK on connection eaf47aba-f082-4d07-b7d5-646026107b03.
1491502435: Bridge eaf47aba-f082-4d07-b7d5-646026107b03 sending UNSUBSCRIBE (Mid: 2, Topic: hiveeyes/in)
1491502435: Bridge eaf47aba-f082-4d07-b7d5-646026107b03 sending UNSUBSCRIBE (Mid: 3, Topic: hiveeyes/eaf47aba-f082-4d07-b7d5-646026107b03/+/+/data.json)
1491502436: Received PUBACK from eaf47aba-f082-4d07-b7d5-646026107b03 (Mid: 1)
1491502436: Received UNSUBACK from eaf47aba-f082-4d07-b7d5-646026107b03
1491502436: New connection from ::1 on port 1883.
1491502436: New client connected from ::1 as mqtt-hiveeyes (c1, k60, ukotori).
1491502436: Sending CONNACK to mqtt-hiveeyes (0)
1491502436: Received SUBSCRIBE from mqtt-hiveeyes
1491502436: 	hiveeyes/# (QoS 0)
1491502436: mqtt-hiveeyes 0 hiveeyes/#
1491502436: Sending SUBACK to mqtt-hiveeyes
1491502436: New connection from ::1 on port 1883.
1491502436: New client connected from ::1 as hiveeyes-hiveeyes.http-acquisition-downstream (c1, k60, ukotori).
1491502436: Sending CONNACK to hiveeyes-hiveeyes.http-acquisition-downstream (0)
1491502436: Received UNSUBACK from eaf47aba-f082-4d07-b7d5-646026107b03
1491502446: Socket error on client hiveeyes-hiveeyes.http-acquisition-downstream, disconnecting.
1491502446: Socket error on client mqtt-hiveeyes, disconnecting.
1491502457: New connection from ::1 on port 1883.
1491502457: New client connected from ::1 as hiveeyes-hiveeyes.http-acquisition-downstream (c1, k60, ukotori).
1491502457: Sending CONNACK to hiveeyes-hiveeyes.http-acquisition-downstream (0)
1491502458: New connection from ::1 on port 1883.
1491502458: New client connected from ::1 as mqtt-hiveeyes (c1, k60, ukotori).
1491502458: Sending CONNACK to mqtt-hiveeyes (0)
1491502458: Received SUBSCRIBE from mqtt-hiveeyes
1491502458: 	hiveeyes/# (QoS 0)
1491502458: mqtt-hiveeyes 0 hiveeyes/#
1491502458: Sending SUBACK to mqtt-hiveeyes
1491502477: New connection from 93.219.77.4 on port 1883.
1491502477: New client connected from 93.219.77.4 as U5Iup`tT=fJ[tKmY>XHjA8F\ZaHOCS1hX:U?ZPdXv5saAg1OFJ0HRGdlx3B2F3[n (c1, k300).
1491502477: Sending CONNACK to U5Iup`tT=fJ[tKmY>XHjA8F\ZaHOCS1hX:U?ZPdXv5saAg1OFJ0HRGdlx3B2F3[n (0)
1491502479: Received PUBLISH from U5Iup`tT=fJ[tKmY>XHjA8F\ZaHOCS1hX:U?ZPdXv5saAg1OFJ0HRGdlx3B2F3[n (d0, q0, r0, m0, 'hiveeyes/Thias/PDM/testnode/data.json', ... (103 bytes))
1491502479: Sending PUBLISH to mqtt-hiveeyes (d0, q0, r0, m0, 'hiveeyes/Thias/PDM/testnode/data.json', ... (103 bytes))
1491502495: Sending PINGREQ to eaf47aba-f082-4d07-b7d5-646026107b03
1491502495: Received PINGRESP from eaf47aba-f082-4d07-b7d5-646026107b03
1491502517: Received PINGREQ from hiveeyes-hiveeyes.http-acquisition-downstream
1491502517: Sending PINGRESP to hiveeyes-hiveeyes.http-acquisition-downstream
1491502518: Received PINGREQ from mqtt-hiveeyes
1491502518: Sending PINGRESP to mqtt-hiveeyes
1491502555: Sending PINGREQ to eaf47aba-f082-4d07-b7d5-646026107b03
1491502555: Received PINGRESP from eaf47aba-f082-4d07-b7d5-646026107b03
1491502571: New connection from 93.219.77.4 on port 1883.
1491502571: New client connected from 93.219.77.4 as v7nWGIo4>jeOHgoOqoW:vBvf5?XK2:0x1nF8>=<MgbloPRE89lB6n?\s><E@F6?8 (c1, k300).
1491502571: Sending CONNACK to v7nWGIo4>jeOHgoOqoW:vBvf5?XK2:0x1nF8>=<MgbloPRE89lB6n?\s><E@F6?8 (0)
1491502572: Received PUBLISH from v7nWGIo4>jeOHgoOqoW:vBvf5?XK2:0x1nF8>=<MgbloPRE89lB6n?\s><E@F6?8 (d0, q0, r0, m0, 'hiveeyes/Thias/PDM/testnode/data.json', ... (103 b

#16

Funktioniert nun, nachdem wir darauf kamen, dass ich bei der Bridge im IN Topic einen eigenen Usernamen verwendet habe und OUT Topic eine UID hatte. beides muss aber übereinstimmen. Dann war die UID zu lang und wir sind einheitlich auf meine Wahl des Usernamens umgeschwenkt.


#17

Danke! Siehe auch


Probleme beim Datentransfer über SIM800 Modul per MQTT
#18

@Thias: freut mich. Du bist der erste nicht-vereinseigene™ Beta-Tester :-)


#19