Werte mit Tasker auslesen/vorlesen

Begonnen von bushrang, 18 August 2013, 12:11:26

Vorheriges Thema - Nächstes Thema

bushrang

Hallo zusammen,

ich bin noch recht neu in der FHEM Welt und jetzt schon bis über beide Ohren von den Möglichkeiten begeistert. Aktuell steuere ich meine Devices bereits per Smartphone und Tasker mit Autovoice, was hervorragend funktioniert. Allerdings bin ich noch nicht dahinter gekommen wie (wenn es überhaupt geht), ich per Sprachbefehl z. B. die aktuell gemessene Temperatur meines HMS100 TF abrufen und per Tasker vorlesen lassen kann. Das wäre dann so ziemlich die Krönung der ganzen Sache.

Über jede Hilfe von euch würde ich mich sehr freuen!  

kud

Dann schau dir doch mal unter tasker.dinglisch.net die Userguide zu GET und POST an.

HTTP Get
Sendet eine HTTP GET-Anfrage (Informationen einer Webseite abrufen) an einen Server.

Die Antwort des Servers wird in der Variable %HTTPR gespeichert. Eine Antwort von -1 signalisiert ein Problem mit der Anfrage. Alle zurück bekommenen Daten werden in %HTTPD gespeichert, sofern der Kontexttyp Text oder nicht angegeben ist (max. 4KB).


Der Aufruf könnte sein: Bsp.

"http://192.168.1.104:8083/fhem?cmd=list%20CUL_WS_1%20temperature"

als Ergebnis kommt:

CUL_WS_1 2013-08-20 15:47:04 21.2


Dieses sollte dann in der Variablen %HTTPR stehen.

Dann vielleicht mal hier nachschauen http://tasker-skripte.blogspot.de/2011/08/tutorial-automatisieren-mit-tasker-teil_26.html
Da wird der Umgang mit Variablen erläutert mit Stringaufbereitung und Sprachausgabe.

Das waren nur Hinweise und ein wenig Google-Suche. Ich habe es selbst noch nicht umgesetzt.

Gruss Kai-Uwe

kud

OK. Hier mein Ergebnis:

Antippen von "Autovoice" und sagen "Temperatur außen"
Es ertönt "Die Temperatur im Außenbereich beträgt 29 Grad" aus dem Handy.

Voraussetzung "tasker" und "autovoice" ist installiert.(sonst bitte hier im Forum suchen)
Beispiel für das Ansagen der Temperatur eines CUL_WS  (S300TH)

Task (zB. "sprachausgabe") anlegen.
in den folgende Aktionen hinzufügen:
1.
"+" "net" "Http Get"
Server:Port "http://192.168.1.104:8083/fhem?cmd=xml%20CUL_WS_1"
Mime Type "text/xml"
2.
"+" "variables"  "Variable split"
Name "%HTTPD"
Splitter "state="" (kein Hochkomma sondern doppelte Anführungsstriche)
3.
"+" "variables"  "Variable split"
Name "%HTTPD2"
Splitter "T:"
4.
"+" "variables"  "Variable split"
Name "%HTTPD22"
Splitter "H:"
5.
"+" "variables"  "Variable split"
Name "%HTTPD221"
Splitter "."
6.
"+" "misc" "Say"
Text "Die Temperatur im Außenbereich beträgt %HTTPD2211 Grad"

7. Unter "Profiles" "AutoVoice Recognized" hinzufügen/clonen und den Speak Filter anpassen
8. Dem Ganzen dann den Task "sprachausgabe" zuweisen

Viel Spaß
Kai-Uwe
Ps. Ich freue mich schon auf die Zeiten wenn alle Android-Geräte ähnlich wie das neue Motorola aufgebaut sind. Da ist dann die Spracheingabe ständig aktiv. Ich sag nur " Kirk an Brücke..." ;-)

kud

Hier der Link für die Grundlagen des oberen Artikels

Link

bushrang

Hi Kai-Uwe,

ich weiß gar nicht, wie ich dir für deine viele Mühe danken soll. Die Sprachausgabe von Temperatur etc. ist ja eigentlich nur ein mäßig wichtiges i-Tüpfelchen, aber du kennst das wahrscheinlich selbst: wenn, dann will man so eine Spielerei auch noch irgendwie gebacken bekommen.

Ich werde jedenfalls den Abend jetzt mit deinen Tipps und deiner Anleitung verbringen und meine Freundin noch ein wenig mit Sprachbefehlen per Android ärgern. Was das Motorola angeht, so würde mich mal interessieren, wie die Akku-Laufzeit bei Dauer-Zuhören aussieht. Mein Samsung S3 kann auch auf Dauer-Modus gestellt werden, aber dann zieht man das Ding bestenfalls erst gar nicht vom Ladekabel ab.

Noch einmal vielen Dank und viele Grüße

Heiko

kud

Na mit dem neuen Motorola ist es ein wenig anders.
Google hat da einen Miniprozessor zusätzlich eingebaut, der nur die Aufgabe hat auf "Hello Google" zu lauschen. Batterie soll unmerklich belastet werden. naja. Mal sehen ws die Dauertests zeigen.
Aber zurück zum Thema.
Die Geschichte hat ja ungeahnte Möglichkeiten.
Schau Dir mal dieses Video an.
http://www.pocketables.com/2013/05/check-out-this-awesome-taskerautovoice-home-automation-setup.html
Ok. Ein wenig "Vorkenntnisse" der Befehle sind sehr hilfreich.
Ich habe es aber heute schon geschafft das Gartenwasser ein und auszuschalten.
Bei jedem Sprachbefehl der "Gartenwasser" erkennt wird geschaut, ob das Gartenwasser ein oder ausgeschaltet ist. Und entsprechend das Gegenteil wird ausgeführt.
Das ist auch der Trick beim Video. Wenn das Gartenwasser eingeschaltet ist dann macht es nur Sinn das auszuschalten. Und das klappt auch mit dem Auswerten der Variablen. Wenn ON dann schalte es OFF.

In diesem Sinne Gute Nacht
Gruss KU

bushrang

Wollte mich mal mit meinem Ergebnis von letzter Nacht zurückmelden. Deine Settings funktionieren absolut hervorragend. Parallel habe ich endlich mal die Regex Geschichte in AutoVoice geschnallt, so dass ich jetzt nur noch in irgendeinem Satz "Außentemperatur" sagen muss und immer perfekt die korrekte Erkennung mit Ansage bekomme. Vorher waren Kommandos stellenweise ein wenig Glückssache.

Die On/Off Geschichte deiner Gartenbewässerung ist in der Tat sehr interessant. Aktuell habe ich für jedes Device noch ein On und ein Off Profil in Tasker angelegt, was sich ja irgendwann summiert. Wenn ich das richtig verstanden habe, würde man dies ja dann nicht mehr brauchen, weil er automatisch das Gegenteil vom aktuellen Zustand macht.

Wie legst du denn die "Zustandsabfrage" mit anschließendem Befehl bei dir an?

Viele Grüße

Heiko

kud

Na genauso wie die Temperaturabfrage.
Ich habe einen FHEM-Schalter namens Gartenschalter welcher "on" oder "off" ist.
Also Abfrage mit:
1.
"+" "net" "Http Get"
Server:Port "http://192.168.1.104:8083/fhem?cmd=xml%20Gartenschalter"
Mime Type "text/xml"
2.
"+" "variables" "Variable split"
Name "%HTTPD"
Splitter "state="" (kein Hochkomma sondern doppelte Anführungsstriche)
3.
"+" "variables" "Variable split"
Name "%HTTPD2"
Splitter """  (kein Hochkomma sondern doppelte Anführungsstriche)

Nun steht in %HTTPD21 entweder "on" oder "off"

Jetzt gehen wir noch ein wenig weiter in die Flußsteuerung von AutoVoice:

4.
"+" "Task" "if"
Condition: %HTTPD21 match on
5.
"+" "net" "Http Get"
Server:Port "http://192.168.1.104:8083/fhem?cmd=set%20Gartenschalter%20off"
6.
"+" "misc" "Say"
Text "Das Gartenwasser wird ausgeschaltet."
7.
"+" "Task" "elseif"
Condition: %HTTPD21 match off
8.
"+" "net" "Http Get"
Server:Port "http://192.168.1.104:8083/fhem?cmd=set%20Gartenschalter%20on"
9.
"+" "misc" "Say"
Text "Das Gartenwasser wird eingeschaltet."
10.
"+" "Task" "End if"


Fertig ;-)



kud

Und noch 2 kleine Hinweise:
Ein Befehl und diverse Argumente.
Bsp.
Temperatur keller
Temperatur wohnzimmer
Temperatur flur
etc.
Hinweis: Bleibt bei Kleinschreibung da hat die Voiceerkennung und Abfrage keine Probleme.

Lösung:
Man legt ein Spachprofil mit dem Command Filter "temperatur" an, kein RegEx !.
In den Tasks wird anlog zum oberen Beispiel die Variable abgefragt die hinter dem eigentlichen Befehl steht , nämlich %avcommnofilter.
Also %avcommnofilter Matches keller.

Bringt den Vorteil, dass mit einem Profil und und einem Task diverse Varianten möglich sind.
Nachteil ist die feste Spracheingabe.

2.Tip Mehrere Suchwörter im "Command Filter" des Profils.
Einfach die Suchworte mit einem "|" trennen. (ohne Leerzeichen!)
Bsp. Abfrage der Temperatur im Außenbereich.
Command Filter: außen|draußen|außentemperatur  
und RegExp. eingeschaltet

Jetzt reagiert Autovoice auf alle 3 Suchwörter egal wie der Satz aufgebaut ist.


Viel Spaß beim optimieren.
Gruss Kai-Uwe



Invers

Ivch habe alles so gemacht, wie hier beschrieben (natürlich angepasst):

1.
"+" "net" "Http Get"
Server:Port "http://192.168.1.104:8083/fhem?cmd=xml%20CUL_WS_1"
Mime Type "text/xml"


Sieht dann bei mir so aus:
Server:Port "http://fritz.box:8083/fhem?cmd=xml%20TMP_Aussen"

In meiner FHEM-Oberfläche steht:
TMP_Aussen T: 28.2 H: 34.0

In der Variable %HTTPD steht offenbar im Anschluss nichts.

Hat jemand eine Idee, was ich falsch gemacht habe?
Schalter betätigen mit Taskjer funktioniert, auch andere Dinge gehen, nur das hier leider nicht.

Bin für jede Hilfe dankbar.
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

kud

Zitat von: Invers schrieb am Fr, 06 September 2013 17:20Ivch habe alles so gemacht, wie hier beschrieben (natürlich angepasst):
[code]
http://fritz.box:8083/fhem?cmd=xml%20TMP_Aussen
Hast Du mal diese Zeile im Browser aufgerufen?

Die Antwort müßte dann so aussehen (CUL_WS_1 mit TMP_AUSSEN austauschen)

<FHZINFO>
   <CUL_WS_LIST>
      <CUL_WS name="CUL_WS_1" state="T: 21.0  H: 69.5" sets="" attrs="room group comment alias eventMap userReadings IODev do_not_notify:0,1 showtime:0,1 model:S300TH,KS300 loglevel ignore:0,1 event-on-change-reading event-on-update-reading event-min-interval stateFormat devStateIcon devStateStyle fm_fav fm_groups fm_name fm_order fp_Grundriss fp_Kameras fp_image icon item.* sortby structexclude webCmd">
         <INT key="CFGFN" value="FHEM/cfg.Temperatur.cfg"/>
         <INT key="CODE" value="1"/>
         <INT key="CUL_0_MSGCNT" value="3212"/>
         <INT key="CUL_0_RAWMSG" value="K0110526926"/>
         <INT key="CUL_0_RSSI" value="-55"/>
         <INT key="CUL_0_TIME" value="2013-09-06 17:24:48"/>
         <INT key="DEF" value="1"/>
         <INT key="LASTInputDev" value="CUL_0"/>
         <INT key="MSGCNT" value="3212"/>
         <INT key="NAME" value="CUL_WS_1"/>
         <INT key="NR" value="54"/>
         <INT key="STATE" value="T: 21.0  H: 69.5"/>
         <INT key="TYPE" value="CUL_WS"/>
         <INT key="corr1" value="0"/>
         <INT key="corr2" value="0"/>
         <INT key="corr3" value="0"/>
         <INT key="corr4" value="0"/>
         <INT key="IODev" value="CUL_0"/>
         <ATTR key="alias" value="Temperatur_Keller"/>
         <ATTR key="room" value="Temperaturen"/>
         <STATE key="DEVFAMILY" value="WS300" measured="2013-09-06 17:24:48"/>
         <STATE key="DEVTYPE" value="S300TH" measured="2013-09-06 17:24:48"/>
         <STATE key="humidity" value="69.5" measured="2013-09-06 17:24:48"/>
         <STATE key="state" value="T: 21.0  H: 69.5" measured="2013-09-06 17:24:48"/>
         <STATE key="temperature" value="21.0" measured="2013-09-06 17:24:48"/>
      </CUL_WS>
   </CUL_WS_LIST>
</FHZINFO>


Invers

Wenn ich die Zeile: http://fritz.box:8083/fhem?cmd=xml%20TMP_Aussen
im Browser eingebe, kommt leider: Unknown command xml, try help.

Woran kann das liegen???? (S. Bild der Def)
(siehe Anhang / see attachement)
Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

Invers

Pi3B+ mit SSD/ Bullseye | FB7590 AX | 12 x Dect200 | CUL433+868 | SDuino | HM-LAN | 3 x Heizung FHT + FKontakte | KeyMatic + 4 FB | HM Wandtaster 2-fach m. LED | 6 x Türkont. TFK-TI | HM-Bew.-Melder innen | 3 x Smoked. HM-SEC-SD-2

kud

Also bei

http://fritz.box:8083/fhem?cmd=xml

muss eine Liste aller Werte kommen.
Ansonsten ist in Deiner Konfig etwas nicht iO.

Gruss Kai-Uwe




Matthias

Hi,

seit wann gibt es denn das Kommando "xml"? Bisher hieß das immer "xmllist", was natürlich auch immernoch funktioniert.

Viele Grüße,
Matthias