====== 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.