changes
This commit is contained in:
parent
b4ad668620
commit
1f71b94238
@ -197,6 +197,13 @@
|
|||||||
"zones_allow_external_fillets": true,
|
"zones_allow_external_fillets": true,
|
||||||
"zones_use_no_outline": true
|
"zones_use_no_outline": true
|
||||||
},
|
},
|
||||||
|
"ipc2581": {
|
||||||
|
"dist": "",
|
||||||
|
"distpn": "",
|
||||||
|
"internal_id": "",
|
||||||
|
"mfg": "",
|
||||||
|
"mpn": ""
|
||||||
|
},
|
||||||
"layer_presets": [],
|
"layer_presets": [],
|
||||||
"viewports": []
|
"viewports": []
|
||||||
},
|
},
|
||||||
@ -1000,14 +1007,75 @@
|
|||||||
"gencad": "",
|
"gencad": "",
|
||||||
"idf": "",
|
"idf": "",
|
||||||
"netlist": "PlantCtrlESP32.net",
|
"netlist": "PlantCtrlESP32.net",
|
||||||
|
"plot": "",
|
||||||
|
"pos_files": "",
|
||||||
"specctra_dsn": "",
|
"specctra_dsn": "",
|
||||||
"step": "",
|
"step": "",
|
||||||
|
"svg": "",
|
||||||
"vrml": ""
|
"vrml": ""
|
||||||
},
|
},
|
||||||
"page_layout_descr_file": ""
|
"page_layout_descr_file": ""
|
||||||
},
|
},
|
||||||
"schematic": {
|
"schematic": {
|
||||||
"annotate_start_num": 0,
|
"annotate_start_num": 0,
|
||||||
|
"bom_fmt_presets": [],
|
||||||
|
"bom_fmt_settings": {
|
||||||
|
"field_delimiter": ",",
|
||||||
|
"keep_line_breaks": false,
|
||||||
|
"keep_tabs": false,
|
||||||
|
"name": "CSV",
|
||||||
|
"ref_delimiter": ",",
|
||||||
|
"ref_range_delimiter": "",
|
||||||
|
"string_delimiter": "\""
|
||||||
|
},
|
||||||
|
"bom_presets": [],
|
||||||
|
"bom_settings": {
|
||||||
|
"exclude_dnp": false,
|
||||||
|
"fields_ordered": [
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Reference",
|
||||||
|
"name": "Reference",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": true,
|
||||||
|
"label": "Value",
|
||||||
|
"name": "Value",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Datasheet",
|
||||||
|
"name": "Datasheet",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Footprint",
|
||||||
|
"name": "Footprint",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": false,
|
||||||
|
"label": "Qty",
|
||||||
|
"name": "${QUANTITY}",
|
||||||
|
"show": true
|
||||||
|
},
|
||||||
|
{
|
||||||
|
"group_by": true,
|
||||||
|
"label": "DNP",
|
||||||
|
"name": "${DNP}",
|
||||||
|
"show": true
|
||||||
|
}
|
||||||
|
],
|
||||||
|
"filter_string": "",
|
||||||
|
"group_symbols": true,
|
||||||
|
"name": "Grouped By Value",
|
||||||
|
"sort_asc": true,
|
||||||
|
"sort_field": "Reference"
|
||||||
|
},
|
||||||
|
"connection_grid_size": 50.0,
|
||||||
"drawing": {
|
"drawing": {
|
||||||
"dashed_lines_dash_length_ratio": 12.0,
|
"dashed_lines_dash_length_ratio": 12.0,
|
||||||
"dashed_lines_gap_length_ratio": 3.0,
|
"dashed_lines_gap_length_ratio": 3.0,
|
||||||
@ -1021,6 +1089,11 @@
|
|||||||
"intersheets_ref_suffix": "",
|
"intersheets_ref_suffix": "",
|
||||||
"junction_size_choice": 3,
|
"junction_size_choice": 3,
|
||||||
"label_size_ratio": 0.25,
|
"label_size_ratio": 0.25,
|
||||||
|
"operating_point_overlay_i_precision": 3,
|
||||||
|
"operating_point_overlay_i_range": "~A",
|
||||||
|
"operating_point_overlay_v_precision": 3,
|
||||||
|
"operating_point_overlay_v_range": "~V",
|
||||||
|
"overbar_offset_ratio": 1.23,
|
||||||
"pin_symbol_size": 0.0,
|
"pin_symbol_size": 0.0,
|
||||||
"text_offset_ratio": 0.08
|
"text_offset_ratio": 0.08
|
||||||
},
|
},
|
||||||
@ -1046,6 +1119,7 @@
|
|||||||
"spice_external_command": "spice \"%I\"",
|
"spice_external_command": "spice \"%I\"",
|
||||||
"spice_model_current_sheet_as_root": true,
|
"spice_model_current_sheet_as_root": true,
|
||||||
"spice_save_all_currents": false,
|
"spice_save_all_currents": false,
|
||||||
|
"spice_save_all_dissipations": false,
|
||||||
"spice_save_all_voltages": false,
|
"spice_save_all_voltages": false,
|
||||||
"subpart_first_id": 65,
|
"subpart_first_id": 65,
|
||||||
"subpart_id_separator": 0
|
"subpart_id_separator": 0
|
||||||
@ -1053,7 +1127,7 @@
|
|||||||
"sheets": [
|
"sheets": [
|
||||||
[
|
[
|
||||||
"c26e8d55-0b6e-4c4e-b7c8-b1fed973201c",
|
"c26e8d55-0b6e-4c4e-b7c8-b1fed973201c",
|
||||||
""
|
"Root"
|
||||||
]
|
]
|
||||||
],
|
],
|
||||||
"text_variables": {}
|
"text_variables": {}
|
||||||
|
File diff suppressed because it is too large
Load Diff
@ -1,6 +1,6 @@
|
|||||||
use std::sync::{atomic::AtomicBool, Arc, Mutex};
|
use std::sync::{atomic::AtomicBool, Arc, Mutex};
|
||||||
|
|
||||||
use chrono::{DateTime, Datelike, Duration, NaiveDateTime, Timelike};
|
use chrono::{DateTime, Datelike, TimeDelta, Timelike};
|
||||||
use chrono_tz::{Europe::Berlin, Tz};
|
use chrono_tz::{Europe::Berlin, Tz};
|
||||||
|
|
||||||
use esp_idf_hal::delay::Delay;
|
use esp_idf_hal::delay::Delay;
|
||||||
@ -169,7 +169,7 @@ fn safe_main() -> anyhow::Result<()> {
|
|||||||
Ok(cur) => cur,
|
Ok(cur) => cur,
|
||||||
Err(err) => {
|
Err(err) => {
|
||||||
log::error!("time error {}", err);
|
log::error!("time error {}", err);
|
||||||
NaiveDateTime::from_timestamp_millis(0).unwrap().and_utc()
|
DateTime::from_timestamp_millis(0).unwrap()
|
||||||
}
|
}
|
||||||
};
|
};
|
||||||
//check if we know the time current > 2020
|
//check if we know the time current > 2020
|
||||||
@ -862,7 +862,7 @@ fn determine_state_target_moisture_for_plant(
|
|||||||
state.no_water = true;
|
state.no_water = true;
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
let duration = Duration::minutes((plant_config.pump_cooldown_min).into());
|
let duration = TimeDelta::try_minutes(plant_config.pump_cooldown_min as i64).unwrap();
|
||||||
let next_pump = board.last_pump_time(plant) + duration;
|
let next_pump = board.last_pump_time(plant) + duration;
|
||||||
if next_pump > cur {
|
if next_pump > cur {
|
||||||
let europe_time = next_pump.with_timezone(&Berlin);
|
let europe_time = next_pump.with_timezone(&Berlin);
|
||||||
@ -913,7 +913,7 @@ fn determine_next_plant(
|
|||||||
);
|
);
|
||||||
}
|
}
|
||||||
config::Mode::TimerOnly => {
|
config::Mode::TimerOnly => {
|
||||||
let duration = Duration::minutes((plant_config.pump_cooldown_min).into());
|
let duration = TimeDelta::try_minutes(plant_config.pump_cooldown_min as i64).unwrap();
|
||||||
let next_pump = board.last_pump_time(plant) + duration;
|
let next_pump = board.last_pump_time(plant) + duration;
|
||||||
if next_pump > cur {
|
if next_pump > cur {
|
||||||
let europe_time = next_pump.with_timezone(&Berlin);
|
let europe_time = next_pump.with_timezone(&Berlin);
|
||||||
@ -928,7 +928,7 @@ fn determine_next_plant(
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
config::Mode::TimerAndDeadzone => {
|
config::Mode::TimerAndDeadzone => {
|
||||||
let duration = Duration::minutes((60 * plant_config.pump_cooldown_min).into());
|
let duration = TimeDelta::try_minutes(plant_config.pump_cooldown_min as i64).unwrap();
|
||||||
let next_pump = board.last_pump_time(plant) + duration;
|
let next_pump = board.last_pump_time(plant) + duration;
|
||||||
if next_pump > cur {
|
if next_pump > cur {
|
||||||
let europe_time = next_pump.with_timezone(&Berlin);
|
let europe_time = next_pump.with_timezone(&Berlin);
|
||||||
|
@ -23,7 +23,7 @@ use std::ffi::CString;
|
|||||||
use std::fs::File;
|
use std::fs::File;
|
||||||
use std::path::Path;
|
use std::path::Path;
|
||||||
|
|
||||||
use chrono::{DateTime, NaiveDateTime, Utc};
|
use chrono::{DateTime, Utc};
|
||||||
use ds18b20::Ds18b20;
|
use ds18b20::Ds18b20;
|
||||||
use std::result::Result::Ok as OkStd;
|
use std::result::Result::Ok as OkStd;
|
||||||
use std::str::FromStr;
|
use std::str::FromStr;
|
||||||
@ -277,8 +277,7 @@ impl PlantCtrlBoardInteraction for PlantCtrlBoard<'_> {
|
|||||||
|
|
||||||
fn last_pump_time(&self, plant: usize) -> chrono::DateTime<Utc> {
|
fn last_pump_time(&self, plant: usize) -> chrono::DateTime<Utc> {
|
||||||
let ts = unsafe { LAST_WATERING_TIMESTAMP }[plant];
|
let ts = unsafe { LAST_WATERING_TIMESTAMP }[plant];
|
||||||
let timestamp = NaiveDateTime::from_timestamp_millis(ts).unwrap();
|
return DateTime::from_timestamp_millis(ts).unwrap();
|
||||||
DateTime::<Utc>::from_naive_utc_and_offset(timestamp, Utc)
|
|
||||||
}
|
}
|
||||||
|
|
||||||
fn store_last_pump_time(&mut self, plant: usize, time: chrono::DateTime<Utc>) {
|
fn store_last_pump_time(&mut self, plant: usize, time: chrono::DateTime<Utc>) {
|
||||||
@ -322,9 +321,9 @@ impl PlantCtrlBoardInteraction for PlantCtrlBoard<'_> {
|
|||||||
fn time(&mut self) -> Result<chrono::DateTime<Utc>> {
|
fn time(&mut self) -> Result<chrono::DateTime<Utc>> {
|
||||||
let time = EspSystemTime {}.now().as_millis();
|
let time = EspSystemTime {}.now().as_millis();
|
||||||
let smaller_time = time as i64;
|
let smaller_time = time as i64;
|
||||||
let local_time = NaiveDateTime::from_timestamp_millis(smaller_time)
|
let local_time = DateTime::from_timestamp_millis(smaller_time)
|
||||||
.ok_or(anyhow!("could not convert timestamp"))?;
|
.ok_or(anyhow!("could not convert timestamp"))?;
|
||||||
Ok(local_time.and_utc())
|
Ok(local_time)
|
||||||
}
|
}
|
||||||
|
|
||||||
fn sntp(&mut self, max_wait_ms: u32) -> Result<chrono::DateTime<Utc>> {
|
fn sntp(&mut self, max_wait_ms: u32) -> Result<chrono::DateTime<Utc>> {
|
||||||
@ -920,9 +919,8 @@ impl CreatePlantHal<'_> for PlantHal {
|
|||||||
);
|
);
|
||||||
for i in 0..PLANT_COUNT {
|
for i in 0..PLANT_COUNT {
|
||||||
let smaller_time = LAST_WATERING_TIMESTAMP[i];
|
let smaller_time = LAST_WATERING_TIMESTAMP[i];
|
||||||
let local_time = NaiveDateTime::from_timestamp_millis(smaller_time)
|
let utc_time = DateTime::from_timestamp_millis(smaller_time)
|
||||||
.ok_or(anyhow!("could not convert timestamp"))?;
|
.ok_or(anyhow!("could not convert timestamp"))?;
|
||||||
let utc_time = local_time.and_utc();
|
|
||||||
let europe_time = utc_time.with_timezone(&Berlin);
|
let europe_time = utc_time.with_timezone(&Berlin);
|
||||||
|
|
||||||
println!(
|
println!(
|
||||||
|
Loading…
Reference in New Issue
Block a user