Ankündigung

Einklappen
Keine Ankündigung bisher.

- √ - Plugin ignoriert Datenpunkttyp

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

    [wiregate] - √ - Plugin ignoriert Datenpunkttyp

    Hallo Zusammen,

    ich habe das Codebeispiel für die Wetterabfrage bei wetter.com für meine Zwecke modifiziert. Es läuft auch, aber igendwie scheint mein Plugin die Datenpunkttypen zu ignorieren.

    Hier der stark gekürzte Code:
    Code:
    # Gruppenadressen 
    my $h_morgen_temp_ga = '5/7/11';
    my $h_morgen_tn_ga = '5/7/12';
    my $h_morgen_tx_ga = '5/7/13';
    my $h_morgen_w_ga = '5/7/15';
    my $h_morgen_wtxt_ga = '5/7/16';
    my $h_morgen_pc_ga = '5/7/21';
    my $h_morgen_ws_ga = '5/7/25';
    my $h_morgen_wd_ga = '5/7/26';
    my $h_morgen_wdtxt_ga = '5/7/27';
    # 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 auf 3 Stunden setzen
    $plugin_info{$plugname.'_cycle'} = 10800;
    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), 5.010);
    knx_write($h_morgen_pc_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{pc}, 5.001);
    knx_write($h_morgen_tn_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{tn}, 9.001);
    knx_write($h_morgen_tx_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{tx}, 9.001);
    knx_write($h_morgen_wd_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{wd}, 7.001);
    knx_write($h_morgen_ws_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{ws}, 5.010);
    knx_write($h_morgen_wtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{w_txt}, 16);
    knx_write($h_morgen_wdtxt_ga, $xml->{forecast}->{date}->[0]->{time}->[0]->{wd_txt}, 16);
    Die XML-Datei für die Wettervorhersage gibt es hier.

    Die Abfrage stimmt schon, aber der Datenpunkttyp wird entweder ignoriert oder ich setze die falschen. Bloß welcher ist dann richtig?

    In der ETS kommt das hier an:
    Heute - Morgen > Wetterzustand Code ## 1 Byte ## $06 | 2 %
    Heute - Morgen > Niederschlag ## 1 Byte ## $D9 | 85 %
    Heute - Morgen > Temperatur min ## 2 Byte ## 05 14 | 13
    Heute - Morgen > Temperatur max ## 2 Byte ## 05 78 | 14
    Heute - Morgen > Windrichtung Grad ## 2 Byte ## 01 0E | 2,7
    Heute - Morgen > Windgeschwindigkeit km/h ## 1 Byte ## $12 | 7 %
    Heute - Morgen > Windrichtung Text ## 14 Byte ## 57 00 00 00 00 00 00 00 00 00 00 00 00 00
    Heute - Morgen > Wetterzustand Text ## 14 Byte ## 6C 65 69 63 68 74 65 72 20 52 65 67 65 6E

    Richtig wäre:
    Heute - Morgen > Wetterzustand Code ## 5
    Heute - Morgen > Niederschlag ## 85%
    Heute - Morgen > Temperatur min ## 13°C
    Heute - Morgen > Temperatur max ## 14°C
    Heute - Morgen > Windrichtung Grad ## 270
    Heute - Morgen > Windgeschwindigkeit km/h ## 18,5
    Heute - Morgen > Windrichtung Text ## W
    Heute - Morgen > Wetterzustand Text ## leichter Regen


    Kann mir jemand helfen?

    Danke
    Sascha

    #2
    Das sieht doch gar nicht so schlecht aus. Hast Du in der ETS die DPT richtig angelegt? Im Zweifel Dummy-Applikation, da die GA eintragen und dann den DPT richtig setzen
    KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

    Kommentar


      #3
      Wie kann ich denn in der ETS die DPT für GA bestimmen?
      Das kann man doch nur auf den Kommunikationsobjekten der Geräte...
      ... und in diesem Fall ist es ja das WG das nicht in der ETS ist.

      Ich habe auch mal versucht die GA manuell mit den DPT im Wiregate anzulegen. Der WG Busmonitor zeigt immer nur die "Nudeln" und keine formatierten Werte.

      Woher weiß ich dann ob die Werte korrekt auf den Bus geschrieben wurden? Trial & Error wenn diese verwendet werden?

      Danke
      Sascha

      Kommentar


        #4
        Wie gesagt: du musst eine Dummy-Applikation einfügen. Da kannst du dann die GA verknüpfen und den DPT festlegen.

        Gruß,

        der Jam
        KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

        Kommentar


          #5
          Welche Dummy Applikation kann ich denn verwenden um alle möglichen DPT festlegen zu können?

          Ich deachte erst an das Infoterminal, aber da muss ich ja noch ein ETS Plugin installieren.

          Gibts eine Applikation, die alle möglichen DPT kennt ohne groß Plugins installieren zu müssen?

          Danke
          Sascha

          Kommentar


            #6
            Ich habe eine, die glaube ich von der Konnex ist. Da kann man für 64 Adressen einstellen, wirviel Byte und welcher DPT.

            Gruß,

            Der Jan
            KNX, DMX over E1.31, DALI, 1W, OpenHAB, MQTT

            Kommentar


              #7
              Such mal hier im Forum nach Dummy-Applikation. Die gibt es von verschiedenen Hersteller und man kann - direkt in der ETS - alle möglichen Datentypen einstellen und GAs zuweisen.

              Kommentar


                #8
                Danke!

                Daß es von den Herstellern Dummy Applikationen gibt, darauf bin ich natürlich nicht gekommen.

                Kommentar

                Lädt...
                X