Ankündigung

Einklappen
Keine Ankündigung bisher.

Plugin zum Aufrufen einer URL je nach GA

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

  • makki
    antwortet
    Zitat von henfri Beitrag anzeigen
    Das zeigt, dass ich das Konstrukt
    my %string_GA_URI_mapping = (
    '3/3/1' => '580600.htm?blw91A12005=1' # Kessel - Kesselstatus (Text)
    ); nicht kapiert habe.
    Wie nennt sich das (ich will mich belesen)?
    Ich kenne es sonst als Array. Richtig?
    Richtig, das ist ein Array, allerdings ist es so ein Hash mit einem Array of Hashes darin
    Also ich sage nicht das das verständlich ist aber ich vermeide sowas wie der Teufel das Weihwasser weil da kommt so ne lustige Syntax wie
    $string_GA_URI_mapping{''}[0]->{'3/3/1'} (oder so ähnlich) bei raus..

    Dazu gibts viel zu lesen und IMHO wenig zu verstehen, weil ich kapiers bis heute nicht (es gibt ja noch hashref etc) wann "$", "%$", "@$" oder "->" angesagt ist
    Edit: vorhandene Plugins und wiregated*.pl sind die beste Anleitung die ich liefern kann, ansonsten gibts dazu eben viel zu lesen..

    Makki

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Hallo Hendrik schau die mal das hier an, hab grad wenig Zeit.

    Plugin: SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/Nacht-Nachdimmen
    config:SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/conf.d/Nacht-Nachdimmen.conf_sample
    config kannste ja weglassen und gleich in das Plugin kopieren.

    Das ganze sind Arrays, aber irgendwie mehrdimensional ... bin ich auch überfragt.
    Das finde ich aber mit am besten was das Verständnis angeht.

    Vielleicht hilft dir auch das Plugin weiter:
    SourceForge.net Repository - [openautomation] Contents of /wiregate/plugin/generic/XBMC-notification.pl

    Achso... das was Du da hast ist ein Hash und im Nachdimmen-Plugin müsste es ein Array of Hahes sein ... aber ich bin selbst nur Perl-Dau

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    danke ;-)
    klappt immer noch nicht (kein Syntax-Fehler, aber auch keine Funktion. Daher habe ich mal eine Log-Ausgabe hinzugefügt:
    Code:
    #!/usr/bin/perl
    use strict;
    use LWP::Simple;
    # ******************************************************************************
    # Das Plugin schaltet Ausgänge der UVR1611
    # Finden der URL über
    # http://IP-Der-1611/580600.htm
    # ******************************************************************************
    
    ####################
    ###Einstellungen:###
    ####################
    
    my $uvr_ip = '192.168.1.5';
    
    my %string_GA_URI_mapping = (
         '3/3/1' => '580600.htm?blw91A12005=1' # Kessel - Kesselstatus (Text)
    );
         
    
    
    ######################
    ##ENDE Einstellungen##
    ######################
    
    
    $plugin_info{$plugname.'_cycle'} = 86400; 
    
    for my $ga (%string_GA_URI_mapping) 
    {
         $plugin_subscribe{$ga}{$plugname} = 1; #An Gruppenadresse anmelden 
       plugin_log($plugname,'Subscribe: ' . $ga );
         if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq {$ga}) {    
         get( "http://".$uvr_ip."/".$string_GA_URI_mapping{$ga});
         plugin_log($plugname,'Call: ' .  "http://".$uvr_ip."/".$string_GA_URI_mapping{$ga} );
         }
    
    }
    Im Log steht jetzt aber -auch wenn ich die 3/3/1 aufrufe nur:
    2012-10-18 15:16:02.090,UVR_Senden,Subscribe: 3/3/1 2012-10-18 15:16:02.091,UVR_Senden,Subscribe: 580600.htm?blw91A12005=1
    Das zeigt mir aber, dass etwas mit dem $ga nicht stimmt.
    Ich dachte, dass for my $ga (%string_GA_URI_mapping)
    als Laufvariable $ga hat und darin die linke Seite von %string_GA_URI_mapping steht.

    Das ist aber scheinbar nicht so. In $ga steht wohl beides, denn nur so erklärt sich, dass beides im Log steht.

    Das zeigt, dass ich das Konstrukt
    my %string_GA_URI_mapping = (
    '3/3/1' => '580600.htm?blw91A12005=1' # Kessel - Kesselstatus (Text)
    ); nicht kapiert habe.
    Wie nennt sich das (ich will mich belesen)?
    Ich kenne es sonst als Array. Richtig?

    Gruß,
    Hendrik


    %string_GA_URI_mapping

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Da fehlt der . vor $string.....
    So wie an der Stelle davor, der Punkt verbindet Variable und Text.

    Sorry mit dem IPad hier kann ich keinen Code tippen

    So:
    Code:
         if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq {$ga}) {    
         get( "http://".$uvr_ip."/".$string_GA_URI_mapping{$ga});
         }
    
    }

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo,

    danke für deine Hilfe.
    Irgendwo ist da noch ein Wurm drin:
    Code:
    #!/usr/bin/perl
    use strict;
    use LWP::Simple;
    # ******************************************************************************
    # Das Plugin schaltet Ausgänge der UVR1611
    # Finden der URL über
    # http://IP-Der-1611/580600.htm
    # ******************************************************************************
    
    ####################
    ###Einstellungen:###
    ####################
    
    my $uvr_ip = '192.168.1.5';
    
    my %string_GA_URI_mapping = (
         '3/3/1' => '580600.htm?blw91A12005=1' # Kessel - Kesselstatus (Text)
    );
         
    
    
    ######################
    ##ENDE Einstellungen##
    ######################
    
    
    $plugin_info{$plugname.'_cycle'} = 86400; 
    
    for my $ga (%string_GA_URI_mapping) 
    {
         $plugin_subscribe{$ga}{$plugname} = 1; #An Gruppenadresse anmelden 
    
         if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq {$ga}) {    
         get( "http://".$uvr_ip."/"$string_GA_URI_mapping{$ga});
         }
    
    }
    syntax error at (eval 307255) line 34,
    near ""/"$string_GA_URI_mapping" syntax
    error at (eval 307255) line 37, near "} }"
    Ich sehe aber nix. Line 34 ist die mit "get".
    Ich sehe aber weder in der Zeile, oder in der davor/dahinter einen Syntax-Fehler.
    Ihr?

    Gruß,
    Hendirk

    Einen Kommentar schreiben:


  • JuMi2006
    antwortet
    Ich hab das mit dem hash jetzt nicht getestet aber das sollte reichen. Wie sieht das denn bei mehreren GAs aus? Sonst guck mal wie das im Nachdimmen Plugin ist...das finde ich übersichtlicher. Dort werden die Daten in einem Array abgelegt ... damit hast Du mehr Möglichkeiten in der Konfiguration und es ist rech übersichtlich.

    Gruß Mirko

    Code:
    use LWP::Simple;
    $plugin_info{$plugname.'_cycle'} = 86400; 
    
    for my $ga (%string_GA_URI_mapping) 
    {
         $plugin_subscribe{$ga}{$plugname} = 1; #An Gruppenadresse anmelden 
    
         if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq {$ga}) {    
         get( "http://".$uvr_ip."/"$string_GA_URI_mapping{$ga});
         }
    
    }

    Einen Kommentar schreiben:


  • henfri
    antwortet
    Hallo Makki,

    Zitat von makki Beitrag anzeigen
    Ganz falsch isses mal nicht, beim $plugin_subscribe müsste man allerdings schon die GA anmelden..
    Ich dachte, das mache ich:
    Ich gehe durch alle GAs:
    Code:
    for my $ga (%string_GA_URI_mapping) {
    Wenn eine GA aus der Liste gesendet wird, dann wird die URL aufgerufen:
    Code:
     if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq {$ga}) {    
        get( "http://".$uvr_ip."/"$string_GA_URI_mapping{$ga});
        }
    Wenn jedoch keine GA aus der Liste gesendet wird, dann ist dieser Aufruf der erste Aufruf überhaupt und wir abonnieren die GAs:

    Code:
        else
    {    
    $plugin_info{$plugname.'_cycle'} = 86400; 
        if (exists $string_GA_URI_mapping{$ga}) {
        $plugin_subscribe{$ga}{$plugname} = 1; #An Gruppenadresse anmelden
    }    
    }
    Oder hab ich da etwas falsch verstanden?

    Also nochmal
    for my $ga (%string_GA_URI_mapping) {
    Der Bereich (plugin_subscribe) ist doch in der for-Schliefe...


    Gruß,
    Hendrik

    Einen Kommentar schreiben:


  • makki
    antwortet
    Ganz falsch isses mal nicht, beim $plugin_subscribe müsste man allerdings schon die GA anmelden..
    Also nochmal
    for my $ga (%string_GA_URI_mapping) {

    oder so ähnlich (keys %..GA_URI_..) getestet hab ichs jetzt nicht..

    Makki

    Einen Kommentar schreiben:


  • henfri
    hat ein Thema erstellt [wiregate] Plugin zum Aufrufen einer URL je nach GA.

    Plugin zum Aufrufen einer URL je nach GA

    Hallo,

    ich möchte wenn eine GA empfangen wird, eine bestimmte URL aufrufen.
    Das Plugin soll gleichzeitig auf mehrere GA hören und je nach GA eine andere URL aufrufen.

    Hintergrund: So kann ich meine Heizungssteuerung beeinflussen (UVR1611).

    Durch geschicktes Klauen bin ich jetzt so weit:
    Code:
    #!/usr/bin/perl
    use strict;
    
    # ******************************************************************************
    # Das Plugin schaltet Ausgänge der UVR1611
    # Finden der URL über
    # http://IP-Der-1611/580600.htm
    # ******************************************************************************
    
    ####################
    ###Einstellungen:###
    ####################
    
    my $uvr_ip = '192.168.1.5';
    
    my %string_GA_URI_mapping = (
         '3/3/1' => '580600.htm?blw91A12005=' # Kessel - Kesselstatus (Text)
    )
         
    
    
    ######################
    ##ENDE Einstellungen##
    ######################
    
    use LWP::Simple;
    
    for my $ga (%string_GA_URI_mapping) {
    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq {$ga}) {    
        get( "http://".$uvr_ip."/"$string_GA_URI_mapping{$ga});
        }
        else
    {    
    $plugin_info{$plugname.'_cycle'} = 86400; 
        if (exists $string_GA_URI_mapping{$ga}) {
        $plugin_subscribe{$ga}{$plugname} = 1; #An Gruppenadresse anmelden
    }    
    }

    Macht das Sinn so?

    Gruß,
    Hendrik
Lädt...
X