diff --git a/README.md b/README.md
new file mode 100644
index 0000000000000000000000000000000000000000..6029d9047090c865f99d5d6955e58cb5b0110a91
--- /dev/null
+++ b/README.md
@@ -0,0 +1,67 @@
+This is the StuStaNet Temperature Monitoring System.
+
+# Hardware Setup and Protocol
+
+The temperature sensors are ds18x20 sensors connected via the onewire protocol
+to an esp32. The esp is connected via usb-serial to the host computer.
+This sends roughly every second a measurement value from one of the sensors.
+After a complete round it sends an empty line.
+
+# Dependencies
+
+pyserial-asyncio. And >=python3.5.
+
+# Architecture
+The communications is done within the temperature_daemon.py file as well as
+error handling for the sensor measurements.
+It will then call functions in plugins to do the majority of the work.
+
+The plugins are located in the `plugins` folder.
+
+A plugin has to include a `def init(temperaturemonitor):` initializer which
+returns the plugin-class. See `plugins/warnings.py` for reference.
+
+To see which plugin functions are called with what arguments search for
+`call_plugin` in the whole tree.
+
+A plugin function can either be either async or not, both versions will be
+executed properly.
+
+Plugins can also call other plugins.
+
+# Configuration
+The system is configured via the `tempermon.ini` file, but the path can be changed
+by supplying a single argument to the main executable.
+
+It includes a bunch of default sections:
+
+* **serial**: settings for the serial connection
+* **\<pluginname>**: plugin specific settings
+* **\<one-wire-id>**: every other section is interpreted as a sensor configuration
+  section. The configured sensor name is used for the collectd graphs, so if a
+  sensor is replaced, also change its name.
+  If a sensor is missing from this list, it will generate warning mails, as well
+  as for extra sensors. Only leave the sensors commented in, that are actually
+  used.
+
+# Testing
+In `/tests` the testing architecture is set up.
+`run_tests.sh` creates a testing socket as well as a emulated collectd socket.
+Now testing can be started using the default configfile.
+
+# Existing Plugins
+If you create another plugin please add it to this list.
+
+## Collectd
+Store values into collectd when new sensor values are available as well as expose
+a generic graph-storing for other plugins
+
+## Mail
+Contains the emailing system as well as all email templates.
+Reacts to most `err_*` and `warn_` plugin calls and sends emails for them to the
+configured clients
+
+## Warnings
+Analyse all available sensors, create statistics and analsye them and create
+warnings, if required.
+Here we can adopt new warning strategies.