alexa-fhem: amazon alexa smart home skill für fhem

Begonnen von justme1968, 05 November 2016, 23:21:32

Vorheriges Thema - Nächstes Thema

jojo61

#2235
Ich würde das mit mpd machen. Das kann fhem jetzt schon.
Damit kann man dann playlisten oder einzelne Songs abspielen ohne eine komplete Kodi installation.
Damit sollte dann sowas wie
Alexa sage fhem spiele playlist SOFTROCK
oder
Alexa sage fhem spiele playlist weiter
einfach zu realisieren sein.

MadMax-FHEM

Zitat von: Tommy82 am 24 Februar 2017, 09:54:48
Wie sieht die bluetooth Variante aus? Ohne Fhem gibt es ja schon eine Möglichkeit, die werd ich mir am we mal ansehen https://www.amzecho.de/wiki/anleitungen:smart_home:alexa_kodi_verknuepfung


Gesendet von iPhone mit Tapatalk

Interessant aber (beim schnell drüber fliegen) bedeutet noch einen Port offen und weitergeleitet diesmal zu KODI...
...ob ich das will...

Wäre ja so als ob ich dann meine Musik-Streams veröffentliche und gleich einen bestehenden "Radio-Skill" nutze ;)


Die BT-Variante meint wohl das Ausgabegerät per BT mit dem Echo/Echo Dot zu verbinden und den dann als BT-Lautsprecher zu verwenden...
...habe ich nur wo mal gelesen aber noch nicht probiert...

Gruß, Joachim
FHEM PI3B+ Bullseye: HM-CFG-USB, 40x HM, ZWave-USB, 13x ZWave, EnOcean-PI, 15x EnOcean, HUE/deCONZ, CO2, ESP-Multisensor, Shelly, alexa-fhem, ...
FHEM PI2 Buster: HM-CFG-USB, 25x HM, ZWave-USB, 4x ZWave, EnOcean-PI, 3x EnOcean, Shelly, ha-bridge, ...
FHEM PI3 Buster (Test)

Tommy82

Da hänge ich beim Überfliegen auch, will nicht noch einen Port öffnen daher die Idee über XBMc Modul und Kodi und alexa-Fhem

Also BT wird dann keine Alternative da der Server zuweist vom Echo entfernt stevt


Gesendet von iPhone mit Tapatalk
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

cyvr1

#2238
Hallo,

noch mal eine kurze Frage und man möge mir verzeihen, wenn das schon mal irgendwo stand bzw. besprochen wurde. Die diversen Threads, in denen dazu etwas stehen könnte, sind teilweise über 100 Seiten lang und die Suche hat dazu leider auch nichts geliefert (oder ich habe falsch gesucht  :D).

Besteht die Möglichkeit (über das homebridgeMapping?) immer einen bestimmten Befehl, z.B. On, für ein Device auszuführen, ohne dass ich ihn nennen muss?

Hintergrund: Ich möchte eine Ladestation mit dem Befehl "..., lade Staubsauger." grundsätzlich nur einschalten. Das Ausschalten erfolgt automatisch wenn der Akku vonn ist über die Leistungsmessung der HM-Steckdose.

Ein entsprechendes Mapping im Alexa-Device habe ich mir erst mal so erstellt:

On=verb=lade,valueOn=an;ein

----------
Stephan Krätzschmar

justme1968

das einfachste ist bei den fhemIntents set <staubsauger> on:lade den staubsauger hinzuzufügen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

cyvr1

Hallo Andre,

danke, das ist natürlich noch einfacher. Ich probiere es aus.

Noch eine andere Frage zu den Alexa Namen. Du hattest geschrieben, man könne auch mehrere Namen mit Komma getrennt eingeben. Das habe ich ausprobiert, Alexa erkennt aber immer nur den ersten Namen. Bei den anderen hinter dem ersten Komma kommt als Meldung nur "Ich konnte kein Gerät mit den Namen <...> finden.

Bei den CustomSlotTypes werden die zusätzlichen Namen richtig aufgeführt, nur bei der Übergabe an FHEM bzw. der Suche in FHEM nach dem Device beim Aufruf scheint was schief zu laufen,

----------
Stephan Krätzschmar

justme1968

stimmt. da ist in der aktuellen version ein tipfehler drin. habs behoben.

hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

dk3572

#2242
Hallo,
ich habe hier ziemlich alles durchsucht und als Beispiel das gefunden:
https://forum.fhem.de/index.php/topic,60244.msg578205.html#msg578205
Bekomme es aber nicht hin.
Wie kann ich den Status des Fensters abfragen?
defmod Fenster_Bad CUL_HM 36DFBA
attr Fenster_Bad IODev HMLAN1
attr Fenster_Bad actCycle 028:00
attr Fenster_Bad actStatus unknown
attr Fenster_Bad alexaName Badfenster
attr Fenster_Bad alexaRoom Bad
attr Fenster_Bad autoReadReg 4_reqStatus
attr Fenster_Bad devStateIcon open:fts_window_1w_open@red closed:fts_window_1w
attr Fenster_Bad expert 2_full
attr Fenster_Bad firmware 2.4
attr Fenster_Bad genericDeviceType contact
attr Fenster_Bad group Fenster-/Türkontakte
attr Fenster_Bad homebridgeMapping clear ContactSensorState=state,values=geschlossen:closed;offen:open
attr Fenster_Bad model HM-SEC-SC-2
attr Fenster_Bad peerIDs 00000000,
attr Fenster_Bad room Bad,CUL_HM,alexa
attr Fenster_Bad serialNr MEQ0268913
attr Fenster_Bad subType threeStateSensor


Als Antwort bekomme ich nur "das Badfenster hat den status closed"

Muss bei alexaTypes auch noch der contact eingetragen werden?

Danke im Voraus.

cyvr1

#2243
Hallo dk3572,

momentan kann der Status von Haus aus wohl nur auf Englisch ausgegeben werden.

Ich habe mir in der server.js unter alexa-fhem/lib folgendes ergänzt bzw. geändert:


Direkt am Anfang der server.js habe ich mir eine Funktion zum mehrfachen Ersetzen eingebaut Die Ausgabe für den Status eines Fensterkontaktes lautet ohne diese Funktion "Der Status für das Küchenfenster ist closed.". Ich wollte aber gerne einen detuschen Status haben und die Fensterkontakte die ich verwende, habe insgesamt drei Stati: offen, geschlossen und gekippt.

Die Funktion habe ich über "Server.prototype._loadConfig = function()" eingefügt und sie sieht so aus:


String.prototype.multi_str_replace=function(s,r)
{
  var t=this;
  var s=(typeof s=='string')?[s]:s;
  var r=(typeof r=='string')?[r]:r;
  for(var i=0;i<s.length;++i)
  {
    t=t.replace(new RegExp(s[i]),
                (typeof r[i]!='undefined')
                  ?r[i]
                  :''
               );
  }
  return t;
}


Damit wird dann bei der Ausgabe closed, open und tilted übersetzt.

Dann suche am besten nach "device.mappings.ContactSensorState", welches im StatusIntent verwendet wird und ändere es wie folgt:


if( device.mappings.ContactSensorState ) {
    if( state ) { state.replace( ' und ', ', ' ); state += ' und ' };
    state += ' ist '+ device.fhem.cached(device.mappings.ContactSensorState.informId).multi_str_replace(['closed','open','tilted'],['geschlossen','offen','gekippt']);
  }


Das homebridgeMapping für die Fenster muss dann nur noch so aussehen:


clear ContactSensorState=state,values=closed:CLOSED;open:OPEN


Bei mir wird dann schön "Küchenfenster ist geschlossen, offen, gekippt" ausgegeben.

----------
Stephan Krätzschmar

dk3572

Danke für die schnelle Antwort.
Deinen Beitrag hatte ich auch bereits gelesen.
Sollte es nicht auch ohne das "rumgebastel" in der .lib funktionieren?
Nicht bös gemeint, nur eine Frage  ;)

cyvr1

Das wird wohl mir einer der nächsten Versionen von alexa-fhem kommen, wenn die Ausgaben leichter konfigurierbar sind. So lange wollte ich aber nicht warten.  ::)
Und etwas rumexperimentieren macht ja auch Spass, vor allem wenn es dann funktioniert.  ;D

So kompliziert ist ja auch nicht, zwei Sachen einfügen bzw. etwas anpassen und den alexa-Dienst neu starten. Das wars. Ist keine 5 Minuten Aufwand.

----------
Stephan Krätzschmar

cyvr1

Zitat von: justme1968 am 24 Februar 2017, 13:56:43
stimmt. da ist in der aktuellen version ein tipfehler drin. habs behoben.

Wo? Was kann/muss ich ändern?

----------
Stephan Krätzschmar

Thyraz

Wird da nicht einfach ausgegeben was im Status oder dem Reading steht?
Wenn ja würde ich mal versuchen das mit eventMap anzupassen.
Fhem und MariaDB auf NUC6i5SYH in Proxmox Container (Ubuntu)
Zwave, Conbee II, Hue, Harmony, Solo4k, LaMetric, Echo, Sonos, Roborock S5, Nuki, Prusa Mini, Doorbird, ...

Radikant

Zitat von: justme1968 am 24 Februar 2017, 09:41:04
@Radikant: mit , getrennt. wie bei alexaRoom auch.

@Tommy82: laut api dokumentation muss der stream aus dem internet zugreifbar sein. ich bin aber immer noch nicht dazu gekommen zu probieren ob das auch wirklich stimmt.


Habe Folgendes als Attribut :
attr Computer alexaName p. c., pc,Computer,Workstation,Rechner

Auf der Alexa Siete steht aber nur :
p. c.
n: Computer, r: alexa


Wenn ich sage :"Schalte PC ein"

Sagt mir Alexa, dass ich kein Gerät mit so einem Namen haben würde.

Was mache ich falsch?

LG
Rudolf :D
Aller Anfang ist schwer...

dk3572

ZitatDann suche am besten nach "device.mappings.ContactSensorState", welches im StatusIntent verwendet wird und ändere es wie folgt:
das existiert bei mir gar nicht  ???