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

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

Vorheriges Thema - Nächstes Thema

erotikbaer

Hi,
Habe nen IT Funkwandschalter, der direkt mit einem Funkschalter/Aktie gekoppelt ist. Der Wandschalter ist in Fhem per autocreate angelegt worden und ich kann damit auch den Autor schalten. Mit der HomeKit App klappt auch alles, nur mit Alexa-Fhem nicht. Jedesmal wenn ich sage ,,schalte Kuechenlicht an" antwortet sie ,,Kuchenlicht unterstützt das nicht"
GenericDeviceType ist Switch

Hat jemand eine Idee wie ich das zum laufen bekomme?

Gruß und frohe Weihnachten,
Christian

juemuc

Zitat von: erotikbaer am 25 Dezember 2017, 21:06:42
Hi,
Habe nen IT Funkwandschalter, der direkt mit einem Funkschalter/Aktie gekoppelt ist. Der Wandschalter ist in Fhem per autocreate angelegt worden und ich kann damit auch den Autor schalten. Mit der HomeKit App klappt auch alles, nur mit Alexa-Fhem nicht. Jedesmal wenn ich sage ,,schalte Kuechenlicht an" antwortet sie ,,Kuchenlicht unterstützt das nicht"
GenericDeviceType ist Switch

Hat jemand eine Idee wie ich das zum laufen bekomme?

Gruß und frohe Weihnachten,
Christian

Hallo,
ich musste bei meinen Schaltern die Variable GenericDeviceType nicht definieren. Werden die Schalter über state on bzw off geschaltet?

Viele Grüße
Jürgen
3x Sonos Play 1, 1x Sonos Arc + Sub, 1 Sonos-One, 1x Sonos Playbar
FB6690 + FB7490 mit 4x Dect 200 und 3 Dect-ULE-Thermostate,  raspberry3B+, HM Funkmodul HM-MOD-RPI-PCB, HM Klingelsensor HM-Sen-DB-PCB, HM (IP) Fensterkontakte und  Amazon Echo Dot,  piVCCU, pi OS (bookworm).

erotikbaer

#3512
Hi,
Ja mit on und off werden sie geschaltet.
Hier mal ein List:
Internals:
   00         0
   DEF        01000100110100110000000000 0 0001
   IODev      nanoCUL433
   NAME       Kuechenlicht
   NR         134
   STATE      off
   TYPE       IT
   XMIT       0100010011010011000000000000001
   XMITdimdown 00
   XMITdimup  00
   XMITon     1
   CODE:
     1          0100010011010011000000000000001
   READINGS:
     2017-12-24 23:27:09   group           0
     2017-12-24 23:27:09   protocol        V3
     2017-12-25 20:54:57   state           off
     2017-12-24 23:27:09   unit            0001
Attributes:
   IODev      nanoCUL433
   alexaName  Kuechenlicht
   fhem_widget_command {"allowed_values":["off","on"],"filter":"public","order":2}
   genericDeviceType light
   room       Kueche,homekit


Hatte genericDeviceType auf Switch und auch testweise light, und jetzt hab ich's aktuell gelöscht.
Das eigenartige ist, aus der Alexa App kann ich's schalten, nur nicht mit Alexa direkt.

Gruß christian

justme1968

zeig mal ein jsonlist2 vom
device und die ausgabe vom alexa-fhem start.

passt dein filter aus der alexa-fhem config?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

erotikbaer

#3514
also der filter passt, da der schalter ja auch gefunden wird und aus der alexa app geschaltet werden kann.
hier der auszug vom alexa-fhem start:
[12/25/2017, 9:29:51 PM] [FHEM] Kuechenlicht is switch
[12/25/2017, 9:29:51 PM] [FHEM] Kuechenlicht has
[12/25/2017, 9:29:51 PM] [FHEM]   On [state;on,off]
[12/25/2017, 9:29:51 PM] [FHEM] { reading: 'state',
  valueOff: '/off|A0|000000/',
  cmdOn: 'on',
  cmdOff: 'off',
  device: 'Kuechenlicht',
  informId: 'Kuechenlicht-state',
  characteristic_type: 'On',
  log:
   { [Function: bound ]
     debug: [Function],
     info: [Function],
     warn: [Function],
     error: [Function],
     log: [Function],
     prefix: 'FHEM' } }
  2017-12-25 21:29:51 caching: Kuechenlicht-state: off

und das jsonlist2
{
  "Arg":"Kuechenlicht",
  "Results": [
  {
    "Name":"Kuechenlicht",
    "PossibleSets":"off:noArg on:noArg  blink on-till off-for-timer toggle on-till-overnight on-for-timer intervals off-till off-till-overnight",
    "PossibleAttrs":"alias comment:textField-long eventMap group room suppressReading userReadings:textField-long verbose:0,1,2,3,4,5 IODev ITfrequency ITrepetition ITclock switch_rfmode:1,0 do_not_notify:1,0 ignore:0,1 protocol:V1,V3,HE_EU,SBC_FreeTec,HE800 SIGNALduinoProtocolId userV1setCodes unit group dummy:1,0 event-on-change-reading event-on-update-reading event-aggregator event-min-interval stateFormat:textField-long timestamp-on-change-reading model:ev1527,itdimmer,itremote,itswitch alexaName alexaRoom cmdIcon devStateIcon devStateStyle fhem_widget_command genericDeviceType:ignore,switch,outlet,light,blind,thermometer,thermostat,garage,window,lock homebridgeMapping:textField-long icon sortby webCmd webCmdLabel:textField-long widgetOverride userattr",
    "Internals": {
      "00": "0",
      "DEF": "01000100110100110000000000 0 0001",
      "NAME": "Kuechenlicht",
      "NR": "134",
      "STATE": "off",
      "TYPE": "IT",
      "XMIT": "0100010011010011000000000000001",
      "XMITdimdown": "00",
      "XMITdimup": "00",
      "XMITon": "1"
    },
    "Readings": {
      "group": { "Value":"0", "Time":"2017-12-24 23:27:09" },
      "protocol": { "Value":"V3", "Time":"2017-12-24 23:27:09" },
      "state": { "Value":"off", "Time":"2017-12-25 21:25:30" },
      "unit": { "Value":"0001", "Time":"2017-12-24 23:27:09" }
    },
    "Attributes": {
      "IODev": "nanoCUL433",
      "alexaName": "Kuechenlicht",
      "fhem_widget_command": "{\u0022allowed_values\u0022:[\u0022off\u0022,\u0022on\u0022],\u0022filter\u0022:\u0022public\u0022,\u0022order\u0022:2}",
      "room": "Kueche,homekit"
    }
  }  ],
  "totalResultsReturned":1
}


ich sehe auch im alexa-fhem keinerlei ausgabe, wenn ich versuche das licht per alexa zu schalten...

justme1968

#3515
wenn du über die alexa app schalten kannst liegt es an der spracherkennung. das passiert vor dem skill. du kannst in der app schauen was erkannt wird und feedback geben. der smart home skill hat darauf keinen einfluss.

ich würde raten raum namen nicht mit im device namen zu haben sondern das ding nur lampe zu nennen und in einen raum küche zu stecken.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

erotikbaer

hm ok, habs jetzt mal umbenannt in licht und jetzt geht es. das ist aber käse. habe in der küche jetzt 2 geräte: Licht und Küchenschrank

sage ich nun "alexa schalte licht in der küche an" sagt sie "es gibt mehrere Geräte, welches meinst du"

justme1968

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

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

erotikbaer

ok, also so richtig bin ich noch nicht zufrieden, aber zumindest habe ich es (mithilfe einer alexa gruppe) hinbekommen das ich mit "schalte küche an" meine deckenlampe in der küche geschaltet bekomme.

danke euch für die hilfe

Chillkroete1206

Hallo zusammen,

ich habe das Problem den Alexa Smart Home Skill wieder zum Laufen zu kriegen. Vor langer Zeit lief der Smart Home Skill. Habe dann den Custom Skill ausprobiert, was leider nicht sehr erfolgreich war. Nun würde ich gerne wieder den Smart Home Skill aktivieren, was leider nicht richtig funktioniert.

Habe die Schritte aus dem Wiki soweit befolgt. Beim Starten kommt folgendes Feedback, es werden aber keine Geräte gefunden. Was mache ich falsch?

[2018-1-1 14:37:45] using /home/pi/.alexa/config.json
[2018-1-1 14:37:45] ---
[2018-1-1 14:37:45] this is alexa-fhem 0.3.4
[2018-1-1 14:37:45] Fetching FHEM devices...
[2018-1-1 14:37:45] [FHEM] starting longpoll: https://127.0.0.1:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1514813865221
[2018-1-1 14:37:45] Server listening on: https://:::3000
[2018-1-1 14:37:45] [FHEM] Checking devices and attributes...
[2018-1-1 14:37:45] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7BAttrVal(%22global%22,%22userattr%22,%22%22)%7D&XHR=1
[2018-1-1 14:37:45] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=jsonlist2%20TYPE=alexa&XHR=1
[2018-1-1 14:37:45] [FHEM] Fetching FHEM devices...
[2018-1-1 14:37:45] [FHEM] fetching: https://127.0.0.1:8083/fhem?cmd=jsonlist2%20room=Alexa&XHR=1
[2018-1-1 14:37:46] [FHEM] alexa device is MyAlexa
[2018-1-1 14:37:46] [FHEM] MyAlexa is switch
[2018-1-1 14:37:46] [FHEM] MyAlexa has
[2018-1-1 14:37:46] [FHEM] homebridgeMapping: #Characteristic=<name>=<value>,...
On=verb=schalte,valueOn=an;ein,valueOff=aus,valueToggle=um

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;die,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
[2018-1-1 14:37:46] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%201%7D&XHR=1
[2018-1-1 14:37:46] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22alexa-fhem%20version%22%7D%20=%20%220.3.4%22%7D&XHR=1
[2018-1-1 14:37:46] [FHEM]   executing: https://127.0.0.1:8083/fhem?cmd=%7B$defs%7BMyAlexa%7D-%3E%7B%22active%22%7D%20=%200%7D&XHR=1
[2018-1-1 14:37:46] perfectOfVerb:
[2018-1-1 14:37:46] { stelle: 'gestellt',
  schalte: 'geschaltet',
  'färbe': 'gefärbt',
  mach: 'gemacht' }
[2018-1-1 14:37:46] verbsOfIntent:
[2018-1-1 14:37:46] [ OnIntent: [ 'schalte' ],
  prozentIntent: [ 'stelle' ],
  HueIntent: [ 'stelle' ],
  HueIntentB: [ 'färbe' ],
  SaturationIntent: [ 'stelle' ],
  SaturationIntentB: [ 'sättige' ],
  TargetPositionIntent: [ 'mach' ],
  gradIntent: [ 'stelle' ] ]
[2018-1-1 14:37:46] characteristicsOfIntent:
[2018-1-1 14:37:46] { OnIntent: [ 'On' ],
  prozentIntent: [ 'Brightness', 'TargetPosition', 'Volume' ],
  HueIntent: [ 'Hue' ],
  HueIntentB: [ 'Hue' ],
  SaturationIntent: [ 'Saturation' ],
  SaturationIntentB: [ 'Saturation' ],
  TargetPositionIntent: [ 'TargetPosition' ],
  gradIntent: [ 'TargetTemperature' ] }
[2018-1-1 14:37:46] prefixOfIntent:
[2018-1-1 14:37:46] { OnIntent: undefined,
  prozentIntent: 'auf',
  HueIntent: 'auf',
  HueIntentB: undefined,
  SaturationIntent: 'auf',
  SaturationIntentB: undefined,
  TargetPositionIntent: undefined,
  gradIntent: 'auf' }
[2018-1-1 14:37:46] suffixOfIntent:
[2018-1-1 14:37:46] { OnIntent: undefined,
  prozentIntent: 'prozent',
  HueIntent: undefined,
  HueIntentB: undefined,
  SaturationIntent: undefined,
  SaturationIntentB: undefined,
  TargetPositionIntent: undefined,
  gradIntent: 'grad' }
[2018-1-1 14:37:46] alexaTypes:
[2018-1-1 14:37:46] { light: [ 'licht', 'lampen' ],
  blind:
   [ 'rolladen',
     'rolläden',
     'jalousie',
     'jalousien',
     'rollo',
     'rollos' ] }
[2018-1-1 14:37:46] roomOfEcho:
[2018-1-1 14:37:46] {}
[2018-1-1 14:37:46] fhemIntents:
[2018-1-1 14:37:46] { FHEMgutenMorgenIntent: 'gutenMorgen',
  FHEMguteNachtIntent: 'guteNacht' }
[2018-1-1 14:37:46] [FHEM] got: 1 results
[2018-1-1 14:37:46] [FHEM] WZ_Schalter_Birnen is light
[2018-1-1 14:37:46] [FHEM] WZ_Schalter_Birnen has
[2018-1-1 14:37:46] [FHEM]   On [state;on,off]
[2018-1-1 14:37:46] [FHEM] { reading: 'state',
  valueOff: '/off|A0|000000/',
  cmdOn: 'on',
  cmdOff: 'off',
  device: 'WZ_Schalter_Birnen',
  informId: 'WZ_Schalter_Birnen-state',
  characteristic_type: 'On',
  log:
   { [Function: bound ]
     debug: [Function],
     info: [Function],
     warn: [Function],
     error: [Function],
     log: [Function],
     prefix: 'FHEM' } }
  2018-01-01 14:37:46 caching: WZ_Schalter_Birnen-state: on


Danke für eure Hilfe!

MadMax-FHEM

Hast du den Smart Home Skill neu angelegt?

Kommt etwas in der Console / alexa-fhem-Log wenn du die Gerätesuche startest?

Es sollte zumindest (auch bei falscher payload Version 2 vs. 3) etwas zu sehen sein, evtl./wahrsch. ein Fehler aber zumindest "etwas".

Wenn nicht: Trigger etc. prüfen / Troubleshooting im Wiki durchgehen.

Wenn du den Skill neu angelegt hast, dann brauchst du eine alexa-fhem Version 0.4.X!
Denn neuer Skill unterstützt nur noch payload Version 3!
(das kann die 0.3.4 nicht)

https://forum.fhem.de/index.php/topic,81324.0.html

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)

docb

Moin,
ich bräuchte bitte auch mal Hilfe. Ich habe mich jetzt zwei Tage lang durch die ganze Installation gewurschtelt, das war gar nicht so einfach, weil viele Seiten bei Amazon mittlerweile anders aussehen, als in der Wiki. Payload ist also die v3 und alexa-fhem die 0.4.4.

Allerdings scheitere ich schon beim Start von ./alexa
Ich bekomme folgende Fehlermeldung:
pi@raspberrypi:/opt/alexa-fhem/bin $ ./alexa
[2018-01-02 13:20:34] using /home/pi/.alexa/config.json
[2018-01-02 13:20:34] ---
[2018-01-02 13:20:34] this is alexa-fhem 0.4.4
[2018-01-02 13:20:34] Trying NAT-PMP ...
[2018-01-02 13:20:35] Fetching FHEM devices...
[2018-01-02 13:20:35] [FHEM] starting longpoll: https://127.0.0.1:8083/fhem?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1514895635027
[2018-01-02 13:20:35] Server listening on: https://:::3000
/opt/alexa-fhem/lib/server.js:137
      if (err) throw err;
               ^

Error: getaddrinfo ENOTFOUND https://meineurl.de/alexa
    at errnoException (dns.js:27:10)
    at GetAddrInfoReqWrap.onlookup [as oncomplete] (dns.js:78:26)


Mein Apache ReverseProxy ist wie folgt eingerichtet:
<IfModule mod_ssl.c>
<VirtualHost *:443>
    ServerName meineurl.de

    ServerAdmin bb@meineurl.de
    DocumentRoot /var/www/html

    ErrorLog ${APACHE_LOG_DIR}/meineurl.de.error.log
    CustomLog ${APACHE_LOG_DIR}/meineurl.de.access.log combined

    SSLCertificateFile /etc/letsencrypt/live/meineurl.de/fullchain.pem
    SSLCertificateKeyFile /etc/letsencrypt/live/meineurl.de/privkey.pem

    Include /etc/letsencrypt/options-ssl-apache.conf

    ProxyRequests Off
    ProxyVia Off
    ProxyPreserveHost On

    <Location /fhem>
        ProxyPass http://localhost:8083/fhem
        ProxyPassReverse http://localhost:8083/fhem
    </Location>

<Location /alexa>
AuthType Basic
AuthName "Authentication Required"
AuthUserFile "/etc/fhemapi-htpasswd"
Require valid-user
ProxyPass https://localhost:3000/
ProxyPassReverse https://localhost:3000/
Order deny,allow
Allow from All
</Location>

    <Location /net>
        ProxyPass http://localhost:8083/fhem/netatmo
        ProxyPassReverse http://localhost:8083/fhem/netatmo
    </Location>

    <Location /api>
        ProxyPass http://localhost:8089/fhem
        ProxyPassReverse http://localhost:8089/fhem
        AuthUserFile /etc/fhemapi-htpasswd
    </Location>

   <Directory />
       RedirectPermanent / /fhem
    </Directory>

    <Proxy *>
        AuthType Basic
        AuthName "Password for FHEM Required"
        AuthUserFile /etc/fhem-htpasswd
        Require valid-user
        Order deny,allow
        Allow from all
    </Proxy>
</VirtualHost>
</IfModule>


Und meine config.json im ~/.alexa schaut so aus:

{
    "alexa": {
        "port": 3000,
        "name": "Alexa Fhem",
        "keyFile": "./key.pem",
        "certFile": "./cert.pem",
        "nat-pmp": "https://meineurl.de/alexa",
        "nat-upnp": false,
        "applicationId": "amzn1.ask.skill.ganzvielezeichen",
        "oauthClientID": "amzn1.application-oa2-client.ganzvielezeichen"
    },

    "connections": [
        {
            "name": "FHEM",
            "server": "127.0.0.1",
            "port": "8083",
            "webname": "fhem",
            "filter": "room=System",
            "auth": {"user": "hier der Benutzer aus /etc/fhemapi-htpasswd", "pass": "hier das Passwort aus /etc/fhemapi-htpasswd"},
            "ssl": true
        }
    ]
}


Meine index.js im Lamda schaut wie folgt aus:

const PORT=443;
const HOST='meineurl.de';
const PATH='/alexa';
const AUTH='hier der Benutzer aus /etc/fhemapi-htpasswd:hier das Passwort aus /etc/fhemapi-htpasswd';

// entry
exports.handler = function(event, context, callback) {

  console.log(`EVENT: ${event}`);
  console.log(`CONTEXT: ${context}`);
 
  var post_data = JSON.stringify(event);
 
  var options = {
    hostname: HOST,
    port: PORT,
    //family: 6,
    path: PATH,
    method: 'POST',
    auth: AUTH,
    rejectUnauthorized: false, // accept self-signed
    headers: {
      'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(post_data)
    }
  };

  var request = require('https').request(options, (result) => {
    console.log(`STATUS: ${result.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(result.headers)}`);
    result.setEncoding('utf8');
    var body = '';
    result.on('data', (chunk) => body += chunk);
    result.on('end', () => {
      console.log(`BODY: ${JSON.stringify(body)}`);
      callback(null, JSON.parse(body) );
      return;
    });
  });

  request.on('error', (e) => {
    console.log(`problem with request: ${e.message}`);
    callback(null, createError(ERROR_TARGET_OFFLINE) );
    return;
  });

  request.write(post_data);
  request.end();

  return;
 
}// exports.handler


Bin für jeden Tipp dankbar ;-)
Gutes neues Jahr und viele Grüße
doc
I love FHEM!

justme1968

nat-pmp und nat-upnp deaktivieren und das port forwaring von hand fest eintragen.

im übrigen müsste bei nat-pmp die interne adresse des routers stehen. nicht die externe. und auch nur die adresse statt einer url.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

docb

Mäh, das war ja ein echter Dödelfehler. Dankeschön  ;D
Das läuft jetzt mal - der Rest noch nicht wirklich  ;) Aber jetzt teste ich erstmal wieder selber weiter!
I love FHEM!

AmunRe

#3524
Zitat von: justme1968 am 25 Dezember 2017, 22:10:05
ich würde raten raum namen nicht mit im device namen zu haben sondern das ding nur lampe zu nennen und in einen raum küche zu stecken.
Bei mir ist es momentan so, das ich eben "Licht Schlafzimmer", "Licht Flur" ... habe.


Versteh ich das richtig, wenn ich es in den Raum Wohnzimmer, Flur, ... packe, wo es schon drin ist und es in jedem Raum Lampe nenne, kommt dann nicht "Ich habe mehrere Geräte gefunden, welches wolltest Du" Fehler?


Woran erkennt Alexa in welchem Raum es an/aus schalten soll? muss ich das Alexa Device dann auch passend nennen?
4 x Echo Dot, HMLAN Gateway, und diverse HM Komponenten, Philips Hue + OSRAM Plugs