Neues Modul: PushBullet

Begonnen von fhainz, 06 August 2014, 01:19:13

Vorheriges Thema - Nächstes Thema

n4rrOx

#300
Zitat von: fhainz am 22 Juni 2016, 12:30:25
Wie wärs wenn du dir einen account besorgst und das selbst ergänzt?

Hi fhainz,

würde ich gerne machen.
Leider fehlen mir da momentan noch die Kenntnisse (vor allem mit der Übergabe von Parametern an externe Scripte...und den restlichen Notwendigkeiten eig. auch...).  ???

Motivierte linke Hände

Ich habe mal ein bisschen was eingestellt, basierend auf meinem Allgemeinwissen. Geht sicher auch anders (besser?), und ist vermutlich keine Copy & Paste-Lösung für Dein nicht genau definiertes Problem.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

nickjag

Hallo Leute, für meine Türklingel hat genau das mit den Bildern für pushbullet gefehlt, da ich aber noch nichts bisher mit Skripten gemat habe, wollte ich fragen ob mir jemand auf die Sprünge helfen kann wie ich sowas in perl Anlege.

Kann ich das einfach in die 99_myutils.pm einfügen?

Wäre super wenn jemand mir auf die Sprünge helfen kann, denn google hilft für perl nicht so dolle  :(

Gruß
Nickjag

Motivierte linke Hände

Ist Deine Türklingel in FHEM angelegt?
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

nickjag

Klar die Klingel wird per notify am pin16 ausgelesen und per pushbullet an mein handy weiter geleitet.
Nun muss das Bild dazu, aner leider habe ich mit Skripten noch nicht gearbeitet

Motivierte linke Hände

Zeig mal das Notify. Wahrscheinlich müsstest Du den Pushbullet-Aufruf dort einbauen.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

nickjag

So ich habe die Script datei 99_PushbulletPicture.pl mit dem Inhalt in /opt/fhem/FHEM erstellt

#!/usr/bin/perl -w
use WWW::PushBullet;
$KEY = 'sxxTJsS5sXsoxxxxxxxxxxxxgSXxx';
$pb = WWW::PushBullet->new({apikey => $KEY});
$filename = '/opt/fhem/www/images/default/webcam/webcam2/webcam2_snapshot_1.jpg';
$pb->push_file({ file_name => $filename});


und in einem notify den aufruf eingefügt

my $befehl = "/opt/fhem/FHEM/99_PushbulletPicture.pl";
my $ausgabe = `$befehl`;


wenn ich nun das notify aufrufe bekomme ich die fehlermeldung das das script nicht ausgeführt werden kann...
17:31:13 1: PERL WARNING: Can't exec "/opt/fhem/FHEM/99_PushbulletPicture.pl": Permission denied at (eval 28330) line 4.

Wie gesagt das ist mein erster versuch mittels script :(


haempy

Servus nickjag,

wo läuft denn dein FHEM? Meins läuft auf einem RaspberryPI3 mit Debianlinux.

So ging ich vor und es geht:
1. Script anlegen mit Endung .sh (shellscript)
2. Ausführbar machen via "chmod +x scriptname.sh"
3. Vorsichtshalber die Rechte setzen: "sudo chmod -R 777 scriptname.sh"
4. via" sudo visudo sudoers" FHEM erlauben via sudo scripte ohne Passwort zu starten:
    Folgende Zeile unterhalb "pi ALL=(ALL) NOPASSWD: ALL" hinzufügen:
    "fhem ALL=NOPASSWD: /pfad/zu/deinem/script.sh"
Dies alles geschieht auf der Terminalebene. Nicht FHEM
5. Nun in FHEM notify anlegen welches einfach "{system('sudo /pfad/zu/deinem/script.sh&')}" ausführt. Das & am Ende bewirtkt, das das Script in einem separatem Task läuft und FHEM nicht blockiert.

Hoffe, das hilft.

Gruß
Roland

nickjag

Danke Roland,
das hilft mir doch schonmal ein Stück ;)

Also ausfüren kann ich nun anscheind das script, aber bekomme folgenden fehler:

Can't locate WWW/PushBullet.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /opt/fhem/FHEM/99_PushbulletPicture.sh line 2.
BEGIN failed--compilation aborted at /opt/fhem/FHEM/99_PushbulletPicture.sh line 2.

:-\

Gruß Nickjag
P.s. Mein system ist Rasp Pi2 mit wheezy

haempy

Schreib doch mal, wie du das genau machst. Also dein Script, wo es liegt und wie du es aufrufst. Kann mit deinem Fehler gerade nix anfangen...

Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk


Motivierte linke Hände

Zitat von: nickjag am 30 Juni 2016, 21:13:00
Also ausfüren kann ich nun anscheind das script, aber bekomme folgenden fehler:
Can't locate WWW/PushBullet.pm in @INC (@INC contains: /etc/perl /usr/local/lib/perl/5.14.2 /usr/local/share/perl/5.14.2 /usr/lib/perl5 /usr/share/perl5 /usr/lib/perl/5.14 /usr/share/perl/5.14 /usr/local/lib/site_perl .) at /opt/fhem/FHEM/99_PushbulletPicture.sh line 2.
BEGIN failed--compilation aborted at /opt/fhem/FHEM/99_PushbulletPicture.sh line 2.

Ich nehme mal an, Du benutzt das vorher hier gepostete und dann ins Wiki (http://www.fhemwiki.de/wiki/Pushbullet) kopierte Script.

Die Fehlermeldung sagt, dass perl das PushBullet-Modul nicht finden kann. Sie sagt auch, dass INC durchsucht wird und in welchen Pfaden perl sucht. Du könntest nun das Perl-Modul in eines der aufgeführten Verzeichnisse kopieren/verlinken oder @INC erweitern, wie z.B. über die Eingabe der Fehlermeldung in Google hier auffindbar: http://perlmaven.com/how-to-change-inc-to-find-perl-modules-in-non-standard-locations
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

nickjag

Na super, nun habe ich die Pushbullet.pm und HttpUtils.pm in /etc/perl kopiert und nu kommt beim compilieren folgender fehler:

Illegal declaration of anonymous subroutine at /etc/perl/HttpUtils.pm line 605.
Compilation failed in require at /etc/perl/WWW/PushBullet.pm line 31.
BEGIN failed--compilation aborted at /etc/perl/WWW/PushBullet.pm line 31.
Compilation failed in require at /opt/fhem/FHEM/99_PushbulletPicture.sh line 2.
BEGIN failed--compilation aborted at /opt/fhem/FHEM/99_PushbulletPicture.sh line 2.

aufrufen tuhe ich das script mit diesem notify von Roland:

{system('sudo /opt/fhem/FHEM/99_PushbulletPicture.sh&')};

So schwer kann das doch nicht sein  :-\ :-X

Motivierte linke Hände

Nun fehlt ihm das nächste perl-Modul von fhem.

Vielleicht ist es doch einfacher, @INC zu erweitern.
FHEM 6 in einer KVM VM mit Ubuntu
HM-CFG-USB2, 2xHM-CFG-HMLAN, HM-HMUARTLGW mit 100+ HomeMatic Devices, Geofencing, Fritzbox, Unifi, HUE, Harmony-Hub, Denon-Receiver-Modul, Calendar, GardenaSmartDevice, Shelly, MQTT (zigbee2mqtt, Tasmota und Shelly) und ein wenig 1Wire.

haempy

Geht das Script im terminal? Oder was hast du da an Fehlermeldungen?

Gesendet von meinem HUAWEI VNS-L31 mit Tapatalk


nickjag

so habe die @inc auch mal erweitert, so das ich alle scripte in /opt/fhem/FHEM für perl nutzen kann, doch die fehlermeldung ist noch die selbe...
leider auch im terminal

root@raspberrypi2:/home/pi# sudo /opt/fhem/FHEM/99_PushbulletPicture.sh
Illegal declaration of anonymous subroutine at /opt/fhem/FHEM/HttpUtils.pm line 605.
Compilation failed in require at /opt/fhem/FHEM/Pushbullet.pm line 31.
BEGIN failed--compilation aborted at /opt/fhem/FHEM/Pushbullet.pm line 31.
Compilation failed in require at /opt/fhem/FHEM/99_PushbulletPicture.sh line 3.
BEGIN failed--compilation aborted at /opt/fhem/FHEM/99_PushbulletPicture.sh line 3.
root@raspberrypi2:/home/pi#

das ist der code in meiner HttpUtils.pm über die er wohl meckert

sub
GetFileFromURL($@)
{
  my ($url, @a)= @_;
  return CustomGetFileFromURL(0, $url, @a);
}