2016-06-17 6 views
2

Ich spiele schon seit einiger Zeit mit Contiki und habe verschiedene Beispiele ausprobiert und eigene für die Simulationsumgebung und die reale Hardware geschrieben. Ich experimentiere nur mit eigenständigen Netzwerken, die zum Beispiel den Temperaturunterschied zwischen zwei Knoten messen und diese Daten dann mit anderen Geräten (PCs) über eine reine Text-RS232-Verbindung, Blink-LEDs und solche einfachen Dinge kommunizieren.Rime-Netzwerk mit dem Internet verbinden

Jetzt möchte ich ein komplizierteres System machen, in dem ich die Daten nicht einfach im Nur-Text-Format an eine Konsole weiterleite, sondern sie an eine Anwendung weiterleite, die sie wiederum an irgendeine Art von Web-Service sendet. umgekehrt, empfangen Sie Daten vom Web-Service, die an Knoten im Netzwerk zugestellt werden sollen. Es gibt eine Menge Beispiele und Tutorials, die diese Art von Setup beschreiben, aber alle (soweit ich weiß) konzentrieren sich auf den IP (v6) Stack und SLIP, um dies zu erreichen. Das Problem dabei ist, dass ich einen wirklich lausigen Programmierer habe und das Hochladen eines 50 kB Bildes dauert etwa 1,5 Minuten, so dass der Entwicklungszyklus pure Hölle ist. Ich habe auch kein Glück mit der Simulation, da meine Plattform im Moment nicht wirklich unterstützt wird.

Deshalb habe ich beschlossen, den Rime-Stack auszuprobieren, Bildgröße ist 1/3 der IPv6 und der Entwicklungszyklus ist jetzt einigermaßen akzeptabel (ich sollte wirklich einen anständigen JTAG-Programmierer bekommen ...) Inzwischen habe ich ein wenig Mühe, meinen Kopf um dieses neue Setup mit einem anderen Netzwerkstack zu wickeln, auf dem es wenig Informationen gibt. Obwohl es ziemlich einfach zu verstehen ist, bin ich mir nicht sicher, wie ich ein Rime-Netzwerk mit einem IP-Netzwerk verbinden würde und ob es von seinen Designern überhaupt möglich oder ratsam wäre.

Ich habe einige Ideen in meinem Kopf, von Ad-hoc-Kommunikation über eine serielle Verbindung zwischen einer Server-Anwendung auf dem PC und dem Kollektor-Knoten zu einem echten Rime Border Router, der sicherlich außerhalb meiner Liga ist, für jetzt .

Wie würden Sie darüber gehen? Es würde sicherlich für meinen einfachen experimentellen Fall funktionieren, nur einen Kollektorknoten zu haben, der die Daten vom Rime-Netzwerk sammelt und die gesammelten Daten über eine serielle Verbindung an die benutzerdefinierte Anwendung sendet, die den Rest der Magie tut, aber ich würde nicht möchte der Typ sein, der das Rad neu erfunden hat, und ich bin mir ziemlich sicher, dass Rime nicht für den Einsatz in einem Vakuum konzipiert wurde, also muss es zumindest einen empfohlenen Weg geben, dies zu tun?

+1

Application-Layer-Proxying über die serielle Leitung ist im Grunde der Weg zu gehen. Zumindest sind mir keine Lösungen bekannt, die es erlauben würden, IP mit Rime in niedrigeren Schichten zu überbrücken. Mir sind auch keine generischen Anwendungsschicht-über-Seriell-Line-Implementierungen bekannt, möglicherweise weil jede Anwendung unterschiedliche Anforderungen hat. Das generische Zeug wie Framing und Checksummen ist ziemlich einfach zu implementieren. – kfx

+0

Danke, dass du es richtig ausgedrückt hast, es hat mir das Ganze viel klarer gemacht. Ich habe über mein Problem nachgedacht und den Stack falsch verstanden. In meinem einfachen Szenario, mit einem einzigen Controller-Mote und ein paar Fernbedienungen, wird es ausreichen, die Anwendungsnachrichten über die serielle Leitung weiterzuleiten und sie an den Internet-Server zu übertragen und umgekehrt. – Viktor

Antwort

1

Rime ist ein wirklich einfacher Stack (mit einfachen meine ich einige Funktionality). Aber es ist für eine einfache Aufgabe schneller.
Sie müssen den Rime-Stack auf Ihrem Gateway programmieren. Somit können Ihr Board und das Gateway mit demselben Stack kommunizieren. Jetzt haben Sie die Daten auf Ihrem Gateway gesendet. Das Gateway kann nun die Daten mit IP an wen auch immer senden.

Wenn Sie mehr technische Details wünschen, bearbeiten Sie Ihre Frage mit einem spezifischeren technischen Kontext.

Btw JTAG ist ein Muss. (für industrielle Anwendung)

Bearbeiten: Eine andere Lösung besteht darin, einfach Ihre Daten von Ihrem Board zu Ihrem Gateway in Broadcast zu senden. Dann nimmt das Gateway die Daten und interpretiert sie. Die Nachteile dieser Methode ist, dass Sie irgendwie sicher sein müssen, dass Ihr Gateway nur die Daten Ihrer Karte interpretiert (nicht von anderen)

+0

Das macht Sinn. Ich nehme an, ich müsste die native Contiki-Plattform auf dem Gateway kombinieren, um den Rime-Stack und die traditionellen UNIX-Sockets für die IP-Konnektivität zu bekommen. Aber wie implementiert man die physikalische Verbindung zwischen dem Gateway und dem Board? Dies wird mit SLIP gemacht, wenn beide Enden einen IP-Stack ausführen, aber ich habe SLRime noch nicht gesehen :). Ich würde gerne eine spezifischere Frage stellen können, aber im Moment versuche ich nur, ein umfassendes Bild von allen Teilen zu bekommen und wie sie miteinander verbunden sind. Vielleicht kennen Sie ein Beispielsystem, von dem ich lernen könnte? – Viktor

+0

@Viktor Der Radio Stack ist völlig unabhängig vom oberen Stack (Rime/IP). Wenn Sie zum Beispiel ein CC2420 verwenden, wird es von contiki bereits verwaltet und Sie müssen es nur mit NETSTACk_RADIO.send()/init() aufrufen. Für Slip-Radio weiß ich nicht, ob sie es auf Ihrem Board/Gateway implementiert haben. Prüfen Sie. Wenn sie das getan haben, dann ist alles in Ordnung und du hast nichts für die Radio-Ebene zu tun. Entweder müssen Sie es implementieren (für Sie Gateway und Ihr Board). Offensichtlich müssen beide das gleiche Radio benutzen. –

Verwandte Themen