====== Workshop: RESTful Services mit Contiki ====== ==== 1. Installation der Entwicklungsumgebung: ==== * Die Installation von [[http://www.contiki-os.org/start.html|Instant Contiki]] benötigt [[http://www.vmware.com/go/downloadplayer/|VMWare Player]], oder [[https://www.virtualbox.org/wiki/Downloads|Virtualbox]] * Anmeldung an Instant Contiki mit dem Passwort: ''user'' * Die folgende Beschreibung bezieht sich immer auf das Quellcode-Verzeichnis: ''/home/user/contiki-2.7/'' ==== 2. Anpassung der Contiki-Einstellungen ==== Im Workshop wollen wir Contiki-Anwendungen direkt auf dem Entwicklungsrechner ausführen. Dazu müssen einige Veränderungen an den Quellcode-Dateien vorgenommen werden, um z.B. eine optimale Netzunterstützung zu gewährleisten. === 2.1 Download der Folien und Software === - Die Folien zum Vortrag können über diesen [[http://prof.beuth-hochschule.de/fileadmin/user/scheffler/Vortraege/6LoWPAN_REST.pdf|Link]] heruntergeladen werden. - Die für diesen Workshop geänderten Contiki Dateien finden Sie hier: {{:contiki:rest:contiki-2.7.zip|}} - Die Dateien der Webanwendung finden sie hier: {{:contiki:rest:rest_demo.zip|}} === 2.2 Anpassung der Linux-Netzwerkeinstellungen === Die Netzwerkverbindung zum Host-PC erfolgt über NAT. Die IPv6 Adresse des Ethernet-Interface des Linux Guests wird mit folgendem Kommando konfiguriert: sudo ifconfig eth0 add fdfa::9/64 === 2.3 Anpassung der Contiki-Netzwerkeinstellungen === In der Datei ''/contiki-2.7/platform/minimal-net/contiki-conf.h'': - Aktivieren des ULA-Präfixes in Zeile 79: #define HARD_CODED_ADDRESS "fdfd::" //assign prefix; address becomes fdfd::206:98ff:fe00:232 } - Dektivieren des RPL-Routings in Zeile 93:#define UIP_CONF_IPV6_RPL 0 - Deaktivieren der Router-Funktion in Zeile 94:#define RPL_BORDER_ROUTER 0 - Vergrößern des Paketpuffers durch Einfügen der Zeile 95: #define UIP_CONF_BUFFER_SIZE 1300 === 2.4 Anpassung des Makefiles === In der Datei ''/contiki-2.7/examples/rest-example/Makefile'': - Übersetzungsziel des Makefiles ändern: all: rest-server-example - Kein COAP verwenden: WITH_COAP = 0 - Compileflags für IPv6 hinzufügen: CFLAGS += -DUIP_CONF_IPV6=1 ==== 3. Übersetzen des RESTful Webservices ==== Im Anschluss kann der RESTful Webserver von Contiki mit Hilfe des Makefiles übersetzt werden: make TARGET=minimal-net Sollte es notwenig sein nachträglich weitere Änderungen am Makefile durchzuführen, kann das Projekt vor der erneuten Übersetzung zurückgesetzt werden: make TARGET=minimal-net clean ==== 4. Ausführung des REST-Servers und Anpassung des Netzwerks ==== Nach der erfolgreichen Übersetzung kann die Anwendung gestartet werden: sudo ./rest-server-example.minimal-net Contiki richtet dabei ein eigenes Netzwerkinterface ''tap0'' ein. Für den Netzzugriff auf die IPv6-ULA muss über ein weiteres Terminalfenster dieses Interface noch entsprechend konfiguriert werden ( :!: Achtung: bei jedem Neustart der Contiki-Anwendung erforderlich): sudo ifconfig tap0 add fdfd::ff:fe00:10/64 Anschließend kann über den Webbrowser des Entwicklungssystems auf den Contiki-Service zugegriffen werden. Dazu muss in der Adresszeile [[http://[fdfd::206:98ff:fe00:232]:8080/helloworld]] eingegeben werden.