NEWS
Mitsubishi Heavy Industries Split Klimaanlage
-
Das lĂ€sst der ping adapter nicht zu. kĂŒrzester intervall sind alle 5 sek.
@saeft_2003 passt auch noch
-
@saeft_2003 passt auch noch
Alles klar ich lass das mal bis morgen so laufen und schau ob ich in grafana was sehe und melde mich.
-
-
Das sieht mir nach einer schlechten WLAN-Verbindung aus.
-
@saeft_2003 Nimm mal den alive mit in die history auf. Aber man sieht schon schön ne LĂŒcke in dem Graphen. Vermutlich gabâs keine Werte und es wird linear mit dem ersten Ping der wiederkommt verbunden? Zumindest wĂŒrde das den Graphen erklĂ€ren.
-
Ich hab die Klima jetzt wieder auf den AP gelockt der theoretisch am besten ist. Normalerweise muss die Verbindung hier top sein. Luftlinie ist der nur 2m weg und nur dĂŒnne WĂ€nde dazwischen. Andere GerĂ€te zum Teil weiter weg haben null Probleme.
-
Ich hab die Klima jetzt wieder auf den AP gelockt der theoretisch am besten ist. Normalerweise muss die Verbindung hier top sein. Luftlinie ist der nur 2m weg und nur dĂŒnne WĂ€nde dazwischen. Andere GerĂ€te zum Teil weiter weg haben null Probleme.
@saeft_2003 Mein IG nimmt auch immer den weiter entfernten AP statt dem der 4m entfernt steht. Roaming ist in dem WLAN deaktiviert, da viele IOT GerÀte damit nicht klar kommen. Das IG vermutlich gleich dreimal nicht.
-
@saeft_2003 Mein IG nimmt auch immer den weiter entfernten AP statt dem der 4m entfernt steht. Roaming ist in dem WLAN deaktiviert, da viele IOT GerÀte damit nicht klar kommen. Das IG vermutlich gleich dreimal nicht.
@hacki11 Ich habe das WLAN so konfiguriert, dass die GerĂ€te in einem separaten WLAN in 2.4Ghz am jeweils nĂ€chstliegenden AP eingesperrt sind. Habe kurz ein Shellscript fĂŒr Linux mit Chat GPT entwickelt, was ne csv mitloggt (im Subfolder "Log" im Scriptordner. Inhalt der CSV:
Name;Zeitstempel;Erreichbar;Zeit(ms) Klima-Spitzboden;2025-05-15 13:39:18;True;30.4 Klima-K1;2025-05-15 13:39:18;True;85.3 Klima-K2;2025-05-15 13:39:18;True;95.8Ist auch ein Billigfrontend drauf:

Hier das Script (IPs und Aliase anpassen!):
#!/bin/bash # Intervall in Sekunden INTERVAL=5 # IP-Adressen und Aliasnamen IPS=("192.168.120.135" "192.168.120.138" "192.168.120.137" "192.168.120.136" "192.168.120.166") ALIASES=("Klima-Spitzboden" "Klima-K1" "Klima-K2" "Klima-Esszimmer" "Klima-Buero") # Logging-Verzeichnis und -Datei SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LOG_DIR="$SCRIPT_DIR/log" CSV_FILE="$LOG_DIR/ping_log.csv" mkdir -p "$LOG_DIR" # CSV-Datei initialisieren, falls noch nicht vorhanden if [ ! -f "$CSV_FILE" ]; then echo "Name;Zeitstempel;Erreichbar;Zeit(ms)" >> "$CSV_FILE" fi # Statusspeicher declare -A LAST_RESPONSE declare -A LAST_SEEN_DOWN # Spaltenbreiten WIDTH_ALIAS=20 WIDTH_REACH=12 WIDTH_TIME=10 WIDTH_LASTDOWN=25 # Initialisieren for alias in "${ALIASES[@]}"; do LAST_RESPONSE["$alias"]="-" LAST_SEEN_DOWN["$alias"]="-" done # Letzte bekannte False-Zeiten aus CSV rekonstruieren if [ -f "$CSV_FILE" ]; then for alias in "${ALIASES[@]}"; do last_false=$(grep "^$alias;" "$CSV_FILE" | grep ";False;" | tail -n 1 | cut -d';' -f2) if [ -n "$last_false" ]; then epoch=$(date -d "$last_false" +%s 2>/dev/null) if [ -n "$epoch" ]; then LAST_SEEN_DOWN["$alias"]=$epoch fi fi done fi # Funktion fĂŒr menschenlesbare Zeitangabe time_diff_human() { local last_time=$1 [[ "$last_time" == "-" ]] && echo "-" && return local now=$(date +%s) local diff=$((now - last_time)) (( diff < 60 )) && echo "vor $diff Sek." && return (( diff < 3600 )) && echo "vor $((diff / 60)) Min." && return echo "vor $((diff / 3600)) Std." } # Hauptschleife while true; do clear printf "%-${WIDTH_ALIAS}s | %-${WIDTH_REACH}s | %-${WIDTH_TIME}s | %-${WIDTH_LASTDOWN}s\n" "Alias" "Erreichbar" "Zeit(ms)" "Nicht erreichbar vor" printf "%-${WIDTH_ALIAS}s-+-%-${WIDTH_REACH}s-+-%-${WIDTH_TIME}s-+-%-${WIDTH_LASTDOWN}s\n" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_ALIAS))" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_REACH))" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_TIME))" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_LASTDOWN))" for i in "${!IPS[@]}"; do IP=${IPS[$i]} NAME=${ALIASES[$i]} TIMESTAMP_HUMAN=$(date '+%Y-%m-%d %H:%M:%S') TIMESTAMP_EPOCH=$(date +%s) PING_OUTPUT=$(ping -c 1 -W 1 "$IP" 2>/dev/null) if echo "$PING_OUTPUT" | grep -q "1 received"; then TIME_MS=$(echo "$PING_OUTPUT" | grep "time=" | sed -E 's/.*time=([0-9.]+) ms/\1/') LAST_RESPONSE["$NAME"]=$TIME_MS REACH="Ja" DOWNTIME=$(time_diff_human "${LAST_SEEN_DOWN[$NAME]}") echo "$NAME;$TIMESTAMP_HUMAN;True;$TIME_MS" >> "$CSV_FILE" else REACH="Nein" TIME_MS="-" if [[ "${LAST_SEEN_DOWN[$NAME]}" == "-" ]]; then LAST_SEEN_DOWN["$NAME"]=$TIMESTAMP_EPOCH fi DOWNTIME=$(time_diff_human "${LAST_SEEN_DOWN[$NAME]}") echo "$NAME;$TIMESTAMP_HUMAN;False;" >> "$CSV_FILE" fi printf "%-${WIDTH_ALIAS}s | %-${WIDTH_REACH}s | %-${WIDTH_TIME}s | %-${WIDTH_LASTDOWN}s\n" \ "$NAME" "$REACH" "${LAST_RESPONSE[$NAME]}" "$DOWNTIME" done sleep "$INTERVAL" doneFalls Ihr irgendwo Linux habt, könnt Ihr das da laufen lassen.
Und hier das Script, um die CSV als Bild darzustellen:
#!/usr/bin/env python3 import pandas as pd import matplotlib.pyplot as plt from datetime import timedelta import matplotlib.dates as mdates import os # đ Benutzerabfrage zum Stundenbereich try: user_input = input("Wie viele Stunden zurĂŒck anzeigen? [Default: 24]: ").strip() MAX_HOURS = int(user_input) if user_input else 24 except Exception: MAX_HOURS = 24 # đ„ CSV einlesen CSV_PATH = "./log/ping_log.csv" df = pd.read_csv(CSV_PATH, sep=';') df['Zeitstempel'] = pd.to_datetime(df['Zeitstempel'], format="%Y-%m-%d %H:%M:%S") df['Farbe'] = df['Erreichbar'].apply(lambda x: 'green' if str(x).strip().lower() == 'true' else 'red') df['Erreichbar_bool'] = df['Erreichbar'].apply(lambda x: str(x).strip().lower() == 'true') # đ§ Zeitbereich setzen latest_time = df['Zeitstempel'].max() earliest_time = df['Zeitstempel'].min() start_time = max(earliest_time, latest_time - timedelta(hours=MAX_HOURS)) df = df[df['Zeitstempel'] >= start_time].copy() # đ Aliasnamen extrahieren aliases = df['Name'].unique() aliases_sorted = list(aliases) # đ Diagrammverzeichnis erstellen output_dir = "./diagramm_pix" os.makedirs(output_dir, exist_ok=True) # đ Plot vorbereiten fig, ax = plt.subplots(figsize=(14, len(aliases_sorted) * 1.2)) def plot_status_blocks(data, y_pos): current_color = None block_start = None for _, row in data.iterrows(): color = row['Farbe'] timestamp = row['Zeitstempel'] if color != current_color: if current_color is not None: duration = (timestamp - block_start).total_seconds() ax.barh( y=y_pos, width=duration / 3600, left=block_start, height=0.6, color=current_color, edgecolor='none' ) block_start = timestamp current_color = color if block_start is not None and current_color is not None: duration = (latest_time - block_start).total_seconds() ax.barh( y=y_pos, width=duration / 3600, left=block_start, height=0.6, color=current_color, edgecolor='none' ) for i, alias in enumerate(aliases_sorted): data = df[df['Name'] == alias].sort_values(by='Zeitstempel') plot_status_blocks(data, i) # đ Achsen und Format ax.set_yticks(range(len(aliases_sorted))) ax.set_yticklabels(aliases_sorted) ax.set_xlim(start_time, latest_time) ax.invert_yaxis() ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M')) ax.set_xlabel("Uhrzeit") ax.set_title("Erreichbarkeit der IPs â zusammenhĂ€ngende Zustandsbereiche") plt.grid(axis='x', linestyle='--', alpha=0.5) plt.tight_layout() # đŸ Bild speichern image_filename = f"{output_dir}/ping_status_{latest_time.strftime('%Y%m%d_%H%M%S')}.png" plt.savefig(image_filename) plt.show() # đ Zusammenfassung pro Alias print("\nZusammenfassung:") total_minutes = MAX_HOURS * 60 for alias in aliases_sorted: alias_data = df[df['Name'] == alias].sort_values(by='Zeitstempel') alias_data['diff'] = alias_data['Zeitstempel'].diff().dt.total_seconds().fillna(0) # Statuswechsel ermitteln alias_data['is_new_block'] = (alias_data['Erreichbar_bool'] != alias_data['Erreichbar_bool'].shift()) alias_data['block_id'] = alias_data['is_new_block'].cumsum() # Offline-Blöcke false_blocks = alias_data[alias_data['Erreichbar_bool'] == False] grouped = false_blocks.groupby('block_id') total_offline_secs = grouped['diff'].sum().sum() total_offline_minutes = round(total_offline_secs / 60, 2) total_outages = grouped.ngroups outages_per_hour = round(total_outages / MAX_HOURS, 2) avg_offline_per_hour = round(total_offline_minutes / MAX_HOURS, 2) # Antwortzeiten nur bei True true_responses = alias_data[alias_data['Erreichbar_bool'] == True].copy() true_responses['Zeit(ms)'] = pd.to_numeric(true_responses['Zeit(ms)'], errors='coerce') min_time = round(true_responses['Zeit(ms)'].min(), 2) avg_time = round(true_responses['Zeit(ms)'].mean(), 2) max_time = round(true_responses['Zeit(ms)'].max(), 2) print(f"{alias}:") print(f" Gesamtofflinezeit: {total_offline_minutes:.2f} Min") print(f" Ă Offlinezeit/Stunde: {avg_offline_per_hour:.2f} Min") print(f" Gesamtzahl AusfĂ€lle: {total_outages}") print(f" Ă AusfĂ€lle/Stunde: {outages_per_hour}") print(f" Antwortzeit (Min/Ă/Max): {min_time:.2f} / {avg_time:.2f} / {max_time:.2f} ms\n") -
@hacki11 Ich habe das WLAN so konfiguriert, dass die GerĂ€te in einem separaten WLAN in 2.4Ghz am jeweils nĂ€chstliegenden AP eingesperrt sind. Habe kurz ein Shellscript fĂŒr Linux mit Chat GPT entwickelt, was ne csv mitloggt (im Subfolder "Log" im Scriptordner. Inhalt der CSV:
Name;Zeitstempel;Erreichbar;Zeit(ms) Klima-Spitzboden;2025-05-15 13:39:18;True;30.4 Klima-K1;2025-05-15 13:39:18;True;85.3 Klima-K2;2025-05-15 13:39:18;True;95.8Ist auch ein Billigfrontend drauf:

Hier das Script (IPs und Aliase anpassen!):
#!/bin/bash # Intervall in Sekunden INTERVAL=5 # IP-Adressen und Aliasnamen IPS=("192.168.120.135" "192.168.120.138" "192.168.120.137" "192.168.120.136" "192.168.120.166") ALIASES=("Klima-Spitzboden" "Klima-K1" "Klima-K2" "Klima-Esszimmer" "Klima-Buero") # Logging-Verzeichnis und -Datei SCRIPT_DIR="$(cd "$(dirname "${BASH_SOURCE[0]}")" && pwd)" LOG_DIR="$SCRIPT_DIR/log" CSV_FILE="$LOG_DIR/ping_log.csv" mkdir -p "$LOG_DIR" # CSV-Datei initialisieren, falls noch nicht vorhanden if [ ! -f "$CSV_FILE" ]; then echo "Name;Zeitstempel;Erreichbar;Zeit(ms)" >> "$CSV_FILE" fi # Statusspeicher declare -A LAST_RESPONSE declare -A LAST_SEEN_DOWN # Spaltenbreiten WIDTH_ALIAS=20 WIDTH_REACH=12 WIDTH_TIME=10 WIDTH_LASTDOWN=25 # Initialisieren for alias in "${ALIASES[@]}"; do LAST_RESPONSE["$alias"]="-" LAST_SEEN_DOWN["$alias"]="-" done # Letzte bekannte False-Zeiten aus CSV rekonstruieren if [ -f "$CSV_FILE" ]; then for alias in "${ALIASES[@]}"; do last_false=$(grep "^$alias;" "$CSV_FILE" | grep ";False;" | tail -n 1 | cut -d';' -f2) if [ -n "$last_false" ]; then epoch=$(date -d "$last_false" +%s 2>/dev/null) if [ -n "$epoch" ]; then LAST_SEEN_DOWN["$alias"]=$epoch fi fi done fi # Funktion fĂŒr menschenlesbare Zeitangabe time_diff_human() { local last_time=$1 [[ "$last_time" == "-" ]] && echo "-" && return local now=$(date +%s) local diff=$((now - last_time)) (( diff < 60 )) && echo "vor $diff Sek." && return (( diff < 3600 )) && echo "vor $((diff / 60)) Min." && return echo "vor $((diff / 3600)) Std." } # Hauptschleife while true; do clear printf "%-${WIDTH_ALIAS}s | %-${WIDTH_REACH}s | %-${WIDTH_TIME}s | %-${WIDTH_LASTDOWN}s\n" "Alias" "Erreichbar" "Zeit(ms)" "Nicht erreichbar vor" printf "%-${WIDTH_ALIAS}s-+-%-${WIDTH_REACH}s-+-%-${WIDTH_TIME}s-+-%-${WIDTH_LASTDOWN}s\n" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_ALIAS))" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_REACH))" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_TIME))" \ "$(printf 'â%.0s' $(seq 1 $WIDTH_LASTDOWN))" for i in "${!IPS[@]}"; do IP=${IPS[$i]} NAME=${ALIASES[$i]} TIMESTAMP_HUMAN=$(date '+%Y-%m-%d %H:%M:%S') TIMESTAMP_EPOCH=$(date +%s) PING_OUTPUT=$(ping -c 1 -W 1 "$IP" 2>/dev/null) if echo "$PING_OUTPUT" | grep -q "1 received"; then TIME_MS=$(echo "$PING_OUTPUT" | grep "time=" | sed -E 's/.*time=([0-9.]+) ms/\1/') LAST_RESPONSE["$NAME"]=$TIME_MS REACH="Ja" DOWNTIME=$(time_diff_human "${LAST_SEEN_DOWN[$NAME]}") echo "$NAME;$TIMESTAMP_HUMAN;True;$TIME_MS" >> "$CSV_FILE" else REACH="Nein" TIME_MS="-" if [[ "${LAST_SEEN_DOWN[$NAME]}" == "-" ]]; then LAST_SEEN_DOWN["$NAME"]=$TIMESTAMP_EPOCH fi DOWNTIME=$(time_diff_human "${LAST_SEEN_DOWN[$NAME]}") echo "$NAME;$TIMESTAMP_HUMAN;False;" >> "$CSV_FILE" fi printf "%-${WIDTH_ALIAS}s | %-${WIDTH_REACH}s | %-${WIDTH_TIME}s | %-${WIDTH_LASTDOWN}s\n" \ "$NAME" "$REACH" "${LAST_RESPONSE[$NAME]}" "$DOWNTIME" done sleep "$INTERVAL" doneFalls Ihr irgendwo Linux habt, könnt Ihr das da laufen lassen.
Und hier das Script, um die CSV als Bild darzustellen:
#!/usr/bin/env python3 import pandas as pd import matplotlib.pyplot as plt from datetime import timedelta import matplotlib.dates as mdates import os # đ Benutzerabfrage zum Stundenbereich try: user_input = input("Wie viele Stunden zurĂŒck anzeigen? [Default: 24]: ").strip() MAX_HOURS = int(user_input) if user_input else 24 except Exception: MAX_HOURS = 24 # đ„ CSV einlesen CSV_PATH = "./log/ping_log.csv" df = pd.read_csv(CSV_PATH, sep=';') df['Zeitstempel'] = pd.to_datetime(df['Zeitstempel'], format="%Y-%m-%d %H:%M:%S") df['Farbe'] = df['Erreichbar'].apply(lambda x: 'green' if str(x).strip().lower() == 'true' else 'red') df['Erreichbar_bool'] = df['Erreichbar'].apply(lambda x: str(x).strip().lower() == 'true') # đ§ Zeitbereich setzen latest_time = df['Zeitstempel'].max() earliest_time = df['Zeitstempel'].min() start_time = max(earliest_time, latest_time - timedelta(hours=MAX_HOURS)) df = df[df['Zeitstempel'] >= start_time].copy() # đ Aliasnamen extrahieren aliases = df['Name'].unique() aliases_sorted = list(aliases) # đ Diagrammverzeichnis erstellen output_dir = "./diagramm_pix" os.makedirs(output_dir, exist_ok=True) # đ Plot vorbereiten fig, ax = plt.subplots(figsize=(14, len(aliases_sorted) * 1.2)) def plot_status_blocks(data, y_pos): current_color = None block_start = None for _, row in data.iterrows(): color = row['Farbe'] timestamp = row['Zeitstempel'] if color != current_color: if current_color is not None: duration = (timestamp - block_start).total_seconds() ax.barh( y=y_pos, width=duration / 3600, left=block_start, height=0.6, color=current_color, edgecolor='none' ) block_start = timestamp current_color = color if block_start is not None and current_color is not None: duration = (latest_time - block_start).total_seconds() ax.barh( y=y_pos, width=duration / 3600, left=block_start, height=0.6, color=current_color, edgecolor='none' ) for i, alias in enumerate(aliases_sorted): data = df[df['Name'] == alias].sort_values(by='Zeitstempel') plot_status_blocks(data, i) # đ Achsen und Format ax.set_yticks(range(len(aliases_sorted))) ax.set_yticklabels(aliases_sorted) ax.set_xlim(start_time, latest_time) ax.invert_yaxis() ax.xaxis.set_major_formatter(mdates.DateFormatter('%H:%M')) ax.set_xlabel("Uhrzeit") ax.set_title("Erreichbarkeit der IPs â zusammenhĂ€ngende Zustandsbereiche") plt.grid(axis='x', linestyle='--', alpha=0.5) plt.tight_layout() # đŸ Bild speichern image_filename = f"{output_dir}/ping_status_{latest_time.strftime('%Y%m%d_%H%M%S')}.png" plt.savefig(image_filename) plt.show() # đ Zusammenfassung pro Alias print("\nZusammenfassung:") total_minutes = MAX_HOURS * 60 for alias in aliases_sorted: alias_data = df[df['Name'] == alias].sort_values(by='Zeitstempel') alias_data['diff'] = alias_data['Zeitstempel'].diff().dt.total_seconds().fillna(0) # Statuswechsel ermitteln alias_data['is_new_block'] = (alias_data['Erreichbar_bool'] != alias_data['Erreichbar_bool'].shift()) alias_data['block_id'] = alias_data['is_new_block'].cumsum() # Offline-Blöcke false_blocks = alias_data[alias_data['Erreichbar_bool'] == False] grouped = false_blocks.groupby('block_id') total_offline_secs = grouped['diff'].sum().sum() total_offline_minutes = round(total_offline_secs / 60, 2) total_outages = grouped.ngroups outages_per_hour = round(total_outages / MAX_HOURS, 2) avg_offline_per_hour = round(total_offline_minutes / MAX_HOURS, 2) # Antwortzeiten nur bei True true_responses = alias_data[alias_data['Erreichbar_bool'] == True].copy() true_responses['Zeit(ms)'] = pd.to_numeric(true_responses['Zeit(ms)'], errors='coerce') min_time = round(true_responses['Zeit(ms)'].min(), 2) avg_time = round(true_responses['Zeit(ms)'].mean(), 2) max_time = round(true_responses['Zeit(ms)'].max(), 2) print(f"{alias}:") print(f" Gesamtofflinezeit: {total_offline_minutes:.2f} Min") print(f" Ă Offlinezeit/Stunde: {avg_offline_per_hour:.2f} Min") print(f" Gesamtzahl AusfĂ€lle: {total_outages}") print(f" Ă AusfĂ€lle/Stunde: {outages_per_hour}") print(f" Antwortzeit (Min/Ă/Max): {min_time:.2f} / {avg_time:.2f} / {max_time:.2f} ms\n")@mrlarodos Habe mir noch ein Script gebaut, das die CSV als Diagramm visualisiert:

Und hier die Zusammenfassung der bisherigen Messung:
Klima-Spitzboden:
Gesamtofflinezeit: 3.50 Min
Ă Offlinezeit/Stunde: 0.15 Min
Gesamtzahl AusfÀlle: 19
à AusfÀlle/Stunde: 0.79
Antwortzeit (Min/Ă/Max): 4.30 / 82.30 / 878.00 msKlima-K1:
Gesamtofflinezeit: 6.25 Min
Ă Offlinezeit/Stunde: 0.26 Min
Gesamtzahl AusfÀlle: 21
à AusfÀlle/Stunde: 0.88
Antwortzeit (Min/Ă/Max): 4.09 / 77.67 / 452.00 msKlima-K2:
Gesamtofflinezeit: 6.42 Min
Ă Offlinezeit/Stunde: 0.27 Min
Gesamtzahl AusfÀlle: 28
à AusfÀlle/Stunde: 1.17
Antwortzeit (Min/Ă/Max): 3.88 / 85.14 / 680.00 msKlima-Esszimmer:
Gesamtofflinezeit: 3.35 Min
Ă Offlinezeit/Stunde: 0.14 Min
Gesamtzahl AusfÀlle: 8
à AusfÀlle/Stunde: 0.33
Antwortzeit (Min/Ă/Max): 3.74 / 78.01 / 979.00 msKlima-Buero:
Gesamtofflinezeit: 0.18 Min
Ă Offlinezeit/Stunde: 0.01 Min
Gesamtzahl AusfÀlle: 2
à AusfÀlle/Stunde: 0.08
Antwortzeit (Min/Ă/Max): 4.20 / 73.71 / 993.00 msHm. Hilft uns das sehr? :)
-
@mrlarodos Habe mir noch ein Script gebaut, das die CSV als Diagramm visualisiert:

Und hier die Zusammenfassung der bisherigen Messung:
Klima-Spitzboden:
Gesamtofflinezeit: 3.50 Min
Ă Offlinezeit/Stunde: 0.15 Min
Gesamtzahl AusfÀlle: 19
à AusfÀlle/Stunde: 0.79
Antwortzeit (Min/Ă/Max): 4.30 / 82.30 / 878.00 msKlima-K1:
Gesamtofflinezeit: 6.25 Min
Ă Offlinezeit/Stunde: 0.26 Min
Gesamtzahl AusfÀlle: 21
à AusfÀlle/Stunde: 0.88
Antwortzeit (Min/Ă/Max): 4.09 / 77.67 / 452.00 msKlima-K2:
Gesamtofflinezeit: 6.42 Min
Ă Offlinezeit/Stunde: 0.27 Min
Gesamtzahl AusfÀlle: 28
à AusfÀlle/Stunde: 1.17
Antwortzeit (Min/Ă/Max): 3.88 / 85.14 / 680.00 msKlima-Esszimmer:
Gesamtofflinezeit: 3.35 Min
Ă Offlinezeit/Stunde: 0.14 Min
Gesamtzahl AusfÀlle: 8
à AusfÀlle/Stunde: 0.33
Antwortzeit (Min/Ă/Max): 3.74 / 78.01 / 979.00 msKlima-Buero:
Gesamtofflinezeit: 0.18 Min
Ă Offlinezeit/Stunde: 0.01 Min
Gesamtzahl AusfÀlle: 2
à AusfÀlle/Stunde: 0.08
Antwortzeit (Min/Ă/Max): 4.20 / 73.71 / 993.00 msHm. Hilft uns das sehr? :)
@mrlarodos Zur Sicherheit mal den Adapter stoppen und prĂŒfen ob die Offlinezeit dadurch beeinflusst wird. Falls nicht ist zumindest der Adapter raus đ«
-
@mrlarodos Zur Sicherheit mal den Adapter stoppen und prĂŒfen ob die Offlinezeit dadurch beeinflusst wird. Falls nicht ist zumindest der Adapter raus đ«
-
@hacki11 Gute Idee :) Ich hoffe, dann ist alles grĂŒn
<sleep canceled> ist dann angesagt 
@mrlarodos So, der Adapter ist aus. Nun wird es spannend :)

-
@hacki11 Gute Idee :) Ich hoffe, dann ist alles grĂŒn
<sleep canceled> ist dann angesagt 
-
Ich lass mal noch ein paar Stunden laufen und dann checken wir. Ich vermute eher, dass die Verbindung von den Dingern einfach nicht besonders stabil ist. BĂŒro besonders stabil, weil der AP 2 Meter in Sichtlinie liegt. Schauen wir mal.
-
Ich lass mal noch ein paar Stunden laufen und dann checken wir. Ich vermute eher, dass die Verbindung von den Dingern einfach nicht besonders stabil ist. BĂŒro besonders stabil, weil der AP 2 Meter in Sichtlinie liegt. Schauen wir mal.
@mrlarodos So, um 20:20 Uhr hatte ich den Adapter deaktiviert:

Ab der blauen Linie also. Danach sind zwar weniger kleine AbbrĂŒche erkennbar, aber das PhĂ€nomen ist nicht weg.SignalstĂ€rke ist bei Klima-K1, Klima-K2 und Spitzboden bei ca. -47 dBm / -50 dBm, also kein groĂer Unterschied und auch kein erklĂ€rend schlechter Wert, oder?
Im BĂŒro sind es -31 dBm und Esszimmer -35 dBm, da beide Sichtline zum AP haben. K1, K2 und Spitzboden sind auch nur 1 - 3 Meter vom AP entfernt, wenn auch ohne Sichtlinie.
Feste Kopplung an den jeweils nĂ€chsten AP und separates, eigenes WLAN mit 2,4 Ghz. Bin da etwas ratlos und kann nur mutmaĂen, dass die WLAN-Module einfach nicht sehr gut sind.
Dass der Adapter runtergefahren ist, die Objekte aber weiterhin als online angezeigt werden, kannst Du nicht Ă€ndern, oder? Falls es möglich ist bei proaktivem Abschalten des Adapters auch noch ein Stopscript laufen zu lassen, wĂ€re ein offline in den Objekten und der "Summe" wĂŒnschenswert :)
Ansonsten kann man wohl nicht viel machen. Der fette Ausfall der Pingbarkeit von K2 ist schon Mist ...
LG MrLarodos
-
@mrlarodos So, um 20:20 Uhr hatte ich den Adapter deaktiviert:

Ab der blauen Linie also. Danach sind zwar weniger kleine AbbrĂŒche erkennbar, aber das PhĂ€nomen ist nicht weg.SignalstĂ€rke ist bei Klima-K1, Klima-K2 und Spitzboden bei ca. -47 dBm / -50 dBm, also kein groĂer Unterschied und auch kein erklĂ€rend schlechter Wert, oder?
Im BĂŒro sind es -31 dBm und Esszimmer -35 dBm, da beide Sichtline zum AP haben. K1, K2 und Spitzboden sind auch nur 1 - 3 Meter vom AP entfernt, wenn auch ohne Sichtlinie.
Feste Kopplung an den jeweils nĂ€chsten AP und separates, eigenes WLAN mit 2,4 Ghz. Bin da etwas ratlos und kann nur mutmaĂen, dass die WLAN-Module einfach nicht sehr gut sind.
Dass der Adapter runtergefahren ist, die Objekte aber weiterhin als online angezeigt werden, kannst Du nicht Ă€ndern, oder? Falls es möglich ist bei proaktivem Abschalten des Adapters auch noch ein Stopscript laufen zu lassen, wĂ€re ein offline in den Objekten und der "Summe" wĂŒnschenswert :)
Ansonsten kann man wohl nicht viel machen. Der fette Ausfall der Pingbarkeit von K2 ist schon Mist ...
LG MrLarodos
@mrlarodos Ohne, dass der Adapter lÀuft kann man die Erreichbarkeit der IG nicht wissen. Offline ist hier dann genauso falsch wie online. Wie ist es denn bei den anderen Adaptern wie Shelly? Wird hier auch noch was vorm beenden verÀndert? Der letzte bekannte Zustand ist der beste den wir haben. Falls es um ne Vis geht brÀuchte man evtl. den Adapterzustand oder?
Ansonsten gut analysiert. Wer mag ein WLan Modul zerlegen, damit wir sehen was da drin ist? Vielleicht findet man auch noch Infos in englischsprachigen Foren.
-
Habt ihr den IG bereits feste IP Adressen zugewiesen? Glaube nicht, dass es was Àndert aber das ist zumindest bei mir der Fall.
Hier nochmal der Thread mit der BestĂ€tigung der stĂŒndlichen Restarts seitens MHI.
https://community.ui.com/questions/AC-Units-IOT-disconnecting-from-UniFi-Wi-Fi-at-regular-hourly-Intervals/821cd3e4-46a0-4d6b-8fd0-8d5cf182b90fDort ist auch die Rede von der Verwendung identischer Source-Ports fĂŒr ausgehende Verbindungen, was bei NAT zu Problemen fĂŒhren kann. Vermutlich aber lokal weniger ein Problem?
Ein anderer User spricht von ARP Paketen, die dem Netzwerk vorgaukeln, WF-RAC wÀre der Router:
https://community.home-assistant.io/t/mitsubishi-wifi-module-wf-rac-smart-m-air/411025/142Vielleicht einen Versuch wert, ein eigenes Subnetz + eigenes Wlan nur fĂŒr ein IG aufzuspannen? Mit Ubiqiti ja recht schnell erledigt.
Welche Firmware habt ihr auf dem Modul? Meine:
mcuFirmwareVersion: 131
wirelessFirmwareVersion: 010 -
@mrlarodos Ohne, dass der Adapter lÀuft kann man die Erreichbarkeit der IG nicht wissen. Offline ist hier dann genauso falsch wie online. Wie ist es denn bei den anderen Adaptern wie Shelly? Wird hier auch noch was vorm beenden verÀndert? Der letzte bekannte Zustand ist der beste den wir haben. Falls es um ne Vis geht brÀuchte man evtl. den Adapterzustand oder?
Ansonsten gut analysiert. Wer mag ein WLan Modul zerlegen, damit wir sehen was da drin ist? Vielleicht findet man auch noch Infos in englischsprachigen Foren.
@hacki11 sagte in Mitsubishi Heavy Industries Split Klimaanlage:
Offline ist hier dann genauso falsch wie online
Hm, ich sehe, was Du meinst. Allerdings ist fĂŒr mich eine Anzeige von "online" aus ioBroker-Sicht falsch. Es hilft niemandem, dass ein "online" zu sehen ist, obwohl der Adapter nachweislich off ist. Das "online" ist in diesem Kontext ja eher ein "Ich bin fĂŒr ioBroker erreichbar" fĂŒr mich. Das nun zu separieren in einen zusĂ€tzlichen Adapterstatus fĂ€nde ich suboptimal. Wenn Du bei dem "online ist online" aus rein retzwerktechnischer Sicht bleibst, ist das fĂŒr mich okay, da das eine reine Philosophiefrage ist und Du die Regeln machst ;) Ich wĂŒrde mir dann aber ein "connected" oder Ă€hnliches pro InnengerĂ€t wĂŒnschen, dass "true" ausgibt, wenn Adapter on & InnengerĂ€t online sind. Sobald entweder Adapter off oder InnengerĂ€t offline, dann "connected" = false. Gerne auch Daraus die "Summe" im Hauptknoten. Der soll true sein, wenn alle InnengerĂ€te true, sonst false.
Ich brauche halt den Status, um in den Scripten und Visualisierungen einen nicht-Erreichbarkeit der GerĂ€te verarbeiten zu können. Ob das nun an einem Adapter liegt der aus ist, oder an den InnengerĂ€ten die im Netzwerk offline sind, ist dafĂŒr ja nicht relevant. WĂ€re also eine coole Erweiterung und ich danke fĂŒr die wohlwollende PrĂŒfung :)
LG MrLarodos
-
Habt ihr den IG bereits feste IP Adressen zugewiesen? Glaube nicht, dass es was Àndert aber das ist zumindest bei mir der Fall.
Hier nochmal der Thread mit der BestĂ€tigung der stĂŒndlichen Restarts seitens MHI.
https://community.ui.com/questions/AC-Units-IOT-disconnecting-from-UniFi-Wi-Fi-at-regular-hourly-Intervals/821cd3e4-46a0-4d6b-8fd0-8d5cf182b90fDort ist auch die Rede von der Verwendung identischer Source-Ports fĂŒr ausgehende Verbindungen, was bei NAT zu Problemen fĂŒhren kann. Vermutlich aber lokal weniger ein Problem?
Ein anderer User spricht von ARP Paketen, die dem Netzwerk vorgaukeln, WF-RAC wÀre der Router:
https://community.home-assistant.io/t/mitsubishi-wifi-module-wf-rac-smart-m-air/411025/142Vielleicht einen Versuch wert, ein eigenes Subnetz + eigenes Wlan nur fĂŒr ein IG aufzuspannen? Mit Ubiqiti ja recht schnell erledigt.
Welche Firmware habt ihr auf dem Modul? Meine:
mcuFirmwareVersion: 131
wirelessFirmwareVersion: 010@hacki11 sagte in Mitsubishi Heavy Industries Split Klimaanlage:
eigenes Subnetz + eigenes Wlan nur fĂŒr ein IG
Das ist bei mir im BĂŒro bereits der Fall. Da ist ja auch alles grĂŒn. Ich kanns bei einem der anderen IG auch mal versuchen, aber das kann dann wohl nicht deren Ernst sein, falls das hilft. Dann hat Mitsu ein Problem und nicht wir ;)
-
@hacki11 sagte in Mitsubishi Heavy Industries Split Klimaanlage:
eigenes Subnetz + eigenes Wlan nur fĂŒr ein IG
Das ist bei mir im BĂŒro bereits der Fall. Da ist ja auch alles grĂŒn. Ich kanns bei einem der anderen IG auch mal versuchen, aber das kann dann wohl nicht deren Ernst sein, falls das hilft. Dann hat Mitsu ein Problem und nicht wir ;)
Das wĂ€re super wenn du das testen könntest. Ich hab zwar auch unifi mit vielen APs bin aber kein Netzwerk Experte und wĂŒrde das nur zur Not angehen.
Hey! Du scheinst an dieser Unterhaltung interessiert zu sein, hast aber noch kein Konto.
Hast du es satt, bei jedem Besuch durch die gleichen BeitrĂ€ge zu scrollen? Wenn du dich fĂŒr ein Konto anmeldest, kommst du immer genau dorthin zurĂŒck, wo du zuvor warst, und kannst dich ĂŒber neue Antworten benachrichtigen lassen (entweder per E-Mail oder Push-Benachrichtigung). Du kannst auch Lesezeichen speichern und BeitrĂ€ge positiv bewerten, um anderen Community-Mitgliedern deine WertschĂ€tzung zu zeigen.
Mit deinem Input könnte dieser Beitrag noch besser werden đ
Registrieren Anmelden


