Source Code: GitHub
This is an MQTT enabled smart plant that uses an ENC28J60 Ethernet controller connected to a Ti TM4C evaluation
board via SPI. Ethernet, IP, and ARP libraries were provided, with the TCP and MQTT implementations building on top
of those libraries, written from scratch in C. The TCP/IP implementation follows the RFC 793 spec, implementing the
full TCP state machine as outlined by it. The MQTT implementation follows the 3.1.1 protocol level, and operates at
a "send once" quality of service (QoS 0).
The plant could publish various properties such as the temperature, humidity, soil moisture, and light levels via
MQTT. It could also subscribe to topics, with one being a "moisture-setpoint" being the minimum moisture level
before the plant would need to be watered via a PWM water pump.
The project was a class-wide collaboration. Each person/team had a different part of a "smart home" to implement.
For example one team created a MQTT broker, one team implemented IFTTT-style rules, and etcetera.
This page is still under construction, however the full project source code is available in the link above on
GitHub.