Zitat von henfri
Beitrag anzeigen
Ankündigung
Einklappen
Keine Ankündigung bisher.
Plugin gesucht für Erkennung Sommer/Winter für Heizungssteuerung
Einklappen
Dieses Thema ist geschlossen.
X
X
-
Wenn es dich interessiert, dann schau mal in mein Profil. Ich bin deswegen heute noch sauer, weil ich wegen Innovationsfreude abgestraft wurde. Ich denke, das ich die dort zerredete Lösung noch diesen Winter zum Laufen bekomme...
-
Danke. Die GAs passen sogar in mein Schema ;-)Zitat von haegar80 Beitrag anzeigenJa habe ich, mein Plugin für Wetter.com sieht so aus:
Och, mir ist da selbst schon der Kopf -naja, die Ohren- lang gezogen worden.Werd ich machen. Ich hoffe ihr reißt mir in dem Thread nicht den Kopf ab ...
Da mach ich mir nix draus.
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Zitat von henfri Beitrag anzeigenDas obige Plugin hast du dann aber noch um die Abfrage für morgen und übermorgen erweitert, oder?
Ja habe ich, mein Plugin für Wetter.com sieht so aus:
Code:# Plugin für Wettervorhersage von Wetter.com # Link für Aufruf XML-Datei http://api.wetter.com/forecast/weather/city/DE0008685063/project/knxbus/cs/4d6650c1fb7a78ed8dc83e29d34c5186 ### Definitionen ##Gruppenadressen für Wetterwerte ## h = Heute ## m = Morgen ## u = Übermorgen ## Morgen = 6-11 Uhr ## Mittag = 11-17 Uhr ## Abend = 17- 23 Uhr ## Nacht = 23 -6 Uhr # Gruppenadressen für Temperatur my $h_morgen_temp_ga = '5/7/11'; my $h_mittag_temp_ga = '5/7/31'; my $h_abend_temp_ga = '5/7/51'; my $h_nacht_temp_ga = '5/7/71'; my $m_morgen_temp_ga = '5/7/91'; my $m_mittag_temp_ga = '5/7/111'; my $m_abend_temp_ga = '5/7/131'; my $m_nacht_temp_ga = '5/7/151'; my $u_morgen_temp_ga = '5/7/171'; my $u_mittag_temp_ga = '5/7/191'; my $u_abend_temp_ga = '5/7/211'; my $u_nacht_temp_ga = '5/7/231'; # Gruppenadressen für Temperatur Minimum my $h_morgen_tn_ga = '5/7/12'; my $h_mittag_tn_ga = '5/7/32'; my $h_abend_tn_ga = '5/7/52'; my $h_nacht_tn_ga = '5/7/72'; my $m_morgen_tn_ga = '5/7/92'; my $m_mittag_tn_ga = '5/7/112'; my $m_abend_tn_ga = '5/7/132'; my $m_nacht_tn_ga = '5/7/152'; my $u_morgen_tn_ga = '5/7/172'; my $u_mittag_tn_ga = '5/7/192'; my $u_abend_tn_ga = '5/7/212'; my $u_nacht_tn_ga = '5/7/232'; # Gruppenadressen für Temperatur Maximum my $h_morgen_tx_ga = '5/7/13'; my $h_mittag_tx_ga = '5/7/33'; my $h_abend_tx_ga = '5/7/53'; my $h_nacht_tx_ga = '5/7/73'; my $m_morgen_tx_ga = '5/7/93'; my $m_mittag_tx_ga = '5/7/113'; my $m_abend_tx_ga = '5/7/133'; my $m_nacht_tx_ga = '5/7/153'; my $u_morgen_tx_ga = '5/7/173'; my $u_mittag_tx_ga = '5/7/193'; my $u_abend_tx_ga = '5/7/213'; my $u_nacht_tx_ga = '5/7/233'; # Gruppenadressen für Wetterzustand (Code) # 0 = heiter # 1 = leicht bewölkt # 2 = partiell bewölkt # 3 = bewölkt # 4 = neblig # 5 = Nieselregen # 6 = Regen # 7 = Schnee # 8 = Regenschauer # 9 = Gewitter my $h_morgen_w_ga = '5/7/15'; my $h_mittag_w_ga = '5/7/35'; my $h_abend_w_ga = '5/7/55'; my $h_nacht_w_ga = '5/7/75'; my $m_morgen_w_ga = '5/7/95'; my $m_mittag_w_ga = '5/7/115'; my $m_abend_w_ga = '5/7/135'; my $m_nacht_w_ga = '5/7/155'; my $u_morgen_w_ga = '5/7/175'; my $u_mittag_w_ga = '5/7/195'; my $u_abend_w_ga = '5/7/215'; my $u_nacht_w_ga = '5/7/235'; # Gruppenadressen für Wetterzustand Textbeschreibung my $h_morgen_wtxt_ga = '5/7/16'; my $h_mittag_wtxt_ga = '5/7/36'; my $h_abend_wtxt_ga = '5/7/56'; my $h_nacht_wtxt_ga = '5/7/76'; my $m_morgen_wtxt_ga = '5/7/96'; my $m_mittag_wtxt_ga = '5/7/116'; my $m_abend_wtxt_ga = '5/7/136'; my $m_nacht_wtxt_ga = '5/7/156'; my $u_morgen_wtxt_ga = '5/7/176'; my $u_mittag_wtxt_ga = '5/7/196'; my $u_abend_wtxt_ga = '5/7/216'; my $u_nacht_wtxt_ga = '5/7/236'; # Gruppenadressen für Niederschlagswahrscheinlichkeit in % my $h_morgen_pc_ga = '5/7/21'; my $h_mittag_pc_ga = '5/7/41'; my $h_abend_pc_ga = '5/7/61'; my $h_nacht_pc_ga = '5/7/81'; my $m_morgen_pc_ga = '5/7/101'; my $m_mittag_pc_ga = '5/7/121'; my $m_abend_pc_ga = '5/7/141'; my $m_nacht_pc_ga = '5/7/161'; my $u_morgen_pc_ga = '5/7/181'; my $u_mittag_pc_ga = '5/7/201'; my $u_abend_pc_ga = '5/7/221'; my $u_nacht_pc_ga = '5/7/241'; # Gruppenadressen für Windgeschwindigkeit in km/h my $h_morgen_ws_ga = '5/7/25'; my $h_mittag_ws_ga = '5/7/45'; my $h_abend_ws_ga = '5/7/65'; my $h_nacht_ws_ga = '5/7/85'; my $m_morgen_ws_ga = '5/7/105'; my $m_mittag_ws_ga = '5/7/125'; my $m_abend_ws_ga = '5/7/145'; my $m_nacht_ws_ga = '5/7/165'; my $u_morgen_ws_ga = '5/7/185'; my $u_mittag_ws_ga = '5/7/205'; my $u_abend_ws_ga = '5/7/225'; my $u_nacht_ws_ga = '5/7/245'; # Gruppenadressen für Windrichtung in Grad (360 = Norden) my $h_morgen_wd_ga = '5/7/26'; my $h_mittag_wd_ga = '5/7/46'; my $h_abend_wd_ga = '5/7/66'; my $h_nacht_wd_ga = '5/7/86'; my $m_morgen_wd_ga = '5/7/106'; my $m_mittag_wd_ga = '5/7/126'; my $m_abend_wd_ga = '5/7/146'; my $m_nacht_wd_ga = '5/7/166'; my $u_morgen_wd_ga = '5/7/186'; my $u_mittag_wd_ga = '5/7/206'; my $u_abend_wd_ga = '5/7/226'; my $u_nacht_wd_ga = '5/7/246'; my $temp_ausgabe = "Mittel"; # Darstellung der Temperaturanzeige (Groß- und Kleinschreibung beachten!) # Möglich ist: Mittel - Mittelwert zwischen der minimalen und maximalen Temperatur # Min - Minimale Temperatur # Max - Maximale Temperatur # Extrem - Bei postiven Temperaturwerten die höchste und # bei negativen Temperaturen die tiefste Temperatur # Benötigte Daten für die Webabfrage bei wetter.com (Der Link zur API ist ganz unten rechts auf der Seite) my $ProjektName = "knxbus"; # Name des Projekts bei wetter.com my $ApiKey = "d3ef8a276029dc007dd0f1abea02bd17"; # API Key des Projektes my $StadtCode = "DE0008685063"; # Stadt-Code z.B. durch Suchen einer Stadt und Kopieren des Codes aus der URL von wetter.com ### Ende Definitionen # XML-Tags von wetter.com # <du> UTC Zeit (Unix Timestamp) # <d> Lokale Zeit (Unix Timestamp) # <dhu> UTC Zeit (ISO 8601) # <dhl> Lokale Zeit (ISO 8601) # <p> Gültigkeitszeitraum der Prognose # <w> Code fuer den Wetterzustand # <pc> Niederschlagswahrscheinlichkeit in Prozent # <tn> Minimaltemperatur in Grad Celsius # <tx> Maximaltemperatur in Grad Celsius # <wd> Windrichtung in Grad # <ws> Windgeschwindigkeit in km/h # <w_txt> Wetter in Textform # <wd_txt> Windrichtung Text use LWP::Simple; use XML::Simple; use Digest::MD5 "md5_hex"; # Eigenen Aufruf-Zyklus setzen $plugin_info{$plugname.'_cycle'} = 60*60*1; my $SeitenURL = "http://api.wetter.com/forecast/weather"; # Generieren der Checksumme, diese wird für jede Stadt neu berechnet my $Checksumme = md5_hex($ProjektName.$ApiKey.$StadtCode); # Berechnen der Checksumme my $URL = $SeitenURL."/city/".$StadtCode."/project/".$ProjektName."/cs/".$Checksumme; # Komplette URL zum Abruf der XML-Infos my $xml = XMLin( get($URL) ); # Globales Array das die abgerufenen Wetterinformationen enthält ## Wetterauswertung heute # Morgen knx_write($h_morgen_w_ga, substr($xml->{forecast}->{date}->[0]->{time}->[0]->{w},0,1)); knx_write($h_morgen_pc_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{pc}); my $temp_min = $xml->{forecast}->{date}->[0]->{time}->[0]->{tn}; my $temp_max = $xml->{forecast}->{date}->[0]->{time}->[0]->{tx}; knx_write($h_morgen_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($h_morgen_tn_ga, $temp_min); knx_write($h_morgen_tx_ga, $temp_max); knx_write($h_morgen_wd_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{wd}); knx_write($h_morgen_ws_ga, round($xml->{forecast}->{date}->[0]->{time}->[0]->{ws})); knx_write($h_morgen_wtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{w_txt}); # Mittag knx_write($h_mittag_w_ga, substr($xml->{forecast}->{date}->[0]->{time}->[1]->{w},0,1)); knx_write($h_mittag_pc_ga, $xml->{forecast}->{date}->[0]->{time}->[1]->{pc}); my $temp_min = $xml->{forecast}->{date}->[0]->{time}->[1]->{tn}; my $temp_max = $xml->{forecast}->{date}->[0]->{time}->[1]->{tx}; knx_write($h_mittag_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($h_mittag_tn_ga, $temp_min); knx_write($h_mittag_tx_ga, $temp_max); knx_write($h_mittag_wd_ga, $xml->{forecast}->{date}->[0]->{time}->[1]->{wd}); knx_write($h_mittag_ws_ga, round($xml->{forecast}->{date}->[0]->{time}->[1]->{ws})); knx_write($h_mittag_wtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[1]->{w_txt}); # Abend knx_write($h_abend_w_ga, substr($xml->{forecast}->{date}->[0]->{time}->[2]->{w},0,1)); knx_write($h_abend_pc_ga, $xml->{forecast}->{date}->[0]->{time}->[2]->{pc}); my $temp_min = $xml->{forecast}->{date}->[0]->{time}->[2]->{tn}; my $temp_max = $xml->{forecast}->{date}->[0]->{time}->[2]->{tx}; knx_write($h_abend_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($h_abend_tn_ga, $temp_min); knx_write($h_abend_tx_ga, $temp_max); knx_write($h_abend_wd_ga, $xml->{forecast}->{date}->[0]->{time}->[2]->{wd}); knx_write($h_abend_ws_ga, round($xml->{forecast}->{date}->[0]->{time}->[2]->{ws})); knx_write($h_abend_wtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[2]->{w_txt}); # Nacht knx_write($h_nacht_w_ga, substr($xml->{forecast}->{date}->[0]->{time}->[3]->{w},0,1)); knx_write($h_nacht_pc_ga, $xml->{forecast}->{date}->[0]->{time}->[3]->{pc}); my $temp_min = $xml->{forecast}->{date}->[0]->{time}->[3]->{tn}; my $temp_max = $xml->{forecast}->{date}->[0]->{time}->[3]->{tx}; knx_write($h_nacht_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($h_nacht_tn_ga, $temp_min); knx_write($h_nacht_tx_ga, $temp_max); knx_write($h_nacht_wd_ga, $xml->{forecast}->{date}->[0]->{time}->[3]->{wd}); knx_write($h_nacht_ws_ga, round($xml->{forecast}->{date}->[0]->{time}->[3]->{ws})); knx_write($h_nacht_wtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[3]->{w_txt}); ## Wetterauswertung morgen # Morgen knx_write($m_morgen_w_ga, substr($xml->{forecast}->{date}->[1]->{time}->[0]->{w},0,1)); knx_write($m_morgen_pc_ga, $xml->{forecast}->{date}->[1]->{time}->[0]->{pc}); my $temp_min = $xml->{forecast}->{date}->[1]->{time}->[0]->{tn}; my $temp_max = $xml->{forecast}->{date}->[1]->{time}->[0]->{tx}; knx_write($m_morgen_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($m_morgen_tn_ga, $temp_min); knx_write($m_morgen_tx_ga, $temp_max); knx_write($m_morgen_wd_ga, $xml->{forecast}->{date}->[1]->{time}->[0]->{wd}); knx_write($m_morgen_ws_ga, round($xml->{forecast}->{date}->[1]->{time}->[0]->{ws})); knx_write($m_morgen_wtxt_ga, $xml->{forecast}->{date}->[1]->{time}->[0]->{w_txt}); # Nachmittag knx_write($m_mittag_w_ga, substr($xml->{forecast}->{date}->[1]->{time}->[1]->{w},0,1)); knx_write($m_mittag_pc_ga, $xml->{forecast}->{date}->[1]->{time}->[1]->{pc}); my $temp_min = $xml->{forecast}->{date}->[1]->{time}->[1]->{tn}; my $temp_max = $xml->{forecast}->{date}->[1]->{time}->[1]->{tx}; knx_write($m_mittag_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($m_mittag_tn_ga, $temp_min); knx_write($m_mittag_tx_ga, $temp_max); knx_write($m_mittag_wd_ga, $xml->{forecast}->{date}->[1]->{time}->[1]->{wd}); knx_write($m_mittag_ws_ga, round($xml->{forecast}->{date}->[1]->{time}->[1]->{ws})); knx_write($m_mittag_wtxt_ga, $xml->{forecast}->{date}->[1]->{time}->[1]->{w_txt}); # Abend knx_write($m_abend_w_ga, substr($xml->{forecast}->{date}->[1]->{time}->[2]->{w},0,1)); knx_write($m_abend_pc_ga, $xml->{forecast}->{date}->[1]->{time}->[2]->{pc}); my $temp_min = $xml->{forecast}->{date}->[1]->{time}->[2]->{tn}; my $temp_max = $xml->{forecast}->{date}->[1]->{time}->[2]->{tx}; knx_write($m_abend_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($m_abend_tn_ga, $temp_min); knx_write($m_abend_tx_ga, $temp_max); knx_write($m_abend_wd_ga, $xml->{forecast}->{date}->[1]->{time}->[2]->{wd}); knx_write($m_abend_ws_ga, round($xml->{forecast}->{date}->[1]->{time}->[2]->{ws})); knx_write($m_abend_wtxt_ga, $xml->{forecast}->{date}->[1]->{time}->[2]->{w_txt}); # Nacht knx_write($m_nacht_w_ga, substr($xml->{forecast}->{date}->[1]->{time}->[3]->{w},0,1)); knx_write($m_nacht_pc_ga, $xml->{forecast}->{date}->[1]->{time}->[3]->{pc}); my $temp_min = $xml->{forecast}->{date}->[1]->{time}->[3]->{tn}; my $temp_max = $xml->{forecast}->{date}->[1]->{time}->[3]->{tx}; knx_write($m_nacht_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($m_nacht_tn_ga, $temp_min); knx_write($m_nacht_tx_ga, $temp_max); knx_write($m_nacht_wd_ga, $xml->{forecast}->{date}->[1]->{time}->[3]->{wd}); knx_write($m_nacht_ws_ga, round($xml->{forecast}->{date}->[1]->{time}->[3]->{ws})); knx_write($m_nacht_wtxt_ga, $xml->{forecast}->{date}->[1]->{time}->[3]->{w_txt}); ## Wetterauswertung uebermorgen # Morgen knx_write($u_morgen_w_ga, substr($xml->{forecast}->{date}->[2]->{time}->[0]->{w},0,1)); knx_write($u_morgen_pc_ga, $xml->{forecast}->{date}->[2]->{time}->[0]->{pc}); my $temp_min = $xml->{forecast}->{date}->[2]->{time}->[0]->{tn}; my $temp_max = $xml->{forecast}->{date}->[2]->{time}->[0]->{tx}; knx_write($u_morgen_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($u_morgen_tn_ga, $temp_min,); knx_write($u_morgen_tx_ga, $temp_max,); knx_write($u_morgen_wd_ga, $xml->{forecast}->{date}->[2]->{time}->[0]->{wd}); knx_write($u_morgen_ws_ga, round($xml->{forecast}->{date}->[2]->{time}->[0]->{ws})); knx_write($u_morgen_wtxt_ga, $xml->{forecast}->{date}->[2]->{time}->[0]->{w_txt}); # Nachmittag knx_write($u_mittag_w_ga, substr($xml->{forecast}->{date}->[2]->{time}->[1]->{w},0,1)); knx_write($u_mittag_pc_ga, $xml->{forecast}->{date}->[2]->{time}->[1]->{pc}); my $temp_min = $xml->{forecast}->{date}->[2]->{time}->[1]->{tn}; my $temp_max = $xml->{forecast}->{date}->[2]->{time}->[1]->{tx}; knx_write($u_mittag_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($u_mittag_tn_ga, $temp_min); knx_write($u_mittag_tx_ga, $temp_max); knx_write($u_mittag_wd_ga, $xml->{forecast}->{date}->[2]->{time}->[1]->{wd}); knx_write($u_mittag_ws_ga, round($xml->{forecast}->{date}->[2]->{time}->[1]->{ws})); knx_write($u_mittag_wtxt_ga, $xml->{forecast}->{date}->[2]->{time}->[1]->{w_txt}); # Abend knx_write($u_abend_w_ga, substr($xml->{forecast}->{date}->[2]->{time}->[2]->{w},0,1)); knx_write($u_abend_pc_ga, $xml->{forecast}->{date}->[2]->{time}->[2]->{pc}); my $temp_min = $xml->{forecast}->{date}->[2]->{time}->[2]->{tn}; my $temp_max = $xml->{forecast}->{date}->[2]->{time}->[2]->{tx}; knx_write($u_abend_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($u_abend_tn_ga, $temp_min); knx_write($u_abend_tx_ga, $temp_max); knx_write($u_abend_wd_ga, $xml->{forecast}->{date}->[2]->{time}->[2]->{wd}); knx_write($u_abend_ws_ga, round($xml->{forecast}->{date}->[2]->{time}->[2]->{ws})); knx_write($u_abend_wtxt_ga, $xml->{forecast}->{date}->[2]->{time}->[2]->{w_txt}); # Nacht knx_write($u_nacht_w_ga, substr($xml->{forecast}->{date}->[2]->{time}->[3]->{w},0,1)); knx_write($u_nacht_pc_ga, $xml->{forecast}->{date}->[2]->{time}->[3]->{pc}); my $temp_min = $xml->{forecast}->{date}->[2]->{time}->[3]->{tn}; my $temp_max = $xml->{forecast}->{date}->[2]->{time}->[3]->{tx}; knx_write($u_nacht_temp_ga, ausgabe_temp($temp_min, $temp_max)); knx_write($u_nacht_tn_ga, $temp_min); knx_write($u_nacht_tx_ga, $temp_max); knx_write($u_nacht_wd_ga, $xml->{forecast}->{date}->[2]->{time}->[3]->{wd}); knx_write($u_nacht_ws_ga, round($xml->{forecast}->{date}->[2]->{time}->[3]->{ws})); knx_write($u_nacht_wtxt_ga, $xml->{forecast}->{date}->[2]->{time}->[3]->{w_txt}); sub ausgabe_temp { my $temp_min = shift; my $temp_max = shift; my $rueck_temp_value; my $temp; # Abfrage welche Temperaturen zurückgegebe werden soll if ( $temp_ausgabe eq "Max" ) { $temp = $temp_max; } elsif ($temp_ausgabe eq "Min" ) { $temp = $temp_min; } elsif ($temp_ausgabe eq "Extrem" ) { if ( abs( $temp_min ) >= abs( $temp_max ) ) { $temp = $temp_min; } else { $temp = $temp_max; } } else { $temp = round ( ($temp_min + $temp_max) / 2 ); } # Aufbereiten der negativen Temperaturwerte für den rueck one if ( $temp < 0 ) { $rueck_temp_value = 256 + $temp; } else { $rueck_temp_value = $temp; } return $rueck_temp_value; } sub round { my $value = shift; # 1. Wert enthält die Zahl die gerundet werden soll my $precision = int(shift); # 2. Wert enthält die Anzahl der Stellen nach dem Komma, auf die gerundet werden soll. # Speichert das Vorzeichen und setzt value auf den Absolutwert. my $sign = 1; if($value < 0) { $sign = -1; } $value = abs($value); # Berrechnet den Genauigkeitsfaktor my $pFactor = 10 ** $precision; # Rundet den Wert $value = int(($value * $pFactor) + 0.5) / $pFactor; # Berücksichtigt das ursprüngliche Vorzeichen $value *= $sign; return $value; }Das ist ne Altlast im meinem Plugin, weil ich den Wert bei der späteren Optimierung immer wieder brauche. Das ist ein Zwischenspeichern, so daß der Wert beim nächsten Aufruf nicht neu ermittelt werden muss. Weiter unten im Plugin kommt ja noch mein sonstiges tunen der Kesselsteuerung.Zitat von henfri Beitrag anzeigenUnd dann noch die Frage, wofür dies:
Code:$plugin_info{$plugname.'_Sommer'} = 0; # Status merken
Werd ich machen. Ich hoffe ihr reißt mir in dem Thread nicht den Kopf ab ...Zitat von henfri Beitrag anzeigenOh, das klingt interessant. Dazu habe ich gerade nebenan einen Thread aufgemacht (https://knx-user-forum.de/gebaeudete...er-regeln.html). Hast du deine Heizungssteuerung hier irgendwo vorgestellt/hättest du Lust dazu?
(Hab leider auch schon schlechte Erfahrungen hier im Forum gemacht)
Gruß
Sascha
Einen Kommentar schreiben:
-
Hi Sascha,
Das obige Plugin hast du dann aber noch um die Abfrage für morgen und übermorgen erweitert, oder?Zitat von haegar80 Beitrag anzeigenHallo Hendrik,
ich habe das auf Basis des oben genannten Plugins zur Abfage bei Wetter.com im meinem Plugin zur Optimierung der Heizung eingebaut:
Und dann noch die Frage, wofür dies:
?Code:$plugin_info{$plugname.'_Sommer'} = 0; # Status merken
Oh, das klingt interessant. Dazu habe ich gerade nebenan einen Thread aufgemacht (https://knx-user-forum.de/gebaeudete...er-regeln.html). Hast du deine Heizungssteuerung hier irgendwo vorgestellt/hättest du Lust dazu?Das ist aber nur ein kleiner Baustein der Heizungssteuerung. Bei mir fließt zusätzlich noch die größte Stellgröße aller Heizkreise ein. Somit ist die Sommer/Winter Umschaltung "nur" ein Schutz gegen ungewolltes Aufzeizen des Estrichs bei kurzzeitigen Temperaturschwankungen.
Gruß,
Hendrik
Ich glaube zum Anfangen, gibt es Plugins die geeigneter sind...
Versuch doch erst einmal die Wettervorhersage auf den Bus zu bekommen.
Gruß
Sascha[/QUOTE]
Einen Kommentar schreiben:
-
Hallo Hendrik,Zitat von henfri Beitrag anzeigenHallo,
hat hier schon jemand weiter gemacht?
ich habe das auf Basis des oben genannten Plugins zur Abfage bei Wetter.com im meinem Plugin zur Optimierung der Heizung eingebaut:
Ich stelle in der CV dann die Grenztemperatur für die Sommer/Winter Umschaltung ein.Code:$plugin_subscribe{$GA_T_SommerWinter}{$plugname} = 1; my $H_T = (knx_read($GA_H_T_7)+knx_read($GA_H_T_14)+knx_read($GA_H_T_22)+knx_read($GA_H_T_22))/4; my $M_T = (knx_read($GA_M_T_7)+knx_read($GA_M_T_14)+knx_read($GA_M_T_22)+knx_read($GA_M_T_22))/4; my $U_T = (knx_read($GA_U_T_7)+knx_read($GA_U_T_14)+knx_read($GA_U_T_22)+knx_read($GA_U_T_22))/4; my $TempSommerWinter = ($H_T+$M_T+$M_T+$U_T)/4; if (! ($H_T == 0 and $M_T == 0 and $U_T == 0 )) { plugin_log($plugname,"RRD-Update für Vorhersagetemperatur Heute: ".$H_T."°C - Morgen: ".$M_T."°C - Übermorgen: ".$U_T."°C"); update_rrd($RRD_T_SommerWinter,"",$TempSommerWinter); if ($TempSommerWinter < knx_read($GA_T_SommerWinter)) { # Vorhersagetemperatur < Grenzwert knx_write($GA_Sommer, 00, 1); # Sommerstatus auf GA zurücksetzen $plugin_info{$plugname.'_Sommer'} = 0; # Status merken plugin_log($plugname,"Winterbetrieb"); } else { # sonst Sommerbetrieb knx_write($GA_Sommer, 01, 1); # Sommerstatus auf GA schreiben $plugin_info{$plugname.'_Sommer'} = 1; # Status merken plugin_log($plugname,"Sommerbetrieb + Heizkreise Aus"); } }
Das ist aber nur ein kleiner Baustein der Heizungssteuerung. Bei mir fließt zusätzlich noch die größte Stellgröße aller Heizkreise ein. Somit ist die Sommer/Winter Umschaltung "nur" ein Schutz gegen ungewolltes Aufzeizen des Estrichs bei kurzzeitigen Temperaturschwankungen.
Ich glaube zum Anfangen, gibt es Plugins die geeigneter sind...Zitat von henfri Beitrag anzeigenIch habe mich gerade an einem anderen Plugin versucht und verstanden, dass ich ganz langsam damit anfangen muss
Sprich: Dies ist eine Nummer zu groß für mich.
Gruß,
Hendrik
Versuch doch erst einmal die Wettervorhersage auf den Bus zu bekommen.
Gruß
Sascha
Einen Kommentar schreiben:
-
Hallo,
hat hier schon jemand weiter gemacht?
Ich habe mich gerade an einem anderen Plugin versucht und verstanden, dass ich ganz langsam damit anfangen muss
Sprich: Dies ist eine Nummer zu groß für mich.
Gruß,
Hendrik
Einen Kommentar schreiben:
-
Hallo
Hatte ich hier schon.Code:@henfri würdest du den Code für die Wetterabfrage hier posten?
Für Früh,Mittag,Abend,Nacht und morgen Früh.
Der Rest muss nur noch angefügt werden, siehe auch die XML aus Post 27.
https://knx-user-forum.de/236505-post26.html
Gruß NetFritz
Einen Kommentar schreiben:
-
Hallo Netfritz,
würdest du den Code für die Wetterabfrage hier posten?
Gruß&Danke,
HEndrik
Einen Kommentar schreiben:
-
Hallo
Mit einem WG Plugin, kann man mit Hilfe der API Wetter.com ,die Temp. im 6Std. Rhythmus 3Tage im voraus abfragen.
Daraus kann man dann sicherlich eine Erkennung der Sommer/Winter Umschaltung bauen.
Ich nutze die API Abfrage mit einem WG Plugin zur Beeinflussung der Sollwert Temp. meiner AI-WP.
Auf meiner WAGO wird ein linearer Interpolations Baustein mit den Temp. gefüttert.
Der Baustein wird mit 5Std. Vorlauf betrieben und sendet seine Temp. Werte
an einem Sollertwertbaustein der dann die Sollwerttemp. meiner WP beeinflusst.
Der Sollwert wird auf die Temp. verstellt, die der erst in 5Std. gültig ist.
Gruß Netfritz
Einen Kommentar schreiben:
-
Unter reinen Komfort Gesichtspunkten ist das richtig. Da steuert man nur nach Bedarf und gut ist. Meine Anforderung geht aber in die Richtung Energiesparen (wird ja immer teurer). Und da spielt es eine Rolle, ob eine kurzzeitige Komforterfüllung mit dem Aufwand gerechtfertigt ist.Zitat von mknx Beitrag anzeigenHi,
ist diese DIN-Norm bzw. der Algorithmus nicht 90er?
In einem smarten Home hat man doch ganz andere Möglichkeiten als die Heizungssteuerung mit einem PT1000. Ich denke da an Zulauftemperatur der KWL, Behaglichkeitsfelder der Wohnräume (Wz, Kinderz, Büro) und die Wettervorhersage.
Und da kann man eigentlich nur die Prognose (Wettervorhersage) als Quelle nutzen und diese mit einer geschickten Formel einbeziehen.
Also DIN-Temperatur (in visu variabel einstellbar) in den nächsten 2 Tagen erfüllt, dann ist der Komfort zweitrangig
Schon klar, aber KWL und Heizung werden technisch unabhängig voneinander geregelt, also 2 Optimierungsregeln auf Basis teilweise gemeinsamer Messwerte.Zitat von mknx Beitrag anzeigenWeiterhin ist es wahrscheinlich sinnvoll zwischen vier Status zu unterscheiden: heizen, kwl ohne bypass, kwl mit Bypass und kühlen.
Einen Kommentar schreiben:
-
Nö, mit 4 Jahren Betriebserfahrung muss ich das so sagen: Wetterfrosch ist Wetterfrosch (Wünschelrute, whatever), gemessene Temperatur ist was sehr reales; 90er ist nur das raten von Zuknunftswerten oder eine "schleppende" Nachführung so wie meine WP das tut (aber nicht darf)Zitat von mknx Beitrag anzeigenist diese DIN-Norm bzw. der Algorithmus nicht 90er?
Makki
Einen Kommentar schreiben:
-
Hi,
ist diese DIN-Norm bzw. der Algorithmus nicht 90er?
In einem smarten Home hat man doch ganz andere Möglichkeiten als die Heizungssteuerung mit einem PT1000. Ich denke da an Zulauftemperatur der KWL, Behaglichkeitsfelder der Wohnräume (Wz, Kinderz, Büro) und die Wettervorhersage.
Weiterhin ist es wahrscheinlich sinnvoll zwischen vier Status zu unterscheiden: heizen, kwl ohne bypass, kwl mit Bypass und kühlen.
So Long
Marcus
Einen Kommentar schreiben:
-
Das kenne ich und das ist auch meine Vorlage. Ich muß das "nur" noch ans Laufen bringen und die GA richtig einrichten.Zitat von NetFritz Beitrag anzeigenWetter.com hat eine API mit der man die Daten abfragen kann.
Man muss sich dafür kostenlos anmelden.
https://knx-user-forum.de/code-schni...denro-one.html
Einen Kommentar schreiben:
-
Logo, dafür greift bei warmen Tagen die Heizgrenze, die schaltet den Heizkreis bei Außentemperatur > x aus. Deswegen kommt es zur Zeit nicht zu dem takten obwohl keine Wärme abgenommen wird. an sonnigen Herbsttagen kommts wieder, versprochen.Zitat von greentux Beitrag anzeigenKann ich so nicht mehr nachvollziehen. Derzeit NICHT auf Somemrbetrieb sieht so aus.
Also im Grunde auch nur Warmwasser und kühlt dann über den Tag langsam ab.
Einen Kommentar schreiben:
-
Kann ich so nicht mehr nachvollziehen. Derzeit NICHT auf Somemrbetrieb sieht so aus.Bei greentux geht das nicht, weil er keine RTR hat. Deswegen hat er auch nen höheren Pelletsverbrauch, weil der Kessel auf StandBy Temperatur rumnudelt, obwohl keine Wärme abgenommen wird.
Also im Grunde auch nur Warmwasser und kühlt dann über den Tag langsam ab.Angehängte Dateien
Einen Kommentar schreiben:


Einen Kommentar schreiben: