Unabhängig zu den gerade erschlossenen Neuerungen rund um die Datenfernmeldung per HTTP webhook gäbe es natürlich weiterhin die Möglichkeit der Datenfernmeldung per MQTT.
Ich glaube bisher wurde das immer noch per Mosquitto Bridge Konfiguration realisiert, vielleicht könnte man das aber zukünftig auch im Kotori machen.
Was ich interessant und schade finde, ist jenes, das ich gerade auf der entsprechenden Dokumentationsseite zur Integration über MQTT entdeckt habe:
Auf Deutsch: Es gibt tatsächlich eine “echte” Mandantenfähigkeit per “tenant ID”, diese wiederum steht aber in der Open Source Version nicht zur Verfügung!?
Ich denke es wird Zeit, dass wir mal ein paar mehr Seitenblicke wagen, mit einem dieser beiden guten Stücke, die mittlerweile garantiert auch schon aus der Mauser raus sind.
Ahja. Folgende Beispiele sind besser, weil sie zeigen, dass Felder/Variablen auch in den Host-Teil des base-url Konfigurationsattributs eingebaut werden können.
Die Idee, CayenneLPP zu nutzen, ist keine schlechte – wir haben ja bei Integration des Cayenne Low Power Payload Protocol schließlich einiges dran geschafft und es lief im Großen und Ganzen recht gut, sofern ich mich richtig erinnere.
Dort findet sich bei espeasy/packed-decode-uplink.js ein ansehnlicher Decoder von ESPEasy, der u.a. auch nativ die spezifischen Meßgrößen bzw. konkreten Gegebenheiten der BME-, BMP, INA219 - und auch HX711 Sensoren unterstützt.
Vielleicht ist das einen Blick wert, wenn es irgendeinen Mehrwert im Vergleich zum CayenneLPP Protokoll bietet?
Meine Device IDs sind noch 4 teilig und Bindestrich-separiert alla hiveeyes-thias-freiland-hive2.
“hiveyes-” wird zuverlässig gefiltert und der Rest an den festen Realm angehängt. MQTT am Server gibt dann aus: hiveeyes/channel/hiveeyes-thias-freiland-hive2/data.json {...} und die Daten landen in der gleichen Influx Series wie vorher.
Perfekto!
Werde beizeiten die Device IDs auf dreiteilig kürzen. Dazu muss ich allerdings auch einmal vor Ort sein, um die Einheit neu bei TTN joinen zu lassen.
@Thias und ich hatten auch eine PutsReq-Instanz eingerichtet, damit Leute mit BOB-Kit Daten parallel an die Uni Bremen und an hiveeyes schicken können. Ich habe aber keinen Überblick ob das (noch) genutzt wird.
Exzellent, herzlichen Dank! Ich habe die Auditing Tabellen gelöscht und schaue dann mal, ob doch noch andere Anfragen reinkommen. Wenn nicht, schalte ich unsere PutsReq Instanz ab.
# Restrict SensorWAN direct addressing to specified networks/owners.
direct_channel_allowed_networks = jankr, testdrive, thias
Auf elbanco unter /etc/kotori/apps-enabled/hiveeyes.ini. ↩︎
Solange wir noch keine Authentifizierungsmöglichkeit implementiert haben, ist es ein wenig sicherer, auch wenn nicht unbedingt schädliches Verhalten zu befürchten ist. ↩︎
Die Doku sollte stimmen. Die SensorWAN Konvention beschreibt das SensorWAN payload format signalling nur abstrakt, ich sollte im Anhang bei addressing examples wohl noch etwas konkreter werden, und dann am besten auf die entsprechenden Implementierungsdetails von Kotori verweisen.
=> /data muss immer und in jedem Fall dran, daran hat sich nichts geändert.
Bei diesem Verfahren bestimmt die Device ID nur das letzte Fragment <name> in <realm>/<network>/<group>/<name>. Hier ist <realm> ohnehin vorgegeben, und <network> sowie <group> werden dann fix mit devices bzw. default belegt.
Bei dieser Adressierungsvariante wird also implizit ein voller Kanalpfad erzeugt [1], wie dieser:
Die volle Kanaladressierung ist die Basiskonvention von SensorWAN und die kanonische Referenzimplementierung des entsprechenden Verfahrens in Kotori, und damit weiterhin die bevorzugte Methode. Du brauchst also nichts zu ändern.
Wenn Du Dir jedoch im speziellen Fall von TTS/TTN entsprechende Komfortmerkmale bzgl. der Verwaltung Deiner Geräte, Dekoder und Applications in der TTN Konsole wünschst, um dort z.B. mehrere Geräte über die gleiche “Application” fahren zu können, wie @Thias, dann kannst Du natürlich wahlweise auch die neuen Verfahren verwenden.
Dadurch besteht, im Gegensatz zum “direct-channel” Verfahren, hier keine Gefahr, auf fremde Kanalgruppen schreiben zu können. ↩︎
Danke für die Erklärung, das war mir so nicht bewußt, ich bin irgendwie davon ausgegangen, dass /device/ dann die volle Kanaladressierung wie hier beschrieben macht
und man dafür dann eben auch <network> und <group> braucht. Gut, dann haben wir drei mögliche Adressierungsarten.