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