Ankündigung

Einklappen
Keine Ankündigung bisher.

Mehrzeilige Texte auf der Dreambox anzeigen

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    [WireGate-Plugin] Mehrzeilige Texte auf der Dreambox anzeigen

    Hallo zusammen

    Hier hab ich mal ein kleines Plugin erstellt, mit dem man auf sehr einfache Weise mehrzeilige Texte auf der Dreambox mit Enigma2 ausgeben kann.

    Code:
    # Plugin zum versenden von Textmeldungen an die Dreambox
    # Version 0.1 13.03.2011
    # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
    # License: GPL (v2)
    # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
    
    Für dieses Plugin muss das Paket libwww-perl installiert werden.
    
    ####################
    ###Einstellungen:###
    ####################
    
    
    my $aufrufende_ga = '1/1/1';
    my $dreambox_ip = '192.168.1.11';
    my $text = 'Zeile1&Zeile2&Zeile3&usw...'; #Für mehrere Zeilen einfach zwischen den Zeilen ein & einfügen
    
    my $timeout = 10; #Zeit in sekunden in der die Meldung angezeigt wird
    my $type = 2; #Meldungstyp: 1=Info, 2=Neutral, 3=Fehler
    
    
    ######################
    ##ENDE Einstellungen##
    ######################
    
    use LWP::Simple; 
    
    # Eigenen Aufruf-Zyklus auf 1T setzen
    $plugin_info{$plugname.'_cycle'} = 86400; 
    # Zyklischer Aufruf nach restart und alle 86400 sek., dient dem anmelden an die Gruppenadresse, einmalig (0) würde in diesem Fall auch genügen
    
    
    
    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $aufrufende_ga) {
    
    while($text =~ /&/) {
    $text =~ s/&/%20%5Cn/;
    }
    
    get( "http://".$dreambox_ip."/web/message?text=".$text."&type=".$type."&timeout=".$timeout );
    } else { # zyklischer Aufruf
       # Plugin an Gruppenadresse "anmelden", hierdurch wird das Plugin im folgenden bei jedem eintreffen eines Telegramms auf die GA aufgerufen und der obere Teil dieser if-Schleife durchlaufen
       $plugin_subscribe{$aufrufende_ga}{$plugname} = 1;
    }
    Gruss Patrik alias swiss

    #2
    Hallo Swiss,

    wie schaffe ich es, das in dem Plugin auch Werte von Sensoren ausgegeben werden. Z.B. wie die Temperatur draußen ist, ob es eine Wetterwarnung(siehe Plugin Wetterwarnung) gibt. usw.

    Danke!

    Gruss Alex

    Kommentar


      #3
      Hallo Alex

      Welche Werte und von welcher GA möchtest du denn im Text einfügen? Da finden wir bestimmt eine Lösung
      Gruss Patrik alias swiss

      Kommentar


        #4
        Ich würde gerne für den Anfang, den Wert eines Temperatursensors der am Wiregate hängt anzeigen. z.B. so: Wohnzimmer 19,5 Grad

        Für spätere Anwendungen könnte ich mir auch vorstellen, "Es ist jemand an der Haustüre" oder "Fehler beim schließen des Garagentors" usw.

        Gruss Alex

        Kommentar


          #5
          Ok das sollte sich machen lassen. Die Frage ist, wann diese Meldung angezeigt werden soll? Im moment wird die Meldung nur angezeigt, wenn auf einer bestimmten GA ein 1 Telegramm kommt. Bei der Anzeige der Themperatur bräuchten wir einen ähnlichen Trigger.

          Also um einfach Werte von GA's in der Meldung anzuzeigen würde dass etwa so aussehen:

          Code:
          # Plugin zum versenden von Textmeldungen an die Dreambox
          # Version 0.2 02.11.2011
          # Copyright: swiss (https://knx-user-forum.de/members/swiss.html)
          # License: GPL (v2)
          # Aufbau möglichst so, dass man unterhalb der Einstellungen nichts verändern muss!
          
          Für dieses Plugin muss das Paket libwww-perl installiert werden.
          
          
          ####################
          ###Einstellungen:###
          ####################
          my @Werte;
          
          push @Werte, { name => "WERT1", GA => '1/2/3', DPT => '9'};
          push @Werte, { name => "WERT2", GA => '1/2/4', DPT => '9'};
          
          my $aufrufende_ga = '1/1/1';
          my $dreambox_ip = '192.168.1.11';
          my $text = 'Temp1: WERT1&Temp2: WERT2&usw...'; #Für mehrere Zeilen einfach zwischen den Zeilen ein & einfügen
          
          my $timeout = 10; #Zeit in sekunden in der die Meldung angezeigt wird
          my $type = 2; #Meldungstyp: 1=Info, 2=Neutral, 3=Fehler
          
          
          ######################
          ##ENDE Einstellungen##
          ######################
          
          use LWP::Simple;
          
          # Eigenen Aufruf-Zyklus auf 1T setzen
          $plugin_info{$plugname.'_cycle'} = 86400;
          # Zyklischer Aufruf nach restart und alle 86400 sek., dient dem anmelden an die Gruppenadresse, einmalig (0) würde in diesem Fall auch genügen
          
          
          
          if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $aufrufende_ga) {
          
          while($text =~ /&/) {
          $text =~ s/&/%20%5Cn/;
          }
          
          foreach my $element (@Werte) {
          my $wert;
          
          $wert = knx_read($element->{GA} ,0,$element->{DPT});
          
              while($text =~ /$element->{name}/) {
              $text =~ s/$element->{name}/$wert/;
              }
          }
          
          get( "http://".$dreambox_ip."/web/message?text=".$text."&type=".$type."&timeout=".$timeout );
          } else { # zyklischer Aufruf
             # Plugin an Gruppenadresse "anmelden", hierdurch wird das Plugin im folgenden bei jedem eintreffen eines Telegramms auf die GA aufgerufen und der obere Teil dieser if-Schleife durchlaufen
             $plugin_subscribe{$aufrufende_ga}{$plugname} = 1;
          }
          Gruss Patrik alias swiss

          Kommentar


            #6
            Hallo Swiss,

            das sieht doch schon gut aus! Es könnte ja mehrere Trigger geben. z.b. Temperatur singt unter 0, dann eine Warnmeldung! Man könnte ja auch auf einen Taster reagieren. Es gibt da ja viele Möglichkeiten.

            Gruss Alex

            Kommentar


              #7
              Zitat von mrat
              Es könnte ja mehrere Trigger geben. z.b. Temperatur singt unter 0, dann eine Warnmeldung!
              Dafür ist das Plugin momentan nicht ausgelegt aber man kann natürlich mit z.B. dem schwellwertschalter Plugin eine schwelle einrichten und dann die GA auslösen die im Dreambox_text Plugin die Meldung auslöst.

              Taster ist direkt möglich.
              Gruss Patrik alias swiss

              Kommentar


                #8
                Hallo Swiss,

                ich habe versucht Dein Originalplugin bei mir ans Laufen zu bringen, ich bekomme bei mir aber immer folgende Fehlermeldung:
                "Undefined subroutine &main::get called at (eval 242) line 39, line 4603."
                Also kennt mein Wiregate den get-Befehl nicht?
                Muß ich da erst noch ein Paket installieren?
                Wenn ja, welches?

                Danke im Voraus.

                Kommentar


                  #9
                  hallo olip_3

                  Ja das Plugin nutzt folgendes Paket...

                  libwww-perl

                  lässt sich einfach über update installieren. danach sollte es funktionieren

                  PS: Ich hab es in den Plugin's ergänzt.
                  Gruss Patrik alias swiss

                  Kommentar


                    #10
                    Hallo Swiss,

                    danke, ich habe das Paket installiert und bekomme jetzt auch keine Fehlermeldung mehr. Auf der Dreambox kommt aber trotzdem nichts an.
                    Ich nutze jetzt folgenden Code:
                    Code:
                    my $aufrufende_ga = '1/0/4';
                    my $sendende_ga='1/0/3';
                    my $dreambox_ip = '192.168.178.113';
                    my $text = 'Hallo'; #Für mehrere Zeilen einfach zwischen den Zeilen ein & einfügen
                    
                    my $timeout = 10; #Zeit in sekunden in der die Meldung angezeigt wird
                    my $type = 2; #Meldungstyp: 1=Info, 2=Neutral, 3=Fehler
                    
                    # Eigenen Aufruf-Zyklus auf 1T setzen
                    $plugin_info{$plugname.'_cycle'} = 86400;
                    $plugin_subscribe{$aufrufende_ga}{$plugname} = 1; 
                    # Zyklischer Aufruf nach restart und alle 86400 sek., dient dem anmelden an die Gruppenadresse, einmalig (0) würde in diesem Fall auch genügen
                    
                    if ($msg{'apci'} eq "A_GroupValue_Write" and $msg{'dst'} eq $aufrufende_ga) 
                    {
                      knx_write($sendende_ga,"0","1");
                      get( "http://192.168.178.113/web/message?text=Blabla&type=2&timeout=10" );
                    }
                    Damit ich nachvollziehen kann, ob er in die if-Abfrage reinkommt, schalte ich darin noch ein Licht aus, das Funktioniert auch.
                    Der Text erscheint aber nicht auf der Dreambox.
                    Wenn ich die Anweisung in den Anführungszeichen genauso im Internet-Explorer eintrage, erscheint der Text auf der Dreambox.

                    Wie kann ich weiter vorgehen?

                    Vielen Dank im Voraus,

                    olip_3

                    Kommentar


                      #11
                      oO ich sehe gerade. Da fehlt noch ein

                      use LWP::Simple;

                      kommt gleich nach den Definitionen.
                      Gruss Patrik alias swiss

                      Kommentar


                        #12
                        Hallo Swiss,

                        das wars,
                        vielen Dank,
                        dann werde ich jetzt mal weiter rumprobieren, wie ich das sinnvoll für meine Belange nutzen kann.

                        olip_3

                        Kommentar


                          #13
                          Na dann viel Erfolg

                          Und wenn noch weitere Fragen sind... einfach fragen
                          Gruss Patrik alias swiss

                          Kommentar

                          Lädt...
                          X