Eine Frage zu FHEM und Pushover

Begonnen von Teccno, 26 Oktober 2017, 14:02:14

Vorheriges Thema - Nächstes Thema

Teccno

Ein fröhliches Mo-hoin!
Boah, ist FHEM spannend!
Ich bin begeisteter Newbie und bräuchte allerdings mal ein wenig Starthilfe.
FHEM ist aktuell und läuft super auf meinem Pi3. Pushover läuft und mit "set Hellpush msg Nachricht" kann ich mir über die Web-Befehlszeile auch super Nachrichten schicken. Allet jut soweit. Allerdings kriege ich nicht raus, wie ich das von einem externen Script aus triggern (richtiger Begriff?) könnte. Sicherlich irgendetwas in Richtung "system("irgendwas:Pfad-zu-fhem set Hellpush msg Nachricht");", oder? Oder so gar nicht?
Ich bin völlig ratlos...

Wer kann mir da helfen ?
Vielen Dank im Voraus!

CoolTux

Bitte noch mal genau über legen und dann schreiben was Du möchtest. Das kann keiner auch nur ansatzweise deuten.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Teccno

Wie kann ich aus einem C-Script FHEM dazu bewegen, eine Push-Nachricht über Pushover zu versenden?

CoolTux

In dem Du die entsprechenden Schnittstellen verwendest. Entweder telnet oder HTTP/S Aufrufe

Bei telnet wäre es rein der set Befehl so als wenn Du ihn in die FHEMWEB Commandline ein gibst bei HTTP/S wäre es die URL samt ?cmd=set bla bla aber url codiert
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Christoph Morrison

Zitat von: Teccno am 26 Oktober 2017, 14:08:01
Wie kann ich aus einem C-Script FHEM dazu bewegen, eine Push-Nachricht über Pushover zu versenden?

Eins
Zwei

CoolTux


http://192.168.240.249:8083/fhem?cmd=set Relax2Go_1 on&fwcsrf=csrf_416390292470083


Mal so als Beispiel. Der csrf Token müsste vorher ausgelesen werden.
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Teccno

Vielen Dank für die Hinweise.

Folgede Zeile funktioniert in der Konsole:

perl /opt/fhem/fhem.pl 7072 "set Hellpush msg Test"

Das liefert mir eine Push-Nachricht mit dem Text "Test".

Nun habe ich aber ein C-Script (Ich erfasse damit die vier Tasten einer Funkfernbedienung und ordne ihnen Aktionen zu), in der ich diese obige Anweisung ausführen möchte:

...
     while(1) {
 
      if (mySwitch.available()) {
   
        int value = mySwitch.getReceivedValue();

switch(value) {
case 6112268:
digitalWrite(LEDbluePIN, 1);
break;
case 6112448:
digitalWrite(LEDbluePIN, 0);
break;
case 6112259:
system("/home/shares/pi/audioplayer");
break;
case 6112304:
<<Hier sollte nun die Push-Nachricht gestartet werden>>
break;
case 0:
default:
printf("Unknown encoding");
}...

Der vierte Case ist der Teil, wo diese Anweisung ausgeführt werden sollte. Aber ein System-Befehl wie darüber geht ja nicht. Zumindest bekomme ich es nicht hin. Daher stammt meine Frage nach dem Ausführen in einem Script.

CoolTux

system("/home/shares/pi/audioplayer");


Sieht für mich aus wie ein System Befehl
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Teccno

Ja. Der funktioniert ja auch. Und darunter sollte der stehen, den ich nicht hinbekomme.

CoolTux


system('perl /opt/fhem/fhem.pl 7072 "set Hellpush msg Test"');
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Teccno

Nope.


RFSniffer.cpp:56:11: warning: character constant too long for its type
    system('perl /opt/fhem/fhem.pl 7072 "set Hellpush msg Test 6"'); // digitalWrite(LEDgreenPIN, 1);
           ^~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
RFSniffer.cpp: In function 'int main(int, char**)':
RFSniffer.cpp:56:66: error: invalid conversion from 'int' to 'const char*' [-fpermissive]
    system('perl /opt/fhem/fhem.pl 7072 "set Hellpush msg Test 6"'); // digitalWrite(LEDgreenPIN, 1);
                                                                  ^
In file included from /usr/include/c++/6/cstdlib:75:0,
                 from /usr/include/c++/6/stdlib.h:36,
                 from RFSniffer.cpp:10:
/usr/include/stdlib.h:677:12: note:   initializing argument 1 of 'int system(const char*)'
extern int system (const char *__command) __wur;
            ^~~~~~
<eingebaut>: die Regel für Ziel ,,RFSniffer.o" scheiterte
make: *** [RFSniffer.o] Fehler 1



Hätte getippt, dass das geht. Oder mache ich etwas falsch?

CoolTux

Tausch Mal die einfachen mit den doppelten Hochkommata
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Teccno

So wird'n Schuh draus!!!

Vielen lieben herzlichen Dank!

Großartig.

CoolTux

Und dabei habe ich null Ahnung von C Programmieren  ;D
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

Teccno

Nee.

Null Ahnung bin ich.

Aber dafür kann ich super Nudeln kochen. Immerhin...