Ankündigung

Einklappen
Keine Ankündigung bisher.

Freibier, Neues WG Plugin, Pushbullet Sender für WG

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

    #16


    Vielen Dank! Genau das war es! Das ist mir überhaupt nicht aufgefallen da ich noch ca. 30 andere Plugins laufen habe ohne die Endung .pl ...
    Mit diesem kleinen Zusatz funktioniert es nun wunderbar.
    Hast Du verschiedene Geräte unter Pushbullet im Einsatz? Kann man die Geräte ID noch integrieren um gezielt Nachrichten zu versenden oder
    macht man das am besten mit verschiedenen Pushbulletakkounts und einer entprechenden Anzahl an Plugins?

    Vielen Dank noch mal!
    Gruß Plusch

    Kommentar


      #17
      Hallo
      Ich habe Pusbullet auf meinen PC , Smartphone u. Pad.
      Wenn gewünscht kann ich noch die ID in die config mit aufnehmen,
      das man gezielt die Geräte ansprechen kann.
      Es wird aber noch ein wenig dauern.
      Ich fahre Samstag in den Urlaub.
      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


        #18
        Hallo,

        nein die ID muss nicht unbedingt in das Plugin. Man kann ja einfach auch mehrere Keys verwenden.
        Ich wünsche Dir einen schönen Urlaub!

        Gruß Plusch

        Kommentar


          #19
          Hallo,
          ich bekomme das Plugn leider auch nicht ans Laufen.

          Ich habe als Plugin die Version mit mehr Logging verwendet.
          Beim Sichern des Plugins erhalte ich die Meldung "Config Error" - im wiregate_plugin.log erhalte ich folgende Meldungen:
          Code:
           
           2016-03-16 23:02:51.219,pushbullet.pl,Warning: Subroutine read_from_config redefined at (eval 8900) line 63.  2016-03-16 23:02:51.220,pushbullet.pl,lines # pushbullet.pl - Konfiguration  #  # GA=>'1/4/20', = GA die getriggert wird  # type=>'note'  # title=>''  # body_on=>'' = Text wenn GA auf 1  # body_off=>'' = Text wenn GA auf 0  %push=(  push =>{GA=>'1/1/5',type=>'note',title=>'Haustuer',body_on=>'AUS',body_o ff=>'EIN'},  ); 2016-03-16 23:02:51.223,pushbullet.pl,config error,0s,
          Mit subscribe_debug.pl wird meine GA 1/1/5 nicht aufgelistet.
          In der eibga.conf ist die GA jedoch definiert:
          Code:
          [1/1/5]
          DPTSubId = 1.001
          short = Haustür
          ga = 1/1/5
          DPTId = 1
          name = Haustür anaus
          DPT_SubTypeName = DPT_Switch
          Eine Idee, was ich falsch mache?

          VG Alex
          Gruß
          alexbeer

          Kommentar


            #20
            Hallo
            @alexbeer
            Ich habe als Plugin die Version mit mehr Logging verwendet.
            Das Plugin mit mehr Logging kenne ich nicht, von wo hast Du das.
            Stell mal das Plugin und die config hier rein.
            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


              #21
              Hi,

              das aus dem Post https://knx-user-forum.de/forum/supp...738#post843738

              Code:
              # s. https://knx-user-forum.de/forum/supportforen/wiregate/843200-freibier-neues-wg-plugin-pushbullet-sender-f%C3%BCr-wg
              # Pushbullet Sender für WG
              # In conf GA, title und body eintragen
              # wenn GA=1 dann werden title und body gesendet
              # by NetFritz KNX-Userforum
              # Konfigurationsfile einlesen
              my $conf=$plugname; $conf=~s/\.pl$/.conf/;
              $conf="/etc/wiregate/plugin/generic/conf.d/$conf";
              my %push=();
              my $err=read_from_config();
              return $err if $err;
              
              #
              # in $iso steht Datum-Zeit = 'd.m.Y H:M'
              my @dta = localtime(time);
              my $iso=sprintf('%02d.',$dta[3]);
              $iso.=sprintf('%02d.',$dta[4]+1);
              $iso.=($dta[5]+1900)." ";
              $iso.=sprintf('%02d:',$dta[2]);
              $iso.=sprintf('%02d',$dta[1]);
              #
              $plugin_info{$plugname.'_cycle'} = 3600;
              # Alle GAs aus der config abonnieren
              for my $r (grep ref($push{$_}), keys %push)
              {
                 $plugin_subscribe{$push{$r}{GA}}{$plugname}=1;
                 plugin_log($plugname, "plugin_subscribe $push{$r}{GA}");  
              }
              my $req = "";
              my $body = "";
              # BUS ueberwachen
              if ($msg{'apci'} eq "A_GroupValue_Write") {      # A_GroupValue_Write Telegramm eingetroffen
              plugin_log($plugname, "subscribe wurde ausgefuehrt");
                 for my $r (grep ref($push{$_}), keys %push){  # Ueberwachte GAs durchlaufen
                    if ($msg{'dst'} eq $push{$r}{GA}){         # GAs vergleichen
              if($msg{'value'} == 1){
                       $body = $push{$r}{body_on};
                       $plugin_info{$plugname.'_'.$r.'_alt'} = 1;
                    }elsif($msg{'value'} == 0){
                       $body = $push{$r}{body_off};
                       $plugin_info{$plugname.'_'.$r.'_alt'} = 0;
                    }
                    # Push senden  
                    use LWP::UserAgent;
                    use HTTP::Request::Common qw(POST);
                    my $ua = LWP::UserAgent->new;
                    my $req = POST 'https://api.pushbullet.com/v2/pushes',
                       [
                          type  => 'note',
                          title => $push{$r}{title},
                          body   => $iso."   ". $body
                       ];
                      $req->authorization_basic('mein_PB_API_Key');
                      #return ($push{$r}{GA});
                      print ($ua->request($req)->as_string);
                      plugin_log($plugname, "$push{$r}{title} $push{$r}{body} $msg{'value'}");
                    }
                 }  
              }  
              return;
              # ------------- config einlesen ----------------------
              sub read_from_config
                {
                open CONFIG, "<$conf" || return "no config found";
                   my @lines = <CONFIG>;
                close CONFIG;
                plugin_log($plugname, "lines @lines");
                eval("@lines");
                return "config error" if $@;
              }
              Ich hatte das plugin zunächst nur pushbullet genannt - anschließend aber ein neues pushbullet.pl Plugin angelegt und mit dem Garbage-Collector Plugin sind auch die Reste von pushbullet entfernt.

              Welche Info könnte noch weiterhelfen, um der Ursache auf die Spur zu kommen?
              VG Alex
              Gruß
              alexbeer

              Kommentar


                #22
                Hallo
                Wie heißt dein Plugin? pushbullet.pl
                und deine Config dann pushbullet.conf

                Installiere mal das Plugin subscribe_debug.pl und schaue dann ob in der Ausgabe die GrAdr 1/1/5 erscheint.

                Code:
                # return;
                # Einfaches Plugin zum debuggen aller aktiven Plugin-subscriptions
                # just zur Doku
                
                $plugin_info{$plugname.'_cycle'} = 3600;
                my $ret;
                
                for my $k ( sort keys %plugin_subscribe ) {
                    for my $p ( keys %{$plugin_subscribe{ $k }} ) {
                    $ret .= "Plugin $p subscribed to $k\n";
                  }
                }
                
                for my $k ( sort keys %plugin_socket_subscribe ) {
                    $ret .= "Plugin $plugin_socket_subscribe{$k} subscribed to socket $k\n";
                }
                
                #return; # no debug out
                return $ret;
                Gruß NetFritz


                Sehe gerade hast du in deiner conf das so stehen?
                body_o ff=>'EIN' muss natürlich body_off=>'EIN' sein
                Zuletzt geändert von NetFritz; 17.03.2016, 12:33.
                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


                  #23
                  Hi NetFritz,

                  super vielen Dank!
                  Das Leerzeichen war es.
                  Kannst du das ggf in deinem ersten Beitrag dieses Threads anpassen - ich habe die Konfig von dort kopiert
                  push =>{GA=>'1/3/74',type=>'note',title=>'WP',body_on=>'AUS',body_o ff=>'EIN'}
                  Gruß
                  alexbeer

                  Kommentar


                    #24
                    Hmm, im Titel steht irgendwas von "Freibier"...

                    Habe den Fred zwar gelesen aber nichts gefunden - wo und wann findet die Fete denn statt?
                    Gruß
                    Frank

                    Soziologen sind nützlich, aber keiner will sie. Bei Informatikern und Administratoren ist es umgekehrt.

                    Kommentar


                      #25
                      Hallo
                      @alexbeer
                      Kannst du das ggf in deinem ersten Beitrag dieses Threads anpassen
                      Erledigt.

                      Das Freibier bezieht auf die Aussage von StefanW das es von Elaborated Networks kein Freibier mehr gibt.
                      Als habe ich Freibier in Form eines Plugin ausgegeben.
                      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


                        #26
                        Hi Netfritz,
                        ich habe eine GA abonniert, die ich zyklisch senden lasse.
                        Mit jedem Senden der GA bekomme ich nun eine PushBullett Notifizierung. Das ist natürlich nicht gerade hilfreich...
                        Hast du eine Idee, wie ich die PB-Notifizierung nur dann versende, wenn sich der Zustand ändert?

                        Viele Grüße Alex
                        Zuletzt geändert von alexbeer; 18.03.2016, 23:12. Grund: typo
                        Gruß
                        alexbeer

                        Kommentar


                          #27
                          Hallo

                          Das Plugin sendet nur wenn sich der Zustand der GA ändert.
                          Hast Du schon mal in der ETS geschaut, ob sich der Zustand zwischendurch ändert.
                          Bekommst Du dann immer nur den Text der in der conf für EIN eingestellt ist?
                          # body_on=>'' = Text wenn GA auf 1

                          Ändere mal diese Zeile

                          }elsif($msg{'value'} == 0){
                          so um

                          }elsif($msg{'value'} == 0 && $plugin_info{$plugname.'_'.$r.'_alt'} == 1 ){

                          Gruß NetFritz
                          Zuletzt geändert von NetFritz; 18.03.2016, 23:36.
                          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


                            #28
                            Hi,
                            ETS prüfe ich später- das zyklische senden hatte ich wegen der CometVisu... Wahrscheinlich ist das gar nicht mehr nötig...
                            Der Zustand ändert sich zwischenzeitlich nicht. Wenn sich der Zustand ändert bekomme ich
                            Titel+Body= Ein oder Aus per PB.
                            Wird der GA-Status zyklisch gesendet, dann empfange ich in PB nur den Titel - ohne Body.
                            Auch mit dem angepassten elsif erhalte ich die zyklisch gesendeten Statusmeldungen.


                            Danke für deine Hilfe
                            Gruß
                            alexbeer

                            Kommentar


                              #29
                              Hallo
                              Habe mal in der ETS die GA mit dem gleichen Zustand gesendet, das Plugin sendet die Zustände und Text zu PB.
                              Werde mal schauen ob ich das abstellen kann.
                              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


                                #30
                                Hallo
                                Habe den Aufruf zu PB in eine Sub gepackt.
                                Jetzt wird nur noch zu PB gesendet wenn sich der Zustand geändert hat.
                                Leider ist das dann auch beim ersten Aufruf so.
                                Gruß NetFritz

                                pushbullet.pl
                                Code:
                                no warnings;
                                #return;
                                # Pushbullet Sender für WG
                                # In conf GA, title und body eintragen
                                # wenn GA=1 dann werden title und body gesendet
                                # by NetFritz KNX-Userforum
                                # Konfigurationsfile einlesen
                                my $conf=$plugname; $conf=~s/\.pl$/.conf/;
                                $conf="/etc/wiregate/plugin/generic/conf.d/$conf";
                                my %push=();
                                my $err=read_from_config();
                                return $err if $err;
                                #
                                # in $iso steht Datum-Zeit = 'd.m.Y H:M'
                                my @dta = localtime(time);
                                my $iso=sprintf('%02d.',$dta[3]);
                                $iso.=sprintf('%02d.',$dta[4]+1);
                                $iso.=($dta[5]+1900)." ";
                                $iso.=sprintf('%02d:',$dta[2]);
                                $iso.=sprintf('%02d',$dta[1]);
                                #
                                $plugin_info{$plugname.'_cycle'} = 3600;
                                # Alle GAs aus der config abonnieren
                                for my $r (grep ref($push{$_}), keys %push)
                                {
                                   $plugin_subscribe{$push{$r}{GA}}{$plugname}=1;   
                                   plugin_log($plugname, "GA= $push{$r}{GA}");
                                   #$plugin_info{$plugname.'_'.$r.'_alt'} = knx_read("$push{$r}{GA}",300,"");
                                }
                                my $req = "";
                                my $body = "";
                                # BUS ueberwachen
                                if ($msg{'apci'} eq "A_GroupValue_Write") {      # A_GroupValue_Write Telegramm eingetroffen
                                   plugin_log($plugname, "Telegramm test ist da");
                                   for my $r (grep ref($push{$_}), keys %push){  # Ueberwachte GAs durchlaufen
                                      plugin_log($plugname, "1 $push{$r}{title} $push{$r}{body} $msg{'value'}");
                                      if ($msg{'dst'} eq $push{$r}{GA}){         # GAs vergleichen
                                     if($msg{'value'} == 1 && $plugin_info{$plugname.'_'.$r.'_alt'} == 0 ){
                                         #plugin_log($plugname,"PluginInfo 0= $plugin_info{$plugname.'_'.$r.'_alt'}";
                                         $body = $push{$r}{body_on};
                                          send_push($iso,$body,$push{$r}{title});
                                         $plugin_info{$plugname.'_'.$r.'_alt'} = 1;
                                      }elsif($msg{'value'} == 0  && $plugin_info{$plugname.'_'.$r.'_alt'} == 1 ){
                                         $body = $push{$r}{body_off};
                                         send_push($iso,$body,$push{$r}{title});
                                         $plugin_info{$plugname.'_'.$r.'_alt'} = 0;
                                      }
                                      }
                                   }   
                                }  
                                      # Push senden
                                   sub send_push{
                                      my $iso1  = $_[0];
                                      my $body1 = $_[1];
                                      my $push1 = $_[2];
                                      use LWP::UserAgent;
                                      use HTTP::Request::Common qw(POST);
                                      my $ua = LWP::UserAgent->new;
                                      my $req = POST 'https://api.pushbullet.com/v2/pushes',
                                         [
                                            type  => 'note',
                                            title => $push1,
                                            body   => $iso1."   ". $body1
                                         ];
                                        $req->authorization_basic('xxxxxxxxxxxxxxxxxxxxxxxx');
                                        #return ($push{$r}{GA});
                                        print ($ua->request($req)->as_string);
                                       
                                   }
                                 
                                return;
                                # ------------- config einlesen ----------------------
                                sub read_from_config
                                  {
                                  open CONFIG, "<$conf" || return "no config found";
                                     my @lines = <CONFIG>;
                                  close CONFIG;
                                  eval("@lines");
                                  return "config error" if $@;
                                }
                                pushbullet.conf
                                Code:
                                # pushbullet.pl - Konfiguration
                                #
                                # GA=>'1/4/20', = GA die getriggert wird
                                # type=>'note'
                                # title=>''
                                # body_on=>''  = Text wenn GA auf 1
                                # body_off=>'' = Text wenn GA auf 0
                                %push=(
                                push =>{GA=>'1/3/74',type=>'note',title=>'WP',body_on=>'AUS',body_off=>'EIN'},
                                );
                                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

                                Lädt...
                                X