[39_TEERKO.pm] Neues Modul zur textbasierten Steuerung

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

Vorheriges Thema - Nächstes Thema

the ratman

uij, schon wieder ein geiles modul - thx dafür!

ich hätte da aber gleich 2 fragen:

1) könnte man räume etwas flexibler gestalten? "im terrasse" kommt so blöd *g*
oder gibts da eh schon ne lösung, die ich wieder nur übersehen hab?

2) kann ich auch von winconnect ( https://forum.fhem.de/index.php/topic,59251.0.html ) aus befehle versenden?
das wäre ja quasi das amad von windows ...
→do↑p!dnʇs↓shit←

tiroso

In der nächsten Version, Dauert leider noch etwas, kannst du sämtliche Präpositionen verwenden( im, in, auf der, neben der, etc.) Das sollte dann für die Terrasse reichen.

An Winconnect hatte ich noch gar nicht gedacht. Ist ja eig passend. Da muss ich dann nur noch sehen in welchem Reading der Sprachbefehl dann steht.
Als übergangslösung kannst du ein Notify/doif auf dein WinConnect reagieren lassen und schreibst das Reading mit dem Sprachbefehl in das Teerko Device. Dann kann man wenigstens direkt damit was machen. Die Antwort an dem Teerko Device kannst du ja wieder an WinConnect schicken

the ratman

ach du, ich hab zeit - bin ja froh, das du sowas überhaupt bastelst *g* ist ne echte erleichterung gegen meine ehemaligen spielereien mit tasker.
ich verwend zwar winnconnect, weiß aber noch nicht mal ob der cortana abfangen kann. der autor is aber auch verdammt umgänglich und flott, sollte man ideen vorbringen.

btw - gleich noch ne freche frage:
ich wollte immer schon eine art indirektes intercom.
das könnte ja mit den selber erstellten befehlen gehen, nur dafür fehlt mir derzeit noch die idee ...
müsste wohl sowas sein wie: "sage <username/androiddevice/winconnectdevice>: blaa blubb blaa", oder "durchsage na alle: blaa blubb blaa"
blaa blubb blaa wird dann einfach per ttsmsg an das/die device(s) gesendet.
→do↑p!dnʇs↓shit←

ToM_ToM

Hey tiroso,

es wäre noch super wenn man irgendwo eine Genus-Definition hätte.

Wenn ich folgendes Frage: Wie ist der Status des Fensters im Arbeitszimmer?
dann kommt als Antwort: Der Fenster im Arbeitszimmer ist closed.
Das klingt irgendwie bisschen doof.^^

Wie man in der Antwort erkennen kann, funktioniert das Attribut bei mir aktuell auch nicht

attr Teerko sarReading opened:geöffnet,closed:geschlossen

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

tiroso

Da habe ich ewig drüber nachgedacht weiss aber nicht wie ich das einbinden soll. Sieht aber wirklich nicht schön aus da gebe ich dir recht.
Wieso das sarReading nicht klappt...hmm...hast du noch was geduld bis zurnächsten Version?

ToM_ToM

ZitatWieso das sarReading nicht klappt...hmm...hast du noch was geduld bis zurnächsten Version?

Ja klar. Das Modul ist ja für mich nicht überlebenswichtig.^^ Ich warte einfach ab und teste dann wenn du soweit bist. :)

VG, Thomas
Hardware: BananaPi, Busmaster CUL, SanDisk 16GB Ultra SD, 16 GB USB-Stick | Software: Armbian, FHEM 5.8

visionsurfer

Guten Morgen,

ich finde diese Vorgehensweise für User die kein Alexa und Co. nutzen wollen, sehr interessant.

Eventuell hab ich es überlesen, aber gibt es schon brauchbare Hardware die man als Micro nutzen kann ?
Weil grundsätzlich finde ich dieses Modul vom Ansatz super. Aber der Mega krasse Vorteil von Alexa, bzw. von den Dots sind die Micros. Die hören wirklich ziemlich gut zu.

Gibt es irgendwelche Hardware, die man für dieses Modul einsetzen kann um eine ähnliche Qualität zu bekommen ?

Grüße,
Visionsurfer

the ratman

gehts nur mir so? hab probleme bei %
jeder befehl, der % enthällt, wird zwar erkannt, aber falsch ausgeführt z.b. set_0 anstelle 50% oder auch mal gar nix (stellantrieb knackst, passieren tut nix)
übrigens gehts um homematc, sofern das relevant is.

2017.09.04 11:10:42 1: Logfile gelöscht
2017.09.04 11:11:05 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/39_TEERKO.pm line 2822.
2017.09.04 11:11:05 1: stacktrace:
2017.09.04 11:11:05 1:     main::__ANON__                      called by ./FHEM/39_TEERKO.pm (2822)
2017.09.04 11:11:05 1:     main::TEERKO_CheckCommand           called by ./FHEM/39_TEERKO.pm (1581)
2017.09.04 11:11:05 1:     main::TEERKO_Notify                 called by fhem.pl (3451)
2017.09.04 11:11:05 1:     main::CallFn                        called by fhem.pl (3372)
2017.09.04 11:11:05 1:     main::DoTrigger                     called by fhem.pl (4344)
2017.09.04 11:11:05 1:     main::readingsEndUpdate             called by ./FHEM/73_AMADCommBridge.pm (831)
2017.09.04 11:11:05 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.09.04 11:11:05 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.09.04 11:11:05 1:     main::AMADCommBridge_Read           called by fhem.pl (3451)
2017.09.04 11:11:05 1:     main::CallFn                        called by fhem.pl (697)
2017.09.04 11:11:21 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/39_TEERKO.pm line 2829.
2017.09.04 11:11:21 1: stacktrace:
2017.09.04 11:11:21 1:     main::__ANON__                      called by ./FHEM/39_TEERKO.pm (2829)
2017.09.04 11:11:21 1:     main::TEERKO_CheckCommand           called by ./FHEM/39_TEERKO.pm (1581)
2017.09.04 11:11:21 1:     main::TEERKO_Notify                 called by fhem.pl (3451)
2017.09.04 11:11:21 1:     main::CallFn                        called by fhem.pl (3372)
2017.09.04 11:11:21 1:     main::DoTrigger                     called by fhem.pl (4344)
2017.09.04 11:11:21 1:     main::readingsEndUpdate             called by ./FHEM/73_AMADCommBridge.pm (831)
2017.09.04 11:11:21 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.09.04 11:11:21 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.09.04 11:11:21 1:     main::AMADCommBridge_Read           called by fhem.pl (3451)
2017.09.04 11:11:21 1:     main::CallFn                        called by fhem.pl (697)
2017.09.04 11:11:34 1: PERL WARNING: Use of uninitialized value in concatenation (.) or string at ./FHEM/39_TEERKO.pm line 2829.
2017.09.04 11:11:34 1: stacktrace:
2017.09.04 11:11:34 1:     main::__ANON__                      called by ./FHEM/39_TEERKO.pm (2829)
2017.09.04 11:11:34 1:     main::TEERKO_CheckCommand           called by ./FHEM/39_TEERKO.pm (1581)
2017.09.04 11:11:34 1:     main::TEERKO_Notify                 called by fhem.pl (3451)
2017.09.04 11:11:34 1:     main::CallFn                        called by fhem.pl (3372)
2017.09.04 11:11:34 1:     main::DoTrigger                     called by fhem.pl (4344)
2017.09.04 11:11:34 1:     main::readingsEndUpdate             called by ./FHEM/73_AMADCommBridge.pm (831)
2017.09.04 11:11:34 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.09.04 11:11:34 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.09.04 11:11:34 1:     main::AMADCommBridge_Read           called by fhem.pl (3451)
2017.09.04 11:11:34 1:     main::CallFn                        called by fhem.pl (697)
2017.09.04 11:11:34 1: PERL WARNING: Use of uninitialized value $insertint in substitution (s///) at ./FHEM/39_TEERKO.pm line 2904.
2017.09.04 11:11:34 1: stacktrace:
2017.09.04 11:11:34 1:     main::__ANON__                      called by ./FHEM/39_TEERKO.pm (2904)
2017.09.04 11:11:34 1:     main::TEERKO_CheckCommand           called by ./FHEM/39_TEERKO.pm (1581)
2017.09.04 11:11:34 1:     main::TEERKO_Notify                 called by fhem.pl (3451)
2017.09.04 11:11:34 1:     main::CallFn                        called by fhem.pl (3372)
2017.09.04 11:11:34 1:     main::DoTrigger                     called by fhem.pl (4344)
2017.09.04 11:11:34 1:     main::readingsEndUpdate             called by ./FHEM/73_AMADCommBridge.pm (831)
2017.09.04 11:11:34 1:     main::AMADCommBridge_ResponseProcessing called by ./FHEM/73_AMADCommBridge.pm (695)
2017.09.04 11:11:34 1:     main::AMADCommBridge_ProcessRead    called by ./FHEM/73_AMADCommBridge.pm (618)
2017.09.04 11:11:34 1:     main::AMADCommBridge_Read           called by fhem.pl (3451)
2017.09.04 11:11:34 1:     main::CallFn                        called by fhem.pl (697)

in der combridge kommts richtig anreceiveVoiceCommand
stelle das rollo im straße auf 50%
2017-09-04 11:11:33
receiveVoiceDevice
MiniMe_AMAD
2017-09-04 11:11:33


btw.: ists absicht, das runter und rauf nur 10% macht? ich hätte da eig. on und off erwartet?
dumme sätze wie "schalte das rollo im strasse ein/aus" funzen dann aber sogar mit 100% und 0% als ergebnis.
→do↑p!dnʇs↓shit←

minias

Super Modul! Vielen Dank!

Ich hatte einige Tests mit den UserFile´s gemacht. Dabei habe ich bemerkt dass die Reihenfolge der Befehle in der Datei eine Rolle spielt:


hier greift: steffi geht schlafen mit musik (und die Varianten)

[command]
in=(steffi|stefanie).*(schlafen|bett).*musik
out=Steffi geht schlafen mit Einschlafmusik
fhem=set sz_generell scene SchlafenMusik
activ=1

[command]
in=(steffi|stefanie).*(schlafen|bett)
out=Steffi geht schlafen
fhem=set sz_generell scene SchlafenGehen
activ=1


hier greift: steffi geht schlafen mit musik (und die Varianten) nicht mehr

[command]
in=(steffi|stefanie).*(schlafen|bett)
out=Steffi geht schlafen
fhem=set sz_generell scene SchlafenGehen
activ=1

[command]
in=(steffi|stefanie).*(schlafen|bett).*musik
out=Steffi geht schlafen mit Einschlafmusik
fhem=set sz_generell scene SchlafenMusik
activ=1



Meine Frage, ist das so gewollt, oder sollten sämtliche Befehle vorher geprüft/ausgwertet und dann gemached werden?
Gibt es noch andere "Schreibweisen" der Befehle, bzw. andere Möglichkeiten zu differenzieren?

tiroso

Hey Minias,

Danke dir.
Es ist tatsächlich so das der erste Match auch zählt. Es wird nicht mehr "gecheckt" welcher am besten passen würde. Das einzige was ich dir empfehlen kann, ist im zweiten teil anzugeben das musik nicht vorkommen darf.

Ungefähr so:
Anstatt
(steffi|stefanie).*(schlafen|bett)
dann
(steffi|stefanie).*(schlafen|bett)(?!.*musik)

Alles was du mit RegEx matchen kannst sollte möglich sein

minias

Funktioniert :)
Vielen Dank! Ich werde mir noch verschiedene RegEx Möglichkeiten ansehen.

minias

Jetzt habe ich gleich noch eine Frage.

Hier gebe ich die AMADDevice an. Funktioniert wunderbar! Der Befehl wird ausgeführt und bekomme eine Rückmeldung über das AMAD TTS (Attribute in AMADCommBridge : fhemControlMode thirdPartControl setzen!)

attr <name> AMADDevice <AMADDevice>

Wenn ich jetzt mehrere Android Geräte habe, wüsste TEERKO nicht an welchem den Befehl abholen und bei welchem rück-melden, oder habe ich einen Denkfehler?
In der  AMADCommBridge wären beide Readings (receiveVoiceCommand,receiveVoiceDevice) vorhanden:
BRIDGE     1
   CONNECTS   6284
   FD         32
   NAME       AMADCommBridge
   NR         235
   PORT       8090
   STATE      opened
   TYPE       AMADCommBridge
   VERSIONFLOWSET 4.0.7
   VERSIONMODUL 4.0.5
   READINGS:
     2017-09-07 12:42:24   fhemServerIP    192.168.1.130
[b]     2017-09-08 14:54:15   receiveVoiceCommand alles aus
     2017-09-08 14:54:15   receiveVoiceDevice g_tablet_android_amad [/b]
     2017-09-08 10:04:51   state           opened
Attributes:
   fhemControlMode thirdPartControl
   group      Module,System/Sonstige
   icon       audio_repeat
   room       Mobile,System


Wie könnte ich über mehrere AMAD-Devices Sprachbefehle absetzen?

tiroso

Ich habe pro TEERKO Device nur ein zugeordnetes Gerät vorgesehen.
Für jedes Amad Device also ein weiteres TEERKO

CoolTux

Man könnte überlegen
receiveVoiceDevice
aus zu werten. So für spätere Versionen  :)
Du musst nicht wissen wie es geht! Du musst nur wissen wo es steht, wie es geht.
Support me to buy new test hardware for development: https://www.paypal.com/paypalme/MOldenburg
My FHEM Git: https://git.cooltux.net/FHEM/
Das TuxNet Wiki:
https://www.cooltux.net

tiroso

Derzeit lasse ich ja receiveVoiceDevice auswerten ;) Deswegen ja auch das Attr da.