Tasker: Skripte in IP-Symcon starten

Die Android-App ‚Tasker‘ ist ein sehr mächtiges und vielseitige Tool. Es kann bei bestimmten Bedingungen (z.B. Akkustand) oder Ereignissen (z.B. Sensor: „schüttelt“) bestimme Aufgaben (z.B. Foto aufnehmen) ausführen. Im Internet gibt es zahlreiche Quellen, die die Programmierung und Funktionen näher erklären:

[ul]
[li]Einstieg in die Automatisierung von Android [Tutorial][/li][li]Tasker-Wiki[/li][li]Tasker Skripte & Tutorials[/li][li]Tasker Userguide[/li][/ul]

Das folgende Beispiel „Fahrgemeinschaft“ soll als Anregung für eigene Ideen dienen. Eine weitere mögliche Anwendung ist z.B. eine intelligente Heizungsteuerung: nähert man sich seiner Wohnung, wird automatisch das Szenario „Feierabend“ gestartet oder beim Verlassen die Absenktemperaturen aktiviert…

Die Aufgabe:
Herr Müller nimmt seinen Kollegen von Montag bis Donnerstag in seinem PKW mit zur Arbeit. Herr Meier steigt an einem Pendlerparkplatz zu. Da sich die Abfahrtszeiten ändern können, möchte Herr Meier von IP-Symcon entsprechend informiert werden.

Die Lösung:
Um zur Arbeit zu gelangen, fährt Herr Meier in Sereetz auf die Autobahn A1 in deren Nähe ein Handy-Funkmast steht. Jede Funkzelle hat eine eindeutige ID, die in diesem Beispiel zur Standortbestimmung verwendet wird.

In IP-Symcon muss der Fernzugriff (ab IP-Symcon Version 3.1) aktiviert sein und folgendes Skript neu angelegt werden:


$meldung = "komme in 5 Minuten";
$time_von = mktime(7, 0, 0);
$time_bis = mktime(11, 0, 0);
$wochentag = date("N");     		// Wochentag
// Meldung nur von Mo bis Do in der Zeit von 7 bis 11 Uhr
if ( (time() > $time_von) and (time() < $time_bis) and ($wochentag > 0) and ($wochentag < 5)) {
	WFC_PushNotification(51279 /*[WebFront]*/, "Tasker", $meldung, "Speaker", 0);
}

Hinweis: der Befehl ‚WFC_PushNotification‘ wird hier erklärt. Informationen über das JSON-RPC Protokoll gibt es hier.

In Tasker wird entsprechend ein neues Profil angelegt, dass über den ‚Telefon Status ’ Funkzelle in der Nähe‘ einen Task (Aufgabe) startet.
In der ‚Aktionskategorie‘ wird unter Netzwerk ‚HTTP Post‘ ausgewählt.
Unter ‚Server: Port‘ wird die IP-Adresse eingetragen. Optional mit Username und Passwort (chef:uni123@192.168.2.20).
Der ‚Pfad‘ ist /api/ und der ‚Inhalts Typ‘: Application/json
Unter ‚Data / File‘ {„jsonrpc“: „2.0“, „method“: „IPS_RunScript“, „params“: [12345], „id“: 1} – wobei ‚12345‘ die ID des oben genannten zu startenden Skript ist.
Zu Testzecken kann der Task per Hand gestartet werden. Im Objektbaum sollte sich der Zeitstempel des Skript aktualisieren und nach wenigen Sekunden eine Meldung auf dem Smartphone eintreffen.

MST

Hinweis: für dieses Beispiel wird IP-Symcon ab Version 3.1 benötigt!

tasker_cellnear.png

Um die ‚Guten Morgen Szene‘ in IP-Symcon über den Wecker des Android Handy zu starten, kann man ebenfalls Tasker verwenden.
Dazu legt man im Handy einen neuen Wecker 'Guten Morgen“ an (Bild 1) und ein neues Profil 'Wecken“ (Bild 2) in Tasker an. Der Task startet wiederum ein Skript in IP-Symcon (siehe letzten Beitrag). Wenn man den Eintag in ‚Bezeichnung‘ leer lässt, dann reagiert das Profil auf alle Wecker. Leider reagiert es es nicht, wenn ich ‚Guten Morgen‘ eintrage. Hat jemand eine Idee warum?

MST

android_wecker.jpg

profil_wecker.jpg

Hi,

ich habe das Problem wenn ich Authentifizierung im WFC einschalte, funktioniert es nicht mit root:12345@ipsblablabla.
Schalte ich im WFC die Authentifizierung aus klappt es mit ipsblablabla ganz normal. Habe ich da irgendetwas vergessen?

OK Fehler gefunden. Man muss die Benutzerdaten für json benutzen

Danke, funktioniert gut.
Musste bei mir allerdings noch unter ‚Server: Port‘ den Port mit angeben (chef:uni123@192.168.2.20:82).
Bekam sonst in Tasker eine Fehlermeldung.

Grüße,
Jürgen

gemäss einer Abbildung in diesem Post von Steiner ist der Schalter enable JSON-RPC zu sehen. Habe 3.1 und der Schalter ist nicht da. Wo finde ich nähere Infos?

ab V3.1 wird dafür der Fernzugriff verwendet und kann über den IPS Tray aktiviert werden.

Tommi

Hallöchen :wink:

Ne kurze frage ich kann " ‚Inhalts Typ‘: Application/json " nicht auswählen bzw. ist nicht vorhanden gibt es da ne Trick bei :wink:

Danke euch
LG

„application/json“ > Notfalls selber tippen :wink:

MST

Gut habe ich gemacht, aber es passiert nichts? :smiley: gibt es ne log wo evtl. Fehler drinne stehen?

LG

… ja: unter Einstellungen z.B. „Debug aud fie SD Karte“ aktivieren.
Und dann kann man über den Total Commander oder AriDroid auf die log (SD-Karte/Tasker/) zugreifen.

Beispiel:

28-04-2014 Task: 11.43.32#Task: HTTP Post [ Server:Port:office@abc.de:yyy@ccc.nu Pfad:/api/ Data / File:{„jsonrpc“: „2.0“, „method“: „IPS_RunScript“, „params“: [24577],
„id“: 1} Cookies: Timeout:20 Inhalts Typ:application/json Ausgabe Datei: Trust Any Certificate:Aus ]
28-04-2014 E: 11.43.32#E: q0: id: 23 n: Wecker eid: 1 p: 10 a: 0 qt: 0
A1: HTTP Post [ Server:Port:office@abc.de:yyy@ccc.nu Pfad:/api/ Data / File:{„jsonrpc“: „2.0“, „method“: „IPS_RunScript“, „params“: [24577],
„id“: 1} Cookies: Timeout:20 Inhalts Typ:application/json Ausgabe Datei: Trust Any Certificate:Aus ]

MST

Nichts außergewöhnliches oder?

20140428 12.14.09 E Start ID0:0.0 TaskService
20140428 12.14.09 T Running ID2 Test
20140428 12.14.11 A OK ID2.1 Test.HTTP Post
20140428 12.14.11 T ExitOK ID2 Test
20140428 12.14.11 E Stop ID0:0.0 TaskService
20140428 12.14.15 M Restart ID0:0.0 Monitor

LG


… ja, nee, nichts Außergewöhnliches - nur leider falsch :wink:
Siehe ersten Post.

MST

PS: keiner Tipp: „jsonrpc“

mit

{„jsonrpc“:„2.0“,„method“:„GetValueFormatted“,„params“:[55845],„id“:1}
hole ich eine String-Variable in IPS ab und schreibe diese in eine txt auf dem Android. Dort ist die Ausgabe jedoch folgendermassen:

{„result“:"du hast keine Anrufe verpasst ",„id“:1,„jsonrpc“:„2.0“}
. Ist das nicht möglich, die Variable „sauber“ zu übergeben - also als Ausgabe nur „du hast keine Anrufe verpasst“ oder hab ich da einen Fehler drin?

Hallo

Zusammen mit Tasker könnte ein neuer Ansatz für die schon öfter angefragte Sprachsteuerung für IPS sein.

Im Kontext mit Tasker hab ichs zwar noch probiert, aber ansonsten läuft die Android Spracherkennung mitlerweile sehr gut.

vom Urlaub zurück und voll mit neuen Ideen
grüßt bb

Hallo zusammen

Ich habe Jetzt alles ausprobiert leider kann ich kein Script starten.
Ich bekomme folgende fehlermeldung
Input/Output error for http://ipadress:port/api/:java.io.EOFException

Kann mir evt. Jemand was dazu sagen. In meinem Benutzernamen von Ips ist ein @ Zeichen drin kann es vielleicht daran liegen.
Für ein paar Tips wäre ich Dankbar.

Mfg Stefan

OT

Hallo bb,
Du solltest dich doch entspannen und nicht den ganzen tag über „unmögliches machbar machen“ hirnen.

Hoffe es Du/Ihr hast/habt dich/euch trotzdem erholt.

Hallo bb

ich hab auch ein @ im Benutzernamen, so wie alle glaube ich, und es funktioniert super mit Tasker.
Ich hab dir mal meinen Task angehängt :


%Usernameips ist die Variable mit Benutzername:PWD@ und %IPROUTER ist die IPS-Adresse:Port aber alles ohne http:\

bei Content Type noch application/json und halt noch eine Output File(nicht wundern warum das bei mir ne htm datei ist, die wird noch weiterverarbeitet) angeben und es klappt hoffentlich.

Gruß Jannis

Hab ich mal umgesetzt. Habs zwar nie gebraucht, funktioniert aber nicht schlecht. Die xml sollte so importiert werden können als Task. Zugangsdaten ändern und von Seite Tasker wars das. Ich habs als App laufen gelassen.

_TaskerData.txt (1.47 KB)

So warum auch immer es funktioniert jetzt.
So wie Steiner es im ersten Post geschrieben hat habe ich es eingestellt.
Vieleicht hatte ich nur einen Tip fehler drin.
Mfg Stefan[RIGHT][/RIGHT]

e/
Hat sich erledigt, es funktioniert jetzt!
Allerdings bin ich nicht sicher an was es gelegen hat… Hab alles mögliche aus probiert. Evtl ein Tippfehler (obwohl alles schon x-mal überprüft…)


Hat hier jemand den Tasker noch mit Symcon laufen?
Habe heute mal versucht ein Symcon Skript über JSON/Tasker zu starten.
So richtig funktionieren will es aber bisher nicht.

Die Server Adresse scheint zu stimmen, zumindest kommt keine Fehlermeldung (wenn ich etwas daran ändere kommt eine längere Fehlermeldung im Tasker).
Wenn ich die selbe Adresse im Browser mit /api/ eingebe, kommt:
{„API“:„0.1“,„IP-Symcon“:„4.10“,„JSON-RPC“:„2.0“}
Also das scheint zu passen…

Nur kommt im Symcon leider nichts an. Das Skript wird nicht ausgeführt.

Meine Settings sehen so aus:


Android 5.1
Aktuelle Tasker Version
IP-Symcon 4.10, 30.10.2016, e17a45250c62

Hat jemand eine Ahnung was ich falsch mache?