* Muraqib

Temperature and humidity sensor that sends its data via MQTT. The project is implemented using a Wemos D1 mini board with the following components:

- DHT22 temperature and humidity sensor
- Battery shield
- 3.7V 1000mAh Lithium battery

The sensor captures the data every 5 minutes and sends it to a MQTT broker and then enters deep sleep, it is important to save power as the device runs off a battery. This sensor is part of a project to grow mushrooms in a controlled environment.

** Pinout of the board

#+ATTR_HTML: :width 40%
[[./pinout.png]]

** Dependencies
- [[https://github.com/adafruit/DHT-sensor-library][Adafruit DHT sensor library]]
- [[https://github.com/adafruit/Adafruit_Sensor][Adafruit Unified Sensor Driver]]
- [[https://github.com/knolleary/pubsubclient][PubSubClient]]
- [[https://github.com/bblanchon/ArduinoJson][ArduinoJSON]]
** Configuration

In the data directory, there is a JSON file that allows the configuration of multiple values:

- ssid: WiFi network name
- psk: WiFi password
- mqtt_host: IP address of the MQTT broker
- mqtt_user: username that has write access on the MQTT broker
- mqtt_password: password for the user that has write access on the MQTT broker
- mqtt_port: port used by the MQTT broker
- mqtt_topic: channel name
- device_id: unique identifier of the sensor
- sleep_time: time interval between each data transmission
- connection_attempts: maximum connection attemps to the network

The file needs to be renamed to config.json

** Deployment

The software uses the Arduino framework and the development environment of [[https://platformio.org/][PlatformIO]], which offers better tooling than the official Arduino IDE.

1. Upload the configuration file to the board:

#+begin_src shell
pio run -t uploadfs
#+end_src

2. Compile the project

#+begin_src shell
pio run -t compile
#+end_src

3. Upload firmware

#+begin_src shell
pio run -t upload
#+end_src
