Ankündigung

Einklappen
Keine Ankündigung bisher.

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

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

    #76
    # 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('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 $@;
    }
    Zuletzt geändert von katerina; 17.12.2017, 22:15.

    Kommentar


      #77
      %push=(
      push1 =>{GA=>'1/1/46',type=>'note',title=>'Stehlampe',body_on=>'AUS' ,body_off=>'EIN'},
      # push2 =>{GA=>'0/1/11',type=>'note',title=>'Flurbeleuchtung',body_on= >'AUS',body_off=>'EIN'},
      # push3 =>{GA=>'2/4/11',type=>'note',title=>'Alarm Extern: ',body_on=>'unscharf',body_off=>'scharf'},
      # push4 =>{GA=>'2/4/14',type=>'note',title=>'Alarm Intern: ',body_on=>'unscharf',body_off=>'scharf'},
      # push5 =>{GA=>'10/1/0',type=>'note',title=>'Türklingel: ',body_on=>'EIN',body_off=>'AUS'},
      );
      Zuletzt geändert von katerina; 17.12.2017, 22:14.

      Kommentar


        #78
        Hallo
        Dein Plugin ist auch nicht mehr das aktuelle.
        Hier mein pushbullet.pl vom WG.
        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
        #my $iso="Pushbullet";
        #my $body="Test";
        #my $test2="KEY";
        #send_push($iso,$body,$test2);
        for my $r (grep ref($push{$_}), keys %push)
        {
           $plugin_subscribe{$push{$r}{GA}}{$plugname}=1;   
        }
        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;
              }
              #send_push($iso,$body,$push{$r}{title});
              }
           }   
        }  
              # Push senden
           sub send_push{
        
              my $iso1  = $_[0];
              my $body1 = $_[1];
              my $push1 = $_[2];
              plugin_log($plugname, "sub aufgerufen $iso1 $body1 $push1");
              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('IPaLGY524Gycux0YkYF4eul6kNuTlaKw');
                #$req->authorization_basic('mQ1B18iynYQcaFhPK0FQrWo5LWqEx0Eg');
                  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 $@;
        }
        hier die conf.d/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=(
        #push1 =>{GA=>'4/0/1',type=>'note',title=>'WP',body_on=>'AUS',body_off=>'EIN'},
        #);
        #push_2 =>{GA=>'0/1/666',type=>'note',title=>'Ping Wetterstation',body_on=>'AUS',body_off=>'EIN'},
        %push=(    
         push1 =>{GA=>'1/3/74',type=>'note',title=>'WP',body_on=>'AUS',body_off=>'EIN'},    
         push2 =>{GA=>'1/4/11',type=>'note',title=>'HaustuerKlingel',body_on=>'AUS',body_off=>'EIN'},
         push3 =>{GA=>'4/0/1',type=>'note',title=>'PaketBox',body_on=>'AUS',body_off=>'EIN'},
         );
        Du hast in deiner pushbullet.conf
        4 Zeilen mit # auskommentiert, ob das so geht kann ich nicht sagen.
        Nimm die mal raus.
        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


          #79
          Danke dir! Kann es leider erst heute Nacht testen. Melde mich dann wieder.

          Kommentar


            #80
            Hallo
            Eine schlechte Nachricht.
            Habe das Plugin seit einiger Zeit auf dem WG nicht mehr benutzt.
            Es lief auf meinen WG auch nicht mehr.
            Der Pushbullet Teil geht nicht mehr.
            Das ich von pushbullet.pl auf meinen WG nur das Pushbullet Teil als Script auch noch auf den WG hatte,
            habe ich es in der Konsole pushbullet.pl aufgerufen.
            Es brachte einige Fehlermeldungen.
            url: (60) SSL certificate problem, verify that the CA cert is OK. Details:
            error:14090086:SSL routines:SSL3_GET_SERVER_CERTIFICATE:certificate verify failed
            More details here: http://curl.haxx.se/docs/sslcerts.html
            Habe dann das Script auf einem anderen Ubuntu Rechner kopiert und da läuft es.
            Den Grund kann ich dir nicht sagen.
            Ich habe auch keine weitere Lust das weiter auf dem WG zu verfolgen.
            Ich habe in letzter Zeit meine WG Plugin Logic-Scripts auf meine Wago SPS übertragen.
            Wo das nicht so einfach geht habe ein Teil auf meinen Ubuntu Rechner übertragen.
            Vielleicht findet sich noch ein anderer User beim dem das Plugin pushbullet.pl noch läuft.
            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


              #81
              Hallo Netfritz
              Hm, Schade das es nicht mehr funktioniert.

              Das Zertifikatproblem kann man wohl mit -k erst einmal umgehen (nur wo?).

              Hatte zuletzt mal Zeile 64 von deinem Plugin geändert
              my $req = POST 'curl -k -u 'KEY' https://api.pushbullet.com/v2/pushes

              bringt zwar keine Fehler, am Log ändert sich aber auch nichts

              Da ich allerdings in Sachen Linux und Co quasi keinen Plan habe...

              Habe gestern und heute noch verschiedenes probiert, allerding eher auf der Basis try and error.

              Werde wohl erst einmal nach Alternativen suchen, obwohl das mit pushbullet schon nett gewesen währe, da man eben an Geräte mit unterschiedliche Betriebssysteme senden kann.

              Kommentar


                #82
                Hallo

                Ich hole diesen Thread noch einmal nach vorne.
                Hat irgendwer das Plugin noch erfolgreich am laufen?

                VG
                Andre

                Kommentar

                Lädt...
                X