[package] categories = ["api-bindings", "gui", "network-programming"] description = "Метакрейт, импортирующий все другие крейты через флаги feature" edition = "2021" keywords = ["iot", "scada"] license = "MIT OR Apache-2.0" name = "rsiot" readme = "README.md" repository = "https://github.com/Konstantin-Dudersky/rsiot" rust-version = "1.75.0" version = "0.0.82" [dependencies] anyhow = { version = "1.0.80" } bincode = { version = "1.3.3" } bitvec = { version = "1.0.1" } byteorder = { version = "1.5.0" } chrono = { version = "0.4.35", features = ["serde"] } document-features = { version = "0.2.8" } getrandom = { version = "0.2", features = ["js"] } serde = { version = "1.0.197", features = ["derive"] } thiserror = { version = "1.0.57" } tracing = { version = "0.1.40", features = ["log"] } uuid = { version = "1.7.0", features = ["serde", "v4"] } async-trait = { version = "0.1.77", optional = true } axum = { version = "0.7.4", optional = true } clap = { version = "^4.4.18", features = ["derive"], optional = true } dotenvy = { version = "0.15.7", optional = true } embedded-svc = { version = "0.27.1", optional = true } envy = { version = "0.4.2", optional = true } heapless = { version = "0.8.0", optional = true } http = { version = "1.0.0", optional = true } instant = { version = "0.1.12", features = ["wasm-bindgen"], optional = true } jwt = { version = "0.16.0", optional = true } futures = { version = "0.3.30", optional = true } hmac = { version = "0.12.1", optional = true } leptos = { version = "0.6.12", features = ["csr"], optional = true } # leptos = { version = "0.7.0-alpha", features = ["csr"], optional = true } leptos_router = { version = "0.6.12", features = ["csr"], optional = true } log = { version = "0.4.21", optional = true } postcard = { version = "1.0.8", features = ["use-std"], optional = true } redis = { version = "0.25.0", features = ["tokio-comp"], optional = true } reqwest = { version = "0.12.0", features = ["json"], optional = true } rumqttc = { version = "0.24.0", optional = true } rppal = { version = "0.17.1", optional = true } palette = { version = "0.7.4", features = ["named"], optional = true } serde_json = { version = "1.0.113", optional = true } sha2 = { version = "0.10.8", optional = true } slint = { version = "1.4.1", optional = true } sqlx = { version = "0.7.3", features = [ "chrono", "macros", "postgres", "runtime-tokio", ], optional = true } surrealdb = { version = "1.2.0", optional = true } sysinfo = { version = "0.30.7", optional = true } teloxide = { version = "0.12.2", optional = true, features = ["macros"] } tokio = { version = "^1.37.0", features = [ "macros", "sync", "rt", "time", ], optional = true } tokio-modbus = { version = "0.11.0", default-features = false, features = [ "tcp", ], optional = true } tokio-tungstenite = { version = "0.21.0", optional = true } tokio-util = { version = "0.7.10", optional = true } toml = { version = "0.8.9", optional = true } tracing-subscriber = { version = "0.3.18", features = [ "env-filter", "chrono", ], optional = true } tower-http = { version = "0.5.1", features = [ "cors", "trace", ], optional = true } url = { version = "2.5.0", optional = true } web-sys = { version = "0.3.68", features = [ "Location", "Window", ], optional = true } rsiot-macros = { version = "0.0.72" } [target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64"))'.dependencies] tracing-loki = { version = "0.2.4", optional = true } [target.'cfg(target_arch = "wasm32")'.dependencies] gloo = { version = "0.11.0", features = [ "dialogs", "futures", "net", "storage", "timers", "utils", ], optional = true } tracing-web = { version = "0.1.3", optional = true } [dev-dependencies] serde_json = { version = "1.0.114" } tracing-subscriber = { version = "0.3.18", features = ["env-filter", "chrono"] } [target.'cfg(target_arch = "aarch64")'.dependencies] openssl = { version = "0.10", features = ["vendored"], optional = true } [target.'cfg(all(target_arch = "riscv32", target_vendor = "espressif", target_os = "espidf"))'.dependencies] esp-idf-svc = { version = "0.48.1", features = ["std"] } embedded-svc = { version = "0.27.1", optional = true } [target.'cfg(any(target_arch = "x86_64", target_arch = "aarch64"))'.dev-dependencies] tokio = { version = "^1.36.0", features = [ "macros", "sync", "rt", "time", "rt-multi-thread", ] } [build-dependencies] embuild = { version = "0.31.3", features = ["espidf"] } cfg_aliases = "0.2.0" [features] default = ["serde-json"] ## Конфигурирование через переменные env_vars = ["dep:clap", "dep:dotenvy", "dep:envy", "dep:toml", "dep:url"] ## Базовые компоненты executor = ["dep:async-trait", "dep:futures", "dep:tokio"] ## Настройка логгирования сообщений logging = [ "dep:log", "dep:openssl", "dep:tokio", "dep:tracing-loki", "dep:tracing-subscriber", "dep:tracing-web", "dep:url", ] ## Работа в однопоточном режиме single-thread = [] serde-json = ["dep:serde_json"] ## Компонент аутентификации cmp_auth = ["executor", "dep:jwt", "dep:hmac", "dep:sha2"] ## Компоненты для работы с микроконтроллером ESP cmp_esp = [ "executor", "single-thread", "dep:embedded-svc", "dep:heapless", "dep:postcard", "tokio?/time", ] ## Компонент http-клиент cmp_http_client = [ "executor", "dep:http", "dep:openssl", "dep:reqwest", "dep:url", ] ## Компонент http-клиент для платформы WASM cmp_http_client_wasm = [ "executor", "dep:http", "dep:instant", "dep:gloo", "dep:url", ] ## Компонент http-сервер cmp_http_server = ["executor", "dep:axum", "dep:tower-http"] ## Компонент сохранения в БД InfluxDB cmp_influxdb = ["executor", "dep:openssl", "dep:reqwest"] ## Комонент сохранения данных в файловой системе cmp_filesystem = ["executor", "tokio?/fs"] ## Компонент для создания интерфейсов на базе Leptos cmp_leptos = [ "executor", "dep:gloo", "dep:leptos", "dep:palette", "dep:url", "dep:web-sys", ] ## Компонент Modbus клиент cmp_modbus_client = ["executor", "dep:tokio-modbus"] ## Комонент клиента MQTT cmp_mqtt_client = ["executor", "dep:rumqttc"] ## Компонент ПЛК cmp_plc = ["executor", "dep:instant", "dep:gloo"] ## Работа с периферией Raspberry Pi cmp_raspberrypi = ["executor", "dep:rppal"] ## Компонент клиента Redis cmp_redis_client = ["executor", "dep:futures", "dep:redis", "dep:url"] ## Компонент пользовательского интерфейса, реализованного с помощью библиотеки Slint cmp_slint = ["executor", "dep:slint"] ## Компонент доступа к БД SurrealDB cmp_surrealdb = ["executor", "dep:surrealdb"] ## Компонент получает системную информацию cmp_system_info = ["executor", "dep:sysinfo"] ## Компонент бота telegram cmp_telegram = ["executor", "dep:teloxide"] ## Компонент сохранения в БД TimescaleDB cmp_timescaledb = ["executor", "dep:sqlx", "dep:url"] ## Компонент websocket клиента cmp_websocket_client = [ "executor", "dep:futures", "dep:tokio-tungstenite", "dep:url", ] ## Компонент websocket клиента для платформы WASM cmp_websocket_client_wasm = ["executor", "dep:futures", "dep:gloo", "dep:url"] ## Компонент websocket сервера cmp_websocket_server = [ "executor", "dep:futures", "dep:tokio-tungstenite", "dep:tokio-util", ] ## Хранение и загрузка сообщений используя Web Storage API браузера cmp_webstorage = ["executor", "dep:gloo"] [package.metadata.docs.rs] all-features = true rustdoc-args = ["--cfg", "docsrs"] targets = ["x86_64-unknown-linux-gnu", "wasm32-unknown-unknown"] cargo-args = ["-Zunstable-options", "-Zrustdoc-scrape-examples"] [[example]] name = "cmp_derive" path = "examples/cmp_derive/cmp_derive.rs" [[example]] name = "cmp_external_fn_process" path = "examples/cmp_external_fn_process/cmp_external_fn_process.rs" [[example]] name = "cmp_esp" path = "examples/cmp_esp/cmp_esp.rs" doc-scrape-examples = true [[example]] name = "cmp_esp_i2c_master_ads1115" path = "./examples/cmp_esp/cmp_esp_i2c_master_ads1115.rs" [[example]] name = "cmp_esp_i2c_master_bmp180" path = "./examples/cmp_esp/cmp_esp_i2c_master_bmp180.rs" [[example]] name = "cmp_esp_i2c_master_ds3231" path = "./examples/cmp_esp/cmp_esp_i2c_master_ds3231.rs" [[example]] name = "cmp_esp_i2c_master_pca9555" path = "./examples/cmp_esp/cmp_esp_i2c_master_pca9555.rs" [[example]] name = "cmp_esp_i2c_master_pcf8575" path = "./examples/cmp_esp/cmp_esp_i2c_master_pcf8575.rs" [[example]] name = "cmp_esp_i2c_master_ssd1306" path = "./examples/cmp_esp/cmp_esp_i2c_master_ssd1306.rs" [[example]] name = "cmp_esp_nvs" path = "examples/cmp_esp_nvs/cmp_esp_nvs.rs" [[example]] name = "cmp_filesystem" path = "./examples/cmp_filesystem/cmp_filesystem.rs" [[example]] name = "cmp_http_client" path = "examples/cmp_http_client/cmp_http_client.rs" [[example]] name = "cmp_raspberry_i2c_master_ads1115" path = "./examples/cmp_raspberrypi/cmp_raspberry_i2c_master_ads1115.rs" [[example]] name = "cmp_raspberry_i2c_master_bmp180" path = "./examples/cmp_raspberrypi/cmp_raspberry_i2c_master_bmp180.rs" [[example]] name = "cmp_raspberry_i2c_master_pcf8575" path = "./examples/cmp_raspberrypi/cmp_raspberry_i2c_master_pcf8575.rs" [[example]] name = "cmp_http_server" path = "examples/cmp_http_server/cmp_http_server.rs" [[example]] name = "cmp_influxdb" path = "examples/cmp_influxdb/cmp_influxdb.rs" [[example]] name = "cmp_inject_periodic" path = "examples/cmp_inject_periodic/cmp_inject_periodic.rs" [[example]] name = "create_signal_from_msg" path = "examples/cmp_leptos/create_signal_from_msg.rs" [[example]] name = "cmp_plc" path = "examples/cmp_plc/cmp_plc/main.rs" [[example]] name = "cmp_redis_client_publication" path = "examples/cmp_redis_client/publication.rs" [[example]] name = "cmp_redis_client_subscription" path = "examples/cmp_redis_client/subscription.rs" [[example]] name = "cmp_system_info" path = "examples/cmp_system_info/cmp_system_info.rs" [[example]] name = "cmp_surrealdb" path = "examples/cmp_surrealdb/cmp_surrealdb.rs" [[example]] name = "cmp_telegram" path = "./examples/cmp_telegram/cmp_telegram.rs" [[example]] name = "cmp_timescaledb" path = "examples/cmp_timescaledb/cmp_timescaledb.rs" [[example]] name = "cmp_websocket_client" path = "examples/cmp_websocket_client/cmp_websocket_client.rs" [[example]] name = "cmp_websocket_client_wasm" path = "examples/cmp_websocket_client_wasm/cmp_websocket_client_wasm.rs" [[example]] name = "executor_multi_thread" path = "examples/executor/executor-multi-thread/main.rs" [[example]] name = "executor_single_thread" path = "examples/executor/executor-single-thread/main.rs" [[example]] name = "env_vars" path = "examples/env_vars/env_vars.rs" [[example]] name = "message_new_macro" path = "examples/message/message_new_macro.rs" [profile.release] opt-level = "s" [profile.dev] debug = true opt-level = "z"