From 899f646f90d96b1239858282540ae09b9d133fa8 Mon Sep 17 00:00:00 2001 From: reaper7 Date: Tue, 26 Nov 2019 23:09:58 +0100 Subject: [PATCH] Add support for Hykker Smart Plug with power meter (#2010) * add support for Hykker Smart Plug with power meter Type: Power Plugs Board: Hykker Power Plug Build flag: HYKKER_POWER_PLUG Description: Power plug w/ power metering * Update arduino.h hykker power plug * Update platformio.ini hykker power plug * Type: Power Plugs Board: Hykker Smart Home Power Plug Build flag: HYKKER_SMART_HOME_POWER_PLUG Description: Power plug w/ power metering * voltage ratio calibration for correct results --- code/espurna/config/arduino.h | 1 + code/espurna/config/hardware.h | 45 ++++++++++++++++++ code/platformio.ini | 10 ++++ .../devices/hykker-smart-home-power-plug.jpg | Bin 0 -> 40519 bytes 4 files changed, 56 insertions(+) create mode 100644 images/devices/hykker-smart-home-power-plug.jpg diff --git a/code/espurna/config/arduino.h b/code/espurna/config/arduino.h index 8895c237..81ef258e 100644 --- a/code/espurna/config/arduino.h +++ b/code/espurna/config/arduino.h @@ -55,6 +55,7 @@ //#define HOMECUBE_16A //#define HUACANXING_H801 //#define HUACANXING_H802 +//#define HYKKER_SMART_HOME_POWER_PLUG //#define IKE_ESPIKE //#define INTERMITTECH_QUINLED //#define ITEAD_1CH_INCHING diff --git a/code/espurna/config/hardware.h b/code/espurna/config/hardware.h index ffca25c5..238597ac 100644 --- a/code/espurna/config/hardware.h +++ b/code/espurna/config/hardware.h @@ -4054,7 +4054,52 @@ #define LIGHT_CH3_INVERSE 0 #define LIGHT_CH4_INVERSE 0 +// ----------------------------------------------------------------------------- +// Hykker Power Plug (Smart Home Series) available in Jer—nimo Martins Polska (Biedronka) +// https://www.hykker.com/akcesoria/gniazdo-wi-fi-z-licznikiem-energii/ +// Reflashing from original Tuya firmware +// to thirdparty firmware like espurna by: +// https://github.com/ct-Open-Source/tuya-convert +// ----------------------------------------------------------------------------- + +#elif defined(HYKKER_SMART_HOME_POWER_PLUG) + + // Info + #define MANUFACTURER "HYKKER" + #define DEVICE "SMART_HOME_POWER_PLUG" + + // Buttons + #define BUTTON1_PIN 0 + #define BUTTON1_MODE BUTTON_PUSHBUTTON | BUTTON_DEFAULT_HIGH + #define BUTTON1_RELAY 1 + + // Relays + #define RELAY1_PIN 14 + #define RELAY1_TYPE RELAY_TYPE_NORMAL + + // LED + // Red + #define LED1_PIN 13 + #define LED1_MODE LED_MODE_WIFI + #define LED1_PIN_INVERSE 1 + // Blue connected to relay + + // HLW8012 + #ifndef HLW8012_SUPPORT + #define HLW8012_SUPPORT 1 + #endif + #define HLW8012_SEL_PIN 12 + #define HLW8012_CF1_PIN 5 + #define HLW8012_CF_PIN 4 + + #define HLW8012_SEL_CURRENT LOW + #define HLW8012_CURRENT_RATIO 25740 + #define HLW8012_VOLTAGE_RATIO 282060 + #define HLW8012_POWER_RATIO 3414290 + #define HLW8012_INTERRUPT_ON FALLING + #define SENSOR_ENERGY_UNITS ENERGY_KWH + #define SENSOR_POWER_UNITS POWER_WATTS // ----------------------------------------------------------------------------- #else diff --git a/code/platformio.ini b/code/platformio.ini index ae3c4497..067f22bc 100644 --- a/code/platformio.ini +++ b/code/platformio.ini @@ -1642,3 +1642,13 @@ board = ${common.board_1m} build_flags = ${common.build_flags_1m0m} -DMUVIT_IO_MIOBULB001 upload_port = ${common.ota_upload_port} upload_flags = ${common.ota_upload_flags} + +[env:hykker-smart-home-power-plug] +board = ${common.board_1m} +build_flags = ${common.build_flags_1m0m} -DHYKKER_SMART_HOME_POWER_PLUG + +[env:hykker-smart-home-power-plug-ota] +board = ${common.board_1m} +build_flags = ${common.build_flags_1m0m} -DHYKKER_SMART_HOME_POWER_PLUG +upload_port = ${common.ota_upload_port} +upload_flags = ${common.ota_upload_flags} diff --git a/images/devices/hykker-smart-home-power-plug.jpg b/images/devices/hykker-smart-home-power-plug.jpg new file mode 100644 index 0000000000000000000000000000000000000000..d7d6a4ad3e80703e70ee9b369336cd4a6c8348ba GIT binary patch literal 40519 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