[AMADNG] AMAD 4.2 The Next Generation of AMAD with Tasker Support

Begonnen von CoolTux, 25 Mai 2017, 18:24:49

Vorheriges Thema - Nächstes Thema

CoolTux

Habe gerade mal so darüber nachgedacht. Vielleicht sollte ich dieses ttsMsg Volume zwischenspeichern doch in AMAD einbauen. Dann kann man das auf einem Schlag machen.
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

the ratman

nur so ne dumme idee ...

man weiß ja: für perl und ähnlich gottloses zeug bin ich zu blöd, drum regel ich mal mein generelles ls-problem mit dummys.
schaut dann so aus,: ls des tabs in dummy schreiben, ls auf max, tts machen, dummy auslesen und ls wieder herstellen in der hoffnung, dass der androide schon fertig gequasselt hat.

wär das eig. viel aufwand, die ls gleich im modul mit der tts mitzuregeln? würde meine dummyzahl ein bissi reduzieren *g*.

ganz irre könnte man werden, indem man in amad ne art peering-funktion einbaut ... wenn gerät x aktiv, dann ls x, wenn gerät y aktiv, dann ls y, wenn zeit z, dann ls z. am geilsten wärs dann, das auf der bridge direkt für standard-zeugs und auf den einzelnen devices für spezielles machen zu können.

nachtrag:
he alter, das war meine idee, nicht vordrängeln *lach*
→do↑p!dnʇs↓shit←

CoolTux

Zitat von: CoolTux am 06 September 2017, 10:58:42
Habe gerade mal so darüber nachgedacht. Vielleicht sollte ich dieses ttsMsg Volume zwischenspeichern doch in AMAD einbauen. Dann kann man das auf einem Schlag machen.

Ich habe eine erste Implementierung begonnen. Werde das mal heute Abend in Ruhe testen.


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

Depechem

#498
Zitat von: CoolTux am 06 September 2017, 10:57:30
Ich war faul. Du bekommst eine Durchsage an alle AMADDevice Geräte mit anheben eines default Volumes. Aber ohne zurücksetzen. Dazu müsste man in einer Schleife alle Gerätenamen erfassen und einzeln an die Routine oldVolume weitergeben. Vielleicht mache ich das später. Gerade keine Lust.
Wenn Du der Routine indoorMessage noch einen Devicenamen mit gibst dann speichert er das alte Volume zwischen und macht nach der durchsage ein Volume restore.



sub indoorMessage($;$$) {

    my ($message,$device,$vol) = @_;
       
    $vol = 6 if( !defined($vol) );
       
    if( !defined($device) ) {

        fhem "set TYPE=AMADDevice volume $vol; sleep 1; set TYPE=AMADDevice ttsMsg $message";
    }

    if( defined($device) ) {

        oldVolume("$device","safe");
        fhem "set $device volume $vol; sleep 1; set $device ttsMsg $message";
        oldVolume("$device","restore");
    }
}


sub oldVolume($$) {

my ( $name, $cmd ) = @_;
my $hash = $defs{$name};

$hash->{SAFEVOLUME} = ReadingsVal( "$name", "volume", 5 ) if( $cmd eq "safe" );

fhem "sleep 5; set $name volume ".$hash->{SAFEVOLUME} if( $cmd eq "restore" );
}


Vielen Dank schonmal.
Wenn ich nun dies in meine "99_myUtils.pm" übernehme und
indoorMessage('Dies ist mein Test für die Durchsage')
in die FHEM Zeile eingebe kommt folgender Fehler  ::)
Unknown command indoorMessage('Dies, try help.

Pi Neustart bzw. reload 99_myUtils.pm bringt auch keine Änderung

Mach ich da Grundlegend etwas verkehrt?

so sieht meine 99_myUtils.pm aus
##############################################
# $Id: myUtilsTemplate.pm 7570 2015-01-14 18:31:44Z rudolfkoenig $
#
# 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_Initialize($$)
{
  my ($hash) = @_;
}



# Enter you functions below _this_ line.


# AMAD Lautstärke - ANFANG

sub indoorMessage($;$$) {

    my ($message,$device,$vol) = @_;
       
    $vol = 6 if( !defined($vol) );
       
    if( !defined($device) ) {

        fhem "set TYPE=AMADDevice volume $vol; sleep 1; set TYPE=AMADDevice ttsMsg $message";
    }

    if( defined($device) ) {

        oldVolume("$device","safe");
        fhem "set $device volume $vol; sleep 1; set $device ttsMsg $message";
        oldVolume("$device","restore");
    }
}


sub oldVolume($$) {

my ( $name, $cmd ) = @_;
my $hash = $defs{$name};

$hash->{SAFEVOLUME} = ReadingsVal( "$name", "volume", 5 ) if( $cmd eq "safe" );

fhem "sleep 5; set $name volume ".$hash->{SAFEVOLUME} if( $cmd eq "restore" );
}

# AMAD Lautstärke - ENDE


1;
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

CoolTux

Jepp machst Du.

Das ist kein FHEM Befehl sondern eine Perlroutine. Also musst Du auf Perlebene gehen


{ indoorMessage('Dies ist mein Test für die Durchsage') }
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

Depechem

Zitat von: CoolTux am 06 September 2017, 13:20:13
Jepp machst Du.

Das ist kein FHEM Befehl sondern eine Perlroutine. Also musst Du auf Perlebene gehen


{ indoorMessage('Dies ist mein Test für die Durchsage') }


Schön blöd, Danke  :o
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

Depechem

Super mit { indoorMessage('Test','WandTabletWohnzimmerThomas',12) }
läuft es schon 1a.

Nun soll das ganze aber auch per Tablet UI funktionieren
Ich habe ein Texteingabefeld Widget "input" sowie ein Button Widget "link"
Wenn ich ins Texteingabefeld einen beliebigen Text eingeben habe kam dann die ttsMsg. Das klappt ja nun mit der Perl-Routine so nicht mehr.
Kann man das auch irgendwie lösen?

<div data-type="input"
id="sendTask"
data-value=""
class="green large notransmit"></div>
<div data-type="link"
class="green round bold big-6"
data-icon="oa-audio_loudness"
data-device="WandTabletWohnzimmerThomas"
data-set="ttsMsg"
data-value="#sendTask">Tablet Wohnzimmer</div>
RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

CoolTux

Ich würde das mit einem Dummy und einem Notify machen. Eine andere Lösung wüsste ich jetzt so nicht.
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

Depechem

Zitat von: CoolTux am 06 September 2017, 14:01:49
Ich würde das mit einem Dummy und einem Notify machen. Eine andere Lösung wüsste ich jetzt so nicht.

wen es interessiert, hier meine Umsetzung

define WandTabletWohnzimmerThomas_tts_dummy dummy
attr WandTabletWohnzimmerThomas_tts_dummy event-on-change-reading .*
attr WandTabletWohnzimmerThomas_tts_dummy group tts
attr WandTabletWohnzimmerThomas_tts_dummy room AMAD

define WandTabletWohnzimmerThomas_tts_notify notify WandTabletWohnzimmerThomas_tts_dummy { indoorMessage('[WandTabletWohnzimmerThomas_tts_dummy:state]','WandTabletWohnzimmerThomas',15) }
attr WandTabletWohnzimmerThomas_tts_notify group tts
attr WandTabletWohnzimmerThomas_tts_notify room AMAD


        <section>
<header class="center-align bold big-3" >TABLET - NACHRICHTEN</header>
<div class="large hbox">
<div data-type="input"
id="sendTask"
data-value=""
class="green large notransmit"></div>
<div data-type="link"
class="green round bold big-6"
data-icon="oa-audio_loudness"
data-device="WandTabletWohnzimmerThomas_tts_dummy"
data-set=""
data-value="#sendTask">Tablet Wohnz. Thomas</div>
</div>
         </section>


RaspberryPi2 / FHEM / 3 Wand-Tablets mit Tablet UI / HM USB / verschiedene HM-Aktoren / JeeLink USB für WS1600 und mehrere LaCrosse Sensoren / HEOS ...

CoolTux

Ich habe derweil den Wunsch mal umgesetzt und getestet.
Mit einem Attribut gibt man die Lautstärke vor und wenn man nun eine ttsMsg sendet wird das Volume auf den Wert des Attributes umgesetzt.
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

the ratman

und dann wieder zurück auf ausgangs-ls, nehm ich an?
→do↑p!dnʇs↓shit←

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

scooty

Hallo Leon,

ich habe ein Verständnisproblem bei folgendem:

Möchte aus einem eigenen Flow, der den RSSI-Wert eines Bluetooth-Tags ermittelt, genau diesen ermittelten RSSI Wert als Wert eines Reading eines FHEM-Devices setzen.

Was ich bisher habe:

Trigger für den Flow:
Broadcast mit Parameterübergabe FHEM-Devicename "GTAG_Device" und "GTAG_Device_Address"
Ermittlung RSSI Wert:
Durch eine Condition, die die Bluetooth-Verfügbarkeit der "GTAG_Device_Address" überprüft wird die AutoMagic Variable "rssi" gefüllt

Als nächste Action habe ich in AutoMagic ein Script definiert, wobei "amRssi" der Readingsname des FHEM-Devices sein soll:
fhemdata = "{GTAG_Device} amRssi {rssi}";
fhemcmd = "setreading";

und danach rufe ich über eine weitere Action den Flow "Send Data to AMADCommBridge" auf.

Im FHEM-Device wird das Reading "amRssi" aber leider nicht gesetzt.

Habe mir das anhand der Beispiele im Wiki zusammengereimt, die Beispiele dort beziehen sich allerdings nicht auf "setreading" (das soll keine Kritik sein, liegt eher an meinem Verständnis).

Kannst Du mir auf die Sprünge helfen, wie ich ein Reading aus einem Flow in AutoMagic in ein beliebiges FHEM-Device schreiben kann? 

Vielen Dank,
Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol

CoolTux

Oh ganz böse Falle. Nimm mal bitte das fhemdata schnell wieder raus. Nicht das da was kollabiert.

Schau mal hier, das sollte es erklären
https://forum.fhem.de/index.php/topic,72373.msg671703/topicseen.html#msg671703

Was Du machen möchtest nennt sich in AMAD userReading.


Wenn noch Fragen sind einfach fragen.

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

scooty

#509
Hallo Leon,

danke für die superschnelle Reaktion.  :)
Kollabiert ist bisher zum Glück nichts.  ;)
Den Betrag hatte ich auch schon gelesen, aber ich habe nicht verstanden, wo ich darin den Namen des FHEM-Devices angebe, in das ich das userReading schreiben möchte?
userReading = "\"amRssi\": \"{rssi}\"";
fhemcmd = "setreading";


Ich möchte das Reading in das in der AutoMagic Variablen "{GTAG_Device}" gespeicherte FHEM-Device (also nicht in ein AMAD Device) schreiben.

Andreas
Fhem auf Gigabyte Brix
CUL V3 HM / CUL V3 MAX / MaxCube aFW Homematic&MAX / ZWave.me ZME_UZB1 / SDuino 433 / Velux KLF200
Homematic / MAX / Logitech Hub / ZWave / Wifi LED / div. 433 Temperatursensoren / pywws WH1080 / IO Homecontrol