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

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

Vorheriges Thema - Nächstes Thema

michael27983

list Rollos_alle


Internals:
   BTN        11
   DEF        11114444 11
   IODev      COC
   NAME       Rollos_alle
   NR         87
   STATE      runter
   TYPE       FS20
   XMIT       00ff
   Code:
     1          00ff 11
   Readings:
     2017-01-26 15:15:56   state           on
Attributes:
   IODev      COC
   alexaName  rollos
   alexaRoom  wohnzimmer
   dummy      1
   eventMap   on:runter off:rauf off:hoch
   fm_type    onbutton,offbutton
   genericDeviceType blind
   group      Rollos
   homebridgeMapping RaufRunter=Rollos_alle:state,cmd=command
   room       Favourites,Wohnzimmer,alexa


Das ist ein Dummygerät was alle Rollos ansteuert.
Das klappt wenn ich den Knopf on bzw jetzt durch den eventmap den Knopf runter drücke problemlos.

MadMax-FHEM

Und das Mapping im Alexa-Gerät??

Geht es auch bei einem set command??

Was musst du da dann angeben?
(bzw. was steht im Log/Eventmonitor)

Das musst du ja dann in den diversen Settings abbilden...

Und dann vielleicht mal warten bis hier einer mit den von dir nach und nach gelieferten (oder eher aus der Nase gezogenen) Infos was anfangen kann und eine Idee/Lösung hat...
...bzw. mal versuchen alexaMapping und homebridgeMapping zu verstehen (mache ich auch gerade)...

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)

michael27983

Ja, set on geht... zumindest wenn es ein switch ist.

Also das ist mein ganzes Mapping im Alexa Gerät:

#Characteristic=<name>=<value>,...
On=verb=schalte,valueOn=an;ein,valueOff=aus,valueToggle=um

RaufRunter=state,verb=fahre,articles=die;das,values=rauf:off;runter:on

Brightness=verb=stelle,property=helligkeit,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

Hue=verb=stelle,valuePrefix=auf,values=rot:0;grün:128;blau:200
Hue=verb=färbe,values=rot:0;grün:120;blau:220

Saturation=verb=stelle,property=sättigung,valuePrefix=auf,values=AMAZON.NUMBER
Saturation=verb=sättige,values=AMAZON.NUMBER

TargetPosition=verb=mach,articles=den,values=auf:100;zu:0
TargetPosition=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

TargetTemperature=verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=grad

Volume:verb=stelle,valuePrefix=auf,values=AMAZON.NUMBER,valueSuffix=prozent

#Weckzeit=verb=stelle,valuePrefix=auf;für,values=AMAZON.TIME,valueSuffix=uhr


Ich weiß nicht ob ich da noch etwas angeben muss.

Esjay

Ich bin gerade voll raus..Du hast mehrere Rollos,welche du über fhem eingebunden hast?!Diese willst du jetzt per dummy on/off alle zusammen hoch und runter fahren? Welche Rollos können denn nur an/ aus für hoch/ runter?! Was hältst du von fhemIntents.attr fhemIntents um Rollosrunter=rollos runter erweitern.Alexa sage Haussteuerung Rollos runter sollte doch dann ein event erzeugen,worauf du reagieren kannst.

justme1968

nur kurz damit nicht noch mehr schief geht:

- eventMap ist nicht nötig und kontraproduktiv

- der unterschied zwischen alexaMapping und homebridgeMapping:
  - alexaMapping bildet das was gesagt werden soll auf einen abstrakten vorgang ab.
    z.b.: 'mache <xyz> auf' und 'mach <xyz> zu' wird auf den vorgang stelle die rolladen position ab gebildet:
    alexaMapping: TargetPosition=verb=mach,articles=den,values=auf:100;zu:0

  - homebridgeMapping bildet einen abstrakten vorgang auf die konkreten befehle die ein bestimmtes device
    braucht und die readings die den aktuellen zustand anzeigen ab.
    z.b.: homebridgeMapping: CurrentPosition=position TargetPosition=position,cmd=position,delay=true

- den zweistufigen ansatz gibt es damit man ganz allgemein sagen kann 'mach den rolladen im schlafzimmer zu'
  und 'mach den rolladen in wohnzimmer zu' auch wenn z.b. in beiden räumen unterschiedliche device typen mit
  unterschiedlichen kommandos installiert sind.

- wenn ein rolladen keine direkten positionsangaben kann ist es meist besser das ROLLO modul aus dem wiki
  zu verwenden statt im mapping zu versuchen das abzubilden. das geht zwar, mit dem ROLLO modul bekommt
  man die positionssteuerung aber umsonst auch noch dazu.

- die On characteristic umzubiegen um etwas anderes als an und aus zu steuern ist keine gute idee. für jede abstrakte aufgabe sollte eine eigene charakteristik verwendet werden

- den wortlaut der On charactersitic kann man aktuell (noch) nicht ändern

- genericDeviceType innvoll verwenden. ein rolladen ist kein schalter. selbst wenn er nur hoch und runter kann

- wenn man im alexaMapping eine characterisc verwendet (z.b. TargetPosition) um eine eigenschaft zu benennen
muss man im homebridgeMapping natürlich den gleichen namen verwenden und nicht plötzlich einen anderen (RaufRunter).

- für einfache einmal aufgabe ist es vielleicht einfacher fhemIntents zum verwenden und im  notify denn direkt ein set auf die rollläden zu machen statt noch x dummys anzulegen.

bitte schrittweise vorgehen. einen baustein nach dem anderen und es nicht komplizierter machen als nötig
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

michael27983

#1580
Also, meine Rollos werden von Relaisschalter gesteuert. FS20 --> an oder aus. Es gibt keine Position. Alle zusammen habe ich zu einem dummy zusammengefasst.
Ich habe bisher noch kein Rollomodul dafür gefunden.

Kann ich also einfach bei fhemintens:

#IntentName=<sample utterance>
gutenMorgen=guten morgen
guteNacht=gute nacht
rauf = aus
runter = an


verwenden?

Ich will ja einfach nur sagen: fahre rollos runter / fahre rollos rauf

justme1968

dann sollte das hier zusammen mit deinem alexaMapping reichen:
homebridgeMapping RaufRunter=state,cmd=+
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

michael27983

#1582
danke bis hier her schonmal, Leider irgendwie nicht...

text": "Ich kann das Gerät mit Namen rollos nicht runterschalten."


Internals:
   BTN        11
   DEF        11114444 11
   IODev      COC
   NAME       Rollos_alle
   NR         87
   STATE      rauf
   TYPE       FS20
   XMIT       00ff
   Code:
     1          00ff 11
   Readings:
     2017-01-26 15:38:23   state           off
Attributes:
   IODev      COC
   alexaName  rollos
   alexaRoom  wohnzimmer
   dummy      1
   eventMap   on:runter off:rauf
   fm_type    onbutton,offbutton
   genericDeviceType switch
   group      Rollos
   homebridgeMapping RaufRunter=state,cmd=+
   room       Favourites,Wohnzimmer,alexa



Esjay

Zitat von: terrarianer am 26 Januar 2017, 15:51:07
Also, meine Rollos werden von Relaisschalter gesteuert. FS20 --> an oder aus. Es gibt keine Position. Alle zusammen habe ich zu einem dummy zusammengefasst.
Ich habe bisher noch kein Rollomodul dafür gefunden.

Kann ich also einfach bei fhemintens:

#IntentName=<sample utterance>
gutenMorgen=guten morgen
guteNacht=gute nacht
rauf = aus
runter = an


verwenden?

Ich will ja einfach nur sagen: fahre rollos runter / fahre rollos rauf
Du musst dich schon an das halten,was vorgegeben ist
RollosRauf= rollos rauf
RollosRunter= rollos runter
Das erzeugt ein event,auf das du mit einem notify reagieren kannst.
Schau mal in deinen eventmonitor und sag nebenbei Alexa sage Haussteuerung gute nacht.
Vll hilft das beim Verständnis


Esjay

Zitat von: terrarianer am 26 Januar 2017, 16:11:10
Ach verdammt!!! So ist das. Danke, das hilft :)
Kein Problem..Und wie von Andre schon gesagt,schau dir das Rollo Modul an..Ich glaube dort kannst du dann deinen Rolläden über die Zeit einer Position verpassen.Damit lassen sie sich dann auch durch den Smarthome Skill prozentual steuern!

michael27983

Zitat von: Esjay am 26 Januar 2017, 16:14:10
Kein Problem..Und wie von Andre schon gesagt,schau dir das Rollo Modul an..Ich glaube dort kannst du dann deinen Rolläden über die Zeit einer Position verpassen.Damit lassen sie sich dann auch durch den Smarthome Skill prozentual steuern!

Das ist technisch nicht möglich, da die Rollos entweder an oder aus seien können. Aus = oben, An = unten. Das ist wegen dem Relaischalter (https://www.elv.de/fs20-1-kanal-universal-empfaenger-ue1-2.html) so.

michael27983

Irgendwie bin ich zu blöd dazu...

fhemIntents


#IntentName=<sample utterance>
gutenMorgen=guten morgen
guteNacht=gute nacht
RollosRauf=rollos rauf
RollosRunter=rollos runter


Die Frage: "Alexa, frage haussteuerung, rollos rauf" wird mit "Ich kann das Gerät mit Namen rollos nicht runterschalten." genau wie vorher beantwortet.
Die Frage: "Alexa, frage haussteuerung guten morgen" wird mit "OK" beantwortet und im Eventlog "alexa MyAlexa fhemIntent: gutenMorgen"

Abgesehen davon das es noch nicht geht, ist mir das mit dem notify noch nicht so klar. Wenn das gesagt wird und im Log dann steht fhemIntent: rollos rauf, dann den schalter auf on setzen.

Esjay

Zitat von: terrarianer am 26 Januar 2017, 16:41:45
Irgendwie bin ich zu blöd dazu...

fhemIntents


#IntentName=<sample utterance>
gutenMorgen=guten morgen
guteNacht=gute nacht
RollosRauf=rollos rauf
RollosRunter=rollos runter


Die Frage: "Alexa, frage haussteuerung, rollos rauf" wird mit "Ich kann das Gerät mit Namen rollos nicht runterschalten." genau wie vorher beantwortet.
Die Frage: "Alexa, frage haussteuerung guten morgen" wird mit "OK" beantwortet und im Eventlog "alexa MyAlexa fhemIntent: gutenMorgen"

Abgesehen davon das es noch nicht geht, ist mir das mit dem notify noch nicht so klar. Wenn das gesagt wird und im Log dann steht fhemIntent: rollos rauf, dann den schalter auf on setzen.
Nachdem du das eingetragen hast musst du deinen Custom Skill auch aktualisieren!get im Alexa Device ect..

baerbel

Hi,

will dich jetzt nicht durcheinanderbringen: statt dem Notify mache ich das mit einem DOIF: Für einen Garagentaster sieht das so aus - musst du halt auf deine set Befehle anpassen:

([MyAlexa:fhemIntent] eq "oeffnedieGarage")(set Taster.Garage.Tor on-for-timer 1) DOELSEIF ([MyAlexa:fhemIntent] eq "schliessedieGarage")(set Taster.Garage.Tor on-for-timer 1)

die fhemintens müssen natürlich noch ihren weg ins developerportal finden ..... über ein get <deinAlexa> Interactionmodel ...

Grüße - Bernd