1
 2
 3
 4
 5
 6
 7
 8
 9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
#![doc(
    html_logo_url = "https://zzeroo.github.io/share/zzeroo-logo.png",
    html_favicon_url = "https://zzeroo.github.io/share/favicon.ico",
    html_root_url = "https://gaswarnanlagen.com/"
)]
#![feature(plugin)]
#![plugin(rocket_codegen)]

//! Server Komponente der **xMZ-Plattform**
//!
//! |||
//! |:---|:------|
//! |**master:**|[![Build Status](https://travis-ci.org/Kliemann-Service-GmbH/xmz-server.svg?branch=master)](https://travis-ci.org/Kliemann-Service-GmbH/xmz-server) [![Code Coverage](https://codecov.io/gh/Kliemann-Service-GmbH/xmz-server/branch/master/graph/badge.svg)](https://codecov.io/gh/Kliemann-Service-GmbH/xmz-server)|
//! |**development:**|[![Build Status](https://travis-ci.org/Kliemann-Service-GmbH/xmz-server.svg?branch=development)](https://travis-ci.org/Kliemann-Service-GmbH/xmz-server) [![Code Coverage](https://codecov.io/gh/Kliemann-Service-GmbH/xmz-server/branch/development/graph/badge.svg)](https://codecov.io/gh/Kliemann-Service-GmbH/xmz-server)|
//!
//! Der Server ist die Kern Komponente der ['xMZ-Plattform'](https://github.com/Kliemann-Service-GmbH/xMZ-Plattform).
//! Zu seinen Aufgaben zählen zum Beispiel das Auslesen der Sensoren sowie der Auswertung der
//! Sensor-Messzellen und das Schalten der diversen Ausgänge (Outputs), wie etwa Relais, LEDs und
//! angeschlossene IO Module.
//!
//! * **Dokumentation:** [https://kliemann-service-gmbh.github.io/xmz-server](https://kliemann-service-gmbh.github.io/xmz-server)
//! * **Quellcode:** [https://github.com/Kliemann-Service-GmbH/xmz-server](https://github.com/Kliemann-Service-GmbH/xmz-server)
//!
//! # Struktur des Servers
//!
//! * Server
//!     * `<Sensor>`        - Ein `Server` kann n Sensoren verwalten
//!         * `<Messzelle>` - ein `Sensor` besizt n `Messzelle`e
//!     * `<Zonen>`
//!         * `<&Messzellen`> - eine `Zone` besitzt n Verweise auf `Messzelle`n
//!         * `<Schaltpunkt>` - eine `Zone` besitzt n `Schaltpunkt`e
//!             * `<Schwellwert>` - ein `Schaltpunkt` besitzt n `Schwellwert`e
//!             * `<Aktion>`  - ein `Schaltpunkt` besitzt n `Aktion`en
//!

#[macro_use]
extern crate configure;
#[macro_use]
extern crate log;
#[macro_use]
extern crate serde_derive;
extern crate bincode;
extern crate rand;
extern crate rocket;
extern crate rocket_contrib;
extern crate serde;
extern crate serde_json;
extern crate toml;

mod api;
mod config; // Konfiguration via Umgebungsvariablen: https://boats.gitlab.io/blog/post/2018-01-18-configure/
mod error;  // Mögliche Fehler die im Serverbetrieb auftreten können
pub mod action; // Liste von zu schaltenden Ausgängen (`output`)
pub mod configuration; // Datenstruktur zur Erstellung des Servers aus der Konfigurationsdatei `xmz-server.toml`
pub mod messzelle; // Einzelne Sensor Messzelle, sitzt in der Regel auf einer Sensor Platine (`sensor`)
pub mod output; // Ausgänge die vom Server Prozess geschalten werden können (z.B. LEDs, Relais, IO Module)
pub mod prelude; // Nützliche Traits und Funktionen die alle Teile dieses Projekts verwenden
pub mod runtime_info; // Datentrukturen zur Erstellen der Server Instanz aus den Laufzeitinformationen
pub mod schaltpunkt; // Liste von Schwellwerten (`schwellwert`) und Aktionen (`aktion`)
pub mod schwellwert; // Regel die wenn erfüllt zumeist Ausgänge schaltet
pub mod sensor; // Trait das die Eigenschaften aller vom Server unterstützten Sensoren beschreibt.
pub mod server; // Kernkomponente dieser Anwendung
pub mod zone; // Zonen die vom Server überwacht werden

pub use config::Config;
pub use error::ServerError;
pub use messzelle::Messzelle;
pub use sensor::Sensor;
pub use server::Server;
pub use zone::Zone;