Advertisement
bdnstn

mg-gpo04.mjs

Jul 1st, 2025
269
0
Never
1
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
  1. import * as fz from "zigbee-herdsman-converters/converters/fromZigbee";
  2. import * as tz from "zigbee-herdsman-converters/converters/toZigbee";
  3. import * as m from "zigbee-herdsman-converters/lib/modernExtend";
  4. import * as reporting from "zigbee-herdsman-converters/lib/reporting";
  5. import * as tuya from "zigbee-herdsman-converters/lib/tuya";
  6. import type {DefinitionWithExtend} from "zigbee-herdsman-converters/lib/types";
  7.  
  8. export const definitions: DefinitionWithExtend[] = [
  9.     {
  10.         fingerprint: tuya.fingerprint("TS0601", ["_TZE200_oxsauvxh"]),
  11.         model: "MG-GPO04",
  12.         vendor: "MakeGood",
  13.         description: "Double Zigbee power point",
  14.         fromZigbee: [fz.identify, fz.on_off, fz.electrical_measurement, fz.metering, fz.power_on_behavior],
  15.         toZigbee: [tz.on_off, tz.power_on_behavior, tz.electrical_measurement_power],
  16.         extend: [
  17.             m.deviceEndpoints({endpoints: {right: 1, left: 2}}),
  18.             m.identify(),
  19.             tuya.modernExtend.tuyaOnOff({
  20.                 endpoints: ["right", "left"],
  21.                 powerOutageMemory: true,
  22.                 indicatorMode: true,
  23.                 childLock: true,
  24.                 onOffCountdown: true,
  25.                 electricalMeasurements: true,
  26.             }),
  27.         ],
  28.         configure: async (device, coordinatorEndpoint) => {
  29.             const endpoint1 = device.getEndpoint(1);
  30.             const endpoint2 = device.getEndpoint(2);
  31.             await tuya.configureMagicPacket(device, coordinatorEndpoint);
  32.             await reporting.bind(endpoint1, coordinatorEndpoint, ["genOnOff", "haElectricalMeasurement", "seMetering"]);
  33.             await reporting.onOff(endpoint1);
  34.             await reporting.rmsVoltage(endpoint1, {min: 5, max: 3600, change: 1});
  35.             await reporting.rmsCurrent(endpoint1, {min: 5, max: 3600, change: 1});
  36.             await reporting.activePower(endpoint1, {min: 5, max: 3600, change: 1});
  37.             await reporting.currentSummDelivered(endpoint1, {min: 5, max: 3600, change: 5});
  38.             await reporting.bind(endpoint2, coordinatorEndpoint, ["genOnOff"]);
  39.             endpoint1.saveClusterAttributeKeyValue("haElectricalMeasurement", {
  40.                 acCurrentDivisor: 1000,
  41.                 acCurrentMultiplier: 1,
  42.                 acPowerDivisor: 1,
  43.                 acPowerMultiplier: 1,
  44.                 acVoltageDivisor: 1,
  45.                 acVoltageMultiplier: 1,
  46.             });
  47.             endpoint1.saveClusterAttributeKeyValue("seMetering", {
  48.                 divisor: 100,
  49.                 multiplier: 1,
  50.             });
  51.             device.save();
  52.         },
  53.         meta: {
  54.             multiEndpoint: true,
  55.             multiEndpointSkip: ["power", "current", "voltage", "energy"],
  56.         },
  57.     },
  58. ];
Advertisement
Comments
  • responsive02
    7 hours
    # text 0.27 KB | 0 0
    1.  
    2. https://bigwarp.io/jq3lr11jg7v3
    3.  
    4. https://bigwarp.io/oic40kp7dh27
    5.  
    6. https://bigwarp.io/xc13z8c97ulu
    7.  
    8. https://bigwarp.io/7quiw47fvo2p
    9.  
    10. https://bigwarp.io/15hyup7w20yd
    11.  
    12. https://bigwarp.io/oducs5mwo4jc
    13.  
    14. https://bigwarp.io/pa8cvmyhcwew
    15.  
    16. https://bigwarp.io/kp0k87pkrb80
Add Comment
Please, Sign In to add comment
Advertisement