Jump to content

Yet Another MQTT-Representation of Tinkerforge (on GitHub)


Recommended Posts

Hallo Tinkerforge-ler da draussen

 

Ich habe für meine Studenten (und vor allem für mich) eine neue MQTT-Repräsentation der Tinkerforge-Device erstellt.

 

Dabei ist jedes Device als 'Service' ausgeführt, welches

 

Anfragen jeweils über Intent-Topics entgegen nimmt (Der Service ist darauf subscribed).

 

Antwort darauf in Event- und Status-Topics ausgibt (Der Service published dort drauf).

 

Jede Device-Klasse ist in einer eigenen MQTT-Topic (description) beschrieben.

 

Die Implementation auf Dynamik und Robustheit aus und erwartet, dass die Bandbreite der MQTT-Anbindung auch mal schlecht ist. Deshalb werden sämtliche Events als "Array of Events" versandt, sodass auf keinen Fall ein Event verpasst wird (Vielleicht aber halt eine Liste von veralteten Events daher kommt).

Als Syntax wurde YAML gewählt, "weil diese dem Menschen einfach noch am nächsten liegt" (Aussage eines Studenten der auf diesem Gebiet die Bachelorarbeit gemacht hat).

 

 

Noch wird die Implementierung mit heisser Nadel weiter gestrickt und muss bestimmt noch ein wenig abkühlen (-> Dokumentiert werden) ehe sie als 'Rock-Solid' gelten darf.... Aber das ist das Ziel... darauf arbeite ich hin.

 

Dennoch, für mutige "Probierer", welche sich in MQTT und Tinkerforge ein wenig zu Hause fühlen sei die Sache bereits dienlich.

 

 

https://github.com/knr1/ch.quantasy.tinkerforge.mqtt.gateway

 

 

P.S.

Ich habe versucht, mich so nahe wie möglich an der Tinkerforge (Java) Dokumentation zu halten, sodass es sich für einen Tinkerforge-ler sehr natürlich anfühlt.

Bloss bei einzelnen z.B. LEDStrip habe ich eine Vereinfachung für den Benutzer vorgenommen... So muss man sich nicht um das LED-Handling kümmern, kann einfach nur die kompletten Daten für ein neues Frame hochsenden.

 

 

Link zu diesem Kommentar
Share on other sites

danke ! danke !

 

habe partiell auch schon angefangen den eher schmucklosen und "rohen" tf-mqtt zu redesignen mit verschiedenen python-libs, aber - die zeitnot - arrrgh

 

ich habe schon viele überlegungen angestellt, welche "middleware" am passendsten wäre als "breakout" einer stackfarm.

 

vielleicht hat ja wer ideen wie eine weitere "verdichtung" bzw. aggregierung von events & eventuell eine rudimentäre state-machine aussehen könnte ?

 

hat vllt. wer da eine brauchbare implementierung eines petrinetzes o.ä. mal versucht ?

 

hat wer sonstige ideen bzw. implementierungsversuche angestellt ??

Link zu diesem Kommentar
Share on other sites

  • 1 month later...

Die Library schreitet mutig voran und unterstützt bereits eine nette Menge an Bricks und Bricklets. Nun ist auch noch NFC dazugekommen, welches das ganze NFC-Handling um einiges vereinfacht!

 

Die Library arbeitet intern mit Callbacks und ist stark parallelisiert.

 

Wie nutzt man die Library:

Um einen Stack (z.B. USB) verwalten zu können muss folgende Message versandt werden:

 

Topic: TF/Manager/stack/address/add
Message: localhost

 

Es können beliebige weitere Stacks verwaltet werden (Bsp: via wlan):

Topic: TF/Manager/stack/address/add
Message: 192.168.1.97

 

 

 

Um eine LCD-Display (mit UID a1e) anzusteuern:

Topic: TF/LCD20x4/a1e/intent/backlight
Message: true

 

Um NFC-Tags discovern zu können (UID oop):

Topic: TF/NfcRfid/ouu/intent/scanning/callbackPeriod
Message: 1000

 

Um eine Temperatur auslesen zu können (UID aad):

Topic: TF/NfcRfid/aad/intent/scanning/callbackPeriod
Message: 1000

 

Dabei ist es absolut egal, an welchem Stack sich ein Sensor/Aktor befindet, der wird immer über seinen Typ und UID identifiziert.

 

 

Wäre toll, wenn diese Library auch von anderen benutzt werden könnte, so würde ich Feedback erlangen.

 

https://github.com/knr1/ch.quantasy.tinkerforge.mqtt.gateway

 

@ piwo: Stimmt, das nächste wäre nun eine state-machine... Aber he, der Sommer ist noch laaaaang ;-)

 

Link zu diesem Kommentar
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.

Gast
Reply to this topic...

×   Du hast formatierten Text eingefügt.   Formatierung jetzt entfernen

  Only 75 emoji are allowed.

×   Dein Link wurde automatisch eingebettet.   Einbetten rückgängig machen und als Link darstellen

×   Dein vorheriger Inhalt wurde wiederhergestellt.   Clear editor

×   Du kannst Bilder nicht direkt einfügen. Lade Bilder hoch oder lade sie von einer URL.

×
×
  • Neu erstellen...