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. ioBroker Allgemein
  4. Amazo-dash-button nur eigene Geräte

NEWS

  • Monatsrückblick Januar/Februar 2026 ist online!
    BluefoxB
    Bluefox
    17
    1
    483

  • Jahresrückblick 2025 – unser neuer Blogbeitrag ist online! ✨
    BluefoxB
    Bluefox
    17
    1
    5.2k

  • Neuer Blogbeitrag: Monatsrückblick - Dezember 2025 🎄
    BluefoxB
    Bluefox
    13
    1
    1.4k

Amazo-dash-button nur eigene Geräte

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
2 Beiträge 2 Kommentatoren 189 Aufrufe
  • Ä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.
  • sissiwupS Offline
    sissiwupS Offline
    sissiwup
    schrieb am zuletzt editiert von
    #1

    Hi,

    ich habe den Adapter mal gepatched, so dass nur noch Geräte gefunden werden, die VOLL-QUalifiziert in der Config eingeben werden:

    (bei mir hat er nicht nur Fire-TV sondern auch OBI-Steckdosen etc. gefunden)

    Es müssen dafür nur drei kleine Änderungen im main.js gemacht werden:

    (/opt/iobroker/node_modules/iobroker.amazon-dash)

    
     var MACs = [     // alle dafault löschen
    ];
    
     .......
                if (macOK.length > 11) {                
                    MACs.push(macOK.substring(0,12));
    ....... 
                var needle = mac.slice(0, 17).toString().toUpperCase().split(':').join('');
    
    

    Danach in Config:
    609_bildschirmfoto_2018-08-11_um_22.16.58.png

    Die vorher gefundenen überflüssigen Datenpunkte einfach löschen.

    /* jshint -W097 */// jshint strict:false
    /*jslint node: true */
    "use strict";
    
    var utils = require(__dirname + '/lib/utils');
    var adapter = utils.adapter('amazon-dash');
    var int_array_to_hex = require('./helpers.js').int_array_to_hex;
    var pcap = require('pcap');
    
    var MACs = [
    ];
    
    String.prototype.replaceAll = function (search, replacement) {
        var target = this;
        return target.replace(new RegExp(search, 'g'), replacement);
    };
    
    adapter.on('ready', function () {
        main();
    });
    
    // is called when adapter shuts down - callback has to be called under any circumstances!
    adapter.on('unload', function (callback) {
        try {
            adapter.log.info('cleaned everything up...');
            callback();
        } catch (e) {
            callback();
        }
    });
    
    function main() {
        var k;
        if (adapter.config.devices && adapter.config.devices.length) {
            for (k = 0; k < adapter.config.devices.length; k++) {
                var mac = adapter.config.devices[k].mac;
                var macOK = mac.replaceAll(":", "");
    
                if (macOK.length > 11) {                
                    MACs.push(macOK.substring(0,12));
                    adapter.log.debug('manual MAC : ' + MACs.push(macOK.substring(0,6)));
                }
            }
        }
    
        MACs = remove_duplicates(MACs);
    
        if (typeof adapter.config.interface == 'undefined' || adapter.config.interface === '') {
            adapter.config.interface = "";
            adapter.log.info('starting pcap session on default interface');
        } else {
            adapter.log.info('starting pcap session on interface '+adapter.config.interface);
        }
    
        var pcap_session = pcap.createSession(adapter.config.interface, "arp");
    
        pcap_session.on('packet', function (raw_packet) {
            var packet = pcap.decode.packet(raw_packet);
            if (packet.payload.ethertype === 2054) {
    
                var mac = packet.payload.payload.sender_ha.addr;
                mac = int_array_to_hex(mac);
    
                var nice_mac = mac.replaceAll(":", "-");
                var needle = mac.slice(0, 17).toString().toUpperCase().split(':').join('');
    
                adapter.log.debug('needle MAC : ' + needle);
    
                if (MACs.indexOf(needle) > -1) {
                    adapter.setObjectNotExists(nice_mac + ".pressed", {
                        type: "state",
                        common: {
                            name: "Dash button pressed",
                            type: "boolean",
                            role: "switch",
                            read: true,
                            write: false
                        }
                    });
    
                    adapter.setState(nice_mac + ".pressed", {val: true, ack: true});
    
                    setTimeout(function () {
                        adapter.setState(nice_mac + ".pressed", {val: false, ack: true});
                    }, 5000);
    
                    adapter.setObjectNotExists(nice_mac + ".lastPressed", {
                        type: "state",
                        common: {
                            name: "Dash button last pressed date",
                            type: "string",
                            role: "indicator.date",
                            read: true,
                            write: false
                        }
                    });
    
                    adapter.setState(nice_mac + ".lastPressed", {val: (new Date()).toISOString(), ack: true});
    
                    adapter.setObjectNotExists(nice_mac + ".switch", {
                        type: "state",
                        common: {
                            name: "Dash button state toggle",
                            type: "boolean",
                            role: "switch",
                            read: true,
                            write: false
                        }
                    });
    
                    adapter.getState(nice_mac + ".switch", function (err, state) {
                        if (!state || err)
                            adapter.setState(nice_mac + ".switch", {val: false, ack: true});
                        else {
                            var now = new Date();
                            if (now.getTime() - state.lc > 5000) {
                                adapter.setState(nice_mac + ".switch", {val: !state.val, ack: true});
                            }
                        }
                    });
                }
            }
        });
    }
    
    function remove_duplicates(arr) {
        var obj = {};
        var ret_arr = [];
        for (var i = 0; i < arr.length; i++) {
            obj[arr[i]] = true;
        }
        for (var key in obj) {
            ret_arr.push(key);
        }
        return ret_arr;
    }
    

    Hab es mal als PULL-Request auf github eingestellt.

    MfG

    Sissi

    –-----------------------------------------

    1 CCU3 1 CCU2-Gateway 1 LanGateway 1 Pi-Gateway 1 I7 für ioBroker/MySQL


    1 Antwort Letzte Antwort
    0
    • MicM Offline
      MicM Offline
      Mic
      Developer
      schrieb am zuletzt editiert von
      #2

      Top, vielen Dank!

      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

      258

      Online

      32.7k

      Benutzer

      82.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