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
    17
    1
    3.8k

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

  • Weihnachtsangebot 2025! 🎄
    BluefoxB
    Bluefox
    25
    1
    2.5k

BLE Adapter neues Plugins - howto?

Geplant Angeheftet Gesperrt Verschoben ioBroker Allgemein
4 Beiträge 3 Kommentatoren 82 Aufrufe 3 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/Trixie 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
    • FuncarettaF Offline
      FuncarettaF Offline
      Funcaretta
      schrieb am zuletzt editiert von
      #2

      Moin, neben dem Script existiert im Verzeichnis immer auch eine gleichnamige Datei mit Extention .map. Kann es sein das die noch einzurichten und anzupassen ist?

      //MYPROG EXEC PGM=IEFBR14

      Gruß HH

      Pedder007P 1 Antwort Letzte Antwort
      0
      • FuncarettaF Funcaretta

        Moin, neben dem Script existiert im Verzeichnis immer auch eine gleichnamige Datei mit Extention .map. Kann es sein das die noch einzurichten und anzupassen ist?

        Pedder007P Offline
        Pedder007P Offline
        Pedder007
        schrieb zuletzt editiert von
        #3

        @Funcaretta Moin,
        ich stecke da selber leider gar nicht so tief drin um Dir diese Frage beantworten zu können.
        Grundsätzlich funktioniert das aber so bei mir. Leider gab es bisher ja auch keine andere Antwort auf meine Anfrage.

        Bzgl. der korrekten Interpretation der Daten vom Mopeka Sensor sind wir allerdings dann erst in den letzten Tagen so weit gekommen, dass es nun halbwegs zuverlässig läuft. Da es sich letztlich um einen Ultraschall-Sensor handelt, der ein Gas-Gemisch-Level auslotet, welches dann auch noch Temperaturschwankungen unterliegt, war das gar nicht so einfach.
        Ich habe es nun erstmal wieder im Probebetrieb zur weiteren Beobachtung.

        Pedder
        All @Proxmox/Trixie 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

        Jey CeeJ 1 Antwort Letzte Antwort
        0
        • Pedder007P Pedder007

          @Funcaretta Moin,
          ich stecke da selber leider gar nicht so tief drin um Dir diese Frage beantworten zu können.
          Grundsätzlich funktioniert das aber so bei mir. Leider gab es bisher ja auch keine andere Antwort auf meine Anfrage.

          Bzgl. der korrekten Interpretation der Daten vom Mopeka Sensor sind wir allerdings dann erst in den letzten Tagen so weit gekommen, dass es nun halbwegs zuverlässig läuft. Da es sich letztlich um einen Ultraschall-Sensor handelt, der ein Gas-Gemisch-Level auslotet, welches dann auch noch Temperaturschwankungen unterliegt, war das gar nicht so einfach.
          Ich habe es nun erstmal wieder im Probebetrieb zur weiteren Beobachtung.

          Jey CeeJ Online
          Jey CeeJ Online
          Jey Cee
          Developer
          schrieb zuletzt editiert von
          #4

          @Pedder007 kannst du mir einen gefallen tun? Kannst du mal den Bluetooth Adapter installieren, den Sensor versuchen zu pairen und mir die Objekte und das Log zeigen.
          Der Bluetooth Adapter ist etwas Generischer als der BLE Adapter und Implementiert verschiedene auf Bluetooth basierende Protokolle wie BThome.

          Ich hab damit schon mein Smartphone gekoppelt und Mediensteuerung übernommen (leider wird dabei auch das Audio an den Adapter gesendet).

          https://github.com/Skeletor-ai/ioBroker.bluetooth

          Persönlicher Support
          Spenden -> paypal.me/J3YC33

          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

          635

          Online

          32.7k

          Benutzer

          82.4k

          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