Ankündigung

Einklappen
Keine Ankündigung bisher.

Amazon Alexa Plugin

Einklappen
X
 
  • Filter
  • Zeit
  • Anzeigen
Alles löschen
neue Beiträge

    Hehe
    Nee, das Geld geht an myonlineportal
    Die haben dafür auch nen super Service.

    Kommentar


      Hallo, ich musste bei mir nach einem SSD Crash alles neu machen. Jetzt kommt Alexa irgendwie nicht mehr durch nginx. kann sich diese Fehlermeldung jemand erklären. Oder mir einen Ansatz sagen wo ich hier suchen muss?

      Code:
      2025/02/15 13:19:02 [error] 691#691: *29 access forbidden by rule, client: 34.XXX.XXX.XXX, server: smarthomeng, request: "POST /alexa/ HTTP/1.1", host>
      Feb 15 13:19:02 SmartHomeNG nginx[691]: 34.XXX.XXX.XXX forwarded for - - Request: "POST /alexa/ HTTP/1.1" - Status: 403 - Bytes sent: 146 Referrer: "-" - User Agent: "-"
      ​
      Grüße, Marc

      EDIT: Habs noch hinbekommen... in der https.conf muss bei Alexa auch das basic auth einkommentiert werden.

      Code:
      auth_basic "Restricted Area: Alexa";
      auth_basic_user_file /etc/nginx/.alexa;​
      ​​
      Zuletzt geändert von schuma; 15.02.2025, 13:56.

      Kommentar


        Rechnung von Amazon

        Hallo,

        ich habe letzte Woche erstmals eine Rechnung von Amazon für das Cloud Geraffel bekommen: 0 Euro.
        Nun habe ich letzten Monat auch den Mail Hoster geändert und meine Filter Regeln waren alle weg.
        Sind die bisherigen Rechnungen im Spamschredder gelandet, oder ist das wirklich neu?

        Grundsätzlich müsste man ja mal die Kartendaten aktualisieren, hat das schon jemand gemacht?

        Gruß Jürgen

        Kommentar


          Bekomme ich auch jeden Monat. Ist für den Steuernachweis weil man ja ein Business Konto eröffnet hat. Da du ja aber nichts umsetzt, wird es immer bei Null bleiben;-)

          Kommentar


            Hallo,

            hat das Auswirkungen für uns? Ich kann mich schwach erinnern, dass ich in den Amazon Settings mal einen Skill umgestellt habe...

            https://knx-user-forum.de/forum/%C3%...gek%C3%BCndigt

            Gruß Jürgen

            Kommentar


              Hallo Jürgen,

              das alexa4p3-plugin kann bereits Payload Version 3 (dafür steht 4p3). Im Web-Interface des Plugins kannst du rechts oben sehen ob noch Geräte mit Payload V2 definiert sind (used actions .....). Es wird auch noch Payload V2 unterstützt.

              Ich meine der Skill in der AWS-Cloud muss auf V3 eingerichtet sein, bin aber nicht sicher, muss ich prüfen.

              Viele Grüße

              Andre

              Kommentar


                Hallo zusammen,

                ich habe es nach 5 Jahren jetzt doch nochmal gewagt auf Payload V3 umzustellen und hänge jetzt kurz vor dem Ziel. Zunächst habe ich versucht auf nodejs24.x umzustellen gab aber Fehler Jetzt habe ich den bisherigen nodejs24.x wieder verwendet Die neue Testroutine hat
                Code:
                version":"3"},{"type":"AlexaInterface","interface":"Alexa.EndpointHealth","version":"3","properties":{"supported":[{"name":"connectivity"}],"proactivelyReported":false,"retrievable":true}},{"type":"AlexaInterface","interface":"Alexa.RangeController","version":"3","properties":{"supported":[{"name":"rangeValue"}],"proactivelyReported":false,"retrievable":true},"instance":"cfg_rollo_west-alias1","capabilityResources":{"friendlyNames":[{"@type":"asset","value":{"assetId":"Alexa.Setting.Opening"}}]},"configuration":{"supportedRange":{"minimumValue":0,"maximumValue":100,"precision":1},"unitOfMeasure":"Alexa.Unit.Percent"},"semantics":{"actionMappings":[{"@type":"ActionsToDirective","actions":["Alexa.Actions.Close"],"directive":{"name":"SetRangeValue","payload":{"rangeValue":100}}},{"@type":"ActionsToDirective","actions":["Alexa.Actions.Open"],"directive":{"name":"SetRangeValue","payload":{"rangeValue":0}}},{"@type":"ActionsToDirective","actions":["Alexa.Actions.Lower"],"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":20,"rangeValueDeltaDefault":false}}},{"@type":"ActionsToDirective","actions":["Alexa.Actions.Raise"],"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":-20,"rangeValueDeltaDefault":false}}}],"stateMappings":[{"@type":"StatesToValue","states":["Alexa.States.Closed"],"value":0},{"@type":"StatesToRange","states":["Alexa.States.Open"],"range":{"minimumValue":1,"maximumValue":100}}]}}]},{"endpointId":"cfg_rollo_west-alias2","friendlyName":"Westrollos","description":"Rolllaeden West by SmartHomeNG","manufacturerName":"SmarthomeNG","displayCategories":["EXTERIOR_BLIND"],"cookie":{"extraDetail1":"config.beschattung.rollowest.pos"},"capabilities":[{"type":"AlexaInterface","interface":"Alexa","version":"3"},{"type":"AlexaInterface","interface":"Alexa.EndpointHealth","version":"3","properties":{"supported":[{"name":"connectivity"}],"proactivelyReported":false,"retrievable":true}},{"type":"AlexaInterface","interface":"Alexa.RangeController","version":"3","properties":{"supported":[{"name":"rangeValue"}],"proactivelyReported":false,"retrievable":true},"instance":"cfg_rollo_west-alias2","capabilityResources":{"friendlyNames":[{"@type":"asset","value":{"assetId":"Alexa.Setting.Opening"}}]},"configuration":{"supportedRange":{"minimumValue":0,"maximumValue":100,"precision":1},"unitOfMeasure":"Alexa.Unit.Percent"},"semantics":{"actionMappings":[{"@type":"ActionsToDirective","actions":["Alexa.Actions.Close"],"directive":{"name":"SetRangeValue","payload":{"rangeValue":100}}},{"@type":"ActionsToDirective","actions":["Alexa.Actions.Open"],"directive":{"name":"SetRangeValue","payload":{"rangeValue":0}}},{"@type":"ActionsToDirective","actions":["Alexa.Actions.Lower"],"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":20,"rangeValueDeltaDefault":false}}},{"@type":"ActionsToDirective","actions":["Alexa.Actions.Raise"],"directive":{"name":"AdjustRangeValue","payload":{"rangeValueDelta":-20,"rangeValueDeltaDefault":false}}}],"stateMappings":[{"@type":"StatesToValue","states":["Alexa.States.Closed"],"value":0},{"@type":"StatesToRange","states":["Alexa.States.Open"],"range":{"minimumValue":1,"maximumValue":100}}]}}]},{"endpointId":"cfg_lamellen_west-alias1","friendlyName":"Westlamellen","description":"Lamellenverstellung West in Prozent by SmartHomeNG","manufacturerName":"SmarthomeNG","displayCategories":[],"cookie":{"extraDetail1":"config.beschattung.lamellenwest.blindpos"},"capabilities":[{"type":"AlexaInterface","interface":"Alexa","version":"3"},{"type":"AlexaInterface","interface":"Alexa.EndpointHealth","version":"3","properties":{"supported":[{"name":"connectivity"}],"proactivelyReported":false,"retrievable":true}},{"type":"AlexaInterface","interface":"Alexa.RangeController","version":"3","properties":{"supported":[{"name":"rangeValue"}],"proactivelyReported":false,"retrievable":false}}]}]}}}
                END RequestId: 54292e62-776d-44f0-8e7e-2ba4ee6e46f7
                REPORT RequestId: 54292e62-776d-44f0-8e7e-2ba4ee6e46f7    Duration: 301.30 ms    Billed Duration: 302 ms    Memory Size: 512 MB    Max Memory Used: 61 MB    
                ​
                Daher scheint die Verbindung Lambda smarthome zu klappen, leider findet er keine neuen Geräte in der App gibt es da neuen Quellcode für die Lamda Funktion der alte lässt sich nämlich auch nicht mehr kompilieren

                Hat da jemand aktuell mal mit zu tun gehabt ?

                Kleines Update: Ich habe ChatGPT gebeten das alte Script auf Nodejs24.x umzubauen


                Code:
                const https = require('https');
                
                exports.handler = async (event) => {
                
                  const data = JSON.stringify(event);
                
                  const options = {
                
                    hostname: process.env.SMARTHOME_HOST,
                
                    port: process.env.SMARTHOME_PORT,
                
                    path: process.env.SMARTHOME_PATH,
                
                    method: 'POST',
                
                    auth: process.env.SMARTHOME_AUTH,
                
                    headers: {
                
                      'Content-Type': 'application/json',
                
                      'Content-Length': Buffer.byteLength(data)   // <-- korrigiert
                
                    }
                
                  };
                
                  console.log("requesting", data);
                
                  try {
                
                    const responseData = await new Promise((resolve, reject) => {
                
                      const req = https.request(options, (res) => {
                
                        console.log(`HTTP ${res.statusCode}`);
                
                        let body = '';
                
                        res.setEncoding('utf8');
                
                        res.on('data', (chunk) => {
                
                          body += chunk;
                
                        });
                
                        res.on('end', () => {
                
                          console.log("raw response:", body);
                
                          resolve({ statusCode: res.statusCode, body });
                
                        });
                
                      });
                
                      req.on('error', (err) => {
                
                        console.error("request failed", err);
                
                        reject(err);
                
                      });
                
                      req.write(data);
                
                      req.end();
                
                    });
                
                    const parsed = JSON.parse(responseData.body);
                
                    if (responseData.statusCode === 200) {
                
                      console.info("OK", JSON.stringify(parsed));
                
                      return parsed;
                
                    } else {
                
                      console.error("Failed", JSON.stringify(parsed));
                
                      throw new Error("DependentServiceUnavailableError");
                
                    }
                
                  } catch (err) {
                
                    console.error("Error:", err);
                
                    throw err;
                
                  }
                
                };
                Der hat dann folgendes Log geworfen , dh die Request von Alexa geht durch und die Verbindung zu Smarthome steht auch
                er kann das Ganze aber nicht verarbeiten sonst würden die neuen Geräte in Alexa angezeigt ....

                HTML-Code:
                  [TD]2025-11-21T21:26:31.221+01:00[/TD]
                  [TD]2025-11-21T20:26:31.221Z - INFO raw response: {"event": {"header": {"namespace": "Alexa.Discovery", "name": "Discover.Response", "payloadVersion": "3", "messageId": "60f05652d2014849bd07570aaf25722b"}, "payload": {"endpoints": [{"endpointId": "config_lueftung", "friendlyName": "L\u00fcftung", "description": "L\u00fcftungsturbo f\u00fcr 5 min by SmartHomeNG", "manufacturerName": "SmarthomeNG", "displayCategories": ["OTHER"], "cookie": {"extraDetail1": "config.HeizungLueftung.Lueftung"}, "capabilities": [{"type": "AlexaInterface", "interface": "Alexa", "version": "3"}, {"type": "AlexaInterface", "interface": "Alexa.EndpointHealth", "version": "3", "properties": {"supported": [{"name": "connectivity"}], "proactivelyReported": false, "retrievable": true}}, {"type": "AlexaInterface", "interface": "Alexa.PowerController", "version": "3", "properties": {"supported": [{"name": "powerState"}], "proactivelyReported": false, "retrievable": true}}]}, {"endpointId": "cfg_rollo_eg", "friendlyName": "Rolll\u00e4den Erdgeschoss", "description": "Rolllaeden EG in Prozent by SmartHomeNG", "manufacturerName": "SmarthomeNG", "displayCategories": ["EXTERIOR_BLIND"], "cookie": {"extraDetail1": "config.beschattung.rolloeg.pos"}, "capabilities": [{"type": "AlexaInterface", "interface": "Alexa", "version": "3"}, {"type": "AlexaInterface", "interface": "Alexa.EndpointHealth", "version": "3", "properties": {"supported": [{"name": "connectivity"}], "proactivelyReported": false, "retrievable": true}}, {"type": "AlexaInterface", "interface": "Alexa.RangeController", "version": "3", "properties": {"supported": [{"name": "rangeValue"}], "proactivelyReported": false, "retrievable": true}, "instance": "cfg_rollo_eg", "capabilityResources": {"friendlyNames": [{"@type": "asset", "value": {"assetId": "Alexa.Setting.Opening"}}]}, "configuration": {"supportedRange": {"minimumValue": 0, "maximumValue": 100, "precision": 1},[/TD]
                Viele Grüße Christian
                Zuletzt geändert von Volzor; 21.11.2025, 22:19.

                Kommentar


                  Hallo Volzor,

                  probier mal bitte folgende Lambda-Funktion unter NodeJs 24, ich konnte das nicht final testen (nur aus der Lambda raus).
                  Gerne Rückmeldung

                  Code:
                  export const handler = async(event) => {
                  try {
                    
                      console.log("event", event);
                    
                      var myHeader = {
                          'Content-Type': 'application/json',
                          'Authorization': 'Basic ' + Buffer.from(process.env.SMARTHOME_AUTH, "utf-8").toString("base64"),
                          'Content-Length': Buffer.byteLength(JSON.stringify(event))
                        }
                  
                      var myUrl = "https://" + process.env.SMARTHOME_HOST + ":" + process.env.SMARTHOME_PORT + process.env.SMARTHOME_PATH
                      console.log(myUrl)
                      const response = await fetch(myUrl, {
                        method: 'POST',
                        headers : myHeader,
                        body: JSON.stringify(event)
                        
                      });
                      const data = await response.json();
                      console.log(data);
                   
                    if (response.status == 200) {
                      return {
                        statusCode: response.statusCode,
                        body: JSON.stringify(data),
                      };
                    }
                    else
                    {
                      return {
                        statusCode: response.statusCode,
                        body: response.text()
                      };
                    }
                    
                  
                  }
                  catch (error) {
                    console.error(error);
                    return {
                      statusCode: 500,
                      body: JSON.stringify(error),
                    };
                  }
                  }
                  Viele Grüße
                  Andre

                  Kommentar


                    Hallo Andre,


                    vielen dank erstmal für deine Antwort.
                    ich hab es mit deinem Code probiert, dann kam folgendes Log

                    PHP-Code:

                      2025
                    -11-23T21:57:08.892+01:00

                    INIT_START Runtime Version
                    nodejs:24.v25 Runtime Version ARNarn:aws:lambda:eu-west-1::runtime:9789c897924b8267853973afab7f065eaf98a441d27aa14bb62b2560df1ea5a0

                      INIT_START Runtime Version
                    nodejs:24.v25 Runtime Version ARNarn:aws:lambda:eu-west-1::runtime:9789c897924b8267853973afab7f065eaf98a441d27aa14bb62b2560df1ea5a0   2025-11-23T21:57:09.035+01:00

                    2025
                    -11-23T20:57:09.035Z ERROR (node:2WarningFailed to load the ES module: /var/task/index.jsMake sure to set "type""module" in the nearest package.json file or use the .mjs extension.

                    (Use `
                    node --trace-warnings ...to show where the warning was created)

                      
                    2025-11-23T20:57:09.035Z ERROR (node:2WarningFailed to load the ES module: /var/task/index.jsMake sure to set "type""module" in the nearest package.json file or use the .mjs extension. (Use `node --trace-warnings ...to show where the warning was created)   2025-11-23T21:57:09.038+01:00 2025-11-23T20:57:09.038Z ERROR Init Error {"errorType":"Runtime.UserCodeSyntaxError","errorMessage":"SyntaxError: Unexpected token 'export'","name":"Runtime.UserCodeSyntaxError","stack":["/var/task/index.js:1","export const handler = async(event) => {","^^^^^^","","SyntaxError: Unexpected token 'export'"," at wrapSafe (node:internal/modules/cjs/loader:1691:18)"," at Module._compile (node:internal/modules/cjs/loader:1734:20)"," at Object..js (node:internal/modules/cjs/loader:1893:10)"," at Module.load (node:internal/modules/cjs/loader:1480:32)"," at Module._load (node:internal/modules/cjs/loader:1299:12)"," at TracingChannel.traceSync (node:diagnostics_channel:328:14)"," at wrapModuleLoad (node:internal/modules/cjs/loader:244:24)"," at cjsLoader (node:internal/modules/esm/translators:342:5)"," at ModuleWrap.<anonymous> (node:internal/modules/esm/translators:234:7)"," at ModuleJob.run (node:internal/modules/esm/module_job:377:25)"]}  ​ 
                    kann das mit der Dateiendung .mjs zu tun haben ?
                    Dann habe ich zurück gewechselt auf den generierten Code oben und habe die Items auf wenige Lampen reduziert, und siehe da
                    er hat sie gefunden und ich kann sie Ansteuern 😍.
                    Jetzt bin ich gerade dabei Stück für Stück meine Items zu suchen um die Fehlerhaften zu finden. Ich halte euch auf dem Laufenden.

                    Kleines Update: Teilweise hat er auch keine Neuen Items erkannt weil die neuen genauso hießen wie die Alten(Payload2). Auf die altem außer die in Routinen oder Gruppen habe ich aber aktuell gar kein Zugriff mehr in der App darum kann ich sie erstmals nicht löschen. Kennt da jemand eine Alternative evtl über die Developper Seite?

                    Viele Grüße
                    Christian
                    Zuletzt geändert von Volzor; 23.11.2025, 23:42.

                    Kommentar


                      Du musst in der Alexa App bei Geräte nach dem nicht reagierenden Gerät suchen (Lupe) wenn wer es findet, drauf drücken und dann oben rechts das Zahnrad. Da kann na es löschen.

                      Kommentar

                      Lädt...
                      X