[39_TEERKO.pm] Neues Modul zur textbasierten Steuerung

Begonnen von tiroso, 01 Juni 2017, 08:23:51

Vorheriges Thema - Nächstes Thema

tiroso

#30
Hallo,

Die User Definierten Befehle waren vorher seeehr umständlich. Ich habe den Part nun geändert.
Benutzerdefinierte Befehle werden in einer externen Datei festgelegt. Somit kann man diese auch im nachhinein ändern.

User definierte Befehle - Datei
Es ist möglich eigene Befehle in einer externen Datei abzulegen.
Die Datei muss folgenden Aufbau haben

[command]
in=wie geht es dir (heute|jetzt)
out=gut
fhem=set testdummy on

[command]
in=was geht jetzt
out=Keine Ahnung
fhem=set testdummy2 off
activ=0

[command]
in=ich.*arbeit
out=viel spass
fhem=set anwesenheit work



Wenn der Befehl mit "in" matched dann wird "out" zurückgegeben und "fhem" ausgeführt. "fhem" muss nicht mit angegeben werden. Wird "out" nicht mit angegeben wird standart "ok" zurückgegeben. Mit dem Parameter "activ" kann man einen Befehl aktivieren oder deaktivieren.

Sollte ein Benutzerdefinierter Befehl auf den Befehl passen wird dieser nicht mehr mit den internen Schaltungen abgeglichen

Die benutzerdefinierte Datei wird eingelesen per
set <TEERKO Device> ReadUserFile <file>

Wenn in "out" Readings stehen sollen werden diese folgendermaßen dargestellt:

Reine "state" Angabe:
out=Der Status der Lampe ist %device%
bestimmtes Reading:
out=Die Temperatur beträgt %device:temperature%
bestimmtes Reading in der Angaben ersetzt werden sollen:
out=Die Haustür ist %device:state:opened=geöffnet&closed=geschlossen%

Um nicht immer wieder den Pfad angeben zu müssen kann man diesen unter dem Attr UserDefFile speichern. Danach kann man das ReadUserFile ohne Pfadangabe ausführen.

Durch die User Befehle könnt ihr euxh ggf viele Notifys sparen...
Feedback gewünscht ^^

tiroso

Sorry Leute.
Die User definierte Datei war noch von mir Hardcoded. ..

Jetzt nicht mehr. Bitte nochmals herunterladen

eurolift

Bin gerade am testen.Super Sache :). Kann man den Speicherort irgendwo fest hinterlegen?

tiroso

Oh ja klar. Hatte ich vergessen zu hinterlegen.

attr <TEERKO Device> UserDefFile /opt/fhem....

Somit brauchst du "nur" noch ReadUserFile ohne Pfadangabe

yrwyddfa

Hallo tiroso,

wäre es möglich, hier auch rive-Dateien anzugeben/zu integrieren? Die lassen sich ja sehr intuitiv schreiben.

LG

Yw
If every day has its number, Monday would be a zero division.

tiroso

Hey.
Dafür habe ich mich mit RS zu wenig auseinander gesetzt. Sprich ich habe es nicht drin und es erstmal auch nicht vor.  Mein Modul soll keine richtigen Dialoge aufbauen.
Auf ein Befehl soll maximal eine Antwort folgen gepaart mit ggf Fhem commands.
Kannst du mir mal eine RS datei zur Verfügung stellen? Vllt kann ich da ja was machen.

Gruß

yrwyddfa

Gern! Kommt, wenn ich wieder an meinem Rechner bin :)
If every day has its number, Monday would be a zero division.

yrwyddfa

So, sorry for me took so long. Hier sind ein paar Beispieldateien, eine Kombination aus Spielerei und fhem-Abfragen, allerdings alles noch ziemlich alpha-Status. Wenn Du Fragen hast, immer zu, ansonsten gibt es bezüglich Rivescript ein super Tutorial hier:

https://www.rivescript.com/docs/tutorial
If every day has its number, Monday would be a zero division.

tiroso

Kein Problem...
Habe mich aber doch verschluckt. :D Das sieht interessant aus, werde ich aber so nicht übernehmen können.

Ich muss zugeben das ich mit dem Modul etwas eigenes versucht habe zu konstruieren. Und so wie ich es umsetze, funktioniert es komplett anders als RS.
Ich hatte jetzt aber nur das Script für Statusabfrage geöffnet. Was mir aber auch aufgefallen ist...Du musst dort wieder jeden einzelnen Raum bzw Reading angeben. Ich versuche mein Modul möglichst flexibel zu gestalten. Mein Modul nimmt bei einer Temperatur abfrage für einen Raum alle Temperatur Readings die er in dem Raum finden kann, und bildet einen Mittelwert

Tut mir Leid aber das wird nichts. Ich weiß leider auch nicht wie ich mein Modul in Richtung mehrfachen Dialog gestalten soll...Vielleicht irgendwann, da würde ich dann nochmal Bescheid geben.

Aber ein paar Befehle kannst du auch in meinem Benutzerdefinierten Part einbauen. Damit könnte es gehen.....
Vielleicht baue ich das auch nochmal um oder erweiter es das zumindest Teile eines RS erkannt werden....
Ich werde mir mal mehr Gedanken drum machen ^^

Gruß und schönen Abend

yrwyddfa

#39
Danke dir fürs drüberschauen!
Ich denke, so unterschiedlich ist deine user defined file zu rivescript, lediglich die Syntax variiert ein wenig. Dein .* entspricht in rs zum Beispiel dem


[*]


Statt "in" wird als trigger + verwendet, statt out das -

Der fhemaufruf wird über ein <call>fhem ... </call> realisiert, welcher bei dir in der fhem= Zeile steht,

Spannend an rivescript ist, dass du Bedingungen angeben kannst, also zb. Antwort a) nur gegeben wird, wenn der bot gute Laune hat, ansonsten würde Antwort b) gegeben.

Die Option, dass Antworten unterschiedlich ausfallen können ist indess ein echter Mehrwert, da auf die selbe Aktion nicht immer eine identische Bestätigung kommt (kommen muss).

Eventuell lässt sich ja auch eine Kombilösung finden? Ich helf gern, wenn ich kann!

Edith hat die Syntax verbessert.
If every day has its number, Monday would be a zero division.

tiroso

Neue Funktion: Abfrage der Räume und Devices
Hallo Leute,
Noch keine Erweiterung der Befehlserkennung, da komme ich im Moment was schleppender voran.
Aber eine Erweiterung für die Übersichtlichkeit in FHEM

get <TEERKO Device> Information all|rooms|devices

Abfrage über die Devices die mit dem Modul TEERKO in Kontakt kommen. Entweder Räume und Devices oder jeweils einzeln
Diese können auch fest in Fhem eingebunden werden:
define TeerkoDevices weblink htmlCode { TEERKO_HtmlDevices() }
define TeerkoRooms weblink htmlCode { TEERKO_HtmlRooms() }

Ich hoffe ich komme dazu in den nächsten Tagen weitere Befehlssätze aufzunehmen

tiroso

#41
Neue Funktion: Steuern von Sonos Boxen
Man hat nun die Möglichkeit SonosBoxen zu integrieren.
durch setzen des Attributs SonosIntegration am TEERKODevice und TEERKOControl an den Sonos Boxen kann man Sonos Boxen ansteuern.

Sofern kein passendes Device gefunden wird aber die Keywords im Satz enthalten sind, geht das TEERKO Device davon aus das Sonos Boxen gesteuert werden sollen. Es wird nach einem Raum in dem Satzteil gesucht. Sollte kein Raum vorhanden sein, wird der für die Sonos Boxen zu letzt verwendete benutzt. Sollten mehrere Rooms genutzt werden wollen können diese noch über TEERKORoom gesetzt werden. Diese werden dann auch berücksichtigt.

Beispiel:
Schalte Sonos im Wohnzimmer ein
Ist einmal ein Raum gegannt worden wird dieser für zukünftige Befehle gespeichert
Schalte Sonos aus, Sonos aus, Stop Sonos
Erst nach nennen eines anderen Raumes wird der Standartplayer geändert.

Derzeit werden nur für Sonos Geräte folgende Befehle unterstützt:

  • Schalte Sonos (aus|ein)
  • (Stoppe|Stop|Starte|Pausiere) Sonos
  • Stelle die Sonos Lautstärke (lautlos|ohne Ton)
  • Stelle die Sonos Lautstärke auf 15
  • Sonos nächstes Lied
  • Sonos vorheriges Lied

Ich arbeite weiter an Playlist..Radio..Lied weiter, zurück..etc...aber somit ist eine einfache Steuerung gegeben

hartenthaler

Super neues Modul! Danke! Lies sich völlig problemlos installieren und die Steuerung per Telegram hat auf Anhieb funktioniert.
Licht an/aus funktioniert problemlos. Aber mit Markise und Garagentor habe ich noch Probleme. Das Modul versteht mich entweder nicht oder sagt, dass es keine Berechtigung habe, obwohl im Device auf 1 gesetzt (siehe ScreenShot). Was kann ich ändern oder testen?
Leicht irritieren tun mich die Leerzeichen vor den TEERKO-Raumnamen; kommt wohl dadurch, dass ich bei der Definition in der Liste nach dem Komma ein Leerzeichen gemacht habe. Kannst Du das im Modul abfangen oder soll ich es bei der Definition ändern?
PS: ich habe noch ein paar Tippfehler gefunden, die das Modul in der Kommunikation von sich gibt. Soll ich Dir eine Liste zusammenstellen?
fhem 5.8 auf RaspberryPi 3 mit HMLAN und CCU2, ZWave, JeeLink, FHZ1000 für FS20, HMS, Fritz!Box, Fritz!DECT200, Harmony, Sonos, hue, netatmo, SSCam, Wetter- und Verkehrsmodule, Chat-Bot mit RiveScript/Telegram, IFTTT, pushover, ...

tiroso

#43
Hey.

Danke.
Ja lass mir mal eine Liste zukommen. Im Moment sind viele Texte noch die, die ich von Anfang an drin habe. (Tippfehler und RechtschreibFehler inklusive; ))

Ja es liegt definitiv an den Leerzeichen. Im Moment fange ich das noch nicht im Modul ab. Ich kann später aber mal nachsehen das ich das behebe.
In der Zeit würde ich dir raten die TEERKOALias und TEERKORoom zwar mit Komma zu trennen aber ohne führende oder endende Leerzeichen.
Garagentor,Tor
Westbalkon,Balkon Wohnzimmer,Wohnzimmerbalkon

Dann sollte es eigentlich wieder klappen.

[EDIT]Ich sehe mir das gerade nochmal an....Den Befehl Öffne und Schließe habe ich nicht in meinem Befehlssatz. Danke das werde ich auch mit aufnehmen.

FYI:
Du kannst Befehle wiederholen  (Wiederhole den Befehl, Mach das nochmal)
Du kannst das letzte Device auch mit Gerät,Aktor nochmals ansprechen (Fahre das Gerät auf 50%, Schalte den Aktor aus)

Gruß

tiroso

Achja. Um HueDevice8 ansteuern zu können braucht das Device noch ein TEERKOAlias. Deckenlampe oder Beleuchtung oder wie es auch heissen mag