Skip to content
  • Home
  • Aktuell
  • Tags
  • 0 Ungelesen 0
  • Kategorien
  • Unreplied
  • Beliebt
  • GitHub
  • Docu
  • Hilfe
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Standard: (Kein Skin)
  • Kein Skin
Einklappen
ioBroker Logo

Community Forum

donate donate
  1. ioBroker Community Home
  2. Deutsch
  3. Cloud Dienste
  4. [gelöst] Javascript-Gerät (Webrequest) für Alexa anlegen?

NEWS

  • UPDATE 31.10.: Amazon Alexa - ioBroker Skill läuft aus ?
    apollon77A
    apollon77
    48
    3
    8.6k

  • Monatsrückblick – September 2025
    BluefoxB
    Bluefox
    13
    1
    2.1k

  • Neues Video "KI im Smart Home" - ioBroker plus n8n
    BluefoxB
    Bluefox
    16
    1
    2.8k

[gelöst] Javascript-Gerät (Webrequest) für Alexa anlegen?

Geplant Angeheftet Gesperrt Verschoben Cloud Dienste
23 Beiträge 5 Kommentatoren 7.5k Aufrufe 1 Watching
  • Älteste zuerst
  • Neuste zuerst
  • Meiste Stimmen
Antworten
  • In einem neuen Thema antworten
Anmelden zum Antworten
Dieses Thema wurde gelöscht. Nur Nutzer mit entsprechenden Rechten können es sehen.
  • VardaaranV Offline
    VardaaranV Offline
    Vardaaran
    schrieb am zuletzt editiert von
    #11

    Habe es geschafft! :P

    Meine Alexa schaltet und dimmt mein Licht jetzt exzellent.

    Nochmals vielen, vielen Dank für die Hilfe!

    Mein Script sieht jetzt so aus:

    ! ````
    var logOn = false; // Skript Logausgabe ein- (true) / ausschalten (false). Fehler werden immer ausgegeben.
    var forecreation = false; // Default: false. true: Datenpunkte werden überschrieben (wenn z.B. Bezeichnungen geändert wurden)
    var http = require('http'); // Node Module http verwenden
    ! // Datenpunkte anlegen:
    // -----------------------------------------------------------------------------
    var idDatenpunkt = "alexa.arbeitszimmer.raumlicht"; // Pfad und Name, unter dem in der Javascript-Instanz der Datenpunkte angelegt wird
    createState(idDatenpunkt, 0, forecreation, { // Datenpunkt wird angelegt
    name: 'Arbeitszimmer Raumlicht',
    desc: 'Hauptbeleuchtung des Arbeitszimmers',
    type: 'number',
    unit: '%',
    def: 0,
    min: 0,
    max: 100,
    role: 'value'
    });
    ! // Funktionen:
    // -----------------------------------------------------------------------------
    function requestSenden(options) {
    var req = http.get(options, function(res) {
    if(logOn) log('STATUS: ' + res.statusCode); // Statuscode
    if(logOn) log('HEADERS: ' + JSON.stringify(res.headers)); // Header (Rückmeldung vom Webserver)
    ! // Buffer the body entirely for processing as a whole.
    var bodyChunks = [];
    var chunkLine = 0;
    res.on('data', function(chunk) {
    chunkLine = chunkLine + 1;
    if(logOn) log("Zeilennummer: " + chunkLine+ " ,Inhalt: " + chunk);

        // Hier können die einzelnen Zeilen verarbeitet werden...
        bodyChunks.push(chunk);
    
    }).on('end', function() {
        if(logOn) log("ARRAY mit den einzelnen Zeilen: " + bodyChunks);
        if(logOn) log("ARRAY Länge: " + bodyChunks.length);
    

    ! var body = Buffer.concat(bodyChunks);
    ! if(logOn) log('BODY: ' + body); // ...und/oder das Gesamtergebnis.
    ! });
    });
    ! req.on('error', function(e) { // Fehler abfangen
    log('ERROR: ' + e.message,"warn");
    });
    }
    ! // Level Einstellen
    // -----------------------------------------------------------------------------
    function leveldef(dp) {
    dpWert = dp.state.val;

    if (dpWert === 0) {
        rqPath = '/control?cmd=off,typ,it,did,974500,aid,2,acmd,0,seq,5&id=2';
    } else {
        lichtlvl = Math.ceil(dpWert / 100 * 16);
        rqPath = '/control?cmd=dim,typ,it,did,974500,aid,2,acmd,5,lvl,' + lichtlvl + ',seq,5&id=2';
    }
    
    var options = {             // URL, die abgefragt, bzw. gesendet werden soll
      host: '192.168.0.131',
      path: rqPath,
      port: 31,
      auth: 'BENUTZER:PASSWORT',
      method: 'GET'
    };
    requestSenden(options);
    

    }

    ! // Abfrage des Datenpunkts
    // -----------------------------------------------------------------------------
    on({id: "javascript.0." + idDatenpunkt, change:'any'}, function (dp) {
    leveldef(dp);
    });

    
    Bezüglich Werte hatte ich auch eine Eingebung auf dem Klo - ja, da kommen oft die besten Ideen: ;) :D
    
    Man muss den Wert des Datenpunktes mit "unit: '%'" als %-Wert definieren. Macht man dies nicht, rechnet der Cloud-Adapter die Prozente von Alexa mit dem aktuellen Wert des Datenpunkts.
    
    Steht der DP z.B. auf 50 und sagt Alexa: "setze auf 50%" dann bekommt man: 50% von 50 = 25…
    
    Deswegen, und weil ich zwischen 1% und 6% immer die erste Stufe meiner Lampe möchte, habe ich mich für die " Rechnungs-Variante" entschieden.
    1 Antwort Letzte Antwort
    0
    • ruhr70R Offline
      ruhr70R Offline
      ruhr70
      schrieb am zuletzt editiert von
      #12

      Super! Und danke für die Rückmeldung :-)

      Kannst Du bitte im ersten Post vor dem Betreff noch ein [gelöst] setzen.

      Viel Spaß mit ioBroker und Alexa!

      Adapter: Fritzbox, Unify Circuit
      Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

      1 Antwort Letzte Antwort
      0
      • VardaaranV Offline
        VardaaranV Offline
        Vardaaran
        schrieb am zuletzt editiert von
        #13

        @ruhr70:

        (…)Kannst Du bitte im ersten Post vor dem Betreff noch ein [gelöst] setzen.(…) `
        Sehr gerne!

        Darf ich zukünftige Fragen zu diesem Thema dennoch weiterhin hier posten?

        1 Antwort Letzte Antwort
        0
        • ruhr70R Offline
          ruhr70R Offline
          ruhr70
          schrieb am zuletzt editiert von
          #14

          klar :-)

          Adapter: Fritzbox, Unify Circuit
          Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

          1 Antwort Letzte Antwort
          0
          • VardaaranV Offline
            VardaaranV Offline
            Vardaaran
            schrieb am zuletzt editiert von
            #15

            Habe mal noch eine doofe Anfänger-Frage, die ich trotz Suche nicht beantwortet bekomme: :oops:

            Kann ich den Zustand eines Datenpunkts auch über einen HTML-Link in einem Browser ändern? Wenn ja, wie? Wenn möglich ohne ioBroker.vis…

            Vielen Dank im Voraus!

            1 Antwort Letzte Antwort
            0
            • ruhr70R Offline
              ruhr70R Offline
              ruhr70
              schrieb am zuletzt editiert von
              #16

              @Vardaaran:

              Kann ich den Zustand eines Datenpunkts auch über einen HTML-Link in einem Browser ändern? Wenn ja, wie? Wenn möglich ohne ioBroker.vis… `

              Schau mal unter: https://github.com/ioBroker/ioBroker.si … DME.md#set

              mhhh… neue Fragen in einem [gelöst] Thread ist doch nicht so glücklich :D

              Am Besten machst Du für eine neue Frage zu einem neuen Thema ein Thread auf.

              Ich denke, dann wird Dir schneller geholfen, da man dann auch eher reinschaut :)

              Adapter: Fritzbox, Unify Circuit
              Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

              1 Antwort Letzte Antwort
              0
              • VardaaranV Offline
                VardaaranV Offline
                Vardaaran
                schrieb am zuletzt editiert von
                #17

                @ruhr70:

                Schau mal unter: https://github.com/ioBroker/ioBroker.si … DME.md#set

                mhhh… neue Fragen in einem [gelöst] Thread ist doch nicht so glücklich :D

                Am Besten machst Du für eine neue Frage zu einem neuen Thema ein Thread auf.

                Ich denke, dann wird Dir schneller geholfen, da man dann auch eher reinschaut :) `

                Vielen Dank!

                Werde in Zukunft einen neuen Thread aufmachen. Danke für den Hinweis.

                Soll ich mit der oberen Frage einen neuen Thread erstellen und gleich als gelöst markieren?

                Nicht ernst gemeint… ;) :D

                EDIT: Etwas zu früh gefreut! :(

                Was mache ich falsch?
                > [<link_text text="http://192.168.0.132:8087/set/javascrip … int">Licht">http://192.168.0.132:8087/set/javascript.0.alexa.arbeitszimmer.raumlicht?value=100&prettyPrint">Licht</link_text> an](<URL url=)
                Kommt immer:

                ! ![](</s><URL url=)<link_text text="http://forum.iobroker.net/download/file ... 30abd09bb2">http://forum.iobroker.net/download/file.php?mode=view&id=10857&sid=d1760c5c1ca4747d16e29b30abd09bb2</link_text>" /> 2335_link01.jpg

                1 Antwort Letzte Antwort
                0
                • ruhr70R Offline
                  ruhr70R Offline
                  ruhr70
                  schrieb am zuletzt editiert von
                  #18

                  Firewall?

                  Falsche IP von ioBroker? Deine andere Abfrage war im Netz 192.168.1.x und diese im Netz 192.168.0.x?

                  Im Admin vom Adapter nicht das Netz (oder alle Netze 0.0.0.0? zugelassen?

                  Adapter nicht eingeschaltet?

                  327_simple_api.jpg

                  Ich habe das gerade nachgestellt. Bei mir funktioniert es genau so, wie Du die URL aufgebaut hast:

                  http://172.16.130.210:8087/set/javascript.2.test.b?value=100&prettyPrint
                  

                  Antwort:

                  {
                    "id": "javascript.2.test.b",
                    "value": 100,
                    "val": 100
                  }
                  

                  Und im Objekt steht der Wert auch :-)

                  Adapter: Fritzbox, Unify Circuit
                  Skripte: dynamic hue, Bluetooth Scan, Multi-Ereignisliste

                  1 Antwort Letzte Antwort
                  0
                  • VardaaranV Offline
                    VardaaranV Offline
                    Vardaaran
                    schrieb am zuletzt editiert von
                    #19

                    hust man sollte den API-Adapter natürlich auch aktivieren :oops:

                    Vielen Dank und verzeih meine Inkompetenz!

                    Klappt jetzt super!

                    1 Antwort Letzte Antwort
                    0
                    • T Offline
                      T Offline
                      thowans
                      schrieb am zuletzt editiert von
                      #20

                      Vielen Dank für dieses Thema und für die Antworten. Kann mir jemand sagen, ob ich das auf eine Website basierend auf benutzerdefinierten Design-Vorlage von hier https://www.templatemonster.com/de/ aus anwenden kann? Ich habe ein kleines Projekt, aber ich weiß nicht alle Momente, um es zu beenden.

                      1 Antwort Letzte Antwort
                      0
                      • HomoranH Nicht stören
                        HomoranH Nicht stören
                        Homoran
                        Global Moderator Administrators
                        schrieb am zuletzt editiert von
                        #21

                        Was hat das mit ioBroker zu tun?

                        Ist das Werbung?

                        Bitte um Klarstellung

                        Gruß

                        Rainer

                        kein Support per PN! - Fragen im Forum stellen - es gibt fast nichts, was nicht auch für andere interessant ist.

                        Benutzt das Voting rechts unten im Beitrag wenn er euch geholfen hat.

                        der Installationsfixer: curl -fsL https://iobroker.net/fix.sh | bash -

                        1 Antwort Letzte Antwort
                        0
                        • VardaaranV Offline
                          VardaaranV Offline
                          Vardaaran
                          schrieb am zuletzt editiert von
                          #22

                          @thowans:

                          Vielen Dank für dieses Thema und für die Antworten. Kann mir jemand sagen, ob ich das auf eine Website basierend auf benutzerdefinierten Design-Vorlage von hier https://www.templatemonster.com/de/ aus anwenden kann? Ich habe ein kleines Projekt, aber ich weiß nicht alle Momente, um es zu beenden. `
                          Ich verstehe die Frage auch nicht wirklich.

                          Was genau möchtest Du wie machen?

                          1 Antwort Letzte Antwort
                          0
                          • D Offline
                            D Offline
                            derrapf
                            schrieb am zuletzt editiert von
                            #23

                            Hallo alle

                            Ich muss diesen Thread nochmal aufwärmen. Mit dem hier genannten Stück Code ist es mir gelungen den Verstärker mit "Alexa Verstärker einschalten" ein- bzw. auszuschalten.

                            Ich habe dazu folgenden Code verwendet:

                            var code_ampon   = '19082600000100240708C3...101010102010102040506';
                            var code_ampoff  = '19082600000100240708C3...22F00905DB20001020101';
                            
                            var str_url_pre  = '/command?XC_PASS=pass&code=';
                            var str_url_tail = '&XC_FNC=Send2';
                            
                            var logOn           = true;     // Skript Logausgabe ein- (true) / ausschalten (false). Fehler werden immer ausgegeben.
                            var forecreation    = false;    // Default: false. true: Datenpunkte werden überschrieben (wenn z.B. Bezeichnungen geändert wurden)
                            var http = require('http');     // Node Module http verwenden
                            
                            var options_on = {
                              host: '192.168.111.155',   
                              path: str_url_pre + code_ampon + str_url_tail,    
                              port: 80,   
                              method: 'GET'                // in der Regel: "GET"
                            };
                            
                            var options_off = {
                              host: '192.168.1.155',
                              path: str_url_pre + code_ampoff + str_url_tail,
                              port: 80,
                              method: 'GET'                // in der Regel: "GET"
                            };
                            
                            // Datenpunkte anlegen:
                            // -----------------------------------------------------------------------------
                            
                            var pfad                = "mediola.alexatrigger" + "."; // PFad unter dem in der Javascript-Instanz die Datenpunkte angelegt werden sollen:
                            
                            // Datenpunktnamen:
                            var idAlexaVerstaerker      = pfad + 'Verstärker';
                            
                            createState(idAlexaVerstaerker, 0, forecreation, {
                                 name: 'Verstärker',
                                 desc: 'Trigger mit Level für Alexa um einen hhtp request zu erzeugen',
                                 type: 'number',
                                 unit: '',
                                 role: 'value'
                            });
                            
                            // Funktionen:
                            function mediolaRequest(state) {
                                var options = options_on;
                                log ('------------------------------------------------------');
                                log ('State=' +state);
                                if (state===0) {
                                   log('ausschalten');
                                   options = options_off;
                                } 
                                else if (state == 100) {
                                   log('einschalten');
                                   options = options_on;
                                } else if (state =="leiser") {
                                    options = option_leiser;
                                }
                            
                                log ('options=' +options.host + options.path);
                                var req = http.get(options, function(res) {});
                            
                                if(logOn) log("-------End-Result-------:");
                            
                                req.on('error', function(e) { // Fehler abfangen
                                    log('ERROR: ' + e.message,"warn");
                                });
                                log('-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-.-');
                            }
                            
                            //-------------  Verstärker -----------------------------------------------------
                            on({id: "javascript."+instance+"."+idAlexaVerstaerker ,change:'any'}, function (obj) {
                                if(logOn) log("Alexa Trigger Verstärker wurde geschrieben: " + obj.state.val +"/"+obj._id);
                                mediolaRequest(obj.state.val);
                                log ('Mediola-Ende');
                            });
                            
                            

                            Ich komme nun aber nicht dahinter was ich genau scripten muss um den Verstärker leiser oder lauter zu stellen.

                            Ich möchte also sagen können "Alexa Verstärker leiser" bzw. "Alexa Verstärker lauter".

                            Kann mir jemand auf die Sprünge helfen wie das anzustellen ist?

                            Gruss Ralf

                            1 Antwort Letzte Antwort
                            0
                            Antworten
                            • In einem neuen Thema antworten
                            Anmelden zum Antworten
                            • Älteste zuerst
                            • Neuste zuerst
                            • Meiste Stimmen


                            Support us

                            ioBroker
                            Community Adapters
                            Donate
                            FAQ Cloud / IOT
                            HowTo: Node.js-Update
                            HowTo: Backup/Restore
                            Downloads
                            BLOG

                            439

                            Online

                            32.4k

                            Benutzer

                            81.5k

                            Themen

                            1.3m

                            Beiträge
                            Community
                            Impressum | Datenschutz-Bestimmungen | Nutzungsbedingungen | Einwilligungseinstellungen
                            ioBroker Community 2014-2025
                            logo
                            • Anmelden

                            • Du hast noch kein Konto? Registrieren

                            • Anmelden oder registrieren, um zu suchen
                            • Erster Beitrag
                              Letzter Beitrag
                            0
                            • Home
                            • Aktuell
                            • Tags
                            • Ungelesen 0
                            • Kategorien
                            • Unreplied
                            • Beliebt
                            • GitHub
                            • Docu
                            • Hilfe