Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin gesucht für Erkennung Sommer/Winter für Heizungssteuerung

Einklappen
Dieses Thema ist geschlossen.
X
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    #31
    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

    Kommentar


      #32
      Zitat von mknx Beitrag anzeigen
      ist diese DIN-Norm bzw. der Algorithmus nicht 90er?
      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)

      Makki
      EIB/KNX & WireGate & HS3, Russound,mpd,vdr,DM8000, DALI, DMX
      -> Bitte KEINE PNs!

      Kommentar


        #33
        Zitat von mknx Beitrag anzeigen
        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.
        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.
        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

        Zitat von mknx Beitrag anzeigen
        Weiterhin ist es wahrscheinlich sinnvoll zwischen vier Status zu unterscheiden: heizen, kwl ohne bypass, kwl mit Bypass und kühlen.
        Schon klar, aber KWL und Heizung werden technisch unabhängig voneinander geregelt, also 2 Optimierungsregeln auf Basis teilweise gemeinsamer Messwerte.

        Kommentar


          #34
          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
          KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
          WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
          PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

          Kommentar


            #35
            Hallo Netfritz,

            würdest du den Code für die Wetterabfrage hier posten?

            Gruß&Danke,
            HEndrik

            Kommentar


              #36
              Hallo

              Code:
              @henfri
              würdest du den Code für die Wetterabfrage hier posten?
              Hatte ich hier schon.
              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
              KNX & Wago 750-849 ,Wiregate u. Cometvisu, iPad 3G 64GB.
              WP Alpha-Innotec WWC130HX (RS232-Moxa-LAN),Solaranlage für Brauchwasser und Heizung.
              PV-Anlage = SMA Webbox2.0 , SunnyBoy 4000TL, Sharp 4kWP

              Kommentar


                #37
                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

                Kommentar


                  #38
                  Zitat von henfri Beitrag anzeigen
                  Hallo,

                  hat hier schon jemand weiter gemacht?
                  Hallo Hendrik,
                  ich habe das auf Basis des oben genannten Plugins zur Abfage bei Wetter.com im meinem Plugin zur Optimierung der Heizung eingebaut:
                  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");        
                      }  
                  }
                  Ich stelle in der CV dann die Grenztemperatur für die Sommer/Winter Umschaltung ein.

                  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.

                  Zitat von henfri Beitrag anzeigen
                  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
                  Ich glaube zum Anfangen, gibt es Plugins die geeigneter sind...
                  Versuch doch erst einmal die Wettervorhersage auf den Bus zu bekommen.

                  Gruß
                  Sascha

                  Kommentar


                    #39
                    Hi Sascha,
                    Zitat von haegar80 Beitrag anzeigen
                    Hallo Hendrik,
                    ich habe das auf Basis des oben genannten Plugins zur Abfage bei Wetter.com im meinem Plugin zur Optimierung der Heizung eingebaut:
                    Das obige Plugin hast du dann aber noch um die Abfrage für morgen und übermorgen erweitert, oder?

                    Und dann noch die Frage, wofür dies:
                    Code:
                            $plugin_info{$plugname.'_Sommer'} = 0;                # Status merken
                    ?


                    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.
                    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?

                    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]

                    Kommentar


                      #40
                      Zitat von henfri Beitrag anzeigen
                      Das 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;
                          }
                      Zitat von henfri Beitrag anzeigen
                      Und dann noch die Frage, wofür dies:
                      Code:
                              $plugin_info{$plugname.'_Sommer'} = 0;                # Status merken
                      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 anzeigen
                      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?
                      Werd ich machen. Ich hoffe ihr reißt mir in dem Thread nicht den Kopf ab ...
                      (Hab leider auch schon schlechte Erfahrungen hier im Forum gemacht)

                      Gruß
                      Sascha

                      Kommentar


                        #41
                        Zitat von haegar80 Beitrag anzeigen
                        Ja habe ich, mein Plugin für Wetter.com sieht so aus:
                        Danke. Die GAs passen sogar in mein Schema ;-)


                        Werd ich machen. Ich hoffe ihr reißt mir in dem Thread nicht den Kopf ab ...
                        Och, mir ist da selbst schon der Kopf -naja, die Ohren- lang gezogen worden.
                        Da mach ich mir nix draus.

                        Gruß,
                        Hendrik

                        Kommentar


                          #42
                          Zitat von henfri Beitrag anzeigen
                          Och, mir ist da selbst schon der Kopf -naja, die Ohren- lang gezogen worden.
                          Da mach ich mir nix draus.
                          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...

                          Kommentar

                          Lädt...
                          X