diff rust/src/config.rs @ 595:e87655ed8429 rust

add config
author Matt Johnston <matt@ucc.asn.au>
date Thu, 05 Jan 2017 23:26:00 +0800
parents
children ca8102feaca6
line wrap: on
line diff
--- /dev/null	Thu Jan 01 00:00:00 1970 +0000
+++ b/rust/src/config.rs	Thu Jan 05 23:26:00 2017 +0800
@@ -0,0 +1,74 @@
+extern crate toml;
+
+use toml::{Encoder,Decoder};
+use serde::Serializer;
+use serde::Serialize;
+
+#[derive(Deserialize,Serialize,Debug)]
+#[allow(non_snake_case)]
+pub struct Config {
+    FRIDGE_SLEEP: u32,
+    SENSOR_SLEEP: u32,
+    UPLOAD_SLEEP: u32,
+
+    FRIDGE_DELAY: u32,
+    FRIDGE_WORT_INVALID_TIME: u32,
+
+    MAX_READINGS: u32,
+
+    PARAMS_FILE: String,
+
+    SENSOR_BASE_DIR: String,
+    FRIDGE_GPIO_PIN: u32,
+
+    AMBIENT_NAME: String,
+    FRIDGE_NAME: String,
+    WORT_NAME: String,
+    INTERNAL_TEMPERATURE: String,
+
+    HMAC_KEY: String,
+    SERVER_URL: String,
+    UPDATE_URL: String, 
+    SETTINGS_URL: String,
+}
+
+impl Config {
+
+    pub fn new() -> Self {
+        Config {
+            FRIDGE_SLEEP: 60, // this value works. may affect the algorithm
+            SENSOR_SLEEP: 15, // same for this.
+            UPLOAD_SLEEP: 83, // nice and prime
+
+            FRIDGE_DELAY: 600, // 10 mins, to avoid fridge damage from frequent cycling off/on
+            FRIDGE_WORT_INVALID_TIME: 300, // 5 mins
+
+            // 12 hours of "offline" readings stored
+            MAX_READINGS: 12*60*60 / 15, // 15 is SENSOR_SLEEP
+
+            //PARAMS_FILE: os.path.join(os.path.dirname(__file__), "tempserver.conf")
+            PARAMS_FILE: "tempserver.conf".to_string(),
+
+            SENSOR_BASE_DIR: "/sys/devices/w1_bus_master2".to_string(),
+            FRIDGE_GPIO_PIN: 17,
+            //WORT_NAME: "28-0000042cf4dd".to_string(),
+            //FRIDGE_NAME: "28-0000042cccc4".to_string(),
+            //AMBIENT_NAME: "28-0000042c6dbb".to_string(),
+            AMBIENT_NAME: "missingambient".to_string(),
+            FRIDGE_NAME: "28-0000042c6dbb".to_string(),
+            WORT_NAME: "28-0000042cccc4".to_string(), // was fridge
+            INTERNAL_TEMPERATURE: "/sys/class/thermal/thermal_zone0/temp".to_string(),
+
+            HMAC_KEY: "a key".to_string(),
+            SERVER_URL: "https://evil.ucc.asn.au/~matt/templog".to_string(),
+            UPDATE_URL: "https://evil.ucc.asn.au/~matt/templog/update".to_string(),
+            SETTINGS_URL: "https://evil.ucc.asn.au/~matt/templog/get_settings".to_string(),
+        }
+    }
+
+    pub fn to_toml_string(self) -> String {
+        let mut e = toml::Encoder::new();
+        self.serialize(&mut e).unwrap();
+        toml::Value::Table(e.toml).to_string()
+    }
+}