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. BLE Adapter neues Plugins - howto?

NEWS

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

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.1k

BLE Adapter neues Plugins - howto?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
1 Beiträge 1 Kommentatoren 28 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.
  • Pedder007P Offline
    Pedder007P Offline
    Pedder007
    schrieb am zuletzt editiert von Pedder007
    #1

    Hallo zusammen,
    ich habe in den letzten Tagen mit Hilfe von Gemini einen Mopeka Pro Bluetooth Gasflaschensensor via Raspi Bluetooth und dem BLE-Adapter in ioBroker integriert.

    Im ersten Versuch ging es den Weg über ein dediziertes Mopeka Plugin, so wie es ja wahrscheinlich im Adapter vorgesehen ist. Aber egal was man anstellte, das Plugin wurde einfach nicht eingelesen. Alle anderen schon, Xiaomi etc..

    Gemini ist dann den Weg gegangen und hat den zugehörigen Code direkt in die _default.js des Adapters mit eingebaut, was auch grundsätzlich funktioniert. Nachteil ist nun natürlich, dass die _default.js bei jedem Update des Adapters wieder überschrieben wird und man die Integration danach neu basteln muss.

    Meine Frage in die Runde, oder evtl. auch direkt an @alcalzone :
    Gibt es einen Trick dabei, wie man ein neues Plugin zum laufen bekommt, bzw. wie überzeugt man den Adapter es zu laden?

    Und ja natürlich hatte ich den Namen der Datei in die Adapter-Konfig eingetragen ;-)

    Falls das hilft, hier ggf. direkt das Plugin, welches im gleichen Verzeichnis abgelegt ist wie die anderen Plugins:

    "use strict";
    var import_global = require("../lib/global");
    
    function parseData(raw) {
      if (raw.length === 1) {
        // Hier war in der neuen default.js ein Unterschied. 
        // Wir nehmen die Version, die auch in der neuen default.js für andere Daten genutzt wird.
        return raw; 
      } else {
        return raw.toString("hex");
      }
    }
    
    const plugin = {
      name: "mopeka_pro",
      description: "Handles the Mopeka Pro Check LPG Sensor",
      advertisedServices: [],
      isHandling: (peripheral) => {
        return (
          peripheral.advertisement &&
          peripheral.advertisement.manufacturerData &&
          peripheral.advertisement.manufacturerData.length >= 10 &&
          peripheral.advertisement.manufacturerData.readUInt16LE(0) === 0x0059
        );
      },
      createContext: (peripheral) => peripheral,
      defineObjects: (peripheral) => {
        const stateObjects = [];
        stateObjects.push({
          id: `mopeka_level_raw`,
          common: { role: "value.level", name: "Mopeka Raw Level", type: "number", unit: "us", read: true, write: false },
          native: void 0
        });
        stateObjects.push({
          id: `mopeka_temperature`,
          common: { role: "value.temperature", name: "Mopeka Temperature", type: "number", unit: "°C", read: true, write: false },
          native: void 0
        });
        stateObjects.push({
          id: `mopeka_battery_v`,
          common: { role: "value.voltage", name: "Mopeka Battery Voltage", type: "number", unit: "V", read: true, write: false },
          native: void 0
        });
        stateObjects.push({
          id: `mopeka_battery_percent`,
          common: { role: "value.battery", name: "Mopeka Battery Percent", type: "number", unit: "%", read: true, write: false },
          native: void 0
        });
    
        return {
          device: { common: void 0, native: void 0 },
          channels: [],
          states: stateObjects
        };
      },
      getValues: (peripheral) => {
        const ret = {};
        try {
          const data = peripheral.advertisement.manufacturerData;
          const rawBat = data.readUInt8(2);
          let voltage = (rawBat < 10) ? rawBat : ((rawBat & 0x7F) / 32.0 + 2.0);
          const rawTemp = data.readUInt8(4);
          const tempC = (rawTemp & 0x3F) - 40;
          const rawLevel = data.readUInt16LE(3) & 0x3FFF; 
    
          ret["mopeka_level_raw"] = rawLevel;
          ret["mopeka_temperature"] = tempC;
          ret["mopeka_battery_v"] = Math.round(voltage * 100) / 100;
          ret["mopeka_battery_percent"] = Math.min(100, Math.max(0, Math.round((voltage - 2.2) / 0.8 * 100)));
    
        } catch (e) {
          import_global.Global.adapter.log.error(`[Mopeka Plugin] Parse Error for ${peripheral.address}: ${e}`);
        }
    
        return ret;
      }
    };
    
    module.exports = plugin;
    

    Pedder
    All @Proxmox/Bookworm auf HP Elitedesk 800 G4; Zigbee: ZigStar (LAN), ~110Devices
    Unifi, Motioneye/3Reolinks, PiHole, Bosch CS7800i via BBQKees/EMS-ESP, Fronius/BYD 11kWp via Modbus
    Under construction: Smart-WoMo auf Raspi4

    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

    843

    Online

    32.6k

    Benutzer

    82.1k

    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