RegisterConfig aufgetrennt
This commit is contained in:
parent
698be221c0
commit
483d27750b
@ -1,6 +1,6 @@
|
|||||||
use serde::{Deserialize, Serialize};
|
use serde::{Deserialize, Serialize};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use crate::modbus_types::{ModbusRegisterConfig, ModbusCoilsConfig};
|
use crate::modbus_types::{ModbusCoilsConfig, ModbusInputRegisterConfig, ModbusHoldingRegisterConfig};
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct DefaultConfig {
|
pub struct DefaultConfig {
|
||||||
@ -46,8 +46,8 @@ pub struct AppConfig {
|
|||||||
pub influxdb: InfluxConfig,
|
pub influxdb: InfluxConfig,
|
||||||
pub modbus: ModbusConfig,
|
pub modbus: ModbusConfig,
|
||||||
pub modbus_coils: Option<Vec<HashMap<String, ModbusCoilsConfig>>>,
|
pub modbus_coils: Option<Vec<HashMap<String, ModbusCoilsConfig>>>,
|
||||||
pub modbus_input_register: Option<Vec<HashMap<String, ModbusRegisterConfig>>>,
|
pub modbus_input_register: Option<Vec<HashMap<String, ModbusInputRegisterConfig>>>,
|
||||||
pub modbus_holding_register: Option<Vec<HashMap<String, ModbusRegisterConfig>>>,
|
pub modbus_holding_register: Option<Vec<HashMap<String, ModbusHoldingRegisterConfig>>>,
|
||||||
}
|
}
|
||||||
|
|
||||||
#[derive(Debug, Default, Clone)]
|
#[derive(Debug, Default, Clone)]
|
||||||
|
|||||||
@ -11,7 +11,7 @@ mod modbus;
|
|||||||
mod app_state;
|
mod app_state;
|
||||||
pub mod modbus_types;
|
pub mod modbus_types;
|
||||||
use crate::config::{AppConfig, ModbusValueMaps};
|
use crate::config::{AppConfig, ModbusValueMaps};
|
||||||
use crate::modbus_types::{ModbusRegisterConfig, ModbusCoilsConfig};
|
use crate::modbus_types::{ModbusInputRegisterConfig, ModbusHoldingRegisterConfig, ModbusCoilsConfig};
|
||||||
use crate::app_state::AppState;
|
use crate::app_state::AppState;
|
||||||
|
|
||||||
async fn index(data: web::Data<AppState>) -> Result<HttpResponse> {
|
async fn index(data: web::Data<AppState>) -> Result<HttpResponse> {
|
||||||
@ -128,7 +128,8 @@ async fn settings_page(data: web::Data<AppState>) -> Result<HttpResponse> {
|
|||||||
#[derive(Serialize, Deserialize, Clone)]
|
#[derive(Serialize, Deserialize, Clone)]
|
||||||
#[serde(untagged)]
|
#[serde(untagged)]
|
||||||
enum SaveTableRows {
|
enum SaveTableRows {
|
||||||
Register(Vec<HashMap<String, ModbusRegisterConfig>>),
|
InputRegister(Vec<HashMap<String, ModbusInputRegisterConfig>>),
|
||||||
|
HoldingRegister(Vec<HashMap<String, ModbusHoldingRegisterConfig>>),
|
||||||
Coils(Vec<HashMap<String, ModbusCoilsConfig>>),
|
Coils(Vec<HashMap<String, ModbusCoilsConfig>>),
|
||||||
}
|
}
|
||||||
|
|
||||||
@ -146,14 +147,14 @@ async fn save_table(
|
|||||||
let conf_path = "paramod.yaml";
|
let conf_path = "paramod.yaml";
|
||||||
match req.table_id.as_str() {
|
match req.table_id.as_str() {
|
||||||
"modbus_input_register" => {
|
"modbus_input_register" => {
|
||||||
if let SaveTableRows::Register(rows) = req.rows.clone() {
|
if let SaveTableRows::InputRegister(rows) = req.rows.clone() {
|
||||||
config.modbus_input_register = Some(rows);
|
config.modbus_input_register = Some(rows);
|
||||||
} else {
|
} else {
|
||||||
return Ok(HttpResponse::BadRequest().body("Falscher Typ für input_register"));
|
return Ok(HttpResponse::BadRequest().body("Falscher Typ für input_register"));
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
"modbus_holding_register" => {
|
"modbus_holding_register" => {
|
||||||
if let SaveTableRows::Register(rows) = req.rows.clone() {
|
if let SaveTableRows::HoldingRegister(rows) = req.rows.clone() {
|
||||||
config.modbus_holding_register = Some(rows);
|
config.modbus_holding_register = Some(rows);
|
||||||
} else {
|
} else {
|
||||||
return Ok(HttpResponse::BadRequest().body("Falscher Typ für holding_register"));
|
return Ok(HttpResponse::BadRequest().body("Falscher Typ für holding_register"));
|
||||||
|
|||||||
@ -1,5 +1,5 @@
|
|||||||
use crate::config::{ModbusValueMaps, ModbusConfig};
|
use crate::config::{ModbusValueMaps, ModbusConfig};
|
||||||
use crate::modbus_types::{ModbusRegisterConfig, ModbusCoilsConfig};
|
use crate::modbus_types::{ModbusInputRegisterConfig, ModbusHoldingRegisterConfig, ModbusCoilsConfig};
|
||||||
use std::collections::HashMap;
|
use std::collections::HashMap;
|
||||||
use std::sync::{Arc, Mutex};
|
use std::sync::{Arc, Mutex};
|
||||||
use std::thread;
|
use std::thread;
|
||||||
@ -12,8 +12,8 @@ use std::net::SocketAddr;
|
|||||||
/// Startet einen Thread, der zyklisch Modbus-Register abfragt und ModbusValueMaps aktualisiert
|
/// Startet einen Thread, der zyklisch Modbus-Register abfragt und ModbusValueMaps aktualisiert
|
||||||
pub fn start_modbus_polling_thread(
|
pub fn start_modbus_polling_thread(
|
||||||
modbus_config: &ModbusConfig,
|
modbus_config: &ModbusConfig,
|
||||||
input_registers: &Option<Vec<HashMap<String, ModbusRegisterConfig>>>,
|
input_registers: &Option<Vec<HashMap<String, ModbusInputRegisterConfig>>>,
|
||||||
holding_registers: &Option<Vec<HashMap<String, ModbusRegisterConfig>>>,
|
holding_registers: &Option<Vec<HashMap<String, ModbusHoldingRegisterConfig>>>,
|
||||||
coils: &Option<Vec<HashMap<String, ModbusCoilsConfig>>>,
|
coils: &Option<Vec<HashMap<String, ModbusCoilsConfig>>>,
|
||||||
value_maps: Arc<Mutex<ModbusValueMaps>>,
|
value_maps: Arc<Mutex<ModbusValueMaps>>,
|
||||||
poll_interval: Duration,
|
poll_interval: Duration,
|
||||||
|
|||||||
@ -9,8 +9,19 @@ pub struct ModbusCoilsConfig {
|
|||||||
pub comment: Option<String>,
|
pub comment: Option<String>,
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|
||||||
#[derive(Debug, Serialize, Deserialize, Clone)]
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
pub struct ModbusRegisterConfig {
|
pub struct ModbusInputRegisterConfig {
|
||||||
|
pub addr: u16,
|
||||||
|
pub r#type: Option<String>,
|
||||||
|
pub factor: Option<f64>,
|
||||||
|
pub mqtt: Option<bool>,
|
||||||
|
pub influxdb: Option<bool>,
|
||||||
|
pub comment: Option<String>,
|
||||||
|
}
|
||||||
|
|
||||||
|
#[derive(Debug, Serialize, Deserialize, Clone)]
|
||||||
|
pub struct ModbusHoldingRegisterConfig {
|
||||||
pub addr: u16,
|
pub addr: u16,
|
||||||
pub r#type: Option<String>,
|
pub r#type: Option<String>,
|
||||||
pub factor: Option<f64>,
|
pub factor: Option<f64>,
|
||||||
|
|||||||
@ -44,8 +44,8 @@ async function saveSettings() {
|
|||||||
max_input_addr: parseInt(document.getElementById('modbus_max_input_addr').value, 10) || null,
|
max_input_addr: parseInt(document.getElementById('modbus_max_input_addr').value, 10) || null,
|
||||||
max_holding_addr: parseInt(document.getElementById('modbus_max_holding_addr').value, 10) || null,
|
max_holding_addr: parseInt(document.getElementById('modbus_max_holding_addr').value, 10) || null,
|
||||||
modbus_coils: null,
|
modbus_coils: null,
|
||||||
modbus_input_register: null,
|
modbus_input_register: null,
|
||||||
modbus_holding_register: null
|
modbus_holding_register: null,
|
||||||
};
|
};
|
||||||
|
|
||||||
// MQTT
|
// MQTT
|
||||||
|
|||||||
Loading…
Reference in New Issue
Block a user