[ VERSION 1.2.0 ] 74_AMAD.pm zur Steuerung eines Androidgerätes

Begonnen von CoolTux, 07 August 2015, 09:39:01

Vorheriges Thema - Nächstes Thema

roman1528

Moin. Ich möchte viegener's Idee/Umsetzung jetzt um Gottes Willen nicht schlecht machen...

Ich habe heute ein bisschen mit AutoVoice und Automagic experimentiert...

Dazu das hier: https://forum.fhem.de/index.php/topic,48502.0.html angewendet. Funktioniert ganz gut was sich der Roman da ausgedacht hat.
Ist natürlich sehr simpel gehalten, kann nicht antworten, aber man kann z.B. auch falsch verstandenes behandeln.

Grüße^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Tommy82

Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

roman1528

#1157
Zitat von: Tommy82 am 09 März 2016, 18:15:39
Und wie sieht das dann bei dir aus?

wie was wo? da sieht nichts aus.. es funktioniert...

zum spass meine myUtils:

sub Sprachbefehle {

my $Geraet = $_[0];
my $Command = $_[1];
my $part1 = "";
my $part2 = "";
my $part3 = "";
# aus den uebergeben Wert nur das Sprachkommando extrahieren
$Command =~ s/receiveVoiceCommand: //;

#Nach Stichwoertern suchen
if ($Command =~ m/licht|lampe/i) { $part1="licht" };
if ($Command =~ m/rolladen|rollo/i) { $part1="rolladen" };
if ($Command =~ m/radio|musik/i) { $part1="radio" };
if ($Command =~ m/lötkolben|lötstation/i) { $part1="lötkolben" };
if ($Command =~ m/peripherie|monitor|monitore/i) { $part1="peripherie" };

if ($Command =~ m/on|an|hell|ein|einschalten/i) { $part3="an" };
if ($Command =~ m/off|aus|dunkel|ausschalten/i) { $part3="aus" };
if ($Command =~ m/dimmen|einstellen/i) { $part3="aus" };

if ($Command =~ m/auf|rauf|öffnen/i) { $part3="auf" };
if ($Command =~ m/ab|runter|zu/i) { $part3="ab" };
if ($Command =~ m/stop|stopp/i) { $part3="stop" };
if ($Command =~ m/\d+/i) { $part3=$1 };

if ($Command =~ m/(büro|arbeitsplatz|schreibtisch|küche|flur|led|stripe|bad|badezimmer|spiegel|spiegelschrank|wohnzimmer|stube|sofa|schlafzimmer)/i ) { $part2=$1 };

# Aus den Stickwoertern das Kommando bauen
my $newCommand="$part1 $part2 $part3";

# Hier wird aus dem Kommando das FHEM Kommando zugewiesen
my %Sprachkommando = (
"licht arbeitsplatz an" => "set IT_00F0FFF100 on",
"licht arbeitsplatz aus" => "set IT_00F0FFF100 off",
"peripherie an" => "set IT_F0F0FFFF01 on",
"peripherie aus" => "set IT_F0F0FFFF01 off",
"peripherie büro an" => "set IT_F0F0FFFF01 on",
"peripherie büro aus" => "set IT_F0F0FFFF01 off",
"peripherie schreibtisch an" => "set IT_F0F0FFFF01 on",
"peripherie schreibtisch aus" => "set IT_F0F0FFFF01 off",
"lötkolben an" => "set IT_F0F0FFF100 on",
"lötkolben aus" => "set IT_F0F0FFF100 off",
"lötkolben büro an" => "set IT_F0F0FFF100 on",
"lötkolben büro aus" => "set IT_F0F0FFF100 off",
"lötkolben arbeitsplatz an" => "set IT_F0F0FFF100 on",
"lötkolben arbeitsplatz aus" => "set IT_F0F0FFF100 off",
"licht büro an" => "set bu_aktor_licht on",
"licht büro aus" => "set bu_aktor_licht off",
"radio küche an" => "set ku_intentradio_dummy setPLAY",
"radio küche aus" => "set ku_intentradio_dummy setSTOP",
"licht spiegel an" => "set bad_aktor_spiegelschrank on",
"licht spiegel aus" => "set bad_aktor_spiegelschrank off",
"licht spiegelschrank an" => "set bad_aktor_spiegelschrank on",
"licht spiegelschrank aus" => "set bad_aktor_spiegelschrank off",
"Licht Wohnzimmer aus" => "set Licht_Wohnzimmer off",
"Licht LED an" => "set Licht_WoZi_LED on",
"Licht LED aus" => "set Licht_WoZi_LED off",
"Licht Esszimmer an" => "set Licht_Esszimmer on",
"Licht Esszimmer aus" => "set Licht_Esszimmer off",
"Rollo Küche ab" => "set Rollo_Kueche_Strasse pct 100",
"Rollo Küche auf" => "set Rollo_Kueche_Strasse pct 0",
"Rollo Küche stop" => "set Rollo_Kueche_Strasse stop",
"Rollo Theke ab" => "set Rollo_Kueche_Seite pct 100",
"Rollo Theke auf" => "set Rollo_Kueche_Seite pct 0",
"Rollo Theke stop" => "set Rollo_Kueche_Seite stop",
"Radio Küche an" => "set StckDo_1B on",
"Radio Küche aus" => "set StckDo_1B off",
"Radio Bad an" => "set StckDo_1A on",
"Radio Bad aus" => "set StckDo_1A off"
);

# hier dann das Kommando ausfuehren.
fhem("$Sprachkommando{$newCommand}");
# Der Dummy ist nur zur Kontrolle, bzw. um zu sehen, was wie umgesetzt wird
fhem("set Dummy_test $Geraet,$Command,$newCommand,$Sprachkommando{$newCommand}");

}


notify:
define notify_Sprachbefehl notify AMAD.*receiveVoiceCommand.* {Sprachbefehle ("$NAME","$EVENT")}

Ein neuer Flow in Automagic ist nicht notwendig. Den habe ich nur, weil ich mit AutoVoice á la Ok Google was probiert habe.
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Tommy82

Zitat von: roman1528 am 09 März 2016, 18:36:16
wie was wo? da sieht nichts aus.. es funktioniert...

zum spass meine myUtils:

sub Sprachbefehle {

my $Geraet = $_[0];
my $Command = $_[1];
my $part1 = "";
my $part2 = "";
my $part3 = "";
# aus den uebergeben Wert nur das Sprachkommando extrahieren
$Command =~ s/receiveVoiceCommand: //;

#Nach Stichwoertern suchen
if ($Command =~ m/licht|lampe/i) { $part1="licht" };
if ($Command =~ m/rolladen|rollo/i) { $part1="rolladen" };
if ($Command =~ m/radio|musik/i) { $part1="radio" };
if ($Command =~ m/lötkolben|lötstation/i) { $part1="lötkolben" };
if ($Command =~ m/peripherie|monitor|monitore/i) { $part1="peripherie" };

if ($Command =~ m/on|an|hell|ein|einschalten/i) { $part3="an" };
if ($Command =~ m/off|aus|dunkel|ausschalten/i) { $part3="aus" };
if ($Command =~ m/dimmen|einstellen/i) { $part3="aus" };

if ($Command =~ m/auf|rauf|öffnen/i) { $part3="auf" };
if ($Command =~ m/ab|runter|zu/i) { $part3="ab" };
if ($Command =~ m/stop|stopp/i) { $part3="stop" };
if ($Command =~ m/\d+/i) { $part3=$1 };

if ($Command =~ m/(büro|arbeitsplatz|schreibtisch|küche|flur|led|stripe|bad|badezimmer|spiegel|spiegelschrank|wohnzimmer|stube|sofa|schlafzimmer)/i ) { $part2=$1 };

# Aus den Stickwoertern das Kommando bauen
my $newCommand="$part1 $part2 $part3";

# Hier wird aus dem Kommando das FHEM Kommando zugewiesen
my %Sprachkommando = (
"licht arbeitsplatz an" => "set IT_00F0FFF100 on",
"licht arbeitsplatz aus" => "set IT_00F0FFF100 off",
"peripherie an" => "set IT_F0F0FFFF01 on",
"peripherie aus" => "set IT_F0F0FFFF01 off",
"peripherie büro an" => "set IT_F0F0FFFF01 on",
"peripherie büro aus" => "set IT_F0F0FFFF01 off",
"peripherie schreibtisch an" => "set IT_F0F0FFFF01 on",
"peripherie schreibtisch aus" => "set IT_F0F0FFFF01 off",
"lötkolben an" => "set IT_F0F0FFF100 on",
"lötkolben aus" => "set IT_F0F0FFF100 off",
"lötkolben büro an" => "set IT_F0F0FFF100 on",
"lötkolben büro aus" => "set IT_F0F0FFF100 off",
"lötkolben arbeitsplatz an" => "set IT_F0F0FFF100 on",
"lötkolben arbeitsplatz aus" => "set IT_F0F0FFF100 off",
"licht büro an" => "set bu_aktor_licht on",
"licht büro aus" => "set bu_aktor_licht off",
"radio küche an" => "set ku_intentradio_dummy setPLAY",
"radio küche aus" => "set ku_intentradio_dummy setSTOP",
"licht spiegel an" => "set bad_aktor_spiegelschrank on",
"licht spiegel aus" => "set bad_aktor_spiegelschrank off",
"licht spiegelschrank an" => "set bad_aktor_spiegelschrank on",
"licht spiegelschrank aus" => "set bad_aktor_spiegelschrank off",
"Licht Wohnzimmer aus" => "set Licht_Wohnzimmer off",
"Licht LED an" => "set Licht_WoZi_LED on",
"Licht LED aus" => "set Licht_WoZi_LED off",
"Licht Esszimmer an" => "set Licht_Esszimmer on",
"Licht Esszimmer aus" => "set Licht_Esszimmer off",
"Rollo Küche ab" => "set Rollo_Kueche_Strasse pct 100",
"Rollo Küche auf" => "set Rollo_Kueche_Strasse pct 0",
"Rollo Küche stop" => "set Rollo_Kueche_Strasse stop",
"Rollo Theke ab" => "set Rollo_Kueche_Seite pct 100",
"Rollo Theke auf" => "set Rollo_Kueche_Seite pct 0",
"Rollo Theke stop" => "set Rollo_Kueche_Seite stop",
"Radio Küche an" => "set StckDo_1B on",
"Radio Küche aus" => "set StckDo_1B off",
"Radio Bad an" => "set StckDo_1A on",
"Radio Bad aus" => "set StckDo_1A off"
);

# hier dann das Kommando ausfuehren.
fhem("$Sprachkommando{$newCommand}");
# Der Dummy ist nur zur Kontrolle, bzw. um zu sehen, was wie umgesetzt wird
fhem("set Dummy_test $Geraet,$Command,$newCommand,$Sprachkommando{$newCommand}");

}


Hi, vieleicht blöde frage, aber da gibts ein notify zu, und du hast noch irgendwas in automagic erstellt oder wie?
Fhem Cubitruck  Armbian Buster with Linux 5.3.9-sunxi
HM-CC_RT-DN, HM-Sec-RHS,HM-Sec-SD, HM-Sec-SCo,IT1500,1xIT GRR-3500 Fritz!Dect200,Powerline546E,Enigma2 Modul mit 3 Vu+,Wol Modul für WinServer2016 und WinServer 2019,FB6590
Allnetl Wandtablett mit FTUI

roman1528

Zitat von: Tommy82 am 09 März 2016, 19:16:02
Hi, vieleicht blöde frage, aber da gibts ein notify zu, und du hast noch irgendwas in automagic erstellt oder wie?

oben geändert^^
i3-10305T 4x3GHz;8GB RAM;250GB & 1TB NVMe:
FHEM 6.2;FTUI;8" Tablet's+Fully;NsPanelPro;HUE;ESPRGBWW;HM(CCU3);Duofern; ASC;MQTT(Tasmota);netatmo;SONOS;eBus;DbLog;XiaomiDevice;NUT;ModbusAttr

RPi3+: FHEM 6.2;I²C;GPIO;RFID;G-Tag;XiaomiBTLESens
RPi3: FHEM 6.2;DIY Relais-Board;I²C;GPIO;RFID;Photovoltaik

Invers

Ich hab das mal ausprobiert.
Für mich läuft es nicht optimal.
Ich habe mehrere Lampen im Wohnzimmer.
Wohnzimmer Decke links, Wohnzimmer Decke rechts oder TV-Licht hinten, TV-Licht vorne.
Solche Fälle lassen sich kaum behandeln. Man müsste da noch einmal aus bis zu 3 Wörtern das Device bilden. Das ist hier ja nicht vorgesehen.
Ich werde vorerst wohl bei meinem DOIF bleiben. Vielleicht Bekomme ich ja noch eine Idee.
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

CoolTux

#1161
So ihr Lieben,

Dank Roman habe ich mich ja nun mit günstigen Multiroom beschäftigt. Ich bin nun so weit das ich die Devices auswählen kann welche den selben Sender abspielen sollen und dann schicke ich an alle ein Play Kommando mit Sender.

Hier mal kurz ein paar Zeilen Code


Jedes Device welches Radio abspielen soll bekommt ein zusätzliches Reading verpasst "intentRadioAktiv" mit 1 für soll mit in die Auswahl oder 0 soll nichts abspielen

Dummy erstellen wo man die Sender URL als Reading eintragen kann und die Befehle (play, stop u.s.w.)


Internals:
   CFGFN
   NAME       dummyRadiosender
   NR         3923
   STATE      ???
   TYPE       dummy
   Readings:
     2016-03-10 11:32:56   sender1         url http://am.audio1.fr.ipercast.net/deluxemusic.tv/radio_web/mp3 name DeluxRadio
Attributes:
   alias      Radio Sender Multiroomsystem
   readingList sender1 sender2 sender3 sender4 sender5
   room       Multimedia
   setList    play:sender1,sender2,sender3,sender4,sender5 stop:noArg restart:noArg sender1 sender2 sender3 sender4 sender5
   webCmd     sender1:sender2:sender3:sender4:sender5



Und dann eine kleine 99_myUtils


# Save this file as 99_myUtils.pm, and create your own functions in the new
# file. They are then available in every Perl expression.

package main;

use strict;
use warnings;
use POSIX;



sub myUtils_MultiroomRadio_Initialize($$) {

  my ($hash) = @_;

}


###########################################
### Multiroomradio System

sub multiroomradio($;$) {

        my ($cmd, $sender) = @_;
        $sender = "none" if( not defined( $sender ) );

        my @monitored=devspec2array("TYPE=AMAD:FILTER=intentRadioAktiv=1");
        my $cnt_devs=@monitored;
        my $i = 0;
        my $device = "";

        foreach(@monitored) {
                $device .= $_;
                if ($i <= $cnt_devs - 2) {
                  $device .= "|";
                }

                $i++;
        }

        fhem "set $device sendIntent org.smblott.intentradio.PLAY ".ReadingsVal( "dummyRadiosender", $sender, 0 ) if( $cmd eq "play" );
        fhem "set $device sendIntent org.smblott.intentradio.STOP" if( $cmd eq "stop" );
        fhem "set $device sendIntent org.smblott.intentradio.RESTART" if( $cmd eq "restart" );
}



1;


Starten tut man das ganze dann so. Zuerst das Reading intentRadioAktiv aller Devices welche den selben Sender Abspielen sollen mit 1 belegen, dann


{ multiroomradio("play","sender1") }


und schon startet auf allen ausgewählten Geräten der sender1

Ich baue das ganze die Tage noch als FTUI.


Grüße
Leon
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

juergen012

Hallo, habe AMAD Ver 1.2.0 installiert. Den Flowswet ebenfalls aktualisiert. Nun bekomme ich folgende Fehlermeldung:
Aktiviere Automagic unter Einstellungen -> Benachrichtigungen -> Benachrichtigungszugriff
Trotz intensiver Suche kann ich die Einstellungen am Tablet nicht finden..
Gruß
Jürgen K.
Fhem unter Proxmox

CoolTux

Hallo Jürgen,

Welche Android Version hast Du? Und was für ein Tablet ist das genau?
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

juergen012

androidVersion 5.1 Lollipop MR1, Fire, 17,7 cm (7 Zoll) Display, WLAN, 8 GB - mit Spezialangeboten
Gruß
Jürgen K.
Fhem unter Proxmox

CoolTux

Und Du findest unter Einstellungen kein Punkt Benachrichtigungen?
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

CoolTux

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

juergen012

Genau Ton&Benachrichtigungen. Dort habe ich "Wichtigkeit" eingeschaltet..
Gruß
Jürgen
Fhem unter Proxmox

CoolTux

Unter Einstellungen Ton&Benachrichtigungen sollte es den Punkt Benachrichtigungszugriff geben. Dort dann für Automagic an schalten.
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

Invers

Nochmal:
Einstellungen - Töne und Benachrichtigungen - Zugriff auf Benachrichtigungen.

Dort den Haken bei Atutomagic setzen.

So ist es beim Galaxy S5. Android 5.0 Lollipop.

EDIT
Sorry, ich war zu langsam.
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