Inhaltsverzeichnis
Eigene Contiki Projekte und Beispiele
Test TCP
MQTT
Minimal-net
- Starte das Contiki-Binary
./test-mqtt.minimal-net
- Das Binary stoppt und wartet auf eine Eingabe.
- Konfiguration der IP-Adresse von tap0
sudo ip -6 addr add aaaa::1/64 dev tap0
- MQTT subscriber starten auf Topic:
iot-2/#
- (optional) Wireshark kann jetzt auf
tap0
gestartet werden - Contiki-Binary durch Enter weiter laufen lassen.
Instant Contiki
Hier läuft ein MQTT Broker, gestartet mit mosquitto
mosquitto_sub -t '#' -v
{"d":{"myName":"BeagleBoard","Seq #":3,"Uptime (sec)":135,"Def Route":"Testnachricht","RSSI (dBm)":0}}
- LED Output
- Build Strings, etc
- Architecture for Nodes (Node - OpenWRT - mosquitto - Netconf?)
IPv6/RPL-Border-Router (SLIP)
Das Projekt ist hier dokumentiert: Contiki 3.0 auf dem @ANY2400 & @ANY900 USB Stick mit RPL-Border-Router und SLIP
UDP-IPv6
Dieses Beispiel wurde nicht modifiziert, aber mit dem Target minimal-net nach dieser Anleitung erfolgreich kompiliert. Es stellt ein UDP-Server und Client Programm bereit, die miteinander kommunizieren können.
Das Server Programm kann auch für sich allein mit netcat
getestet werden. Es erwartet Nachrichten auf Port 3000 mit dem Sourceport 3001.
https://github.com/tscheffl/contiki/tree/tscheffl-3-0.0/examples/udp-ipv6
sudo ip -6 addr add aaaa::1/64 dev tap0 netcat -u -p 3001 aaaa::206:98ff:fe00:232 3000
Webserver-IPv6
https://github.com/tscheffl/contiki/tree/tscheffl-3-0.0/examples/
Es wurde versucht den Code für die AN Solutions Module (AVR-zigbit) zu übersetzen.
Hat nicht funktioniert, Data-Segment etwas zu groß…
avr-size webserver6.avr-zigbit -C --mcu=atmega1281 AVR Memory Usage ---------------- Device: atmega1281 Program: 57082 bytes (43.6% Full) (.text + .data + .bootloader) Data: 11220 bytes (137.0% Full) (.data + .bss + .noinit) EEPROM: 8 bytes (0.2% Full) (.eeprom)
project-conf.h
und Makefile
des Projekts. Der Versuch den nano-Webserver einzubinden hat zu einer Reihe von Compile-Fehlern geführt.
#define PROCESS_CONF_NO_PROCESS_NAMES 1 #define UIP_CONF_TCP 1 #define UIP_CONF_UDP 0
CONTIKI_PROJECT=webserver6 all: $(CONTIKI_PROJECT) $(WITH_WEBSERVER) CFLAGS += -DPROJECT_CONF_H=\"project-conf.h\" CFLAGS += -ffunction-sections LDFLAGS += -Wl,--gc-sections,--undefined=_reset_vector__,--undefined=InterruptVectors,--undefined=_copy_data_init__,--undefined=_clear_bss_init__,--undefined=_end_of_init__ ifeq ($(WITH_WEBSERVER),) # #Set default webserver for different platforms #Although Makefile.include sets the default target, we need to know it now. # ifeq ($(TARGET),) -include Makefile.target endif ifeq ($(TARGET),sky) SMALL=1 WITH_WEBSERVER=webserver-nano else ifeq ($(TARGET),avr-raven) WITH_WEBSERVER=raven-webserver endif # endif ifneq ($(WITH_WEBSERVER),) APPS = $(WITH_WEBSERVER) ifeq ($(WITH_WEBSERVER),raven-webserver) APPS+=raven-lcd-interface endif #copy output to e.g. webserver-nano.sky, raven-webserver.avr-raven $(WITH_WEBSERVER) : $(CONTIKI_PROJECT) cp $(CONTIKI_PROJECT).$(TARGET) $(WITH_WEBSERVER).$(TARGET) @if (test -n "$(ELF_SIZE)");then $(ELF_SIZE) $(WITH_WEBSERVER).$(TARGET);fi else APPS=webserver all : $(CONTIKI_PROJECT) @if (test -n "$(ELF_SIZE)");then $(ELF_SIZE) $(CONTIKI_PROJECT).$(TARGET);fi endif DEFINES=UIP_CONF_TCP=1 DEFINES=PROCESS_CONF_NO_PROCESS_NAMES=1 # Make no RPL the default for minimal-net builds ifeq ($(TARGET),minimal-net) ifndef CONTIKI_WITH_RPL CONTIKI_WITH_RPL = 0 endif endif CONTIKI = ../.. CONTIKI_WITH_IPV6 = 1 include $(CONTIKI)/Makefile.include