Benutzer Diskussion:Wernieman: Unterschied zwischen den Versionen

Aus FHEMWiki
(Willkommen "an Bord")
 
Zeile 43: Zeile 43:
[[Datei:Nuvola apps ksirc.png|25px|link=Benutzer Diskussion:Ph1959de]] &nbsp;&nbsp; '''Hast du Fragen an mich?''' Schreib mir auf [[Benutzer Diskussion:Ph1959de|<u>meiner</u> Diskussionsseite]]! Viele Grüße, [[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 21:28, 28. Nov. 2017 (CET)
[[Datei:Nuvola apps ksirc.png|25px|link=Benutzer Diskussion:Ph1959de]] &nbsp;&nbsp; '''Hast du Fragen an mich?''' Schreib mir auf [[Benutzer Diskussion:Ph1959de|<u>meiner</u> Diskussionsseite]]! Viele Grüße, [[Benutzer:Ph1959de|Peter]] ([[Benutzer Diskussion:Ph1959de|Diskussion]]) 21:28, 28. Nov. 2017 (CET)
|}
|}
== Externe Scripte aufrufen / Daten in FHEM reinkriegen ==
Hin und wieder möchte man ein externes Script/Programm von FHEM heraus aufrufen. Hier möchten wir die Wege diskutieren
Zu beachten ist, ob während der Abarbeitung des Scriptes FHEM blockieren soll oder nicht. Wenn es blockiert, aber das Script sich nicht beendet, wird FHEM nicht mehr weiterlaufen
Grundlage:
Hier verwenden wir einfach mal ein Notify test_notify, welches bei allen test-Befehlen aufgerufen werden soll und ein Script mit Devicename und Status aufrufen soll.
== Möglichkeiten des Aufrufs ==
FHEM ermöglicht direkt den Aufruf des Scriptes per "Bordmitteln", sowie über den Umweg perl.
- Fhem Bordmittel
define test_notify notify test.* "/opt/fhem/test.sh $NAME $EVENT"
Dieses ist nicht blockierend, dafür kriegt man Daten so auch nicht direkt in FHEM
- über perl (per ` qx oder system)
define test_notify notify test.* {`/opt/fhem/test.sh $NAME $EVENT`}
Dieses ist blockierend, d.h. FHEM arbeitet während der Abarbeitung des Scriptes nicht mehr weiter. Dafür könnte man eventuelle Rückgaben des Scriptes in FHEM verwenden.
- über perl unblockierend (per ` qx oder system)
Es ist möglich, mit einem "&" am Ende das Script wieder unblockierend zu machen, nur kann man dann wieder die Parameter nicht verwenden.
define test_notify notify test.* {`/opt/fhem/test.sh $NAME $EVENT &`}
'''Hinweis:'''
Vor/Nachteile von qx/ System und `, siehe [http://perldoc.perl.org/ perl-Dokumentation]
== Daten in FHEM reinkriegen ==
Wenn man jetzt ein Script unblockierend haben möchte, trotzdem aber die Daten in FHEM braucht, weil man z.B: darauf reagieren will, ist dieses durch eine Rückübertragung der Daten über die telnet-Schnitstelle möglich.
Kurzgefasst im Bash-Syntax:
echo -en "<FHEM-Befehl>\”quit\n" | nc -w5 <FHEM-Server> 7072
<FHEM-Befehl>: Gültiger FHEM-Befehl, wie z.B. "set Dummy on"
<FHEM-Server>: wenn es auf dem gleichen System läuft localhost, sonst IP oder DNS-Name
7072: Telnet-Port. Wenn geändert wurde, bitte Anpassen (Experten)
Damit kann über set, tricker etc. die Komplette FHEM-Basis verwendet werden, um auf das Script zu reagieren. In anderen Programmiersprachen ist es analog möglich.
'''Hinweis:'''
Falls ein Password für Telnet vergeben wurde, kann auch dieses erfolgen:
echo -en "<Telnet-PW>\n<FHEM-Befehl>\”quit\n" | nc -w5 <FHEM-Server> 7072
Wenn SSL-definiert wurde, gibt es analoge Möglichkeiten, siehe [http://www.fhem.de/commandref.html#telnet Dokumentation von FHEM]

Version vom 1. Dezember 2017, 10:51 Uhr

Willkommen!

Hallo Wernieman, willkommen im FHEM Wiki!
Danke für dein Interesse an unserem Projekt, ich freue mich schon auf deine weiteren Beiträge. Die folgenden Seiten sollten dir die ersten Schritte erleichtern, bitte nimm dir daher etwas Zeit, sie zu lesen.

FHEM-spezifische Informationen

  Systemübersicht
FHEM Systemübersicht
  FHEMWiki:Über FHEMWiki
Informationen über dieses Wiki

Generelle Informationen über (Media)Wikis

Crystal Clear app kedit.svg
Hilfe:Bearbeiten
Zugang zu allen wichtigen Informationen.
X-office-presentation.svg
Wikipedia:Tutorial
Schritt-für-Schritt-Anleitung für Einsteiger.
Applications-system.svg
Wikipedia:Grundprinzipien
Die grundlegende Philosophie unseres Projekts.
MentorenProgrammLogo-7.svg
Wikipedia:Mentorenprogramm
Persönliche Einführung in die Beteiligung bei Wikipedia.

Bitte beachte, was Wikipedia nicht ist, und "unterschreibe" deine Diskussionsbeiträge durch Eingabe von --~~~~ oder durch Drücken der Schaltfläche Signaturknopf über dem Bearbeitungsfeld. Artikel werden jedoch nicht unterschrieben, und wofür die Zusammenfassungszeile da ist, erfährst du unter Zusammenfassung und Quellen.

Nuvola apps ksirc.png    Hast du Fragen an mich? Schreib mir auf meiner Diskussionsseite! Viele Grüße, Peter (Diskussion) 21:28, 28. Nov. 2017 (CET)

Externe Scripte aufrufen / Daten in FHEM reinkriegen

Hin und wieder möchte man ein externes Script/Programm von FHEM heraus aufrufen. Hier möchten wir die Wege diskutieren

Zu beachten ist, ob während der Abarbeitung des Scriptes FHEM blockieren soll oder nicht. Wenn es blockiert, aber das Script sich nicht beendet, wird FHEM nicht mehr weiterlaufen

Grundlage: Hier verwenden wir einfach mal ein Notify test_notify, welches bei allen test-Befehlen aufgerufen werden soll und ein Script mit Devicename und Status aufrufen soll.

Möglichkeiten des Aufrufs

FHEM ermöglicht direkt den Aufruf des Scriptes per "Bordmitteln", sowie über den Umweg perl.


- Fhem Bordmittel

define test_notify notify test.* "/opt/fhem/test.sh $NAME $EVENT"

Dieses ist nicht blockierend, dafür kriegt man Daten so auch nicht direkt in FHEM


- über perl (per ` qx oder system)

define test_notify notify test.* {`/opt/fhem/test.sh $NAME $EVENT`}

Dieses ist blockierend, d.h. FHEM arbeitet während der Abarbeitung des Scriptes nicht mehr weiter. Dafür könnte man eventuelle Rückgaben des Scriptes in FHEM verwenden.


- über perl unblockierend (per ` qx oder system)

Es ist möglich, mit einem "&" am Ende das Script wieder unblockierend zu machen, nur kann man dann wieder die Parameter nicht verwenden.

define test_notify notify test.* {`/opt/fhem/test.sh $NAME $EVENT &`}


Hinweis: Vor/Nachteile von qx/ System und `, siehe perl-Dokumentation


Daten in FHEM reinkriegen

Wenn man jetzt ein Script unblockierend haben möchte, trotzdem aber die Daten in FHEM braucht, weil man z.B: darauf reagieren will, ist dieses durch eine Rückübertragung der Daten über die telnet-Schnitstelle möglich.


Kurzgefasst im Bash-Syntax:

echo -en "<FHEM-Befehl>\”quit\n" | nc -w5 <FHEM-Server> 7072

<FHEM-Befehl>: Gültiger FHEM-Befehl, wie z.B. "set Dummy on"

<FHEM-Server>: wenn es auf dem gleichen System läuft localhost, sonst IP oder DNS-Name

7072: Telnet-Port. Wenn geändert wurde, bitte Anpassen (Experten)


Damit kann über set, tricker etc. die Komplette FHEM-Basis verwendet werden, um auf das Script zu reagieren. In anderen Programmiersprachen ist es analog möglich.


Hinweis: Falls ein Password für Telnet vergeben wurde, kann auch dieses erfolgen:

echo -en "<Telnet-PW>\n<FHEM-Befehl>\”quit\n" | nc -w5 <FHEM-Server> 7072

Wenn SSL-definiert wurde, gibt es analoge Möglichkeiten, siehe Dokumentation von FHEM