AppleScript:execute command via netcat: Unterschied zwischen den Versionen

Aus FHEMWiki
Keine Bearbeitungszusammenfassung
Keine Bearbeitungszusammenfassung
Zeile 38: Zeile 38:


[[Kategorie:HOWTOS]]
[[Kategorie:HOWTOS]]
[[Kategorie:Code Snippets]]

Version vom 11. Mai 2013, 23:05 Uhr

Systemvoraussetzungen: MacOS X

Ist netcatauf dem FHEM-System installiert, lassen sich viele Funktionen von fhem einfach via AppleScript realisieren.

z.B.: Will man den Schaltzustand eines Geräts namens "KS300" abfragen könnte man folgendermaßen vorgehen:

1. Den fhem-Befehl können wir - zum vereinfachten Lesen - in der Variable "cmd" speichern (Achtung: Anführungszeichen beachten, da der Name ja auch Leerzeichen, etc. enthalten kann).

set cmd to "'{Value(" & quote & "KS300" & quote & ")};quit'"

Nun wird der fhem-Befehl mit dem Shell-Befehl (in diesem Falle "echo") kombiniert:

set telnetCmd to "echo " & cmd & " | netcat 192.168.1.1 7072"

falls das 'nc' alias installiert ist, kann man natürlich auch:

set telnetCmd to "echo " & cmd & " | nc 192.168.1.1 7072"

Das funktioniert natürlich auch mit xmllist, jsonlist, etc:

set telnetCmd to "echo jsonlist | nc 192.168.1.1 7072"

Anschliessend wird der Befehl via Shell ausgeführt. Das Ergebnis erhält man dabei in der AppleScript Variable 'the result'.

do shell script telnetCmd
set x to the result

So lassen sich viele Optionen von fhem aus Applescript (und damit aus jedem AppleScript-fähigen MacOS X Programm) nutzen.

Beispiel:

set cmd to "'{Value(" & quote & "KS300" & quote & ")};quit'"
set telnetCmd to "echo " & cmd & " | netcat 192.168.1.1 7072" 
do shell script telnet
set x to the result
tell application "Microsoft Excel"
	tell document 1
		tell sheet 1
			set value of cell "A1" to x
			set value of cell "F1" to "=Summe(A1:E1)"
		end tell
	end tell
end tell