############################################### #$Id: 70_PushNotifier.pm 2014-12-16 17:00:00 xusader # # download client-app http://pushnotifier.de/apps/ # create account http://pushnotifier.de/login/ # get apiToken from http://gidix.de/setings/api/ and add a new app # # Define example: # define yourname PushNotifier apiToken appname user password deviceID # # notify example: # define LampON notify Lamp:on set yourDefineName message Your message! # package main; use LWP::UserAgent; sub PushNotifier_Initialize($) { my ($hash) = @_; $hash->{DefFn} = "PushNotifier_Define"; $hash->{SetFn} = "PushNotifier_Set"; } ##################################### sub PushNotifier_Define($$) { my ($hash, $def) = @_; my @args = split("[ \t]+", $def); my ($name, $type, $apiToken, $app, $user, $passwd, $deviceID) = @args; $hash->{STATE} = 'Initialized'; if(defined($apiToken) && defined($app)&& defined($user)&& defined($passwd)&& defined($deviceID)) { $hash->{apiToken} = $apiToken; $hash->{app} = $app; $hash->{user} = $user; $hash->{passwd} = $passwd; $hash->{deviceID} = $deviceID; my $responseAT = LWP::UserAgent->new()->post("http://a.pushnotifier.de/1/login", ['apiToken' => $apiToken, 'username' => $user, 'password' => $passwd]); my $strg_chkAT = $responseAT->as_string; $strg_chkAT =~ m{"appToken":"([\w]+)}; my $appToken = $1; $hash->{appToken} = $appToken; my $responseID = LWP::UserAgent->new()->post("http://a.pushnotifier.de/1/getDevices", ['apiToken' => $apiToken, 'appToken' => $appToken]); my $strg_chkID = $responseID->as_string; $strg_chkID =~ s/[-"{}_]//g; $re1='.*?'; $re2='(\\[.*?\\])'; $re=$re1.$re2; if ($strg_chkID =~ m/$re/is) { $sbraces1=$1; my $devices = $sbraces1; $hash->{devices} = $devices; } return undef; } } ##################################### sub PushNotifier_Set($@) { my ($hash, $name, $cmd, @args) = @_; my %sets = ('message' => 1); if(!defined($sets{$cmd})) { return "Unknown argument ". $cmd . ", choose one of " . join(" ", sort keys %sets); } return PushNotifier_Send_Message($hash, @args); } ##################################### sub PushNotifier_Send_Message { my $hash = shift; my $msg = join(" ", @_); $msg =~ s/\_/\n/g; my $response = LWP::UserAgent->new()->post('http://a.pushnotifier.de/1/sendToDevice', ['apiToken' => $hash->{apiToken}, 'appToken' => $hash->{appToken}, 'app' => $hash->{app}, 'deviceID' => $hash->{deviceID}, 'type' => 'MESSAGE', 'content' => "$msg"]); my $error_chk = $response->as_string; if($error_chk =~ m/"status":"ok"/) { return "OK!\n\n$msg"; } else { return $error_chk; } } 1; ############################################################################### =pod =begin html

PushNotifier

=end html =begin html_DE

PushNotifier

=end html_DE =cut