This commit is contained in:
Dimitris
2026-06-12 12:25:49 +02:00
parent 8696357787
commit 0f6b444eed
3 changed files with 21 additions and 2 deletions
Generated
+7
View File
@@ -239,6 +239,12 @@ dependencies = [
"syn", "syn",
] ]
[[package]]
name = "dotenv"
version = "0.15.0"
source = "registry+https://github.com/rust-lang/crates.io-index"
checksum = "77c90badedccf4105eca100756a0b1289e191f6fcbdadd3cee1d2f614f97da8f"
[[package]] [[package]]
name = "dtoa" name = "dtoa"
version = "1.0.11" version = "1.0.11"
@@ -2065,6 +2071,7 @@ name = "weather"
version = "0.1.0" version = "0.1.0"
dependencies = [ dependencies = [
"chrono", "chrono",
"dotenv",
"reqwest 0.13.4", "reqwest 0.13.4",
"rumqttc", "rumqttc",
"scraper 0.27.0", "scraper 0.27.0",
+1
View File
@@ -13,6 +13,7 @@ serde = { version = "1.0.228", features = ["derive"] }
serde_derive = "1.0.228" serde_derive = "1.0.228"
serde_json = "1.0.149" serde_json = "1.0.149"
chrono = "0.4.45" chrono = "0.4.45"
dotenv = "0.15.0"
# Raspberrypi # Raspberrypi
# cross build --release --target aarch64-unknown-linux-gnu # cross build --release --target aarch64-unknown-linux-gnu
+13 -2
View File
@@ -5,6 +5,8 @@ use rumqttc::{AsyncClient, EventLoop, MqttOptions, QoS};
use scraper::{Html as HtmlScraper, Selector}; use scraper::{Html as HtmlScraper, Selector};
use std::time::Duration; use std::time::Duration;
use tokio::{task, time}; use tokio::{task, time};
use dotenv::dotenv;
use std::env;
const METEO_MUNICH_API_URL: &str = const METEO_MUNICH_API_URL: &str =
"https://www.meteorologie.lmu.de/~quicklooks/aktuelle_messwerte/messwerte_stadt.html"; "https://www.meteorologie.lmu.de/~quicklooks/aktuelle_messwerte/messwerte_stadt.html";
@@ -15,6 +17,9 @@ const LONGITUDE_MUC: f64 = 11.542922;
#[tokio::main(flavor = "current_thread")] #[tokio::main(flavor = "current_thread")]
async fn main() { async fn main() {
dotenv().ok();
let (client, mut eventloop) = create_conn(); let (client, mut eventloop) = create_conn();
match meteo_weather().await { match meteo_weather().await {
@@ -157,11 +162,17 @@ async fn publish_topic(client: AsyncClient, topic: &str, value: String) {
} }
fn create_conn() -> (AsyncClient, EventLoop) { fn create_conn() -> (AsyncClient, EventLoop) {
let mut mqttoptions = MqttOptions::new("rust-mqqt", "192.168.1.37", 1883); let mqtt_client = env::var("MQTT_CLIENT");
let mqtt_broker = env::var("MQTT_BROKER");
let mqtt_user = env::var("MQTT_USER");
let mqtt_password = env::var("MQTT_PASSWORD");
let mut mqttoptions = MqttOptions::new(mqtt_client.unwrap(), mqtt_broker.unwrap(), 1883);
mqttoptions mqttoptions
.set_keep_alive(Duration::from_secs(5)) .set_keep_alive(Duration::from_secs(5))
.set_manual_acks(false) .set_manual_acks(false)
.set_credentials("mqtt", "delta32#") .set_credentials(mqtt_user.unwrap(), mqtt_password.unwrap())
.set_clean_session(false); .set_clean_session(false);
AsyncClient::new(mqttoptions, 10) AsyncClient::new(mqttoptions, 10)
} }