defmod Wetter_Meteo HTTPMOD https://forecast.meteonomiqs.com/v4_0/forecast/lat/long 28800
attr Wetter_Meteo alias Außenwetter (3 Tage)
attr Wetter_Meteo extractAllJSON 0
attr Wetter_Meteo reading01JSON hourly_06_temperature
attr Wetter_Meteo reading01Name h06_T
attr Wetter_Meteo reading02JSON hourly_06_weather_icon
attr Wetter_Meteo reading02Name h06_I
attr Wetter_Meteo reading03JSON summary_0_temperature_min
attr Wetter_Meteo reading03Name heute_temp_min
attr Wetter_Meteo reading04JSON summary_0_prec_probability
attr Wetter_Meteo reading04Name heute_regen_prob
attr Wetter_Meteo reading05JSON summary_1_weather_text
attr Wetter_Meteo reading05Name morgen_text
attr Wetter_Meteo reading06JSON summary_1_temperature_max
attr Wetter_Meteo reading06Name morgen_temp_max
attr Wetter_Meteo reading07JSON summary_1_temperature_min
attr Wetter_Meteo reading07Name morgen_temp_min
attr Wetter_Meteo reading08JSON summary_2_weather_text
attr Wetter_Meteo reading08Name uebermorgen_text
attr Wetter_Meteo reading09JSON summary_2_temperature_max
attr Wetter_Meteo reading09Name uebermorgen_temp_max
attr Wetter_Meteo reading10JSON hourly_06_temperature
attr Wetter_Meteo reading10Name h06_T
attr Wetter_Meteo reading11JSON hourly_12_temperature
attr Wetter_Meteo reading11Name h12_T
attr Wetter_Meteo reading12JSON hourly_18_temperature
attr Wetter_Meteo reading12Name h18_T
attr Wetter_Meteo reading13JSON hourly_24_temperature
attr Wetter_Meteo reading13Name h24_T
attr Wetter_Meteo reading14JSON hourly_30_temperature
attr Wetter_Meteo reading14Name h30_T
attr Wetter_Meteo reading15JSON hourly_36_temperature
attr Wetter_Meteo reading15Name h36_T
attr Wetter_Meteo reading16JSON hourly_42_temperature
attr Wetter_Meteo reading16Name h42_T
attr Wetter_Meteo reading17JSON hourly_48_temperature
attr Wetter_Meteo reading17Name h48_T
attr Wetter_Meteo reading18JSON hourly_54_temperature
attr Wetter_Meteo reading18Name h54_T
attr Wetter_Meteo reading19JSON hourly_60_temperature
attr Wetter_Meteo reading19Name h60_T
attr Wetter_Meteo reading20JSON hourly_66_temperature
attr Wetter_Meteo reading20Name h66_T
attr Wetter_Meteo reading21JSON hourly_72_temperature
attr Wetter_Meteo reading21Name h72_T
attr Wetter_Meteo reading22JSON hourly_06_weather_icon
attr Wetter_Meteo reading22Name h06_I
attr Wetter_Meteo reading23JSON hourly_12_weather_icon
attr Wetter_Meteo reading23Name h12_I
attr Wetter_Meteo reading24JSON hourly_18_weather_icon
attr Wetter_Meteo reading24Name h18_I
attr Wetter_Meteo reading25JSON hourly_24_weather_icon
attr Wetter_Meteo reading25Name h24_I
attr Wetter_Meteo reading26JSON hourly_30_weather_icon
attr Wetter_Meteo reading26Name h30_I
attr Wetter_Meteo reading27JSON hourly_36_weather_icon
attr Wetter_Meteo reading27Name h36_I
attr Wetter_Meteo reading28JSON hourly_42_weather_icon
attr Wetter_Meteo reading28Name h42_I
attr Wetter_Meteo reading29JSON hourly_48_weather_icon
attr Wetter_Meteo reading29Name h48_I
attr Wetter_Meteo reading30JSON hourly_54_weather_icon
attr Wetter_Meteo reading30Name h54_I
attr Wetter_Meteo reading31JSON hourly_60_weather_icon
attr Wetter_Meteo reading31Name h60_I
attr Wetter_Meteo reading32JSON hourly_66_weather_icon
attr Wetter_Meteo reading32Name h66_I
attr Wetter_Meteo reading33JSON hourly_72_weather_icon
attr Wetter_Meteo reading33Name h72_I
attr Wetter_Meteo reading34JSON hourly_66_temperature
attr Wetter_Meteo reading34Name h66_T
attr Wetter_Meteo reading35JSON hourly_66_weather_icon
attr Wetter_Meteo reading35Name h66_I
attr Wetter_Meteo reading36JSON hourly_72_temperature
attr Wetter_Meteo reading36Name h72_T
attr Wetter_Meteo reading37JSON hourly_72_weather_icon
attr Wetter_Meteo reading37Name h72_I
attr Wetter_Meteo reading40JSON summary_0_wind_avg
attr Wetter_Meteo reading40Name tag0_wind
attr Wetter_Meteo reading41JSON summary_0_prec_sum
attr Wetter_Meteo reading41Name tag0_regen
attr Wetter_Meteo reading42JSON summary_0_weather_text
attr Wetter_Meteo reading42Name heute_text
attr Wetter_Meteo reading43JSON hourly_72_temperature
attr Wetter_Meteo reading43Name h72_temp
attr Wetter_Meteo reading50JSON hourly_12_wind_avg
attr Wetter_Meteo reading50Name h12_wind
attr Wetter_Meteo reading51JSON hourly_12_prec_sum
attr Wetter_Meteo reading51Name h12_regen
attr Wetter_Meteo reading52JSON hourly_12_weather_text
attr Wetter_Meteo reading52Name heute_text
attr Wetter_Meteo reading53JSON hourly_12_wind_dir
attr Wetter_Meteo reading53Name h12_wind_dir
attr Wetter_Meteo requestHeader1 x-api-key: r8r8r8r8r8r8r8r8r8usw
attr Wetter_Meteo room WETTER
attr Wetter_Meteo stateFormat { \
# Mapping der Meteo-Icons auf Emojis \
my %i = ( \
"d_0.svg"=>"☀️","d_1.svg"=>"🌤�","d_2.svg"=>"🌥�","d_3.svg"=>"☁️","d_4.svg"=>"🌫�", \
"n_0.svg"=>"🌙","n_1.svg"=>"🌤�","n_2.svg"=>"☁️","n_3.svg"=>"☁️","n_4.svg"=>"🌫�", \
"d_e_0.svg"=>"☀️","n_e_0.svg"=>"🌙" \
);; \
\
# Funktion zur Umrechnung von Grad in Himmelsrichtung \
my $getDir = sub { \
my $d = ReadingsVal($name,"h12_wind_dir",0);; \
my @r = qw(N NO O SO S SW W NW N);; \
return $r[int(($d + 22.5) / 45)];; \
};; \
\
# Hilfsfunktion für die Zellen \
my $cell = sub { \
my ($icon, $temp) = @_;; \
my $symbol = $i{ReadingsVal($name,$icon,"d_0.svg")} || "☀️";; \
return "<td><span style='font-size:22px;; line-height:1;;'>$symbol</span><br>".ReadingsVal($name,$temp,"?")."°</td>";; \
};; \
\
my $t = "<table style='width:100%;; text-align:center;; color:white;; border-collapse:collapse;; font-family:sans-serif;;'>";; \
$t .= "<tr style='color:#777;; font-size:10px;;'><td></td><td>06:00</td><td>12:00</td><td>18:00</td><td>00:00</td></tr>";; \
\
$t .= "<tr><td style='text-align:left;; padding:8px 0;; font-size:16px;;'>Heute</td>".&$cell("h06_I","h06_T").&$cell("h12_I","h12_T").&$cell("h18_I","h18_T").&$cell("h24_I","h24_T")."</tr>";; \
$t .= "<tr><td style='text-align:left;; padding:8px 0;; font-size:16px;;'>Morgen</td>".&$cell("h30_I","h30_T").&$cell("h36_I","h36_T").&$cell("h42_I","h42_T").&$cell("h48_I","h48_T")."</tr>";; \
$t .= "<tr><td style='text-align:left;; padding:8px 0;; font-size:16px;;'>Überm.</td>".&$cell("h54_I","h54_T").&$cell("h60_I","h60_T").&$cell("h66_I","h66_T").&$cell("h72_I","h72_T")."</tr>";; \
\
$t .= "</table>";; \
$t .= "<div style='margin-top:10px;; padding-top:5px;; border-top:1px solid #444;; font-size:13px;; text-align:left;;'>";; \
$t .= "Trend: ".ReadingsVal($name,"heute_text","klar")." | Wind: ".ReadingsVal($name,"h12_wind","0")." km/h (".&$getDir().") | Regen: ".ReadingsVal($name,"h12_regen","0")." mm";; \
$t .= "</div>";; \
return "<html>$t</html>";; \
}grid([Netz:Leistung_Einspeisung_Bezug],[Netz:Energie_des_Tages_Einspeisung],[Netz:Energie_des_Tages_Bezug]).\
solar([PV:Leistung],[PV:Energie_des_Tages]).\
home ([Haus:Leistung_Bezug],[Haus:Energie_des_Tages_Bezug]).\
battery([Speicher:Leistung_Laden_Entladen],[Speicher:Kapazität]).\
## Visualisierung von Autarkie und Eigenverbrauchsquote als Ring\
self([Energie:Autarkie],[Energie:Eigenverbrauchsquote]).\
## Visualisierung der Energieflüsse, der zweiter Parameter ist die maximale Leistung\
grid_power([Netz:Leistung_Einspeisung_Bezug],3.6).\
solar_power([PV:Leistung_PV],3.6).\
battery_power([Speicher:Leistung_Bat],1).\
home_power([Haus:Leistung_Bezug],3.6)sudo su - fhem
pyenv activate homekit
python3 -m homekit.discoverDie Antwort sollte so aussehen:python3 -m homekit.init_controller_storage -f Pfad/zu/fhem/Velux300Der Pfad/zu/fhem/ muss zum Home-Verzeichnis von fhem zeigen, bei mir /opt/fhem/. Der Dateiname muss Velux300 sein, da ich das fest "verdrahtet" habe.python3 -m homekit.pair -d XX:XX:XX:XX:XX:XX -p 123-45-678 -f /Pfad/zu/fhem/Velux300 -a veluxBeim -d Parameter natürlich die eigene Device Id eintragen. Beim -p Parameter sind die beiden Bindestriche wie oben einzufügen (und natürlich der eigene Code), auch wenn das im Homekit Code anders ist. Die Antwort sollte lauten:Zitat von: Prof. Dr. Peter Henning am 21 April 2026, 09:11:24Klingt schon mal halb gut.Imo ist es bis auf Kleinigkeiten schon derzeit besser als die bisherige AMAD-Option.
ZitatEs müsste auch je eine Möglichkeit bestehen, den Abbruch der Spracheingabe a.)von FHEM aus durchzuführen und b.)ein Timeout mitzugeben.Ich würde das ergänzen mit: Die Sprache zu bestimmen, die erkannt werden soll. Wobei, hmm, s.u..
Zitat von: Prof. Dr. Peter Henning am 21 April 2026, 09:11:24Ich würde außerdem präferieren, wenn man den gesamten Sprachkram in eine eigene Javascript-Datei auslagert.Das war auch mein erster Gedanke, ABER: