[alexa-fhem | Generell] Alles zu Installation und damit verbundenen Problemen

Begonnen von prodigy7, 09 November 2016, 19:42:01

Vorheriges Thema - Nächstes Thema

prodigy7

Hallo zusammen,

Damit der Thread https://forum.fhem.de/index.php/topic,60244.285.html nicht in Installationsproblemen ertrinkt, hier mal einer nur für diese (überwiegend node.js und Port-Weiterleitung)

Bitte schaut zuerst unter http://www.fhemwiki.de/wiki/Alexa-Fhem#Troubleshooting prüfen ob man schon alles dort dokumentierte getan hat zur Problembehebung bevor man hier postet!

Bitte nutzt für Fragen und Probleme die Threads und bleibt bitte hier beim wesentlichen Thema!
p7

sauserl

#1
Dann starte ich gleich mal.

In der Alexa App werden keine Geräte gefunden.

Bei AWS lambda bekomme ich bei test folgende Meldung:

{
  "errorMessage": "grapponxyz is not defined",
  "errorType": "ReferenceError",
  "stackTrace": [
    "Module._compile (module.js:409:26)",
    "Object.Module._extensions..js (module.js:416:10)",
    "Module.load (module.js:343:32)",
    "Function.Module._load (module.js:300:12)",
    "Module.require (module.js:353:17)",
    "require (internal/module.js:12:17)"
  ]
}


So hab ich es eingetragen:


const PORT=3000;
const HOST=grapponxyz.myfritz.net;


// namespaces
const NAMESPACE_CONTROL = "Alexa.ConnectedHome.Control";
const NAMESPACE_DISCOVERY = "Alexa.ConnectedHome.Discovery";

// errors
const ERROR_TARGET_OFFLINE = "TargetOfflineError";

const ERROR_UNSUPPORTED_OPERATION = "UnsupportedOperationError";

const ERROR_UNEXPECTED_INFO = "UnexpectedInformationReceivedError";


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

  log("Received Directive", event);
 
  var postData = JSON.stringify(event);
 
  var options = {
  hostname: HOST,
  port: PORT,
  //family: 6,
  rejectUnauthorized: false,
  path: '/upload',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(postData)
    }
  };

  var http = require('https');
  var req = http.request(options, (res) => {
    console.log(`STATUS: ${res.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
    res.setEncoding('utf8');
    var rawData = '';
    res.on('data', (chunk) => rawData += chunk);
    res.on('end', () => {
      console.log('No more data in response.');
      callback(null, JSON.parse(rawData) );
      return;
    });
  });

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

  // write data to request body
  req.write(postData);
  req.end();
  return;
 
}// exports.handler


var handleUnsupportedOperation = function() {

  var header = createHeader(NAMESPACE_CONTROL,ERROR_UNSUPPORTED_OPERATION);

  var payload = {};

  return createDirective(header,payload);

}// handleUnsupportedOperation


var handleUnexpectedInfo = function(fault) {

  var header = createHeader(NAMESPACE_CONTROL,ERROR_UNEXPECTED_INFO);

  var payload = {

    "faultingParameter" : fault

  };

  return createDirective(header,payload);

}// handleUnexpectedInfo


// support functions

var createMessageId = function() {

  var d = new Date().getTime();

  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {

    var r = (d + Math.random()*16)%16 | 0;

    d = Math.floor(d/16);

    return (c=='x' ? r : (r&0x3|0x8)).toString(16);

  });

  return uuid;

}// createMessageId


var createHeader = function(namespace, name) {

  return {

    "messageId": createMessageId(),

    "namespace": namespace,

    "name": name,

    "payloadVersion": "2"

  };

}// createHeader


var createDirective = function(header, payload) {

  return {

    "header" : header,

    "payload" : payload

  };

}// createDirective

var createError = function(error,payload) {

  if( payload === undefined )
    payload = {};

  return {

    "header" : createHeader(NAMESPACE_CONTROL,error),

    "payload" : payload,

  };
}// createError


var log = function(title, msg) {

  console.log('**** ' + title + ': ' + JSON.stringify(msg));

}// log


Anmerkung: grapponxyz.myfritz.net ist meine verfremdete Adresse, um von außen auf die Fritzbox zuzugreifen.

Portfreigabe sieht so aus:

Bezeichnung    Protokoll    Port    an Computer          an Port    
   Alexa   TCP       3000   raspberrypiWLAN   3000


./bin/alexa bringt folgende Ausgabe


pi@raspberrypi ~/alexa-fhem $ ./bin/alexa
[11/9/2016, 8:43:39 PM] using /home/pi/.alexa/config.json
[11/9/2016, 8:43:39 PM] ---
[11/9/2016, 8:43:39 PM] Trying UPnP NAT-PMP ...
[11/9/2016, 8:43:39 PM] Fetching FHEM devices...
starting longpoll: http://192.168.1.71:8083/fhem.pl?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1478720623358
[11/9/2016, 8:43:43 PM] [FHEM] Checking genericDeviceType...
[11/9/2016, 8:43:43 PM] [FHEM]   executing: http://192.168.1.71:8083/fhem?cmd=%7BAttrVal(%22global%22,%22userattr%22,%22%22)%7D&XHR=1
[11/9/2016, 8:43:43 PM] [FHEM] Fetching FHEM devices...
[11/9/2016, 8:43:43 PM] [FHEM] fetching: http://192.168.1.71:8083/fhem?cmd=jsonlist2%20room=Alexa&XHR=1
NAT-PMP failed: Error: timeout
Server listening on: https://0.0.0.0:3000
[11/9/2016, 8:43:45 PM] [FHEM] got: 4 results
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_EZ is thermostat
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_EZ has
[11/9/2016, 8:43:46 PM] [FHEM]   StatusLowBattery [battery]
[11/9/2016, 8:43:46 PM] [FHEM]   FirmwareRevision [firmware]
[11/9/2016, 8:43:46 PM] [FHEM]   TargetTemperature [desiredTemperature]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Actuation [valveposition]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentTemperature [temperature]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentHeatingCoolingState [undefined]
  2016-11-09 20:43:46 caching: Heizung_EZ-battery: ok
  2016-11-09 20:43:46 caching: Heizung_EZ-firmware: 1.0
  2016-11-09 20:43:46 caching: Heizung_EZ-desiredTemperature: 17.0
  2016-11-09 20:43:46 caching: Heizung_EZ-valveposition: 0
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Actuation: 0 (as number; from '0')
  2016-11-09 20:43:46 caching: Heizung_EZ-temperature: 21.4
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_WZ is thermostat
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_WZ has
[11/9/2016, 8:43:46 PM] [FHEM]   StatusLowBattery [battery]
[11/9/2016, 8:43:46 PM] [FHEM]   FirmwareRevision [firmware]
[11/9/2016, 8:43:46 PM] [FHEM]   TargetTemperature [desiredTemperature]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Actuation [valveposition]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentTemperature [temperature]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentHeatingCoolingState [undefined]
  2016-11-09 20:43:46 caching: Heizung_WZ-battery: ok
  2016-11-09 20:43:46 caching: Heizung_WZ-firmware: 1.0
  2016-11-09 20:43:46 caching: Heizung_WZ-desiredTemperature: 17.0
  2016-11-09 20:43:46 caching: Heizung_WZ-valveposition: 0
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Actuation: 0 (as number; from '0')
  2016-11-09 20:43:46 caching: Heizung_WZ-temperature: 20.2
[11/9/2016, 8:43:46 PM] [FHEM] fritz is switch
[11/9/2016, 8:43:46 PM] [FHEM] fritz has
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Voltage [voltage]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Current [current]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Power [power]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Energy [energy]
[11/9/2016, 8:43:46 PM] [FHEM]   On [state;on,off]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentTemperature [temperature]
  2016-11-09 20:43:46 caching: fritz-voltage: 232.194 V
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Voltage: 232.194 (as number; from '232.194 V')
  2016-11-09 20:43:46 caching: fritz-current: 0.0012 A
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Current: 0.0012 (as number; from '0.0012 A')
  2016-11-09 20:43:46 caching: fritz-power: 0.00 W
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Power: 0 (as number; from '0.00 W')
  2016-11-09 20:43:46 caching: fritz-energy: 181897 Wh
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Energy: 181.897 (as number; from '181897 Wh')
  2016-11-09 20:43:46 caching: fritz-state: on
  2016-11-09 20:43:46 caching: fritz-temperature: 23.5 C (measured)
[11/9/2016, 8:43:46 PM] [FHEM] lampe is switch
[11/9/2016, 8:43:46 PM] [FHEM] lampe has
[11/9/2016, 8:43:46 PM] [FHEM]   On [state;on,off]
  2016-11-09 20:43:46 caching: lampe-state: off



danach passiert nichts weiter. Wenn ich zB lampe über FHEM schalte, wird der neue Status angezeigt.

Wo kann der Fehler liegen?


Edit: Der Einfachheit halber füge ich meine Lösung hier an: Es war der Trigger. Obwohl ich ihn angelegt hatte, war kein Trigger gesetzt. Ich hab ihn neu gesetzt, dann wurden die Geräte gefunden.

Esjay

#2
Zitat von: sauserl am 09 November 2016, 20:45:37
Dann starte ich gleich mal.

In der Alexa App werden keine Geräte gefunden.

Bei AWS lambda bekomme ich bei test folgende Meldung:

{
  "errorMessage": "grapponxyz is not defined",
  "errorType": "ReferenceError",
  "stackTrace": [
    "Module._compile (module.js:409:26)",
    "Object.Module._extensions..js (module.js:416:10)",
    "Module.load (module.js:343:32)",
    "Function.Module._load (module.js:300:12)",
    "Module.require (module.js:353:17)",
    "require (internal/module.js:12:17)"
  ]
}


So hab ich es eingetragen:


const PORT=3000;
const HOST=grapponxyz.myfritz.net;


// namespaces
const NAMESPACE_CONTROL = "Alexa.ConnectedHome.Control";
const NAMESPACE_DISCOVERY = "Alexa.ConnectedHome.Discovery";

// errors
const ERROR_TARGET_OFFLINE = "TargetOfflineError";

const ERROR_UNSUPPORTED_OPERATION = "UnsupportedOperationError";

const ERROR_UNEXPECTED_INFO = "UnexpectedInformationReceivedError";


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

  log("Received Directive", event);
 
  var postData = JSON.stringify(event);
 
  var options = {
  hostname: HOST,
  port: PORT,
  //family: 6,
  rejectUnauthorized: false,
  path: '/upload',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(postData)
    }
  };

  var http = require('https');
  var req = http.request(options, (res) => {
    console.log(`STATUS: ${res.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
    res.setEncoding('utf8');
    var rawData = '';
    res.on('data', (chunk) => rawData += chunk);
    res.on('end', () => {
      console.log('No more data in response.');
      callback(null, JSON.parse(rawData) );
      return;
    });
  });

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

  // write data to request body
  req.write(postData);
  req.end();
  return;
 
}// exports.handler


var handleUnsupportedOperation = function() {

  var header = createHeader(NAMESPACE_CONTROL,ERROR_UNSUPPORTED_OPERATION);

  var payload = {};

  return createDirective(header,payload);

}// handleUnsupportedOperation


var handleUnexpectedInfo = function(fault) {

  var header = createHeader(NAMESPACE_CONTROL,ERROR_UNEXPECTED_INFO);

  var payload = {

    "faultingParameter" : fault

  };

  return createDirective(header,payload);

}// handleUnexpectedInfo


// support functions

var createMessageId = function() {

  var d = new Date().getTime();

  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {

    var r = (d + Math.random()*16)%16 | 0;

    d = Math.floor(d/16);

    return (c=='x' ? r : (r&0x3|0x8)).toString(16);

  });

  return uuid;

}// createMessageId


var createHeader = function(namespace, name) {

  return {

    "messageId": createMessageId(),

    "namespace": namespace,

    "name": name,

    "payloadVersion": "2"

  };

}// createHeader


var createDirective = function(header, payload) {

  return {

    "header" : header,

    "payload" : payload

  };

}// createDirective

var createError = function(error,payload) {

  if( payload === undefined )
    payload = {};

  return {

    "header" : createHeader(NAMESPACE_CONTROL,error),

    "payload" : payload,

  };
}// createError


var log = function(title, msg) {

  console.log('**** ' + title + ': ' + JSON.stringify(msg));

}// log


Anmerkung: grapponxyz.myfritz.net ist meine verfremdete Adresse, um von außen auf die Fritzbox zuzugreifen.

Portfreigabe sieht so aus:

Bezeichnung    Protokoll    Port    an Computer          an Port    
   Alexa   TCP       3000   raspberrypiWLAN   3000


./bin/alexa bringt folgende Ausgabe


pi@raspberrypi ~/alexa-fhem $ ./bin/alexa
[11/9/2016, 8:43:39 PM] using /home/pi/.alexa/config.json
[11/9/2016, 8:43:39 PM] ---
[11/9/2016, 8:43:39 PM] Trying UPnP NAT-PMP ...
[11/9/2016, 8:43:39 PM] Fetching FHEM devices...
starting longpoll: http://192.168.1.71:8083/fhem.pl?XHR=1&inform=type=status;addglobal=1;filter=.*;since=null;fmt=JSON&timestamp=1478720623358
[11/9/2016, 8:43:43 PM] [FHEM] Checking genericDeviceType...
[11/9/2016, 8:43:43 PM] [FHEM]   executing: http://192.168.1.71:8083/fhem?cmd=%7BAttrVal(%22global%22,%22userattr%22,%22%22)%7D&XHR=1
[11/9/2016, 8:43:43 PM] [FHEM] Fetching FHEM devices...
[11/9/2016, 8:43:43 PM] [FHEM] fetching: http://192.168.1.71:8083/fhem?cmd=jsonlist2%20room=Alexa&XHR=1
NAT-PMP failed: Error: timeout
Server listening on: https://0.0.0.0:3000
[11/9/2016, 8:43:45 PM] [FHEM] got: 4 results
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_EZ is thermostat
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_EZ has
[11/9/2016, 8:43:46 PM] [FHEM]   StatusLowBattery [battery]
[11/9/2016, 8:43:46 PM] [FHEM]   FirmwareRevision [firmware]
[11/9/2016, 8:43:46 PM] [FHEM]   TargetTemperature [desiredTemperature]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Actuation [valveposition]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentTemperature [temperature]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentHeatingCoolingState [undefined]
  2016-11-09 20:43:46 caching: Heizung_EZ-battery: ok
  2016-11-09 20:43:46 caching: Heizung_EZ-firmware: 1.0
  2016-11-09 20:43:46 caching: Heizung_EZ-desiredTemperature: 17.0
  2016-11-09 20:43:46 caching: Heizung_EZ-valveposition: 0
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Actuation: 0 (as number; from '0')
  2016-11-09 20:43:46 caching: Heizung_EZ-temperature: 21.4
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_WZ is thermostat
[11/9/2016, 8:43:46 PM] [FHEM] Heizung_WZ has
[11/9/2016, 8:43:46 PM] [FHEM]   StatusLowBattery [battery]
[11/9/2016, 8:43:46 PM] [FHEM]   FirmwareRevision [firmware]
[11/9/2016, 8:43:46 PM] [FHEM]   TargetTemperature [desiredTemperature]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Actuation [valveposition]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentTemperature [temperature]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentHeatingCoolingState [undefined]
  2016-11-09 20:43:46 caching: Heizung_WZ-battery: ok
  2016-11-09 20:43:46 caching: Heizung_WZ-firmware: 1.0
  2016-11-09 20:43:46 caching: Heizung_WZ-desiredTemperature: 17.0
  2016-11-09 20:43:46 caching: Heizung_WZ-valveposition: 0
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Actuation: 0 (as number; from '0')
  2016-11-09 20:43:46 caching: Heizung_WZ-temperature: 20.2
[11/9/2016, 8:43:46 PM] [FHEM] fritz is switch
[11/9/2016, 8:43:46 PM] [FHEM] fritz has
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Voltage [voltage]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Current [current]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Power [power]
[11/9/2016, 8:43:46 PM] [FHEM]   Custom Energy [energy]
[11/9/2016, 8:43:46 PM] [FHEM]   On [state;on,off]
[11/9/2016, 8:43:46 PM] [FHEM]   CurrentTemperature [temperature]
  2016-11-09 20:43:46 caching: fritz-voltage: 232.194 V
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Voltage: 232.194 (as number; from '232.194 V')
  2016-11-09 20:43:46 caching: fritz-current: 0.0012 A
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Current: 0.0012 (as number; from '0.0012 A')
  2016-11-09 20:43:46 caching: fritz-power: 0.00 W
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Power: 0 (as number; from '0.00 W')
  2016-11-09 20:43:46 caching: fritz-energy: 181897 Wh
[11/9/2016, 8:43:46 PM] [FHEM]     caching: Custom Energy: 181.897 (as number; from '181897 Wh')
  2016-11-09 20:43:46 caching: fritz-state: on
  2016-11-09 20:43:46 caching: fritz-temperature: 23.5 C (measured)
[11/9/2016, 8:43:46 PM] [FHEM] lampe is switch
[11/9/2016, 8:43:46 PM] [FHEM] lampe has
[11/9/2016, 8:43:46 PM] [FHEM]   On [state;on,off]
  2016-11-09 20:43:46 caching: lampe-state: off



danach passiert nichts weiter. Wenn ich zB lampe über FHEM schalte, wird der neue Status angezeigt.

Wo kann der Fehler liegen?

Was mir auffällt ist, dass du bei dem Lamda file den Teil des Host verfälscht hast.. Es fehlen die Anführungsstriche..

sauserl

#3
Danke, hab sie eingefügt. Jetzt kommt ab der Stelle keine Fehlermeldung mehr.  :D

Geräte werden aber leider immer noch keine gefunden.

Ausgabe bei lamda:


No older events found at the moment. Retry.

20:03:35
START RequestId: 9868cdf1-a6b7-11e6-8644-d7a3c74de330 Version: $LATEST

20:03:35
2016-11-09T20:03:35.868Z 9868cdf1-a6b7-11e6-8644-d7a3c74de330 **** Received Directive: {"key3":"value3","key2":"value2","key1":"value1"}

20:03:36
2016-11-09T20:03:36.599Z 9868cdf1-a6b7-11e6-8644-d7a3c74de330 problem with request: connect ECONNREFUSED 84.61.xxx.xxx:3000
2016-11-09T20:03:36.599Z 9868cdf1-a6b7-11e6-8644-d7a3c74de330 problem with request: connect ECONNREFUSED 84.61.xxx.xxx:3000

20:03:36
END RequestId: 9868cdf1-a6b7-11e6-8644-d7a3c74de330

20:03:36
REPORT RequestId: 9868cdf1-a6b7-11e6-8644-d7a3c74de330 Duration: 749.83 ms Billed Duration: 800 ms Memory Size: 128 MB Max Memory Used: 37 MB



prodigy7

Ich habe im Startport beschrieben, wie man testen kann ob die Freigabe funktioniert.

sauserl

#5
Diese Website ist nicht erreichbar

grapponxyz.myfritz.net hat die Verbindung abgelehnt.


(mit https://)


Die Seite grappontxyz.myfritz.net funktioniert nicht

grapponxyz.myfritz.net hat keine Daten gesendet.


ohne

Ja, daran liegt es wohl.

justme1968

@sauserl: um den host namen müssen anführungszeichen. so wie im beispiel file auch.
du kannst nicht mit der aws test funktion testen. die daten die dort gesendet werden sind kein gültiges alexa kommando und werden auch nicht mit dem korrekten token gesendet.
zum testen mit wget oder browser muss https verwendet werden.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

sauserl

Ja, die habe ich schon eingefügt, danke. Danach war die Fehlermeldung im aws weg.

Du meinst jetzt den Port? Ich habe sowohl mit https als auch ohne im Browser versucht, beides gab Fehler. Ich hab langsam keine Idee mehr. mE hab ich die Portfreigabe richtig eingerichtet.

Pjg

Ich bekomme beim testen in Lambda:

InvalidCharacterError

Aber er zeigt mir nicht an wo....
Hat jemand ne Idee was hier falsch sein könnte?


Zitat
const PORT=3000;
const HOST='https://9rzxxxxxxxxkipxr.myfritz.net';


// namespaces
const NAMESPACE_CONTROL = "Alexa.ConnectedHome.Control";
const NAMESPACE_DISCOVERY = "Alexa.ConnectedHome.Discovery";

// errors
const ERROR_TARGET_OFFLINE = "TargetOfflineError";

const ERROR_UNSUPPORTED_OPERATION = "UnsupportedOperationError";

const ERROR_UNEXPECTED_INFO = "UnexpectedInformationReceivedError";


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

  log("Received Directive", event);
 
  var postData = JSON.stringify(event);
 
  var options = {
  hostname: HOST,
  port: PORT,
  //family: 6,
  rejectUnauthorized: false,
  path: '/upload',
  method: 'POST',
  headers: {
    'Content-Type': 'application/json',
      'Content-Length': Buffer.byteLength(postData)
    }
  };

  var http = require('https');
  var req = http.request(options, (res) => {
    console.log(`STATUS: ${res.statusCode}`);
    console.log(`HEADERS: ${JSON.stringify(res.headers)}`);
    res.setEncoding('utf8');
    var rawData = '';
    res.on('data', (chunk) => rawData += chunk);
    res.on('end', () => {
      console.log('No more data in response.');
      callback(null, JSON.parse(rawData) );
      return;
    });
  });

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

  // write data to request body
  req.write(postData);
  req.end();
  return;
 
}// exports.handler


var handleUnsupportedOperation = function() {

  var header = createHeader(NAMESPACE_CONTROL,ERROR_UNSUPPORTED_OPERATION);

  var payload = {};

  return createDirective(header,payload);

}// handleUnsupportedOperation


var handleUnexpectedInfo = function(fault) {

  var header = createHeader(NAMESPACE_CONTROL,ERROR_UNEXPECTED_INFO);

  var payload = {

    "faultingParameter" : fault

  };

  return createDirective(header,payload);

}// handleUnexpectedInfo


// support functions

var createMessageId = function() {

  var d = new Date().getTime();

  var uuid = 'xxxxxxxx-xxxx-4xxx-yxxx-xxxxxxxxxxxx'.replace(/[xy]/g, function(c) {

    var r = (d + Math.random()*16)%16 | 0;

    d = Math.floor(d/16);

    return (c=='x' ? r : (r&0x3|0x8)).toString(16);

  });

  return uuid;

}// createMessageId


var createHeader = function(namespace, name) {

  return {

    "messageId": createMessageId(),

    "namespace": namespace,

    "name": name,

    "payloadVersion": "2"

  };

}// createHeader

Außerdem habe ich noch zwei Meldungen beim starten des scripts.

Einmal habe ich da Doppekpunkte in der ip Adresse statt punkte bei listening
und ich bekomme eine Medlung das ich homebridge starten soll. Habeich aber nicht instlliert. Ist das auch eine Vorraussetzung?
Danke.

ZitatServer listening on: https://:::3000
[11/9/2016, 9:36:12 PM] [FHEM] got: 1 results
[11/9/2016, 9:36:12 PM] [FHEM] CUL_HM_HM_LC_SW2_FM_2A16D2_Sw_02 is switch
[11/9/2016, 9:36:12 PM] [FHEM] CUL_HM_HM_LC_SW2_FM_2A16D2_Sw_02 has
[11/9/2016, 9:36:12 PM] [FHEM]   On [state;on,off]
  2016-11-09 21:36:12 caching: CUL_HM_HM_LC_SW2_FM_2A16D2_Sw_02-state: off
[11/9/2016, 9:36:12 PM] [FHEM]   executing: http://192.168.178.32:8083/fhem?cmd=%7B%20addToAttrList(%20%22homebridgeMapping:textField-long%22%20)%20%7D&XHR=1
[11/9/2016, 9:36:12 PM] [FHEM] homebridgeMapping attribute created.
[11/9/2016, 9:36:12 PM] [FHEM]   executing: http://192.168.178.32:8083/fhem?cmd=%7BaddToAttrList(%20%22genericDeviceType:security,ignore,switch,outlet,light,blind,thermometer,thermostat,contact,garage,window,lock%22%20)%20%7D&XHR=1
[11/9/2016, 9:36:12 PM] [FHEM] genericDeviceType attribute was not known. please restart homebridge.
BananaPI, CUL 433, Somfy RTS, Hue LWL001, Hue LWB004, HM-CFG-LAN, HM-LC-SW2-FM

Pjg

nach erneutem Start kommt die generic device Meldung nicht mehr, und der Server lauscht jetzt schön auf 3000

Mit aufruf meiner URL im browser kommt erst ein zertifiktsfehler(ist das schlimm?) und dann folgendes:

Zitat{"header":{"messageId":"600542da-c908-415d-a52e-7cd540e635be","namespace":"Alexa.ConnectedHome.Control","name":"UnsupportedOperationError","payloadVersion":"2"},"payload":{}}

bleibt noch das invalidcharakter Problem in Lambda.
Ich hab keine Ahnuing,mache einfach nur C&P..
BananaPI, CUL 433, Somfy RTS, Hue LWL001, Hue LWB004, HM-CFG-LAN, HM-LC-SW2-FM

justme1968

die doppelpunkte sind ok. der server lauscht auf allen interfaces und allen ip adressen.

homebridge steht da nur weil es ein copy&paste fehler ist. das restart ist wichtig.

wo genau steht die invalid character meldung? kopierst du alles auf ein mal oder häpchen weise?
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

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

Pjg

Es läuft :-)

Ich habe zwar immer noch den InvalidCharacterError in Lambda, aber er tut trotzdem.
Super Sache, Danke

Die Meldung kommt, wenn ich in Lambda einfach beim coding oben auf den blauen knopf Test drücke.

Ein Phänomen habe ich aber noch:
Ich habe eine Lampe mit dem Alias Deckenlampe versehen und das Gerät wurde auch gefunden.
Als ich dann eine Gruppe in der alexa app aufmachen wollte, merkte ich das ich bereits eine solche Deckenlampe habe.
Da der Name nicht zweimal vergeben werden darf, habe ich in FHEM den alias in Licht geändert, in Alexa-App die Deckenlampe verworfen und Geräte neu gesucht. Zu meiner Überraschung, erscheint nun trotzdem wieder Deckenlampe anstatt Licht.
Woran kann das liegen?
Ich habe auch schon das Gerät aus dem alexa raum in fhem geworfen, neu gesucht --> nix gefunden, und anschließend Licht wieder in alexa Raum gestellt und neu gesucht --> trotzdem heißt das Teil noch Deckenlampe für alexa.
Ich spreche immer nur vom alias, der Name ist kryptisch und lang

Jetzt noch das Autostart hinbekommen und dann geht's ans feintuning.

Vielen Dank nochmal bis hierhin für die tolle Entwicklung.

BananaPI, CUL 433, Somfy RTS, Hue LWL001, Hue LWB004, HM-CFG-LAN, HM-LC-SW2-FM

justme1968

den test kannst du nicht verwenden.

verwerfen ist nicht nötig. alias ändern und neu geräte suchen reicht. du musst aber aktuell noch nach jeder änderung und vor dem suchen alexa-fhem neu starten.

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

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

Ma_Bo

Mal ne Frage, wenn ich mich für AWS anmelde, muss ich ne Kreditkartennr. angeben, was mache ich wenn ich keine habe ?
Kann ich dann alles vergessen und brauch nicht mehr weitermachen?
NUC mit FHEM, HM Heizungsthermostate, HM Wandthermostate, Intertechno Funksteckdosen, 10" Tablet als Wanddisplay, KeyMatic, Fensterkontakte, Fensterkontakte umgebaut als Wassermelder und Briefkastenmelder, Aussenthermostat, Anwesenheitssteuerung über Fritz Box, Google Home usw. usw.

stera

Gibt es nicht eine Kreditkarte mit Prepaid Guthaben in jedem Supermarkt?

Gruß,
SteRa