annotate rust/src/config.rs @ 597:a440eafa84a9 rust

progress for debug
author Matt Johnston <matt@ucc.asn.au>
date Sat, 07 Jan 2017 00:56:39 +0800
parents ca8102feaca6
children d4fbfb5c46ff
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
rev   line source
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
1 extern crate toml;
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
2
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
3 use serde::Serialize;
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
4
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
5 #[derive(Deserialize,Serialize,Debug,Clone)]
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
6 #[allow(non_snake_case)]
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
7 pub struct Config {
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
8 pub SENSOR_SLEEP: u64,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
9 pub UPLOAD_SLEEP: u64,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
10
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
11 pub FRIDGE_DELAY: u64,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
12 pub FRIDGE_WORT_INVALID_TIME: u64,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
13
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
14 pub MAX_READINGS: u32,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
15
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
16 pub PARAMS_FILE: String,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
17
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
18 pub SENSOR_BASE_DIR: String,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
19 pub FRIDGE_GPIO_PIN: u32,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
20
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
21 pub AMBIENT_NAME: String,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
22 pub FRIDGE_NAME: String,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
23 pub WORT_NAME: String,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
24 pub INTERNAL_TEMPERATURE: String,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
25
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
26 pub HMAC_KEY: String,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
27 pub SERVER_URL: String,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
28 pub UPDATE_URL: String,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
29 pub SETTINGS_URL: String,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
30 }
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
31
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
32 impl Config {
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
33
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
34 pub fn new() -> Self {
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
35 Config {
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
36 SENSOR_SLEEP: 5,
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
37 UPLOAD_SLEEP: 83,
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
38
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
39 FRIDGE_DELAY: 600, // 10 mins, to avoid fridge damage from frequent cycling off/on
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
40 FRIDGE_WORT_INVALID_TIME: 300, // 5 mins
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
41
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
42 // 12 hours of "offline" readings stored
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
43 MAX_READINGS: 12*60*60 / 15, // 15 is SENSOR_SLEEP
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
44
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
45 //PARAMS_FILE: os.path.join(os.path.dirname(__file__), "tempserver.conf")
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
46 PARAMS_FILE: "tempserver.conf".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
47
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
48 SENSOR_BASE_DIR: "/sys/devices/w1_bus_master2".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
49 FRIDGE_GPIO_PIN: 17,
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
50 //WORT_NAME: "28-0000042cf4dd".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
51 //FRIDGE_NAME: "28-0000042cccc4".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
52 //AMBIENT_NAME: "28-0000042c6dbb".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
53 AMBIENT_NAME: "missingambient".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
54 FRIDGE_NAME: "28-0000042c6dbb".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
55 WORT_NAME: "28-0000042cccc4".to_string(), // was fridge
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
56 INTERNAL_TEMPERATURE: "/sys/class/thermal/thermal_zone0/temp".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
57
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
58 HMAC_KEY: "a key".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
59 SERVER_URL: "https://evil.ucc.asn.au/~matt/templog".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
60 UPDATE_URL: "https://evil.ucc.asn.au/~matt/templog/update".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
61 SETTINGS_URL: "https://evil.ucc.asn.au/~matt/templog/get_settings".to_string(),
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
62 }
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
63 }
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
64
596
ca8102feaca6 sensor takes config parameter
Matt Johnston <matt@ucc.asn.au>
parents: 595
diff changeset
65 pub fn to_toml_string(&self) -> String {
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
66 let mut e = toml::Encoder::new();
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
67 self.serialize(&mut e).unwrap();
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
68 toml::Value::Table(e.toml).to_string()
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
69 }
597
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
70
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
71 /*
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
72 pub fn parse(&mut self, s: &str) {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
73 let filename = "tempserver.conf";
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
74
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
75 let f = File::open(filename)
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
76 .map_err(|e| e.to_string())
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
77 .and_then(|mut f| {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
78 let mut s = String::new();
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
79 f.read_to_string(&mut s)
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
80 .map_err(|e| e.to_string())
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
81 .map(|_| s)
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
82 })
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
83 .and_then(|s| {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
84
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
85 .map_err(|e| e.to_string())
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
86 });
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
87
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
88 match f {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
89 Ok() => {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
90
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
91 },
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
92 Err(e) => {
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
93 debug!("Error loading config file {}: {}",
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
94 filename, e);
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
95
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
96 }
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
97 }
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
98
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
99 }
a440eafa84a9 progress for debug
Matt Johnston <matt@ucc.asn.au>
parents: 596
diff changeset
100 */
595
e87655ed8429 add config
Matt Johnston <matt@ucc.asn.au>
parents:
diff changeset
101 }