Skip to content

Instantly share code, notes, and snippets.

@wolph
Last active October 13, 2016 23:40
Show Gist options
  • Star 0 You must be signed in to star a gist
  • Fork 1 You must be signed in to fork a gist
  • Save wolph/3b15e0e54585199dfdcff375aeb8e7db to your computer and use it in GitHub Desktop.
Save wolph/3b15e0e54585199dfdcff375aeb8e7db to your computer and use it in GitHub Desktop.
RFXtrx
# -*- coding: utf-8 -*-
#
# This file is a plugin for EventGhost.
# Copyright (C) 2012 Walter Kraembring <krambriw>.
#
# ALL RIGHTS RESERVED. The development of this software is based on information
# provided by RFXCOM and is protected under Netherlands Copyright Laws and
# Treaties and shall be subject to the exclusive jurisdiction of the Netherlands
# Courts.
# This pluginís source code and other versions eventually based on it may be
# used exclusively to interface with RFXCOM products only. Any other usage of
# information in this source code is prohibited without express written
# permission from RFXCOM.
#
###############################################################################
#
# EventGhost is free software; you can redistribute it and/or modify it under
# the terms of the GNU General Public License version 2 as published by the
# Free Software Foundation;
#
# EventGhost is distributed in the hope that it will be useful, but WITHOUT ANY
# WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR
# A PARTICULAR PURPOSE. See the GNU General Public License for more details.
#
# You should have received a copy of the GNU General Public License
# along with this program. If not, see <http://www.gnu.org/licenses/>.
#
##############################################################################
#
# Acknowledgements: Part of code and some ideas are based on the serial plugin
#
##############################################################################
# Revision history:
#
# 2016-08-13 Walter Kraembring: Added support for FW release 433_1006
# 08-08-2016
# - Lighting5 - MDRemote 108 LED added
# - Unit code added to BlindsT3
# - FAN ñ SEAV TXS4 added
# 2016-05-08 Walter Kraembring: Added support for FW release 433_1002
# 06-05-2016
# - BlindsT12 ñ Confexx unit code corrected
# - Cartelectronic TIC and Encoder added
# - Livolo dim/scene commands added for On/Off
# module
# - RFY unit code All changed to channel 0
# 2016-03-12 Walter Kraembring: Added support for FW release 433_1001
# 18-02-2016
# - IT (Intertek,FA500,PROmaxÖ)
# - Confexx CNF24-2435 blind motors
# 2016-02-07 Walter Kraembring: Added support for FW release 433_95/195/251
# 06-02-2016
# - LucciAir Fan
# - Inovalley S80 plant humidity sensor
# - ASP blind motors
# - Avantek
# - HQ_COCO_20
# - Viking 02813 (reported as 02811)
# 2015-11-07 Walter Kraembring: Added support for Legrand CAD
# 2015-09-20 Walter Kraembring: Added support for Home Confort TEL-010
# Improved support for PT2262:
# - Action send_ELRO_Flamingo_Phenix_Sartano_
# RisingSun_Brennenstuhl renamed to
# send_PT2262
# - decoding PT2262 (Lighting4) now includes
# pulse timing value
# 2015-09-02 Walter Kraembring: Modified to support RFXtrx433E FW release
# 433_247 and RFXtrx433 Type1/Type2
# FW release 433_91/191.
# Now supporting:
# - ASA blinds
# - RGB 432W
# - Thermostat Mertik G6R-H4S
# 2015-06-05 Walter Kraembring: Added support for setting sensor lost
# timeouts from external script added
# 2015-03-21 Walter Kraembring: Support added for:
# - SelectPlus Action chime changed
# - Alecto WS4500 and compatibles
# - Envivo ENV-1348 Aldi chime
# - DEA Systems receivers (KeeLoq Classic raw)
# - Sunpery & Dolat DLM-1 blinds
# - La Crosse TX5 Rain gauge
# - Thermostat Mertik G6R-H4TD
# 2015-02-11 Walter Kraembring: Added monitoring of RFXtrx connection state:
# - Generates an event if connection is lost.
# Disabling/enabling of plugin should be
# enough to recover once the device is
# correctly re-connected and recognized by
# the operating system
# 2015-02-01 Walter Kraembring: Support added/updated for:
# - ELEC3 ìinstant power onlyî packets
# - Byron SX sound detection/selections
# 2015-01-11 Walter Kraembring: Support added for:
# - TEMP7 - Proove TSS330 and TH9 ñ TSS320
# - BlindsT8 Chamberlain CS4330CN
# - Chime SelectPlus200689101 and 200689103
# - Proove outdoor sensors TEMP7 type 311346
# and TH9 type 311501
# - Genuine device validation & copyright
# message added for fw versions 81/182/235
# and later
# 2014-12-27 Walter Kraembring: Support added for:
# - Livolo Appliance 1-10
# - Somfy RFY commands Enable sun+wind &
# Disable sun (RFXtrx433E only)
# - Smartwares radiator valves (RFXtrx433E
# only)
# - Alecto WS1700 and compatibles
# - Changed from old Websocket suite to support
# the new Webserver plugin with websocket
# included.
# 2014-10-01 Walter Kraembring: Now supporting:
# - Thermostat1 Digimax
# - Thermostat3 Mertik-Maxitrol G6R-H4 types
# 2014-09-19 Walter Kraembring: Modified to support RFXtrx433E FW release
# 433_230 and RFXtrx433 Type1/Type2
# FW release 433_79/179.
# Now supporting:
# - THB1 ñ BTHGN129 device
# - Chime ñ Byron MP001 transmit
# - TEMP11 ñ WT0122 pool sensor
# - Lighting5 ñ Eurodomest (NL ñ Action)
# - TRC02_2 RGB LED controller (this version
# has 3 batteries in the remote, TRC02 has
# only 2)
# 2014-08-22 Walter Kraembring: Added support for date/time sensor RTGR328N
# 2014-07-30 Walter Kraembring: Modified to support RFXtrx433E FW release
# 433_229 25-07-2014 and RFXtrx433 Type1/Type2
# FW release 433_78/178 25-07-2014
# - Lighting5 - Aoke 1 channel relay with
# learning code
# 2014-07-14 Walter Kraembring: Modified to support RFXtrx433E FW release
# 433_227 25-06-2014 and RFXtrx433 Type1/Type2
# FW release 433_77 26-06-2014
# - BlindsT8 ñ RFY added new action to support
# Venetian blinds
# 2014-06-06 Walter Kraembring: Modified to support RFXtrx433E FW release
# 433_226 29-05-2014 and RFXtrx433 Type1/Type2
# FW release 433_76 29-05-2014
# - Imagintronix soil sensor added
# - Kambrook RF3672 added, supported by Type 2
# (used in Australia)
# - BlindsT8 ñ RFY added
# Bugfix in calculation of wind average speed
# and gust
# 2014-04-24 Walter Kraembring: Modified to support FW version 74
# - Blinds - ID4 added
# - BlindsT4 - unit number set to zero
# - BlindsT7 - Forest unit number selection
# corrected
# 2014-04-08 Walter Kraembring: Added support for
# - Lighting1: Energenie 5-gang
# - Lighting1: COCO GDR2-2000R
# - BlindsT6: DC106/Rohrmotor24-RMF/Yooda
# - BlindsT7 - Forest
# 2014-02-16 Walter Kraembring: Improved action to dim AC devices up/down in
# defined step size
# 2014-02-14 Walter Kraembring: Made event prefix configurable (to support
# multiple RFXtrx devices)
# Added action to dim AC devices up/down in
# defined step size
# Saving the dim level persistent
# 2014-01-30 Walter Kraembring: Support for websockets by the Tornado plugin
# 2013-12-28 Walter Kraembring: Added action for resetting the state memory
# Modified action for resetting the sensor
# state memory
# Added action to map remote control address
# 2013-12-12 Walter Kraembring: Added support for
# - RGB TRC02 controllers
# 2013-11-18 Walter Kraembring: Added support for
# - Maverick ET-732
# - Alecto SA30
# - Oregon EW109
# - ELEC5 Revolt
# - Changed configuration view, use RFXmngr to
# enable/disable selected protocols
# Some bug fixes for:
# - ATI, Medion, PC Remote
# - CM113
# - RollerTrol, Hasta, A-OK, Raex, Media Mount
# 2013-10-29 Walter Kraembring: Added actions to support
# - Siemens SF01 LF959RA50/LF259RB50/LF959RB50
# extractor hood transmit
# - Livolo transmit
# 2013-10-04 Walter Kraembring: Added actions to enable/disable undecoded
# messages.
# 2013-09-30 Walter Kraembring: Lighting5 LWRF Colour commands added
# Alecto WS1200 added
# Byron SX Chime added
# 2013-06-11 Walter Kraembring: RAEX ID changed to 3 bytes, Unit code is 0.
# Added support for MDREMOTE LED dimmer,
# Conrad RSL2 and Energenie.
# 2013-05-09 Walter Kraembring: Modified the settings for RAEX motor, also
# corrections made for Media Mount commands.
# Added support for ELRO, Flamingo, Phenix,
# Sartano, RisingSun, Brennenstuhl (Lighting4).
# 2013-03-14 Walter Kraembring: Blyss group code until P added.
# Action to decode test messages added.
# 2013-02-16 Walter Kraembring: Action to gradually dim AC devices added.
# 2013-02-12 Walter Kraembring: Blyss group code E added.
# Rubicson temperature and humidity sensor
# added.
# Media Mount projection screen added
# (transmission only).
# RFXtrx type 1 and 2 detection added.
# 2013-01-16 Walter Kraembring: Management of sensors lost/back improved and
# information sent via websocket.
# 2013-01-12 Walter Kraembring: Further improved broken message handling,
# trying to repair broken messages. Now I am
# pleased with the solution.
# Support for Raex YR1326 T16 motor added.
# Modified settings for ByeByeStandBy (units
# 1-6 are now possible).
# 2012-11-14 Walter Kraembring: Update to comply with FW release 433_56.
# - Meiantech/Atlantic/Aidebao IR beam added
# - decoding of Koppla removed (sending still
# possible)
# - Current/Energy meter CM180i added
# - RFXsensor added
# - unit codes for A-OK set to '00'
# - possible ID's for BLINDS1 adjusted
# 2012-10-21 Walter Kraembring: Update to comply with FW release 433_55:
# A-OK RF01, A-OK AC114 and new ByeByeStandBy
# models. Some other minor improvements.
# 2012-10-04 Walter Kraembring: Added support to send keys as simulated
# remote (ATI, Medion and PC Remote).
# 2012-10-02 Walter Kraembring: Added support receiving from remotes ATI,
# Medion, PC Remote.
# 2012-09-24 Walter Kraembring: Added support for HE105 and RTS10.
# 2012-09-13 Walter Kraembring: Added support for OWL CM113.
# Reduced printouts to the log window, keeping
# it a bit cleaner. Enable debug to get more
# info in the log window.
# Fixed bugs in 0x12(Koppla), 0x20(X10 remote),
# 0x57(UV..).
# Changed key handling for web sockets data.
# 2012-08-28 Walter Kraembring: Improved message handling, trying to repair
# broken messages.
# TFA 30.3133 added
# 2012-08-18 Walter Kraembring: Update to comply with FW release 433_48:
# Philips SBC, Blyss/Thompson, Hasta old added,
# BLINDS1 Set Limit command added.
# 2012-08-14 Walter Kraembring: Added actions for dimming Good Morning and
# Good Night lamps (works with AC devices like
# NEXA with support for setting dim levels).
# 2012-07-24 Walter Kraembring: Meiantech commands added
# Bugfixes in decoding of 0x12, 0x14, 0x18,
# 0x19 and 0x20
# 2012-07-16 Walter Kraembring: Update to comply with FW release 433_46:
# Viking 02035, 02038 added, RUBiCSON added,
# Security1 tamper status commands changed,
# Meiantech added.
# Improved websocket startup methods.
# 2012-07-07 Walter Kraembring: Added support for the RFXMeter and RFXPower
# Added support for the La Crosse WS2300
# Reworked the message handling again, not
# using the eg.SerialThread anymore.
# 2012-06-27 Walter Kraembring: Added support for websockets (requires the
# websocket suite plugin to be added to your
# configuration.)
# Added support for OWL CM119/160 and
# UV sensors UVN128, UV138, UVN800, TFA
# 2012-05-29 Walter Kraembring: Added support for RisingSun, RollerTrol and
# Viking 02811
# Bug fixed for AC (unit codes 1-16)
# 2012-05-09 Walter Kraembring: Suppress/Allow duplicated events selectable
# 2012-05-04 Walter Kraembring: X10 decoding of received bright/dim commands
# fixed.
# 2012-04-29 Walter Kraembring: This version supports:
# - Wind directions as text information
# (S, N, E, W etc).
# - Rain total values are divided by 10
# (requiresFW version 35 and later).
# - TEMP6 - TS15C.
# - UPM/ESIC wind & rain sensors.
# 2012-04-15 Walter Kraembring: This version is using the eg.SerialThread.
# Improved performance, simplified the code.
# Changed the calculation of temperature from
# temperature sensors.
# 2012-04-13 Walter Kraembring: Improved automatic naming of macros.
# 2012-04-11 Walter Kraembring: Added selection of supported protocols.
# Improved reading and decoding from COM port.
# Improved automatic naming of macros.
# Cosmetic bug fixing in some action
# configuration dialogs.
# 2012-04-02 Walter Kraembring: First official version.
##############################################################################
import eg, wx
import time, os
from threading import Event, Thread
from codecs import getdecoder
import collections
eg.RegisterPlugin(
name="RFXtrx",
author="krambriw",
guid="{72DCE030-68FF-49B9-835D-295D4CF048ED}",
version="1.9.9",
canMultiLoad=True,
kind="external",
description=(
"RFXtrx communication through a virtual serial port."
'<br\n><br\n>'
'<center><img src="rfxtrx.png" /></center>'
),
url="http://www.eventghost.net/forum",
)
DEVICES = (
'040',
'042',
'04E',
'04F',
'050',
'051',
'052',
'054',
'055',
'056',
'057',
'058',
'059',
'05A_1',
'05A_2',
'05B',
'05C',
'060_01',
'060_02',
'070',
'071',
'020',
)
class Text:
port = "Port:"
logToFile = "Log events to file"
debugInfo = "Show debug info"
macroNames = "Automatic naming of macros"
dupEvents = "Allow duplicated events"
set_prefix = "Configure the event prefix"
use_websockets = "Use Webserver plugin with websocket support (port 1234) "
use_tornadoWebsockets = "Use Tornado plugin for websockets "
decode_advice = (
"Please select the required protocols with the RFXmngr application"
)
decodeError = "Decoding of message failed: "
fwVersion = "RFXtrx Firmware Version: "
rfxtrx = "RFXtrx receiver/transceiver type: "
rfxtrx_type = "You have a RFXtrx Type "
rfxtrx_fw = "You have firmware type: "
messageT = "Wrong command response, your RFXtrx type might not support this "
messageL = "Wrong message length: "
unknown_RFY_remote = "Unknown RFY remote"
no_extended_hardware_present = "No extended hardware present (RFY)"
rfxtrx_started = "A genuine RFXtrx is detected and started"
rfxtrx_lost = "Lost connection with the RFXtrx"
messageDbg = "Debug Info: "
messageUC = "Message broken and repaired within"
messageNP = "Message could not be repaired"
messageUKnwn = "Unknown message: "
messageWebSocketError = "Websocket error...check that the plugin is added to your configuration "
messageWebSocketBroadcastError = "Websocket broadcast error...check the websocket configuration "
disconnecting = "Stopping and disconnecting the RFXtrx device...please wait"
cleanUpmonitoring = "Cleaning up monitoring tasks..."
readyStopped = "Plugin successfully stopped"
threadStopped = "Receiving thread is stopped..."
dt_threadStopped = "Date & Time thread ended"
ka_threadStopped = "Keep Alive thread ended"
keyAdded = "Key added to dictionary"
textBoxName = "Enter a descriptive name for the action"
textBoxLCdeviceId = "Select the ID of the La Crosse TX5 rain gauge to reset the collected rain data"
textBoxProtocol = "Select the device protocol to be used"
textBoxHouseCode = "Select the house code of the device"
textBoxGroupCode = "Select the group code of the device"
textBoxDeviceCode = "Select the device code of the device"
textBoxCommand = "Select the command to send"
textBoxColor = (
"If your command is 'Select Color', then also select the color code from below"
)
textBoxAddress = "Type/paste the unit address to be used (from 00 00 00 01 to 03 FF FF FF)"
textBoxDeviceUnit = "Select the unit code of the device"
textBoxLevel = "Select the dim/bright level"
textBoxStepSize = "Select the dim step size"
textBoxStatus = "Select status"
textBoxMode = "Select mode"
textBoxTemperature = "Set the temperature"
textBoxSetPoint = "Set the setpoint"
timeInBetween_txt = "Select the time delay between dim level commands"
timeToWakeUp_txt = "Total snooze time (minutes): "
timeToSleep_txt = "Total snooze time (minutes): "
textBoxSystem = "Select the system code to use"
textChannel = "Check the boxes for the channels to use"
textBoxDeviceID = "Select the proper ID selections"
textBoxPulseTiming = "Set the proper pulse timing (default 350 us)"
textBoxIdCommands = "Check the boxes for the id and command"
textStep_up = "Check the box to dim up "
txt_signal_back = "Recovered contact with sensor"
txt_taskObj = "Lost contact with sensor"
class CurrentStateData(eg.PersistentData):
current_state_memory = {}
sensors_status = {}
rfxSensors = {}
dimGradually = {}
dimStepWise = {}
cmndSeqNbr_015 = 0
remote_address_map = {}
totalRain = {}
class RFXtrx(eg.RawReceiverPlugin):
text = Text
def __init__(self):
self.current_state_memory = CurrentStateData.current_state_memory
self.sensors_status = CurrentStateData.sensors_status
self.dimGradually = CurrentStateData.dimGradually
eg.RawReceiverPlugin.__init__(self)
self.AddAction(send_AC)
self.AddAction(DimGradually_AC)
self.AddAction(DimStepWise_AC)
self.AddAction(GoodMorning_AC)
self.AddAction(GoodNight_AC)
self.AddAction(send_Kambrook)
self.AddAction(send_ARC)
self.AddAction(send_Waveman)
self.AddAction(send_Chacon_EMW200)
self.AddAction(send_IMPULS)
self.AddAction(send_RisingSun)
self.AddAction(send_ByeByeStandBy)
self.AddAction(send_Philips_SBC)
self.AddAction(send_Energenie)
self.AddAction(send_COCO_GDR2_2000R)
self.AddAction(send_HQ_COCO_20)
self.AddAction(send_Energenie_5g)
self.AddAction(send_Siemens_Lightwave_RF)
self.AddAction(send_Siemens_SF01)
self.AddAction(send_LucciAir)
self.AddAction(send_SEAV_TXS4)
self.AddAction(send_PT2262)
self.AddAction(send_EMW100_GAO_Everflourish)
self.AddAction(send_Conrad_RSL2)
self.AddAction(send_MDREMOTE_LED)
self.AddAction(send_Aoke_Relay)
self.AddAction(send_IT_Intertek)
self.AddAction(send_Legrand_CAD)
self.AddAction(send_RGB_TRC02)
self.AddAction(send_RGB_TRC02_2)
self.AddAction(send_RGB432W)
self.AddAction(send_Eurodomest)
self.AddAction(send_Avantek)
self.AddAction(send_Blyss_Thomson)
self.AddAction(send_Byron_SX)
self.AddAction(send_Byron_MP001)
self.AddAction(send_SelectPlus)
self.AddAction(send_Envivo)
self.AddAction(send_ELRO_AB400D)
self.AddAction(send_Livolo)
self.AddAction(send_Livolo_Appliance)
self.AddAction(send_X10)
self.AddAction(send_Koppla)
self.AddAction(send_Harrison_Curtain)
self.AddAction(send_RollerTrol)
self.AddAction(send_Confexx)
self.AddAction(send_A_OK)
self.AddAction(send_Raex)
self.AddAction(send_Media_Mount)
self.AddAction(send_DC_Forest)
self.AddAction(send_Chamberlain)
self.AddAction(send_Sunpery)
self.AddAction(send_Dolat_DLM_1_Topstar)
self.AddAction(send_ASP)
self.AddAction(send_RFY)
self.AddAction(send_RFY_ext)
self.AddAction(send_RFY_Venetian)
self.AddAction(send_ASA)
self.AddAction(send_KeeLoq_Classic)
self.AddAction(send_x10_security_remote)
self.AddAction(send_KD101_smoke_detector)
self.AddAction(send_SA30_smoke_detector)
self.AddAction(send_Meiantech)
self.AddAction(send_Digimax)
self.AddAction(send_Thermostat_HE105)
self.AddAction(send_Thermostat_RTS10)
self.AddAction(send_Smartwares_radiator_valve)
self.AddAction(send_Mertik_G6R_H4T1)
self.AddAction(send_Mertik_G6R_H4TB)
self.AddAction(send_Mertik_G6R_H4TD)
self.AddAction(send_Mertik_G6R_H4S)
self.AddAction(send_ATI_RemoteWonder)
self.AddAction(send_ATI_RemoteWonderPlus)
self.AddAction(send_Medion_Remote)
self.AddAction(send_Home_Confort)
self.AddAction(send_X10_PC_Remote)
self.AddAction(WebRefresh)
self.AddAction(remote_address_Mapper)
self.AddAction(ClearSensorsStatus)
self.AddAction(ResetCurrentStatus)
self.AddAction(ResetLaCrosseTX5_data)
self.AddAction(disable_unDecoded)
self.AddAction(enable_unDecoded)
self.AddAction(max_outPower)
self.AddAction(normal_outPower)
self.AddAction(decode_Test_Message)
def __start__(
self,
port=0,
bLogToFile=False,
bDebug=False,
b01=True,
b02=True,
b03=True,
b04=True,
b05=True,
b06=True,
b07=True,
b08=True,
b09=True,
b0a=True,
b0b=True,
b0c=True,
b0d=True,
b0e=True,
b0f=True,
mMacroNames=True,
bDupEvents=False,
websocket_port_nbr=1234,
use_websockets=False,
b10=True,
use_tornadoWebsockets=False,
prefix='RFXtrx'
):
self.init = True
self.prefix = prefix
self.fwVer = 54
self.bLogToFile = bLogToFile
self.bDebug = bDebug
self.deviceCheck = False
self.sensorLostTimeOut = 600.0
self.decoder_mems = collections.defaultdict(dict)
self.monitor_mems = collections.defaultdict(dict)
self.usage_05A_2 = '0.00'
self.mMacroNames = mMacroNames
self.bDupEvents = bDupEvents
self.use_websockets = use_websockets
self.websocket_port_nbr = str(websocket_port_nbr)
self.use_tornadoWebsockets = use_tornadoWebsockets
self.rfxSensors = CurrentStateData.rfxSensors
self.tmpMessage = ''
self.tmpMilliSec = 0
self.flipCount = {}
self.flCount_prev = {}
self.totalRain = CurrentStateData.totalRain
self.pmh = None
self.interfaceMode = []
self.keepAliveThreadEvent = Event()
self.remain = 0.0
keepAliveThread = Thread(
target=self.keep_Alive,
args=(self.keepAliveThreadEvent,)
)
keepAliveThread.start()
self.dateTimeThreadEvent = Event()
dateTimeThread = Thread(
target=self.date_Time,
args=(self.dateTimeThreadEvent,)
)
dateTimeThread.start()
try:
self.serial = eg.SerialPort(
port=port,
baudrate=38400,
bytesize=8,
stopbits=1,
parity='N',
xonxoff=0,
rtscts=0,
)
except:
self.serial = None
raise self.Exceptions.SerialOpenFailed
self.serial.timeout = 0.01
self.serial.setRTS()
# Reset connection
reset_str = "0D 00 00 00 00 00 00 00 00 00 00 00 00 00"
self.WriteMsg(reset_str, '', '')
eg.Wait(2.0)
# Flush the COM port receive buffer
self.serial.flushInput
# Get device status
get_status_str = "0D 00 00 01 02 00 00 00 00 00 00 00 00 00"
self.WriteMsg(get_status_str, '', '')
# Check valid RFXCOM device
chk_valid_device = "0D 00 00 02 07 00 00 00 00 00 00 00 00 00"
self.WriteMsg(chk_valid_device, '', '')
# Start the communication thread
self.decoder = getdecoder(eg.systemEncoding)
self.info.eventPrefix = self.prefix
self.finished = Event()
self.receiveThread = Thread(
target=self.ReceiveThread,
name="RFXtrxThread"
)
self.receiveThread.start()
def __stop__(self):
print self.text.disconnecting
self.dateTimeThreadEvent.set()
self.keepAliveThreadEvent.set()
if self.serial is not None:
if self.receiveThread:
self.receiveThread.join(1.0)
self.finished.set()
time.sleep(0.1)
try:
self.serial.close()
except:
pass
self.serial = None
try:
eg.scheduler.CancelTask(self.pmh)
except:
pass
print self.text.cleanUpmonitoring
for device in DEVICES:
for task in self.monitor_mems[device].values():
try:
eg.scheduler.CancelTask(task)
except:
pass
eg.Wait(self.remain + 0.5)
print self.text.readyStopped
def ClearTempMessage(self):
eg.PrintError(
self.text.messageNP +
' ' +
self.tmpMessage
)
self.tmpMessage = ''
self.tmpMilliSec = 0
def CancelTask(self, handle):
try:
eg.scheduler.CancelTask(handle)
except:
pass
def MilliSeconds(self):
return int(round(time.time() * 1000))
def PartialMessageHandler(self, data): # Uncompleted message arrives
# Start time measuring
if not self.tmpMilliSec > 0:
self.tmpMilliSec = self.MilliSeconds()
# Cancel resetting task if already scheduled
self.CancelTask(self.pmh)
# Schedule the new resetting task
self.pmh = eg.scheduler.AddTask(0.5, self.ClearTempMessage)
# Add the received data to the temporary storage
self.tmpMessage += data
if self.bDebug:
print self.tmpMessage
# Check length and if it has become completed
# If not, just wait for the remainer
messageL = int(self.tmpMessage[0:2], 16)
if len(self.tmpMessage) == (messageL + 1) * 2:
# Cancel scheduled task and clear the temporary storage
self.CancelTask(self.pmh)
# Forward the repaired message for normal processing
self.HandleChar(self.tmpMessage)
if self.bDebug:
timeToRepair = self.MilliSeconds() - self.tmpMilliSec
eg.PrintError(
self.text.messageUC +
' ' +
str(timeToRepair) +
' ms' +
' ' +
self.tmpMessage
)
self.tmpMessage = ''
self.tmpMilliSec = 0
def ReceiveThread(self):
out = ''
while not self.finished.isSet():
time.sleep(0.005) # Release CPU
while self.serial.inWaiting() > 0 and not self.hold:
self.finished.wait(0.01)
buf = self.serial.read(1)
if len(str(out)) == 0:
pl = int('0x' + str(buf.encode('hex')), 0)
out += buf
out += self.serial.read(pl)
data = str(out.encode('hex'))
if pl > 3 and len(str(out)) == pl + 1:
if self.bDebug:
print "Debug Info: ", data
self.HandleChar(data)
else:
self.PartialMessageHandler(data)
out = ''
print self.text.threadStopped
def date_Time(self, dateTimeThreadEvent):
counter = int(time.strftime("%S", time.localtime()))
while not dateTimeThreadEvent.isSet():
if counter == 60:
self.DateAndTimeInfo()
counter = 1
else:
counter += 1
dateTimeThreadEvent.wait(1.0)
print self.text.dt_threadStopped
def keep_Alive(self, keepAliveThreadEvent): # Keep Alive Loop
counter = 0
while not keepAliveThreadEvent.isSet():
if counter == 60:
# self.KeepAlive()
counter = 0
else:
counter += 1
keepAliveThreadEvent.wait(1.0)
print self.text.ka_threadStopped
def DateAndTimeInfo(self):
if self.use_websockets or self.use_tornadoWebsockets:
currDate_Time = str(
time.strftime(
"%w %Y-%m-%d %H:%M",
time.localtime()
)
)
msg = "currDate_Time." + currDate_Time
self.BroadcastMessage(msg)
self.deviceCheck = True
chk_valid_device = "0D 00 00 01 02 00 00 00 00 00 00 00 00 00"
self.WriteMsg(chk_valid_device, '', '')
def KeepAlive(self):
if self.use_websockets or self.use_tornadoWebsockets:
msg = "KeepAlive"
self.BroadcastMessage(msg)
def StatusRefresh(self):
if self.use_websockets or self.use_tornadoWebsockets:
if len(self.current_state_memory) > 0:
for i in self.current_state_memory:
msg = self.current_state_memory[i]
self.BroadcastMessage(msg)
time.sleep(0.01)
if len(self.sensors_status) > 0:
for i in self.sensors_status:
msg = self.sensors_status[i]
self.BroadcastMessage(msg)
time.sleep(0.01)
def SavePersistent(self, msg, m_key):
# Check if the message comes from a remote that shall be re-mapped
m_k = m_key.split(' ')
if len(m_k) == 3:
m = msg.split(' ')
try:
adr_new = CurrentStateData.remote_address_map[m_k[1]]
m_key = m_k[0] + ' ' + adr_new + ' ' + m_k[2]
msg = (
m[0] + ' ' + m[1] + ' ' + m[2] + ' ' + adr_new + ' ' +
m[4] + ' ' + m[5] + ' ' + m[6] + ' ' + m[7] + ' ' +
m[8] + ' ' + m[9] + ' ' + m[10] + ' ' + m[11] + ' ' +
m[12] + ' ' + m[13]
)
except KeyError:
pass
# Make status data persistent if it has changed
try:
if msg != self.current_state_memory[m_key]:
self.current_state_memory[m_key] = msg
self.BroadcastMessage(msg)
elif self.bDupEvents:
self.BroadcastMessage(msg)
except KeyError:
if self.bDebug:
print self.text.keyAdded
self.current_state_memory[m_key] = msg
self.BroadcastMessage(msg)
def BroadcastMessage(self, msg):
if self.use_websockets:
try:
p = eg.plugins.Webserver.BroadcastMessage(
msg.encode('utf-8'),
False
)
if p <> None:
print self.text.messageWebSocketBroadcastError
except:
print self.text.messageWebSocketError
time.sleep(1.0)
if self.use_tornadoWebsockets:
try:
p = eg.plugins.Tornado.BroadcastMessage(
msg.encode('utf-8'),
True
)
if p <> None:
print self.text.messageWebSocketBroadcastError
except:
print self.text.messageWebSocketError
time.sleep(1.0)
def HandleChar(self, ch):
msg = []
tmp = ''
for i in ch:
tmp += i
if len(tmp) == 2:
msg.append(tmp)
tmp = ''
try:
if len(msg) - 1 == int(msg[0], 16) and msg[0] <> 'FF':
if msg[0] == '09' and msg[1] == '40':
self.decode_040(msg)
return
if msg[0] == '08' and msg[1] == '42':
self.decode_042(msg)
return
if msg[0] == '0a' and msg[1] == '4e':
self.decode_04E(msg)
return
if msg[0] == '0a' and msg[1] == '4f':
self.decode_04F(msg)
return
if msg[0] == '08' and msg[1] == '50':
self.decode_050(msg)
return
if msg[0] == '08' and msg[1] == '51':
self.decode_051(msg)
return
if msg[0] == '0a' and msg[1] == '52':
self.decode_052(msg)
return
if msg[0] == '0d' and msg[1] == '54':
self.decode_054(msg)
return
if msg[0] == '0b' and msg[1] == '55':
self.decode_055(msg)
return
if msg[0] == '10' and msg[1] == '56':
self.decode_056(msg)
return
if msg[0] == '09' and msg[1] == '57':
self.decode_057(msg)
return
if msg[0] == '0d' and msg[1] == '58':
self.decode_058(msg)
return
if msg[0] == '0d' and msg[1] == '59':
self.decode_059(msg)
return
if msg[0] == '11' and msg[1] == '5a' and msg[2] == '01':
self.decode_05A_1(msg)
return
if msg[0] == '11' and msg[1] == '5a' and msg[2] == '02':
self.decode_05A_2(msg)
return
if msg[0] == '13' and msg[1] == '5b':
self.decode_05B(msg)
return
if msg[0] == '0f' and msg[1] == '5c':
self.decode_05C(msg)
return
if msg[0] == '15' and msg[1] == '60' and msg[2] == '01':
self.decode_060_01(msg)
return
if msg[0] == '11' and msg[1] == '60' and msg[2] == '02':
self.decode_060_02(msg)
return
if msg[0] == '07' and msg[1] == '70':
self.decode_070(msg)
return
if msg[0] == '0a' and msg[1] == '71':
self.decode_071(msg)
return
if msg[0] == '07' and msg[1] == '10':
self.decode_010(msg)
return
if msg[0] == '0b' and msg[1] == '11':
self.decode_011(msg)
return
if msg[0] == '09' and msg[1] == '13':
self.decode_013(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '00':
self.decode_014_00(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '01':
self.decode_014_01(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '02':
self.decode_014_02(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '04':
self.decode_014_02(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '03':
self.decode_014_03(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '06':
self.decode_014_06(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '07':
self.decode_014_07(msg)
return
if msg[0] == '0a' and msg[1] == '14' and msg[2] == '0d':
self.decode_014_0d(msg)
return
if msg[0] == '0b' and msg[1] == '15':
self.decode_015(msg)
return
if msg[0] == '07' and msg[1] == '16':
self.decode_016(msg)
return
if msg[0] == '07' and msg[1] == '18':
self.decode_018(msg)
return
if msg[0] == '09' and msg[1] == '19' and int(msg[2], 16) == 11:
self.decode_019_B(msg)
return
if msg[0] == '09' and msg[1] == '19' and int(msg[2]) >= 8:
self.decode_019_8(msg)
return
if msg[0] == '09' and msg[1] == '19' and int(msg[2]) >= 6:
self.decode_019_6(msg)
return
if msg[0] == '09' and msg[1] == '19' and int(msg[2]) >= 2:
self.decode_019_2(msg)
return
if msg[0] == '09' and msg[1] == '19' and int(msg[2]) >= 0:
self.decode_019(msg)
return
if msg[0] == '08' and msg[1] == '20':
self.decode_020(msg)
return
if msg[0] == '1c' and msg[1] == '21':
self.decode_021(msg)
return
if msg[0] == '06' and msg[1] == '30' and msg[2] <> '04':
self.decode_030_0(msg)
return
if msg[0] == '06' and msg[1] == '30' and msg[2] == '04':
self.decode_030_1(msg)
return
if msg[0] == '0d' and msg[1] == '01' and msg[2] == '00':
self.decode_00d(msg)
return
if msg[0] == '0d' and msg[1] == '01' and msg[2] == '01':
self.decode_01d(msg)
return
if msg[0] == '0d' and msg[1] == '01' and msg[2] == '02':
self.decode_02d(msg)
return
if msg[0] == '0d' and msg[1] == '01' and msg[2] == '03':
self.decode_03d(msg)
return
if msg[0] == '0d' and msg[1] == '01' and msg[2] == '04':
self.decode_04d(msg)
return
if msg[0] == '0d' and msg[1] == '01' and msg[2] == 'ff':
self.decode_ff(msg)
return
if msg[0] == '14' and msg[1] == '01' and msg[2] == '00':
self.decode_14_00(msg)
return
if msg[0] == '14' and msg[1] == '01' and msg[2] == '01':
self.decode_01d(msg)
return
if msg[0] == '14' and msg[1] == '01' and msg[2] == '02':
self.decode_02d(msg)
return
if msg[0] == '14' and msg[1] == '01' and msg[2] == '03':
self.decode_03d(msg)
return
if msg[0] == '14' and msg[1] == '01' and msg[2] == '04':
self.decode_04d(msg)
return
if msg[0] == '14' and msg[1] == '01' and msg[2] == 'ff':
self.decode_ff(msg)
return
if msg[0] == '14' and msg[1] == '01' and msg[2] == '07':
self.decode_14_07(msg)
return
if msg[1] == '01' and msg[2] == 'FF':
self.decode_000(msg)
return
if msg[0] == '04' and msg[1] == '02':
self.decode_002(msg)
return
if msg[1] == '03':
self.decode_003(msg)
return
if self.bDebug:
eg.PrintError(self.text.messageUKnwn + str(msg))
# self.TriggerEvent(self.text.messageUKnwn + str(msg))
else:
if msg[0] <> 'FF':
eg.PrintError(self.text.messageL + str(msg))
except:
pass
def replaceFunc(self, data):
data = data.strip()
if data == "CR":
return chr(13)
elif data == "LF":
return chr(10)
else:
return None
def hextobin(self, h):
return bin(int(h, 16))[2:].zfill(len(h) * 4)
def WriteMsg(self, data, w_msg, w_key):
# try:
# if self.bDebug:
# print self.text.messageDbg, data
# data = data.replace(' ', '')
# data = eg.ParseString(data, self.replaceFunc)
# data = data.decode('hex')
# self.hold = True
# self.serial.write(str(data))
# eg.Wait(0.01)
# self.hold = False
# if (
# (self.use_websockets or self.use_tornadoWebsockets) and
# w_msg <> '' and
# w_key <> ''
# ):
# self.SavePersistent(w_msg, w_key)
# except:
# self.TriggerEvent(self.text.rfxtrx_lost)
if self.bDebug:
print self.text.messageDbg, data
data = data.replace(' ', '')
data = eg.ParseString(data, self.replaceFunc)
data = data.decode('hex')
self.hold = True
self.serial.write(str(data))
eg.Wait(0.01)
self.hold = False
if (
(self.use_websockets or self.use_tornadoWebsockets) and
w_msg <> '' and
w_key <> ''
):
self.SavePersistent(w_msg, w_key)
def WriteRemoteKey(self, data):
if self.bDebug:
print self.text.messageDbg, data
data = data.replace(' ', '')
data = eg.ParseString(data, self.replaceFunc)
data = data.decode('hex')
self.hold = True
self.serial.write(str(data))
eg.Wait(0.01)
self.hold = False
def LogToFile(self, s):
timeStamp = str(
time.strftime("%Y-%m-%d %H:%M:%S", time.localtime())
)
logStr = timeStamp + "\t" + s + "<br\n>"
fileHandle = None
progData = eg.configDir + '\plugins\RFXtrx'
if (
not os.path.exists(progData)
and not os.path.isdir(progData)
):
os.makedirs(progData)
fileHandle = open(
progData + '/' +
self.name + '.html', 'a'
)
fileHandle.write(logStr)
fileHandle.close()
def sensorLost(self, myArgument):
eg.TriggerEvent(repr(myArgument))
lc = myArgument.split(':')[3].split(' ')[1]
try:
del self.sensors_status[lc]
except:
pass
try:
self.sensors_status[lc] = myArgument
except:
pass
if self.use_websockets or self.use_tornadoWebsockets:
self.BroadcastMessage(myArgument)
def sensorBack(self, myArgument):
eg.TriggerEvent(repr(myArgument))
bc = myArgument.split(':')[3].split(' ')[1]
try:
del self.sensors_status[bc]
except:
pass
try:
self.sensors_status[bc] = myArgument
except:
pass
if self.use_websockets or self.use_tornadoWebsockets:
self.BroadcastMessage(myArgument)
def eventMonitor(self, monitored, decoded, base, timeout):
try:
eg.scheduler.CancelTask(monitored)
except:
if decoded <> None:
self.sensorBack(
self.text.txt_signal_back + ': ' + base
)
monitored = eg.scheduler.AddTask(
timeout,
self.sensorLost,
self.text.txt_taskObj + ': ' + base
)
return monitored
def eventTrigger(self, decoded, base, pload):
msg = str(base) + ' : ' + str(pload)
try:
if str(decoded)[:-2] <> pload[:-2] or self.bDupEvents:
self.TriggerEvent(str(base), payload=str(pload))
if self.bLogToFile:
self.LogToFile(msg)
if self.use_websockets or self.use_tornadoWebsockets:
self.SavePersistent(msg, str(base))
except:
self.TriggerEvent(str(base), payload=str(pload))
if self.bLogToFile:
self.LogToFile(msg)
def eventTrigger2(self, decoded, base, pload, value, m_key):
msg = str(base) + ' : ' + str(pload)
try:
if str(decoded)[:-2] <> value[:-2] or self.bDupEvents:
self.TriggerEvent(str(base), payload=str(pload))
if self.bLogToFile:
self.LogToFile(msg)
if self.use_websockets or self.use_tornadoWebsockets:
self.SavePersistent(msg, m_key)
except:
self.TriggerEvent(str(base), payload=str(pload))
if self.bLogToFile:
self.LogToFile(msg)
def eventTrigger3(self, decoded, base, pload, value, m_key):
msg = str(base) + ' : ' + str(pload)
try:
if decoded <> value or self.bDupEvents:
self.TriggerEvent(str(base), payload=str(pload))
if self.bLogToFile:
self.LogToFile(msg)
if self.use_websockets or self.use_tornadoWebsockets:
self.SavePersistent(msg, m_key)
except:
self.TriggerEvent(str(base), payload=str(pload))
if self.bLogToFile:
self.LogToFile(msg)
def eventRemote(self, base, pload):
self.TriggerEvent(str(base), payload=str(pload))
def GetMacroIndex(self, label, name, my_macro_indx):
if not self.mMacroNames:
return None
if my_macro_indx == None:
try:
for index, m_name in enumerate(
eg.document.__dict__['root'].childs
):
if (
m_name.name.find('<') <> -1
and
m_name.name.find('>') <> -1
):
my_macro_indx = index
break
except:
pass
try:
for index, m_name in enumerate(
eg.document.__dict__['root'].childs
):
if m_name.name == 'RFXtrx: ' + label + ': ' + name:
my_macro_indx = index
break
except:
return my_macro_indx
else:
for index, m_name in enumerate(
eg.document.__dict__['root'].childs
):
if m_name.name == 'RFXtrx: ' + label + ': ' + name:
my_macro_indx = index
return my_macro_indx
def SetMacroName(self, label, name, macro_indx):
if macro_indx <> None and self.mMacroNames:
new_name = (
'RFXtrx: '
+ label
+ ': '
+ name
)
eg.document.__dict__['root'].childs[macro_indx].name = new_name
eg.document.__dict__['root'].childs[macro_indx].Refresh()
def decode_000(self, msg):
if msg[2] == 'FF':
eg.PrintError(self.text.messageT + str(msg[4]))
def decode_14_00(self, msg):
if not self.deviceCheck and self.init:
self.init = False
self.interfaceMode = msg
print 'Interface mode: ', msg
receiver_transceiver_types = {
'50': '310MHz',
'51': '315MHz',
'52': '433.92MHz receiver only',
'53': '433.92MHz transceiver',
'55': '868.00MHz',
'56': '868.00MHz FSK',
'57': '868.30MHz',
'58': '868.30MHz FSK',
'59': '868.35MHz',
'5A': '868.35MHz FSK',
'5B': '868.95MHz'
}
receiver_transceiver_fw = {
'00': 'Type1 RFXrec receive only firmware',
'01': 'Type1',
'02': 'Type2',
'03': 'Ext',
'04': 'Ext2'
}
try:
print(self.text.rfxtrx + str(receiver_transceiver_types[msg[5]]))
self.fwVer = int(msg[6], 16) + 1000
print self.text.fwVersion + str(self.fwVer)
fwType = receiver_transceiver_fw[msg[14]]
print self.text.rfxtrx_fw + fwType
except:
eg.PrintError(self.text.decodeError + str(msg))
else:
self.deviceCheck = False
if msg[0] == '14' and msg[1] == '01':
pass
else:
self.TriggerEvent(self.text.rfxtrx_lost)
def decode_00d(self, msg):
if not self.deviceCheck and self.init:
self.init = False
self.interfaceMode = msg
print 'Interface mode: ', msg
receiver_transceiver_types = {
'50': '310MHz',
'51': '315MHz',
'52': '433.92MHz receiver only',
'53': '433.92MHz transceiver',
'55': '868.00MHz',
'56': '868.00MHz FSK',
'57': '868.30MHz',
'58': '868.30MHz FSK',
'59': '868.35MHz',
'5A': '868.35MHz FSK',
'5B': '868.95MHz'
}
try:
print(self.text.fwVersion + str(int(msg[6], 16)))
self.fwVer = int(msg[6], 16)
print(self.text.rfxtrx + str(receiver_transceiver_types[msg[5]]))
if self.fwVer < 163:
print self.text.rfxtrx_type + "1"
if self.fwVer >= 163 and self.fwVer < 225:
print self.text.rfxtrx_type + "2"
if self.fwVer >= 225:
print self.text.rfxtrx_type + "433E"
except:
eg.PrintError(self.text.decodeError + str(msg))
else:
self.deviceCheck = False
ml = len(msg) - 1
if hex(ml).replace('x', '') == msg[0]:
pass
else:
self.TriggerEvent(self.text.rfxtrx_lost)
def decode_01d(self, msg):
eg.PrintError(self.text.unknown_RFY_remote)
def decode_02d(self, msg):
eg.PrintError(self.text.no_extended_hardware_present)
def decode_ff(self, msg):
eg.PrintNotice("RFXtrx: Please, flash the latest firmware")
def decode_14_07(self, msg):
def cprMsg(msg):
cpr = ''
validRFXCOM = False
try:
for i in range(5, len(msg)):
cpr += chr(int((msg[i]), 16))
print cpr + '.', self.text.rfxtrx_started
if cpr == "Copyright RFXCOM":
validRFXCOM = True
except:
validRFXCOM = False
return validRFXCOM
validRFXCOM = False
validRFXCOM = cprMsg(msg)
if not validRFXCOM:
eg.PrintNotice(
"RFXtrx: Genuin RFXtrx device verification failed!"
)
# self.__stop__()
def decode_03d(self, msg):
log = (
'RFY remote location: ' + str(int(msg[5], 16)) +
' ID1: ' + str(msg[6]) +
' ID2: ' + str(msg[7]) +
' ID3: ' + str(msg[8]) +
' Unit number: ' + str(msg[9])
)
if (
str(msg[6]) == '00' and
str(msg[7]) == '00' and
str(msg[8]) == '00' and
str(msg[9]) == '00'
):
log = (
'RFY remote location: ' + str(int(msg[5], 16)) +
' is empty '
)
print log
def decode_04d(self, msg):
log = (
'ASA remote location: ' + str(int(msg[5], 16)) +
' ID1: ' + str(msg[6]) +
' ID2: ' + str(msg[7]) +
' ID3: ' + str(msg[8]) +
' Unit number: ' + str(msg[9])
)
if (
str(msg[6]) == '00' and
str(msg[7]) == '00' and
str(msg[8]) == '00' and
str(msg[9]) == '00'
):
log = (
'ASA remote location: ' + str(int(msg[5], 16)) +
' is empty '
)
print log
def decode_002(self, msg):
if msg[0] == '04' and msg[1] == '02':
if msg[2] == '00' or msg[2] == '01':
pass # message sent ok
if msg[2] == '02' or msg[2] == '03':
eg.PrintError('NACK: ' + str(msg))
def decode_003(self, msg):
subtypes = {
'00': 'ac',
'01': 'arc',
'02': 'ati',
'03': 'hideki/upm',
'04': 'lacrosse/viking',
'05': 'ad',
'06': 'mertik',
'07': 'oregon1',
'08': 'oregon2',
'09': 'oregon3',
'0a': 'proguard',
'0b': 'visonic',
'0c': 'nec',
'0d': 'fs20',
'0e': 'reserved',
'0f': 'blinds',
'10': 'rubicson',
'11': 'ae',
'12': 'fineoffset',
'13': 'rgb',
'14': 'rfy',
'15': 'selectplus'
}
try:
print 'Undecoded: ', msg, subtypes[str(msg[2])]
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_040(self, msg):
types = {
'00': 'Digimax, TLX7506',
'01': 'Digimax with short format (no set point)'
}
try:
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
st = int(bin(int(msg[8], 16))[2:].zfill(8)[6:], 2)
md = int(bin(int(msg[8], 16))[2:].zfill(8)[0], 2)
if st == 0:
my_status = 'no status available'
if st == 1:
my_status = 'demand'
if st == 2:
my_status = 'no demand'
if st == 3:
my_status = 'initializing'
if md == 0:
my_mode = 'heating'
if md == 1:
my_mode = 'cooling'
if msg[2] == '00':
pload_msg = (
' temperature: ' +
str(float(int(msg[6], 16))) +
' setpoint: ' +
str(float(int(msg[7], 16))) +
' status: ' +
my_status +
' mode: ' +
my_mode +
' signal: ' + str(int(msg[9][0], 16))
)
elif msg[2] == '01':
pload_msg = (
' temperature: ' +
'0.0' +
' signal: ' + str(int(msg[9][0], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decoder_mems['040'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['040'][base_msg]
except:
pass
self.monitor_mems['040'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['040'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_042(self, msg):
types = {
'00': 'Mertik G6R-H4T1',
'01': 'Mertik G6R-H4TB/G6-H4T/G6R-H4T21-Z22',
'02': 'Mertik G6R-H4TD'
}
try:
# Get the unit ID
dev_id = str(int(msg[4] + msg[5] + msg[6], 16))
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
cmd = int(msg[7][1], 16)
if cmd == 0:
my_cmd = 'off'
elif cmd == 1:
my_cmd = 'on'
elif cmd == 2:
my_cmd = 'up'
elif cmd == 3:
my_cmd = 'down'
elif cmd == 4:
if int(msg[2]) == 0: # G6R-H4T1
my_cmd = 'Run Up'
elif int(msg[2]) == 1: # G6R-H4TB
my_cmd = '2nd Off'
elif cmd == 5:
if int(msg[2]) == 0: # G6R-H4T1
my_cmd = 'Run Down'
elif int(msg[2]) == 1: # G6R-H4TB
my_cmd = '2nd On'
elif cmd == 6:
if int(msg[2]) == 0: # G6R-H4T1
my_cmd = 'Stop'
elif int(msg[2]) == 1: # G6R-H4TB
my_cmd = 'NA'
pload_msg = (
' command: ' +
my_cmd +
' signal: ' + str(int(msg[8][0], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['042'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['042'][base_msg]
except:
pass
self.monitor_mems['042'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['042'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_04E(self, msg):
types = {
'01': 'Maverick ET-732 BBQ temperature sensors'
}
try:
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' temperature Food: ' +
str(float(int(msg[6], 16) * 256 + int(msg[7], 16))) +
' temperature BBQ: ' +
str(float(int(msg[8], 16) * 256 + int(msg[9], 16))) +
' signal: ' + str(int(msg[10][0], 16)) +
' battery: ' + str(int(msg[10][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_04E_mem[base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_04E_mem[base_msg]
except:
pass
self.monitor_04E_mem[base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_04E_mem[base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_04F(self, msg):
types = {
'01': 'Alecto WS1200'
}
signs = {
'0': '+',
'1': '-'
}
try:
# Get the correct sign
sign_bt = bin(int(msg[6], 16))[2:].zfill(8)
sign = signs[sign_bt[0]]
# Calculate the actual temperature
if sign == '+':
tempC = str(
float(
(
int(msg[6], 16) * 256 +
int(msg[7], 16)) / 10.0
)
)
if sign == '-':
tempC = str(
float(
(
(
int(msg[6], 16) & int('7F', 16)) * 256 +
int(msg[7], 16)) / 10.0
)
)
rainTot = str(
float(
(
int(msg[8], 16) * 256 +
int(msg[9], 16)) / 10.0
)
)
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
# Get the channel value
# print msg[4]
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' temperature: ' + sign + tempC + ' deg C' +
' rain total: ' + rainTot + ' mm' +
' signal: ' + str(int(msg[10][0], 16)) +
' battery: ' + str(int(msg[10][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_04F_mem[base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_04F_mem[base_msg]
except:
pass
self.monitor_04F_mem[base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_04F_mem[base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_050(self, msg):
types = {
'01': 'THR128/138, THC138',
'02': 'THC238/268,THN132,THWR288,THRN122,THN122,AW129/131',
'03': 'THWR800',
'04': 'RTHN318',
'05': 'La Crosse TX3, TX4, TX17',
'06': 'TS15C,UPM temp only',
'07': 'Viking 02811',
'08': 'La Crosse WS2300',
'09': 'RUBiCSON',
'0a': 'TFA 30.3133',
'0b': 'WT0122'
}
signs = {
'0': '+',
'1': '-'
}
try:
# Get the correct sign
sign_bt = bin(int(msg[6], 16))[2:].zfill(8)
sign = signs[sign_bt[0]]
# Calculate the actual temperature
if sign == '+':
tempC = str(
float(
(
int(msg[6], 16) * 256 +
int(msg[7], 16)) / 10.0
)
)
if sign == '-':
tempC = str(
float(
(
(
int(msg[6], 16) & int('7F', 16)) * 256 +
int(msg[7], 16)) / 10.0
)
)
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
# Get the channel value
# print msg[4]
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' temperature: ' + sign + tempC + ' deg C' +
' signal: ' + str(int(msg[8][0], 16)) +
' battery: ' + str(int(msg[8][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['050'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['050'][base_msg]
except:
pass
self.monitor_mems['050'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['050'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_051(self, msg):
types = {
'01': 'La Crosse TX3',
'02': 'La Crosse WS2300',
'03': 'Inovalley S80 plant humidity sensor'
}
if self.fwVer < 54:
statuses = {
'00': 'dry',
'01': 'comfort',
'02': 'normal',
'03': 'wet'
}
else:
statuses = {
'00': 'normal',
'01': 'comfort',
'02': 'dry',
'03': 'wet'
}
try:
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
# Get the channel value
# print msg[4]
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' humidity: ' + str(int(msg[6], 16)) + ' %RH' +
' status: ' + statuses[msg[7]] +
' signal: ' + str(int(msg[8][0], 16)) +
' battery: ' + str(int(msg[8][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['051'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['051'][base_msg]
except:
pass
self.monitor_mems['051'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['051'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_052(self, msg):
types = {
'01': 'THGN122/123, THGN132, THGR122/228/238/268',
'02': 'THGR810, THGN800',
'03': 'RTGR328',
'04': 'THGR328',
'05': 'WTGR800',
'06': 'THGR918, THGRN228, THGN500',
'07': 'TFA TS34C, Cresta',
'08': 'WT260, WT260H, WT440H, WT450, WT450H',
'09': 'Viking 02035,02038',
'0a': 'Rubicson',
'0b': 'Oregon EW109',
'0c': 'Imagintronix Soil sensor',
'0d': 'Alecto WS1700 and compatibles',
'0e': 'Alecto WS4500 and compatibles'
}
signs = {
'0': '+',
'1': '-'
}
if self.fwVer < 54:
statuses = {
'00': 'dry',
'01': 'comfort',
'02': 'normal',
'03': 'wet'
}
else:
statuses = {
'00': 'normal',
'01': 'comfort',
'02': 'dry',
'03': 'wet'
}
try:
# Get the correct sign
sign_bt = bin(int(msg[6], 16))[2:].zfill(8)
sign = signs[sign_bt[0]]
# Calculate the actual temperature
if sign == '+':
tempC = str(
float(
(
int(msg[6], 16) * 256 +
int(msg[7], 16)) / 10.0
)
)
if sign == '-':
tempC = str(
float(
(
(
int(msg[6], 16) & int('7F', 16)) * 256 +
int(msg[7], 16)) / 10.0
)
)
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
# Get the channel value
# print msg[4]
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' temperature: ' + sign + tempC + ' deg C' +
' humidity: ' + str(int(msg[8], 16)) + ' %RH' +
' status: ' + statuses[msg[9]] +
' signal: ' + str(int(msg[10][0], 16)) +
' battery: ' + str(int(msg[10][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['052'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['052'][base_msg]
except:
pass
self.monitor_mems['052'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['052'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_054(self, msg):
types = {
'01': 'BTHR918, BTHGN129',
'02': 'BTHR918N, BTHR968'
}
signs = {
'0': '+',
'1': '-'
}
if self.fwVer < 54:
statuses = {
'00': 'dry',
'01': 'comfort',
'02': 'normal',
'03': 'wet'
}
else:
statuses = {
'00': 'normal',
'01': 'comfort',
'02': 'dry',
'03': 'wet'
}
forecasts = {
'00': 'no forecast available',
'01': 'sunny',
'02': 'partly cloudy',
'03': 'cloudy',
'04': 'rain'
}
try:
# Get the correct sign
sign_bt = bin(int(msg[6], 16))[2:].zfill(8)
sign = signs[sign_bt[0]]
# Calculate the actual temperature
if sign == '+':
tempC = str(
float(
(
int(msg[6], 16) * 256 +
int(msg[7], 16)) / 10.0
)
)
if sign == '-':
tempC = str(
float(
(
(
int(msg[6], 16) & int('7F', 16)) * 256 +
int(msg[7], 16)) / 10.0
)
)
# Calculate the barometer value
barometer = str(
float(
(
int(msg[10], 16) * 256 +
int(msg[11], 16)
)
)
)
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' temperature: ' + sign + tempC + ' deg C' +
' humidity: ' + str(int(msg[8], 16)) + ' %RH' +
' status: ' + statuses[msg[9]] +
' baro: ' + barometer + ' hPa' +
' forecast: ' + forecasts[msg[12]] +
' signal: ' + str(int(msg[13][0], 16)) +
' battery: ' + str(int(msg[13][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['054'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['054'][base_msg]
except:
pass
self.monitor_mems['054'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['054'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_055(self, msg):
types = {
'01': 'RGR126/682/918',
'02': 'PCR800',
'03': 'TFA',
'04': 'UPM RG700',
'05': 'La Crosse WS2300',
'06': 'La Crosse TX5',
'07': 'Alecto WS4500 and compatibles'
}
battery_statuses = {
'0': '10%',
'1': '20%',
'2': '30%',
'3': '40%',
'4': '50%',
'5': '60%',
'6': '70%',
'7': '80%',
'8': '90%',
'9': '100%'
}
try:
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
# Get the battery status
batt_level = battery_statuses[msg[11][1]]
if int(dev_id) <> 0:
if msg[2] == '01':
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' rainrate: ' + str(int(msg[6], 16) * 256 +
int(msg[7], 16)) + ' mm/hr' +
' rainTotal: ' + str((int(msg[8], 16) * 65535 +
int(msg[9], 16) * 256 +
int(msg[10], 16)) / 10) + ' mm' +
' signal: ' + str(int(msg[11][0], 16)) +
' battery: ' + batt_level
)
if msg[2] == '02':
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' rainrate: ' + str((int(msg[6], 16) * 256 +
int(msg[7], 16)) / 100) + ' mm/hr' +
' rainTotal: ' + str((int(msg[8], 16) * 65535 +
int(msg[9], 16) * 256 +
int(msg[10], 16)) / 10) + ' mm' +
' signal: ' + str(int(msg[11][0], 16)) +
' battery: ' + batt_level
)
if (
msg[2] == '03' or
msg[2] == '04' or
msg[2] == '05' or
msg[2] == '07'
):
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' rainTotal: ' + str((int(msg[8], 16) * 65535 +
int(msg[9], 16) * 256 +
int(msg[10], 16)) / 10) + ' mm' +
' signal: ' + str(int(msg[11][0], 16)) +
' battery: ' + batt_level
)
if (
msg[2] == '06'
):
flCount = int(msg[10], 16)
try:
res = self.flipCount[dev_id]
except:
# Happens at restart
try:
tst = self.totalRain[dev_id]
except:
self.totalRain[dev_id] = 0.001
if flCount > 0:
self.flipCount[dev_id] = flCount - 1
else:
self.flipCount[dev_id] = 15
# Use next if counting on first event
self.flCount_prev[dev_id] = self.flipCount[dev_id]
# Use next if not counting on first event
# self.flCount_prev[dev_id] = flCount
if flCount <> self.flCount_prev[dev_id]:
if self.flipCount[dev_id] > flCount:
self.flipCount[dev_id] = (
flCount + 16 - self.flipCount[dev_id]
)
addRain = float(
(self.flipCount[dev_id] - flCount) * 0.266
)
else:
addRain = float(
(flCount - self.flipCount[dev_id]) * 0.266
)
self.flipCount[dev_id] = flCount
self.totalRain[dev_id] += addRain
CurrentStateData.totalRain[dev_id] = (
self.totalRain[dev_id]
)
self.flCount_prev[dev_id] = flCount
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' rainTotal: ' +
str("%.2f" % self.totalRain[dev_id]) +
' mm' +
' signal: ' + str(int(msg[11][0], 16)) +
' battery: ' + batt_level
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['055'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['055'][base_msg]
except:
pass
self.monitor_mems['055'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['055'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_056(self, msg):
types = {
'01': 'WTGR800',
'02': 'WGR800',
'03': 'STR918, WGR918',
'04': 'TFA',
'05': 'UPM WDS500',
'06': 'La Crosse WS2300',
'07': 'Alecto WS4500 and compatibles'
}
signs = {
'0': '+',
'1': '-'
}
battery_statuses = {
'0': '10%',
'1': '20%',
'2': '30%',
'3': '40%',
'4': '50%',
'5': '60%',
'6': '70%',
'7': '80%',
'8': '90%',
'9': '100%'
}
try:
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
# Get the channel value
# print msg[4]
if int(dev_id) <> 0:
wind_dir = float(int(msg[6], 16) * 256 + int(msg[7], 16))
strDirection = "---"
if wind_dir > 348.75 or wind_dir < 11.26:
strDirection = "N"
elif wind_dir < 33.76:
strDirection = "NNE"
elif wind_dir < 56.26:
strDirection = "NE"
elif wind_dir < 78.76:
strDirection = "ENE"
elif wind_dir < 101.26:
strDirection = "E"
elif wind_dir < 123.76:
strDirection = "ESE"
elif wind_dir < 146.26:
strDirection = "SE"
elif wind_dir < 168.76:
strDirection = "SSE"
elif wind_dir < 191.26:
strDirection = "S"
elif wind_dir < 213.76:
strDirection = "SSW"
elif wind_dir < 236.26:
strDirection = "SW"
elif wind_dir < 258.76:
strDirection = "WSW"
elif wind_dir < 281.26:
strDirection = "W"
elif wind_dir < 303.76:
strDirection = "WNW"
elif wind_dir < 326.26:
strDirection = "NW"
elif wind_dir < 348.76:
strDirection = "NNW"
if msg[2] == '04':
# Get the correct sign
sign_bt = bin(int(msg[12], 16))[2:].zfill(8)
sign = signs[sign_bt[0]]
# Calculate the actual temperature
if sign == '+':
tempC = str(
float(
(
int(msg[12], 16) * 256 +
int(msg[13], 16)) / 10.0
)
)
if sign == '-':
tempC = str(
float(
(
(
int(msg[12], 16) & int('7F', 16)) * 256 +
int(msg[13], 16)) / 10.0
)
)
# Get the correct chill sign
chill_sign_bt = bin(int(msg[14], 16))[2:].zfill(8)
chill_sign = signs[chill_sign_bt[0]]
# Calculate the actual chill
if chill_sign == '+':
chillC = str(
float(
(
int(msg[14], 16) * 256 +
int(msg[15], 16)) / 10.0
)
)
if chill_sign == '-':
chillC = str(
float(
(
(
int(msg[14], 16) & int('7F', 16)) * 256 +
int(msg[15], 16)) / 10.0
)
)
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' direction: ' + strDirection +
' average speed: ' + str(float(int(msg[8], 16) * 256 +
int(msg[9], 16)) / 10.0) + ' m/s' +
' gust: ' + str(float(int(msg[10], 16) * 256 +
int(msg[11], 16)) / 10.0) + ' m/s' +
' temperature: ' + temp_sign + tempC + ' deg C' +
' chill: ' + chill_sign + chillC + ' deg C' +
' signal: ' + str(int(msg[16][0], 16)) +
' battery: ' + battery_statuses[msg[16][1]]
)
if msg[2] == '05':
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' direction: ' + strDirection +
' gust: ' + str(float(int(msg[10], 16) * 256 +
int(msg[11], 16)) / 10.0) + ' m/s' +
' signal: ' + str(int(msg[16][0], 16)) +
' battery: ' + battery_statuses[msg[16][1]]
)
if (
msg[2] == '01' or
msg[2] == '02' or
msg[2] == '03' or
msg[2] == '06' or
msg[2] == '07'
):
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' direction: ' + strDirection +
' average speed: ' + str(float(int(msg[8], 16) * 256 +
int(msg[9], 16)) / 10.0) + ' m/s' +
' gust: ' + str(float(int(msg[10], 16) * 256 +
int(msg[11], 16)) / 10.0) + ' m/s' +
' signal: ' + str(int(msg[16][0], 16)) +
' battery: ' + battery_statuses[msg[16][1]]
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['056'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['056'][base_msg]
except:
pass
self.monitor_mems['056'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['056'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_057(self, msg):
types = {
'01': 'UVN128, UV138',
'02': 'UVN800',
'03': 'TFA'
}
signs = {
'0': '+',
'1': '-'
}
try:
uv_level = int(msg[6], 16) / 10
uv_risk = "----"
if uv_level < 3:
uv_risk = "Low"
elif uv_level < 6:
uv_risk = "Medium"
elif uv_level < 8:
uv_risk = "High"
elif uv_level < 11:
uv_risk = "Very High"
else:
uv_risk = "Dangerous"
if msg[2] == '01' or msg[2] == '02':
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' UV level: ' + str(uv_level) +
' status: ' + uv_risk +
' signal: ' + str(int(msg[9][0], 16)) +
' battery: ' + str(int(msg[9][1], 16))
)
if msg[2] == '03':
# Get the correct sign
sign_bt = bin(int(msg[7], 16))[2:].zfill(8)
sign = signs[sign_bt[0]]
# Calculate the actual temperature
if sign == '+':
tempC = str(
float(
(
int(msg[7], 16) * 256 +
int(msg[8], 16)) / 10.0
)
)
if sign == '-':
tempC = str(
float(
(
(
int(msg[7], 16) & int('7F', 16)) * 256 +
int(msg[8], 16)) / 10.0
)
)
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' temperature: ' + sign + tempC + ' deg C' +
' UV level: ' + str(uv_level) +
' status: ' + uv_risk +
' signal: ' + str(int(msg[9][0], 16)) +
' battery: ' + str(int(msg[9][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['057'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['057'][base_msg]
except:
pass
self.monitor_mems['057'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['057'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_058(self, msg):
def checkStrLength(st):
if len(st) < 2:
st = "0" + st
return st
dayOfweek = {
'1': 'Sunday',
'2': 'Monday',
'3': 'Tuesday',
'4': 'Wednesday',
'5': 'Thursday',
'6': 'Friday',
'7': 'Saturday'
}
types = {
'01': 'DT1 - RTGR328N'
}
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
# year
year = checkStrLength(str(int(msg[6], 16)))
# month
month = checkStrLength(str(int(msg[7], 16)))
# day
day = checkStrLength(str(int(msg[8], 16)))
# dayOfweek
dOfweek = dayOfweek[str(int(msg[9], 16))]
# hours
hours = checkStrLength(str(int(msg[10], 16)))
# minutes
minutes = checkStrLength(str(int(msg[11], 16)))
# seconds
seconds = checkStrLength(str(int(msg[12], 16)))
if int(dev_id) <> 0:
# print msg
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' Date (yy/mm/dd): ' + year + '/' + month + '/' + day +
' Day of week: ' + dOfweek +
' Time (hh:mm:ss) : ' + hours + ':' + minutes + ':' + seconds +
' signal: ' + str(int(msg[13][0], 16)) +
' battery: ' + str(int(msg[13][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['058'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['058'][base_msg]
except:
pass
self.monitor_mems['058'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['058'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_059(self, msg):
types = {
'01': 'CM113'
}
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
# Counter
counter = str(int(msg[6], 16))
# Channel 1
channel_1 = float((int(msg[7], 16) * 256 + int(msg[8], 16))) / 10.0
channel_1 = str("%.2f" % channel_1)
# Channel 2
channel_2 = float((int(msg[9], 16) * 256 + int(msg[10], 16))) / 10.0
channel_2 = str("%.2f" % channel_2)
# Channel 3
channel_3 = float((int(msg[11], 16) * 256 + int(msg[12], 16))) / 10.0
channel_3 = str("%.2f" % channel_3)
if int(dev_id) <> 0:
# print msg
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' Counter: ' + counter +
' Channel 1: ' + channel_1 + ' A' +
' Channel 2: ' + channel_2 + ' A' +
' Channel 3: ' + channel_3 + ' A' +
' signal: ' + str(int(msg[13][0], 16)) +
' battery: ' + str(int(msg[13][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['059'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['059'][base_msg]
except:
pass
self.monitor_mems['059'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['059'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_060_01(self, msg):
types = {
'01': 'CARTELECTRONIC TIC'
}
try:
# Get the unit ID
dev_id = msg[4] + msg[5] + msg[6] + msg[7] + msg[8]
# Contract type
contract = msg[9]
# Counter 1
counter_1 = str(
(int(msg[10], 16) << 24) +
(int(msg[11], 16) << 16) +
(int(msg[12], 16) << 8) +
(int(msg[13], 16))
)
# Counter 2
counter_2 = str(
(int(msg[14], 16) << 24) +
(int(msg[15], 16) << 16) +
(int(msg[16], 16) << 8) +
(int(msg[17], 16))
)
# State
state = str(self.hextobin(msg[20]))
power = '0'
teleinfo = 'Present'
pejp = ''
if int(state[5]) == 1:
teleinfo = 'Not present'
if int(state[6]) == 1:
power = float((int(msg[18], 16) * 256 + int(msg[19], 16)))
power = str("%.2f" % power)
if state[3] + state[4] == '00':
pejp = 'No change price time warning'
if state[3] + state[4] == '01':
pejp = 'White'
if state[3] + state[4] == '10':
pejp = 'Blue'
if state[3] + state[4] == '11':
pejp = 'Red / PEJP'
if dev_id <> '':
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
'Contract/Price: ' + contract +
' Counter1: ' + counter_1 +
' Counter2: ' + counter_2 +
' Teleinfo: ' + teleinfo +
' PEJP or DEMAIN: ' + pejp +
' Apparent power: ' + str(power) +
' signal: ' + str(int(msg[21][0], 16)) +
' battery: ' + str(int(msg[21][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['060_01'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['060_01'][base_msg]
except:
pass
self.monitor_mems['060_01'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['060_01'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_060_02(self, msg):
types = {
'02': 'CARTELECTRONIC ENCODER'
}
try:
# Get the unit ID
dev_id = msg[4] + msg[5] + msg[6] + msg[7]
# Counter 1
counter_1 = str(
(int(msg[8], 16) << 24) +
(int(msg[9], 16) << 16) +
(int(msg[10], 16) << 8) +
(int(msg[11], 16))
)
# Counter 2
counter_2 = str(
(int(msg[12], 16) << 24) +
(int(msg[13], 16) << 16) +
(int(msg[14], 16) << 8) +
(int(msg[15], 16))
)
if dev_id <> '':
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
'Counter1: ' + counter_1 +
' Counter2: ' + counter_2 +
' signal: ' + str(int(msg[17][0], 16)) +
' battery: ' + str(int(msg[17][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['060_02'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['060_02'][base_msg]
except:
pass
self.monitor_mems['060_02'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_mems['060_02'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_05A_1(self, msg):
types = {
'01': 'CM119/160'
}
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
# Counter
counter = str(int(msg[6], 16))
# Instant power consumption in Watts
instant = str("%.2f" %
float(
eval('0x' + msg[7]) * 0x1000000 +
eval('0x' + msg[8]) * 0x10000 +
eval('0x' + msg[9]) * 0x100 +
eval('0x' + msg[10])
)
)
# Total energy usage in Wh
f_usage = float(
eval('0x' + msg[11]) * 0x10000000000 +
eval('0x' + msg[12]) * 0x100000000 +
eval('0x' + msg[13]) * 0x1000000 +
eval('0x' + msg[14]) * 0x10000 +
eval('0x' + msg[15]) * 0x100 +
eval('0x' + msg[16])
) / 223.666
usage = str("%.2f" % f_usage)
if int(dev_id) <> 0:
# print msg
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' Counter: ' + counter +
' Instant power usage: ' + instant + ' W' +
' Total energy usage: ' + usage + ' Wh' +
' signal: ' + str(int(msg[17][0], 16)) +
' battery: ' + str(int(msg[17][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_05A_1_mem[base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_05A_1_mem[base_msg]
except:
pass
self.monitor_05A_1_mem[base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_05A_1_mem[base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_05A_2(self, msg):
types = {
'02': 'CM180'
}
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
# Counter
counter = str(int(msg[6], 16))
# Instant power consumption in Watts
instant = str("%.2f" %
float(
eval('0x' + msg[7]) * 0x1000000 +
eval('0x' + msg[8]) * 0x10000 +
eval('0x' + msg[9]) * 0x100 +
eval('0x' + msg[10])
)
)
if int(counter) == 0:
# Total energy usage in Wh
f_usage = float(
eval('0x' + msg[11]) * 0x10000000000 +
eval('0x' + msg[12]) * 0x100000000 +
eval('0x' + msg[13]) * 0x1000000 +
eval('0x' + msg[14]) * 0x10000 +
eval('0x' + msg[15]) * 0x100 +
eval('0x' + msg[16])
) / 223.666
self.usage_05A_2 = str("%.2f" % f_usage)
if int(dev_id) <> 0:
# print msg
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' Counter: ' + counter +
' Instant power usage: ' + instant + ' W' +
' Total energy usage: ' + self.usage_05A_2 + ' Wh' +
' signal: ' + str(int(msg[17][0], 16)) +
' battery: ' + str(int(msg[17][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_05A_2_mem[base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_05A_2_mem[base_msg]
except:
pass
self.monitor_05A_2_mem[base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_05A_2_mem[base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_05B(self, msg):
types = {
'01': 'CM180i'
}
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
# Counter
counter = str(int(msg[6], 16))
# Instant current consumption in ampere
ampere_1 = str("%.2f" %
float(int(msg[7], 16) * 256 + int(msg[8], 16)) / 10.0
)
ampere_2 = str("%.2f" %
float(int(msg[9], 16) * 256 + int(msg[10], 16)) / 10.0
)
ampere_3 = str("%.2f" %
float(int(msg[11], 16) * 256 + int(msg[12], 16)) / 10.0
)
# Total energy usage in Wh
usage = '0'
f_usage = float(
eval('0x' + msg[13]) * 0x10000000000 +
eval('0x' + msg[14]) * 0x100000000 +
eval('0x' + msg[15]) * 0x1000000 +
eval('0x' + msg[16]) * 0x10000 +
eval('0x' + msg[17]) * 0x100 +
eval('0x' + msg[18])
) / 223.666
if int(msg[6], 16) == 0:
usage = str("%.2f" % f_usage)
if int(dev_id) <> 0:
# print msg
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' Counter: ' + counter +
' Current ch1: ' + ampere_1 + ' A' +
' Current ch2: ' + ampere_2 + ' A' +
' Current ch3: ' + ampere_3 + ' A' +
' Total energy usage: ' + usage + ' Wh' +
' signal: ' + str(int(msg[19][0], 16)) +
' battery: ' + str(int(msg[19][1], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_05B_mem[base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_05B_mem[base_msg]
except:
pass
self.monitor_05B_mem[base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_05B_mem[base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_05C(self, msg):
types = {
'01': 'ELEC5 - Revolt'
}
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
# power line voltage
voltage = str(int(msg[6], 16))
# currentH-currentL
current = float((int(msg[7], 16) * 256 + int(msg[8], 16))) / 100.0
current = str("%.2f" % current)
# powerH-powerL
power = float((int(msg[9], 16) * 256 + int(msg[10], 16))) / 10.0
power = str("%.2f" % power)
# energyH-energyL
energy = float((int(msg[11], 16) * 256 + int(msg[12], 16))) / 100.0
energy = str("%.2f" % energy)
# power factor
pf = float(int(msg[13], 16)) / 100.0
pf = str("%.2f" % pf)
# power line frequency in Hz
freq = str(int(msg[14], 16))
if int(dev_id) <> 0:
# print msg
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' Voltage: ' + voltage + ' V' +
' Ampere: ' + current + ' A' +
' Instant Power: ' + power + ' W' +
' Total Energy: ' + energy + ' kWh' +
' Power Factor: ' + pf +
' Frequency: ' + freq + ' Hz' +
' signal: ' + str(int(msg[15][0], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_05C_mem[base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_05C_mem[base_msg]
except:
pass
self.monitor_05C_mem[base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
self.sensorLostTimeOut
)
self.decode_05C_mem[base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_070(self, msg):
types = {
'00': 'RFXSensor temperature',
'01': 'RFXSensor A/D',
'02': 'RFXSensor voltage',
'03': 'RFXSensor message'
}
signs = {
'0': '+',
'1': '-'
}
messages = {
'01': 'RFXSensor addresses incremented',
'02': 'RFXSensor battery low detected',
'81': 'RFXSensor no 1-wire device connected',
'82': 'RFXSensor 1-Wire ROM CRC error',
'83': 'RFXSensor 1-Wire device connected is not a DS18B20 or DS2438',
'84': 'RFXSensor no end of read signal received from 1-Wire device',
'85': 'RFXSensor 1-Wire scratchpad CRC error'
}
try:
# Get the unit ID
dev_id = str(int(msg[4] + msg[5], 16))
# Get the channel value
# print msg[4]
if int(dev_id) <> 0:
if msg[2] == '00':
# Get the correct sign
sign_bt = bin(int(msg[5], 16))[2:].zfill(8)
sign = signs[sign_bt[0]]
# Calculate the actual temperature
if sign == '+':
tempC = str(
float(
(
int(msg[5], 16) * 256 +
int(msg[6], 16))
) / 100.0
)
if sign == '-':
tempC = str(
float(
(int(msg[5], 16) & int('7F', 16)) * 256 +
int(msg[6], 16)
) / 100.0
)
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' temperature: ' + sign + tempC + ' deg C' +
' signal: ' + str(int(msg[7][0], 16))
)
if msg[2] == '01' or msg[2] == '02':
# Calculate the actual voltage level
voltage = str(
float(
(
int(msg[5], 16) * 256 +
int(msg[6], 16))
)
)
pload_msg = (
' voltage: ' + voltage + ' mV' +
' signal: ' + str(int(msg[7][0], 16))
)
if msg[2] == '03':
# Map the correct message
message = messages[msg[6]]
pload_msg = (
' message: ' + message +
' signal: ' + str(int(msg[7][0], 16))
)
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['070'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['070'][base_msg]
except:
pass
self.monitor_mems['070'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
6000.0
)
self.decode_mems['070'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_071(self, msg):
types = {
'00': 'RFXMeter normal data packet',
'0f': 'Identification packet'
}
firmware_version = (
'RFXPower',
'RFU',
'RFU',
'RFXMeter'
)
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
dev_type = '----'
if int(dev_id) <> 0:
if msg[2] == '0f': # Identification packet
if int(msg[8], 16) <= int('3f', 16):
dev_type = firmware_version[0]
elif int(msg[8], 16) <= int('7f', 16):
dev_type = firmware_version[1]
elif int(msg[8], 16) <= int('bf', 16):
dev_type = firmware_version[2]
else:
dev_type = firmware_version[3]
self.rfxSensors[dev_id] = dev_type
if msg[2] == '00': # Normal counter data packet
counter = (
(int(msg[6], 16) << 24) +
(int(msg[7], 16) << 16) +
(int(msg[8], 16) << 8) +
(int(msg[9], 16))
)
try:
dev_type = self.rfxSensors[dev_id]
except:
dev_type = 'RFXMeter' # default to RFXMeter
# Look for RFXPower device
if dev_type == firmware_version[0]:
counter = str("%.3f" % float(counter / 1000.0)) + ' kWh'
else:
counter = str(counter)
base_msg = (
'Type: ' + dev_type +
' id: ' + dev_id
)
pload_msg = (
' Counter: ' + counter +
' signal: ' + str(int(msg[10][0], 16))
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['071'][base_msg]
except:
pass
self.eventTrigger(
decode_param,
base_msg,
pload_msg
)
try:
mon_param = self.monitor_mems['071'][base_msg]
except:
pass
self.monitor_mems['071'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
3900.0
)
self.decode_mems['071'][base_msg] = pload_msg
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_010(self, msg):
types = {
'00': 'X10 lighting',
'01': 'ARC',
'02': 'ELRO AB400D',
'03': 'Waveman',
'04': 'Chacon EMW200',
'05': 'IMPULS',
'06': 'RisingSun',
'07': 'Philips SBC',
'08': 'Energenie'
}
housecodes = {
'41': 'A',
'42': 'B',
'43': 'C',
'44': 'D',
'45': 'E',
'46': 'F',
'47': 'G',
'48': 'H',
'49': 'I',
'4a': 'J',
'4b': 'K',
'4c': 'L',
'4d': 'M',
'4e': 'N',
'4f': 'O',
'50': 'P'
}
unitcodes = {
'00': '00',
'01': '01',
'02': '02',
'03': '03',
'04': '04',
'05': '05',
'06': '06',
'07': '07',
'08': '08',
'09': '09',
'0a': '10',
'0b': '11',
'0c': '12',
'0d': '13',
'0e': '14',
'0f': '15',
'10': '16'
}
commands = {
'00': 'off',
'01': 'on',
'02': 'dim',
'03': 'bright',
'05': 'all off',
'06': 'all on',
'07': 'chime'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' house: ' + housecodes[msg[4]] +
' unit: ' + unitcodes[msg[5]] +
' command: ' + commands[msg[6]]
)
pload_msg = (
' signal: ' + str(int(msg[7][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' house: ' + housecodes[msg[4]] +
' unit: ' + unitcodes[msg[5]]
)
msg_value = (
' command: ' + commands[msg[6]] +
' signal: ' + str(int(msg[7][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
housecodes[msg[4]] +
' ' +
unitcodes[msg[5]]
)
decode_param = None
try:
decode_param = self.decode_mems['010'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['010'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_011(self, msg):
types = {
'00': 'AC',
'01': 'HomeEasy EU',
'02': 'ANSLUT'
}
unitcodes = {
'01': '01',
'02': '02',
'03': '03',
'04': '04',
'05': '05',
'06': '06',
'07': '07',
'08': '08',
'09': '09',
'0a': '10',
'0b': '11',
'0c': '12',
'0d': '13',
'0e': '14',
'0f': '15',
'10': '16'
}
commands = {
'00': 'off',
'01': 'on',
'02': 'dim level',
'03': 'group off',
'04': 'group on',
'05': 'group dim level'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' address: ' + msg[4] + msg[5] + msg[6] + msg[7] +
' unit: ' + unitcodes[msg[8]] +
' command: ' + commands[msg[9]]
)
pload_msg = (
' level: ' + str(int(msg[10][0], 16)) +
' signal: ' + str(int(msg[11][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' address: ' + msg[4] + msg[5] + msg[6] + msg[7] +
' unit: ' + unitcodes[msg[8]]
)
msg_value = (
' command: ' + commands[msg[9]] +
' level: ' + str(int(msg[10][0], 16)) +
' signal: ' + str(int(msg[11][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + msg[5] + msg[6] + msg[7] +
' ' +
unitcodes[msg[8]]
)
decode_param = None
try:
decode_param = self.decode_mems['011'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['011'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_013(self, msg):
types = {
'00': 'PT2262'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' Code: ' + msg[4] + msg[5] + msg[6]
)
pulse = float((int(msg[7], 16) * 256 + int(msg[8], 16)))
pulse = str("%.0f" % pulse)
pload_msg = (
'Code: ' + msg[4] + msg[5] + msg[6] +
' PulseTiming: ' + str(pulse) +
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' Code: ' + msg[4] + msg[5] + msg[6]
)
msg_value = (
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6]
)
decode_param = None
try:
decode_param = self.decode_mems['013'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['013'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_014_00(self, msg):
types = {
'00': 'LightwaveRF, Siemens'
}
unitcodes = {
'01': '01',
'02': '02',
'03': '03',
'04': '04',
'05': '05',
'06': '06',
'07': '07',
'08': '08',
'09': '09',
'0a': '10',
'0b': '11',
'0c': '12',
'0d': '13',
'0e': '14',
'0f': '15',
'10': '16'
}
commands = {
'00': 'off',
'01': 'on',
'02': 'group Off',
'03': 'mood1',
'04': 'mood2',
'05': 'mood3',
'06': 'mood4',
'07': 'mood5',
'08': 'reserved',
'09': 'reserved',
'0a': 'unlock',
'0b': 'lock',
'0c': 'all lock',
'0d': 'close (inline relay)',
'0e': 'stop (inline relay)',
'0f': 'open (inline relay)',
'10': 'set level',
'11': 'colour palette',
'12': 'colour tone',
'13': 'colour cycle'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' level: ' + msg[9] +
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]]
)
msg_value = (
' command: ' + commands[msg[8]] +
' level: ' + msg[9] +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
unitcodes[msg[7]]
)
decode_param = None
try:
decode_param = self.decode_mems['014_00'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['014_00'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_014_01(self, msg):
types = {
'01': 'EMW100 GAO/Everflourish'
}
unitcodes = {
'01': '01',
'02': '02',
'03': '03',
'04': '04'
}
commands = {
'00': 'off',
'01': 'on',
'02': 'learn'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]]
)
msg_value = (
' command: ' + commands[msg[8]] +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
unitcodes[msg[7]]
)
decode_param = None
try:
decode_param = self.decode_mems['014_01'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['014_01'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_014_02(self, msg):
types = {
'02': 'ByeByeStandBy',
'04': 'Conrad RSL2'
}
unitcodes = {
'01': '01',
'02': '02',
'03': '03',
'04': '04',
'05': '05',
'06': '06',
'07': '07',
'08': '08',
'09': '09',
'0a': '10',
'0b': '11',
'0c': '12',
'0d': '13',
'0e': '14',
'0f': '15',
'10': '16'
}
commands = {
'00': 'off',
'01': 'on',
'02': 'group off',
'03': 'group on'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]]
)
msg_value = (
' command: ' + commands[msg[8]] +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
unitcodes[msg[7]]
)
decode_param = None
try:
decode_param = self.decode_mems['014_02'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['014_02'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_014_06(self, msg):
types = {
'06': 'RGB TRC02'
}
commands = {
'00': 'off',
'01': 'on',
'02': 'bright',
'03': 'dim',
'04': 'color +',
'05': 'color -',
'06': 'select color'
}
try:
if int(msg[8], 16) > 5:
res = 'color choice ' + str(msg[8])
else:
res = commands[msg[8]]
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' command: ' + res
)
pload_msg = (
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6]
)
msg_value = (
' command: ' + res
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6]
)
decode_param = None
try:
decode_param = self.decode_mems['014_06'][msg_key]
except:
pass
self.eventTrigger3(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['014_06'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_014_07(self, msg):
types = {
'07': 'Aoke Relay'
}
unitcodes = {
'00': '00'
}
commands = {
'00': 'Off',
'01': 'On'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]]
)
msg_value = (
' command: ' + commands[msg[8]] +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
unitcodes[msg[7]]
)
decode_param = None
try:
decode_param = self.decode_mems['014_07'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['014_07'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_014_0d(self, msg):
types = {
'0d': 'Legrand CAD'
}
unitcodes = {
'00': '00'
}
commands = {
'00': 'Toggle'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]]
)
msg_value = (
' command: ' + commands[msg[8]] +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
unitcodes[msg[7]]
)
decode_param = None
try:
decode_param = self.decode_014_0D_mem[msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_014_0D_mem[msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_014_0f(self, msg):
types = {
'0f': 'IT (Intertek,FA500,PROmaxÖ)'
}
unitcodes = {
'01': '01',
'02': '02',
'03': '03',
'04': '04'
}
commands = {
'00': 'Off',
'01': 'On',
'02': 'Group Off',
'03': 'Group On',
'04': 'Set Level'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + msg[5] + msg[6] +
' unit: ' + unitcodes[msg[7]]
)
msg_value = (
' command: ' + commands[msg[8]] +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
unitcodes[msg[7]]
)
decode_param = None
try:
decode_param = self.decode_014_0F_mem[msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_014_0F_mem[msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_015(self, msg):
types = {
'00': 'Blyss_Thomson'
}
housecodes = {
'41': 'A',
'42': 'B',
'43': 'C',
'44': 'D',
'45': 'E',
'46': 'F',
'47': 'G',
'48': 'H',
'49': 'I',
'4a': 'J',
'4b': 'K',
'4c': 'L',
'4d': 'M',
'4e': 'N',
'4f': 'O',
'50': 'P'
}
unitcodes = {
'00': '00',
'01': '01',
'02': '02',
'03': '03',
'04': '04',
'05': '05'
}
commands = {
'00': 'on',
'01': 'off',
'02': 'group on',
'03': 'group off'
}
try:
# Get the unit ID
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id +
' house: ' + housecodes[msg[6]] +
' unit: ' + unitcodes[msg[7]] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' signal: ' + str(int(msg[11][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id +
' house: ' + housecodes[msg[6]] +
' unit: ' + unitcodes[msg[7]]
)
msg_value = (
' command: ' + commands[msg[8]] +
' signal: ' + str(int(msg[11][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] +
' ' +
msg[5] +
' ' +
housecodes[msg[6]] +
' ' +
unitcodes[msg[7]]
)
decode_param = None
try:
decode_param = self.decode_mems['015'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['015'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_016(self, msg):
types = {
'00': 'Byron SX',
'02': 'SelectPlus 200689101',
'03': 'RFU', # Reserved Future Use
'04': 'Envivo'
}
commands = {
'00': 'Sound0',
'01': 'Sound1',
'02': 'Sound2',
'03': 'Sound3',
'04': 'Sound4',
'05': 'Sound5',
'06': 'Sound6',
'07': 'Sound7',
'08': 'Sound8',
'09': 'Sound9',
'0a': 'Sound10',
'0b': 'Sound11',
'0c': 'Sound12',
'0d': 'Sound13',
'0e': 'Sound14',
'0f': 'Sound15'
}
try:
# Get the unit ID
if msg[2] == '00':
dev_id = str(int(msg[4], 16) * 256 + int(msg[5], 16))
command = commands[msg[6]]
if msg[2] == '02' or msg[2] == '03' or msg[2] == '04':
dev_id = str(int(msg[4], 16) * 65535 + int(msg[5], 16) * 256 + int(msg[6], 16))
command = 'NA'
if int(dev_id) <> 0:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
pload_msg = (
' command: ' + command +
' signal: ' + str(int(msg[7][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + dev_id
)
msg_value = (
' command: ' + command +
' signal: ' + str(int(msg[7][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] +
' ' +
msg[5]
)
decode_param = None
try:
decode_param = self.decode_mems['016'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['016'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_018(self, msg):
types = {
'00': 'Harrison Curtain'
}
housecodes = {
'41': 'A',
'42': 'B',
'43': 'C',
'44': 'D',
'45': 'E',
'46': 'F',
'47': 'G',
'48': 'H',
'49': 'I',
'4a': 'J',
'4b': 'K',
'4c': 'L',
'4d': 'M',
'4e': 'N',
'4f': 'O',
'50': 'P'
}
unitcodes = {
'01': '01',
'02': '02',
'03': '03',
'04': '04',
'05': '05',
'06': '06',
'07': '07',
'08': '08',
'09': '09',
'0a': '10',
'0b': '11',
'0c': '12',
'0d': '13',
'0e': '14',
'0f': '15',
'10': '16'
}
commands = {
'00': 'Open',
'01': 'Close',
'02': 'Stop',
'03': 'Program'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' house: ' + housecodes[msg[4]] +
' unit: ' + unitcodes[msg[5]] +
' command: ' + commands[msg[6]]
)
pload_msg = (
' battery: ' + str(int(msg[7][1], 16)) +
' signal: ' + str(int(msg[7][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' house: ' + housecodes[msg[4]] +
' unit: ' + unitcodes[msg[5]]
)
msg_value = (
' command: ' + commands[msg[6]] +
' battery: ' + str(int(msg[7][1], 16)) +
' signal: ' + str(int(msg[7][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
housecodes[msg[4]] +
' ' +
unitcodes[msg[5]]
)
decode_param = None
try:
decode_param = self.decode_mems['018_019'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['018_019'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_019(self, msg):
types = {
'00': 'RollerTrol, Hasta new',
'01': 'Hasta old'
}
unitcodes = {
'0': 'all units',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'a': '10',
'b': '11',
'c': '12',
'd': '13',
'e': '14',
'f': '15'
}
commands = {
'00': 'Open',
'01': 'Close',
'02': 'Stop',
'03': 'Confirm',
'04': 'Set Limit',
'05': 'Set Lower Limit',
'06': 'Delete limits',
'07': 'Change direction',
'08': 'Left',
'09': 'Right'
}
try:
u_code = str(int(msg[7][0], 16))
t_type = msg[2]
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + unitcodes[u_code] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + u_code
)
msg_value = (
' command: ' + commands[msg[8]] +
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
u_code
)
decode_param = None
try:
decode_param = self.decode_mems['018_019'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['018_019'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_019_2(self, msg):
types = {
'02': 'A-OK RF01',
'03': 'A-OK AC114',
'04': 'Raex YR1326',
'05': 'Media Mount'
}
commands = {
'00': 'Open',
'01': 'Close',
'02': 'Stop',
'03': 'Confirm/Pair',
'04': 'Set Limit',
'05': 'Set Lower Limit',
'06': 'Delete limits',
'07': 'Change direction',
'08': 'Left',
'09': 'Right'
}
try:
u_code = msg[7]
t_type = msg[2]
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + u_code +
' command: ' + commands[msg[8]]
)
pload_msg = (
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + u_code
)
msg_value = (
' command: ' + commands[msg[8]] +
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
u_code
)
decode_param = None
try:
decode_param = self.decode_mems['018_019'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['018_019'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_019_6(self, msg):
types = {
'06': 'DC/RMF/Yooda',
'07': 'Forest'
}
unitcodes = {
'0': 'all units',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'a': '10',
'b': '11',
'c': '12',
'd': '13',
'e': '14',
'f': '15'
}
commands = {
'00': 'Open',
'01': 'Close',
'02': 'Stop',
'03': 'Confirm/Pair'
}
try:
u_code = unitcodes[msg[7][1]]
t_type = msg[2]
the_id = (
msg[4] +
' ' +
msg[5] +
' ' +
msg[6] +
' ' +
str(int(msg[7][0], 16))
)
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + the_id +
' unit: ' + u_code +
' command: ' + commands[msg[8]]
)
pload_msg = (
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + the_id +
' unit: ' + u_code
)
msg_value = (
' command: ' + commands[msg[8]] +
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
the_id +
' ' +
u_code
)
decode_param = None
try:
decode_param = self.decode_mems['018_019'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['018_019'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_019_8(self, msg):
types = {
'08': 'Chamberlain CS4330CN'
}
unitcodes = {
'0': '01',
'1': '02',
'2': '03',
'3': '04',
'4': '05',
'5': '06'
}
commands = {
'00': 'Down',
'01': 'Up',
'02': 'Stop'
}
try:
u_code = str(int(msg[7][0], 16))
t_type = msg[2]
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + unitcodes[u_code] +
' command: ' + commands[msg[8]]
)
pload_msg = (
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + u_code
)
msg_value = (
' command: ' + commands[msg[8]] +
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
u_code
)
decode_param = None
try:
decode_param = self.decode_mems['018_019'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['018_019'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_019_B(self, msg):
types = {
'0b': 'ASP'
}
commands = {
'00': 'Open',
'01': 'Close',
'02': 'Stop',
'03': 'Confirm/Pair'
}
try:
u_code = str(int(msg[7][0], 16))
t_type = msg[2]
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + u_code +
' command: ' + commands[msg[8]]
)
pload_msg = (
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' unit: ' + u_code
)
msg_value = (
' command: ' + commands[msg[8]] +
' battery: ' + str(int(msg[9][1], 16)) +
' signal: ' + str(int(msg[9][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' ' +
u_code
)
decode_param = None
try:
decode_param = self.decode_mems['018_019'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['018_019'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_020(self, msg):
types = {
'00': 'X10 security door/window sensor',
'01': 'X10 security motion sensor',
'02': 'X10 security remote',
'03': 'KD101',
'04': 'Visonic PowerCode door/window sensor',
'05': 'Visonic PowerCode motion sensor',
'06': 'Visonic CodeSecure',
'07': 'Visonic PowerCode door/window sensor ñ auxiliary contact',
'08': 'Meiantech',
'09': 'Alecto SA30'
}
statuses = {
'00': 'normal',
'01': 'normal delayed',
'02': 'alarm',
'03': 'alarm delayed',
'04': 'motion',
'05': 'no motion',
'06': 'panic',
'07': 'end panic',
'08': 'tamper',
'09': 'arm away',
'0a': 'arm away delayed',
'0b': 'arm home',
'0c': 'arm home delayed',
'0d': 'disarm',
'10': 'light 1 off',
'11': 'light 1 on',
'12': 'light 2 off',
'13': 'light 2 on',
'14': 'dark detected',
'15': 'light detected',
'16': 'battery low SD18, CO18',
'17': 'pair KD101/SA30',
'80': 'Normal + Tamper',
'81': 'Normal Delayed + Tamper',
'82': 'Alarm + Tamper',
'83': 'Alarm Delayed + Tamper',
'84': 'Motion + Tamper',
'85': 'No Motion + Tamper'
}
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6] +
' status: ' + statuses[msg[7]]
)
pload_msg = (
' battery: ' + str(int(msg[8][1], 16)) +
' signal: ' + str(int(msg[8][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + msg[4] + ' ' + msg[5] + ' ' + msg[6]
)
msg_value = (
' status: ' + statuses[msg[7]] +
' battery: ' + str(int(msg[8][1], 16)) +
' signal: ' + str(int(msg[8][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
msg[4] + ' ' + msg[5] + ' ' + msg[6]
)
decode_param = None
mon_param = None
try:
decode_param = self.decode_mems['020'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
if (
types[msg[2]] == '00' or
types[msg[2]] == '01' or
types[msg[2]] == '04' or
types[msg[2]] == '05'
):
try:
mon_param = self.monitor_mems['020'][base_msg]
except:
pass
self.monitor_mems['020'][base_msg] = self.eventMonitor(
mon_param,
decode_param,
base_msg,
15000.0 # 250 minutes timeout
)
self.decode_mems['020'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_021(self, msg):
types = {
'00': 'Classic KeeLoq',
'01': 'Rolling Code KeeLoq',
'02': 'AES KeeLoq'
}
try:
id = ''
for i in range(4, 13):
id += msg[i] + ' '
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + id
)
pload_msg = (
' battery: ' + str(int(msg[28][1], 16)) +
' signal: ' + str(int(msg[28][0], 16))
)
msg_key = (
'Type: ' + types[msg[2]] +
' id: ' + id
)
msg_value = (
' battery: ' + str(int(msg[28][1], 16)) +
' signal: ' + str(int(msg[28][0], 16))
)
m_key = (
types[msg[2]] +
' ' +
id
)
decode_param = None
try:
decode_param = self.decode_mems['021'][msg_key]
except:
pass
self.eventTrigger2(
decode_param,
base_msg,
pload_msg,
msg_value,
m_key
)
self.decode_mems['021'][msg_key] = msg_value
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_030_0(self, msg):
types = {
'00': 'ATI Remote Wonder',
'01': 'ATI Remote Wonder Plus',
'02': 'Medion Remote',
'03': 'X10 PC Remote'
}
self.remotekey = ''
if msg[2] == '00':
ATI_Remote_Wonder = {
'00': 'A',
'01': 'B',
'02': 'power',
'03': 'TV',
'04': 'DVD',
'05': '?',
'06': 'Guide',
'07': 'Drag',
'08': 'VOL+',
'09': 'VOL-',
'0a': 'MUTE',
'0b': 'CHAN+',
'0c': 'CHAN-',
'0d': '1',
'0e': '2',
'0f': '3',
'10': '4',
'11': '5',
'12': '6',
'13': '7',
'14': '8',
'15': '9',
'16': 'txt',
'17': '0',
'18': 'snapshot ESC',
'19': 'C',
'1a': '^',
'1b': 'D',
'1c': 'TV/RADIO',
'1d': '<',
'1e': 'OK',
'1f': '>',
'20': '<-',
'21': 'E',
'22': 'v',
'23': 'F',
'24': 'Rewind',
'25': 'Play',
'26': 'Fast forward',
'27': 'Record',
'28': 'Stop',
'29': 'Pause',
'2c': 'TV',
'2d': 'VCR',
'2e': 'RADIO',
'2f': 'TV Preview',
'30': 'Channel list',
'31': 'Video Desktop',
'32': 'red',
'33': 'green',
'34': 'yellow',
'35': 'blue',
'36': 'rename TAB',
'37': 'Acquire image',
'38': 'edit image',
'39': 'Full screen',
'3a': 'DVD Audio',
'70': 'Cursor-left',
'71': 'Cursor-right',
'72': 'Cursor-up',
'73': 'Cursor-down',
'74': 'Cursor-up-left',
'75': 'Cursor-up-right',
'76': 'Cursor-down-right',
'77': 'Cursor-down-left',
'78': 'V',
'79': 'V-End',
'7c': 'X',
'7d': 'X-End'
}
self.remotekey = ATI_Remote_Wonder[msg[5]]
if msg[2] == '01':
ATI_plus = {
'00': 'A',
'01': 'B',
'02': 'power',
'03': 'TV',
'04': 'DVD',
'05': '?',
'06': 'Guide',
'07': 'Drag',
'08': 'VOL+',
'09': 'VOL-',
'0a': 'MUTE',
'0b': 'CHAN+',
'0c': 'CHAN-',
'0d': '1',
'0e': '2',
'0f': '3',
'10': '4',
'11': '5',
'12': '6',
'13': '7',
'14': '8',
'15': '9',
'16': 'txt',
'17': '0',
'18': 'Open Setup Menu',
'19': 'C',
'1a': '^',
'1b': 'D',
'1c': 'FM',
'1d': '<',
'1e': 'OK',
'1f': '>',
'20': 'Max/Restore window',
'21': 'E',
'22': 'v',
'23': 'F',
'24': 'Rewind',
'25': 'Play',
'26': 'Fast forward',
'27': 'Record',
'28': 'Stop',
'29': 'Pause',
'2a': 'TV2',
'2b': 'Clock',
'2c': 'i',
'2d': 'ATI',
'2e': 'RADIO',
'2f': 'TV Preview',
'30': 'Channel list',
'31': 'Video Desktop',
'32': 'red',
'33': 'green',
'34': 'yellow',
'35': 'blue',
'36': 'rename TAB',
'37': 'Acquire image',
'38': 'edit image',
'39': 'Full screen',
'3a': 'DVD Audio',
'70': 'Cursor-left',
'71': 'Cursor-right',
'72': 'Cursor-up',
'73': 'Cursor-down',
'74': 'Cursor-up-left',
'75': 'Cursor-up-right',
'76': 'Cursor-down-right',
'77': 'Cursor-down-left',
'78': 'Left Mouse Button',
'79': 'V-End',
'7c': 'Right Mouse Button',
'7d': 'X-End'
}
self.remotekey = ATI_plus[msg[5]]
if msg[2] == '02':
Medion = {
'00': 'Mute',
'01': 'B',
'02': 'power',
'03': 'TV',
'04': 'DVD',
'05': 'Photo',
'06': 'Music',
'07': 'Drag',
'08': 'VOL-',
'09': 'VOL+',
'0a': 'MUTE',
'0b': 'CHAN+',
'0c': 'CHAN-',
'0d': '1',
'0e': '2',
'0f': '3',
'10': '4',
'11': '5',
'12': '6',
'13': '7',
'14': '8',
'15': '9',
'16': 'txt',
'17': '0',
'18': 'snapshot ESC',
'19': 'DVD MENU',
'1a': '^',
'1b': 'Setup',
'1c': 'TV/RADIO',
'1d': '<',
'1e': 'OK',
'1f': '>',
'20': '<-',
'21': 'E',
'22': 'v',
'23': 'F',
'24': 'Rewind',
'25': 'Play',
'26': 'Fast forward',
'27': 'Record',
'28': 'Stop',
'29': 'Pause',
'2c': 'TV',
'2d': 'VCR',
'2e': 'RADIO',
'2f': 'TV Preview',
'30': 'Channel list',
'31': 'Video Desktop',
'32': 'red',
'33': 'green',
'34': 'yellow',
'35': 'blue',
'36': 'rename TAB',
'37': 'Acquire image',
'38': 'edit image',
'39': 'Full screen',
'3a': 'DVD Audio',
'70': 'Cursor-left',
'71': 'Cursor-right',
'72': 'Cursor-up',
'73': 'Cursor-down',
'74': 'Cursor-up-left',
'75': 'Cursor-up-right',
'76': 'Cursor-down-right',
'77': 'Cursor-down-left',
'78': 'V',
'79': 'V-End',
'7c': 'X',
'7d': 'X-End'
}
self.remotekey = Medion[msg[5]]
if msg[2] == '03':
PCremote = {
'02': '0',
'82': '1',
'd1': 'MP3',
'42': '2',
'd2': 'DVD',
'c2': '3',
'd3': 'CD',
'22': '4',
'd4': 'PC or SHIFT-4',
'a2': '5',
'd5': 'SHIFT-5',
'62': '6',
'e2': '7',
'12': '8',
'92': '9',
'c0': 'CH-',
'40': 'CH+',
'e0': 'VOL-',
'60': 'VOL+',
'a0': 'MUTE',
'3a': 'INFO',
'38': 'REW',
'b8': 'FF',
'b0': 'PLAY',
'64': 'PAUSE',
'63': 'STOP',
'b6': 'MENU',
'ff': 'REC',
'c9': 'EXIT',
'd8': 'TEXT',
'd9': 'SHIFT-TEXT',
'f2': 'TELETEXT',
'd7': 'SHIFT-TELETEXT',
'ba': 'A+B',
'52': 'ENT',
'd6': 'SHIFT-ENT',
'70': 'Cursor-left',
'71': 'Cursor-right',
'72': 'Cursor-up',
'73': 'Cursor-down',
'74': 'Cursor-up-left',
'75': 'Cursor-up-right',
'76': 'Cursor-down-right',
'77': 'Cursor-down-left',
'78': 'Left mouse',
'79': 'Left mouse-End',
'7b': 'Drag',
'7c': 'Right mouse',
'7d': 'Right mouse-End'
}
self.remotekey = PCremote[msg[5]]
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + str(int(msg[4], 16)) +
' remotekey: ' + self.remotekey
)
print base_msg
pload_msg = (
' signal: ' + str(int(msg[6][0], 16))
)
print pload_msg
self.eventRemote(
base_msg,
pload_msg
)
except:
eg.PrintError(self.text.decodeError + str(msg))
def decode_030_1(self, msg):
types = {
'04': 'ATI Remote Wonder II'
}
cmndtypes = {
'0': 'PC',
'2': 'AUX1',
'4': 'AUX2',
'6': 'AUX3',
'8': 'AUX4'
}
self.remotekey = ''
ATI_Remote_Wonder_II = {
'00': 'A',
'01': 'B',
'02': 'power',
'03': 'TV',
'04': 'DVD',
'05': '?',
'06': 'ø',
'07': 'Drag',
'08': 'VOL+',
'09': 'VOL-',
'0A': 'MUTE',
'0B': 'CHAN+',
'0C': 'CHAN-',
'0D': '1',
'0E': '2',
'0F': '3',
'10': '4',
'11': '5',
'12': '6',
'13': '7',
'14': '8',
'15': '9',
'16': 'txt',
'17': '0',
'18': 'Open Setup Menu',
'19': 'C',
'1A': '^',
'1B': 'D',
'1C': 'TV/RADIO',
'1D': '<',
'1E': 'OK',
'1F': '>',
'20': 'Max/Restore Window',
'21': 'E',
'22': 'v',
'23': 'F',
'24': 'Rewind',
'25': 'Play',
'26': 'Fast forward',
'27': 'Record',
'28': 'Stop',
'29': 'Pause',
'2D': 'ATI',
'3B': 'PC',
'3C': 'AUX1',
'3D': 'AUX2',
'3E': 'AUX3',
'3F': 'AUX4',
'70': 'Cursor-left',
'71': 'Cursor-right',
'72': 'Cursor-up',
'73': 'Cursor-down',
'74': 'Cursor-up-left',
'75': 'Cursor-up-right',
'76': 'Cursor-down-right',
'77': 'Cursor-down-left',
'78': 'Left Mouse Button',
'7C': 'Right Mouse Button'
}
self.remotekey = ATI_Remote_Wonder_II[msg[5].upper()]
cmndtype = cmndtypes[str(int(msg[6][1], 16) & int('E', 16))]
try:
base_msg = (
'Type: ' + types[msg[2]] +
' id: ' + str(int(msg[4], 16)) +
' remotekey: ' + self.remotekey
)
pload_msg = (
' cmndtype: ' + cmndtype +
' signal: ' + str(int(msg[6][0], 16))
)
self.eventRemote(
base_msg,
pload_msg
)
except:
eg.PrintError(self.text.decodeError + str(msg))
def Configure(
self,
port=0,
bLogToFile=False,
bDebug=False,
b01=True,
b02=True,
b03=True,
b04=True,
b05=True,
b06=True,
b07=True,
b08=True,
b09=True,
b0a=True,
b0b=True,
b0c=True,
b0d=True,
b0e=True,
b0f=True,
mMacroNames=True,
bDupEvents=False,
websocket_port_nbr=1234,
use_websockets=False,
b10=True,
use_tornadoWebsockets=False,
prefix='RFXtrx'
):
text = self.text
panel = eg.ConfigPanel()
mySizer = wx.GridBagSizer(7, 7)
staticBox = wx.StaticBox(panel, -1, self.text.decode_advice)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.HORIZONTAL)
sizer00 = wx.BoxSizer(wx.HORIZONTAL)
staticBoxSizer.Add(sizer00, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
font = panel.GetFont()
p = font.GetPointSize()
font.SetPointSize(8)
font.SetWeight(wx.NORMAL)
panel.SetFont(font)
portCtrl = panel.SerialPortChoice(port)
panel.SetColumnFlags(1, wx.EXPAND)
portSettingsBox = panel.BoxedGroup(
"Port settings",
(text.port, portCtrl),
)
eg.EqualizeWidths(portSettingsBox.GetColumnItems(0))
panel.sizer.Add(
eg.HBoxSizer(portSettingsBox)
)
bLogToFileCtrl = wx.CheckBox(panel, -1, "")
bLogToFileCtrl.SetValue(bLogToFile)
staticBox = wx.StaticBox(panel, -1, self.text.logToFile)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.HORIZONTAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(bLogToFileCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a textfield for action name
prefixCtrl = wx.TextCtrl(panel, -1, prefix)
staticBox = wx.StaticBox(panel, -1, self.text.set_prefix)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(prefixCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
bDupEventsCtrl = wx.CheckBox(panel, -1, "")
bDupEventsCtrl.SetValue(bDupEvents)
staticBox = wx.StaticBox(panel, -1, self.text.dupEvents)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.HORIZONTAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(bDupEventsCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
bDebugCtrl = wx.CheckBox(panel, -1, "")
bDebugCtrl.SetValue(bDebug)
staticBox = wx.StaticBox(panel, -1, self.text.debugInfo)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(bDebugCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
mMacroNamesCtrl = wx.CheckBox(panel, -1, "")
mMacroNamesCtrl.SetValue(mMacroNames)
staticBox = wx.StaticBox(panel, -1, self.text.macroNames)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(mMacroNamesCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
bWebSocketCtrl = wx.CheckBox(panel, -1, "")
bWebSocketCtrl.SetValue(use_websockets)
staticBox = wx.StaticBox(panel, -1, self.text.use_websockets)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(bWebSocketCtrl, 1, wx.EXPAND)
# websocket_port_nbr_ctrl = panel.SpinIntCtrl(websocket_port_nbr, 1234, 1500)
# websocket_port_nbr_ctrl.SetInitialSize((30,-1))
# sizer2.Add(websocket_port_nbr_ctrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
bTornadoWebSocketCtrl = wx.CheckBox(panel, -1, "")
bTornadoWebSocketCtrl.SetValue(use_tornadoWebsockets)
staticBox = wx.StaticBox(panel, -1, self.text.use_tornadoWebsockets)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(bTornadoWebSocketCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
panel.sizer.Add(mySizer, 1, flag=wx.EXPAND)
while panel.Affirmed():
panel.SetResult(
portCtrl.GetValue(),
bLogToFileCtrl.GetValue(),
bDebugCtrl.GetValue(),
b01,
b02,
b03,
b04,
b05,
b06,
b07,
b08,
b09,
b0a,
b0b,
b0c,
b0d,
b0e,
b0f,
mMacroNamesCtrl.GetValue(),
bDupEventsCtrl.GetValue(),
websocket_port_nbr,
bWebSocketCtrl.GetValue(),
b10,
bTornadoWebSocketCtrl.GetValue(),
prefixCtrl.GetValue()
)
class send_Home_Confort(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Home Confort, TEL-010': '00'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44'
}
commands = {
'off': '00',
'on': '01',
'group Off': '02',
'group On': '03'
}
msg = (
'0C 1B ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00 00 00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Home Confort, TEL-010'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'group Off',
'group On'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
command = commandCtrl.GetStringSelection()
my_macro_indx = self.plugin.GetMacroIndex(
'send_Home_Confort', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
command,
my_macro_indx
)
self.plugin.SetMacroName(
'send_Home_Confort', nameCtrl.GetValue(), my_macro_indx
)
class send_X10(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'X10 lighting': '00'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'off': '00',
'on': '01',
'dim': '02',
'bright': '03',
'all off': '05',
'all on': '06'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol +
' ' +
housecode +
' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'X10 lighting'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'on',
'off',
'dim',
'bright',
'all on',
'all off'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_X10', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_X10', nameCtrl.GetValue(), my_macro_indx
)
class send_ARC(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'ARC': '01'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'off': '00',
'on': '01',
'all off': '05',
'all on': '06',
'chime': '07'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'ARC'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'on',
'off',
'all on',
'all off',
'chime'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_ARC', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_ARC', nameCtrl.GetValue(), my_macro_indx
)
class send_Waveman(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Waveman': '03'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Waveman'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Waveman', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Waveman', nameCtrl.GetValue(), my_macro_indx
)
class send_Chacon_EMW200(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Chacon EMW200': '04'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'off': '00',
'on': '01',
'all off': '05',
'all on': '06'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Chacon EMW200'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'all off',
'all on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Chacon_EMW200', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Chacon_EMW200', nameCtrl.GetValue(), my_macro_indx
)
class send_ELRO_AB400D(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'ELRO AB400D': '02'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10',
'17': '11',
'18': '12',
'19': '13',
'20': '14',
'21': '15',
'22': '16',
'23': '17',
'24': '18',
'25': '19',
'26': '1A',
'27': '1B',
'28': '1C',
'29': '1D',
'30': '1E',
'31': '1F',
'32': '20',
'33': '21',
'34': '22',
'35': '23',
'36': '24',
'37': '25',
'38': '26',
'39': '27',
'40': '28',
'41': '29',
'42': '2A',
'43': '2B',
'44': '2C',
'45': '2D',
'46': '2E',
'47': '2F',
'48': '30',
'49': '31',
'50': '32',
'51': '33',
'52': '34',
'53': '35',
'54': '36',
'55': '37',
'56': '38',
'57': '39',
'58': '3A',
'59': '3B',
'60': '3C',
'61': '3D',
'62': '3E',
'63': '3F',
'64': '40'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'ELRO AB400D'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
'13', '14', '15', '16', '17', '18', '19', '20', '21', '22',
'23', '24', '25', '26', '27', '28', '29', '30', '31', '32',
'33', '34', '35', '36', '37', '38', '39', '40', '41', '42',
'43', '44', '45', '46', '47', '48', '49', '50', '51', '52',
'53', '54', '55', '56', '57', '58', '59', '60', '61', '62',
'63', '64'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'on',
'off'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_ELRO_AB400D', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_ELRO_AB400D', nameCtrl.GetValue(), my_macro_indx
)
class send_IMPULS(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'IMPULS': '05'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10',
'17': '11',
'18': '12',
'19': '13',
'20': '14',
'21': '15',
'22': '16',
'23': '17',
'24': '18',
'25': '19',
'26': '1A',
'27': '1B',
'28': '1C',
'29': '1D',
'30': '1E',
'31': '1F',
'32': '20',
'33': '21',
'34': '22',
'35': '23',
'36': '24',
'37': '25',
'38': '26',
'39': '27',
'40': '28',
'41': '29',
'42': '2A',
'43': '2B',
'44': '2C',
'45': '2D',
'46': '2E',
'47': '2F',
'48': '30',
'49': '31',
'50': '32',
'51': '33',
'52': '34',
'53': '35',
'54': '36',
'55': '37',
'56': '38',
'57': '39',
'58': '3A',
'59': '3B',
'60': '3C',
'61': '3D',
'62': '3E',
'63': '3F',
'64': '40'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'IMPULS'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
'13', '14', '15', '16', '17', '18', '19', '20', '21', '22',
'23', '24', '25', '26', '27', '28', '29', '30', '31', '32',
'33', '34', '35', '36', '37', '38', '39', '40', '41', '42',
'43', '44', '45', '46', '47', '48', '49', '50', '51', '52',
'53', '54', '55', '56', '57', '58', '59', '60', '61', '62',
'63', '64'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_IMPULS', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_IMPULS', nameCtrl.GetValue(), my_macro_indx
)
class send_RisingSun(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'RisingSun': '06'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RisingSun'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RisingSun', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_RisingSun', nameCtrl.GetValue(), my_macro_indx
)
class send_HQ_COCO_20(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'HQ COCO-20': '0B'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10',
'17': '11',
'18': '12',
'19': '13',
'20': '14',
'21': '15',
'22': '16',
'23': '17',
'24': '18',
'25': '19',
'26': '1A',
'27': '1B',
'28': '1C',
'29': '1D',
'30': '1E',
'31': '1F',
'32': '20',
'33': '21',
'34': '22',
'35': '23',
'36': '24',
'37': '25',
'38': '26',
'39': '27',
'40': '28',
'41': '29',
'42': '2A',
'43': '2B',
'44': '2C',
'45': '2D',
'46': '2E',
'47': '2F',
'48': '30',
'49': '31',
'50': '32',
'51': '33',
'52': '34',
'53': '35',
'54': '36',
'55': '37',
'56': '38',
'57': '39',
'58': '3A',
'59': '3B',
'60': '3C',
'61': '3D',
'62': '3E',
'63': '3F',
'64': '40'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'HQ COCO-20'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
'13', '14', '15', '16', '17', '18', '19', '20', '21', '22',
'23', '24', '25', '26', '27', '28', '29', '30', '31', '32',
'33', '34', '35', '36', '37', '38', '39', '40', '41', '42',
'43', '44', '45', '46', '47', '48', '49', '50', '51', '52',
'53', '54', '55', '56', '57', '58', '59', '60', '61', '62',
'63', '64'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_HQ_COCO_20', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_HQ_COCO_20', nameCtrl.GetValue(), my_macro_indx
)
class send_COCO_GDR2_2000R(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'COCO GDR2-2000R': '0A'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'COCO GDR2-2000R'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_COCO_GDR2_2000R', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_COCO_GDR2_2000R', nameCtrl.GetValue(), my_macro_indx
)
class send_Energenie(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Energenie': '08'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'off': '00',
'on': '01',
'all off': '05',
'all on': '06'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Energenie'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'all off',
'all on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Energenie', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Energenie', nameCtrl.GetValue(), my_macro_indx
)
class send_Energenie_5g(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Energenie 5-gang': '09'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Energenie 5-gang'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Energenie_5g', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Energenie_5g', nameCtrl.GetValue(), my_macro_indx
)
class send_Philips_SBC(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Philips SBC': '07'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08'
}
commands = {
'off': '00',
'on': '01',
'all off': '05',
'all on': '06'
}
msg = (
'07 10 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Philips SBC'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'all off',
'all on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Philips_SBC', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Philips_SBC', nameCtrl.GetValue(), my_macro_indx
)
class send_Kambrook(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
id_4,
unitcode,
command,
my_macro_indx
):
protocols = {
'Kambrook RF3672 (Australia)': '03'
}
id1_code = {
'A': '00',
'B': '01',
'C': '02',
'D': '03'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05'
}
commands = {
'off': '00',
'on': '01'
}
msg = (
'0B 11 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="A",
id_2="00",
id_3="00",
id_4="01",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Kambrook RF3672 (Australia)'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 4
id_4_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_4_Ctrl.AppendItems(strings=list)
if list.count(id_4) == 0:
id_4_Ctrl.Select(n=0)
else:
id_4_Ctrl.SetSelection(int(list.index(id_4)))
sizer2.Add(id_4_Ctrl, (0, 3))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_4_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unit
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Kambrook', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
id_4_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Kambrook', nameCtrl.GetValue(), my_macro_indx
)
class send_AC(eg.ActionClass):
def __call__(
self,
name,
protocol,
address,
unitcode,
command,
level,
my_macro_indx
):
protocols = {
'AC': '00',
'HomeEasy EU': '01',
'ANSLUT': '02'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'off': '00',
'on': '01',
'set level': '02',
'group Off': '03',
'group On': '04',
'Set group level': '05'
}
msg = (
'0B 11 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(address) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'0' + str(hex(int(level)))[2] + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
address + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
address + ' ' +
unitcode + ' ' +
command + ' ' +
level
)
self.plugin.WriteMsg(msg, w_msg, w_key)
CurrentStateData.dimStepWise[w_key] = level
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
address="00 00 00 01",
unitcode="",
command="",
level='0',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'AC',
'HomeEasy EU',
'ANSLUT'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a textfield for address
addressCtrl = wx.TextCtrl(panel, -1, address)
staticBox = wx.StaticBox(panel, -1, text.textBoxAddress)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(addressCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'set level',
'group Off',
'group On',
'Set group level'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for dim level
levelCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15'
]
levelCtrl.AppendItems(strings=list)
if list.count(level) == 0:
levelCtrl.Select(n=0)
else:
levelCtrl.SetSelection(int(list.index(level)))
staticBox = wx.StaticBox(panel, -1, text.textBoxLevel)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(levelCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
levelCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_AC', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
addressCtrl.GetValue(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
levelCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_AC', nameCtrl.GetValue(), my_macro_indx
)
class DimStepWise_AC(eg.ActionClass):
def __call__(
self,
name,
protocol,
address,
unitcode,
bStepUp,
level,
my_macro_indx
):
protocols = {
'AC': '00'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
self.protocol = protocols[protocol]
self.address = address
self.unitcode = unitcodes[unitcode]
self.bStepUp = bStepUp
self.level = level
self.DimStepWise()
return CurrentStateData.dimStepWise
def DimStepWise(self):
ref_level = 0
the_level = 0
to_send = 0
k_msg = ''
m_key = (
str(self.protocol) +
' ' +
str(self.address) +
' ' +
str(self.unitcode)
)
try:
ref_level = int(CurrentStateData.dimStepWise[m_key])
the_level = ref_level
except:
pass
if self.bStepUp:
the_level += int(self.level)
if the_level < 0:
to_send = 0
else:
to_send = the_level
if the_level > 15:
to_send = 15
else:
the_level -= int(self.level)
if the_level < 0:
to_send = 0
else:
to_send = the_level
if the_level > 15:
to_send = 15
if the_level > 0:
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'02' + ' ' +
'0' + str(hex(int(to_send)))[2] + ' ' +
'00'
)
else:
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'00' + ' ' +
'0' + str(hex(int(to_send)))[2] + ' ' +
'00'
)
k_msg = (
str(the_level)
)
self.plugin.WriteMsg(msg, '', '')
if ref_level >= 0 and ref_level <= 15:
if the_level <> ref_level:
CurrentStateData.dimStepWise[m_key] = k_msg
if ref_level < 0:
if the_level > ref_level:
CurrentStateData.dimStepWise[m_key] = k_msg
if ref_level > 15:
if the_level < ref_level:
CurrentStateData.dimStepWise[m_key] = k_msg
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name='Dim up/down in steps',
protocol='AC',
address='00 00 00 01',
unitcode='1',
bStepUp=True,
level='1',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'AC'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a textfield for address
addressCtrl = wx.TextCtrl(panel, -1, address)
staticBox = wx.StaticBox(panel, -1, text.textBoxAddress)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(addressCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a checkbox for step up/down
staticBox = wx.StaticBox(panel, -1, text.textStep_up)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
bStepUpCtrl = wx.CheckBox(panel, -1, "")
bStepUpCtrl.SetValue(bStepUp)
sizer3.Add(bStepUpCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for dim step size
levelCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15'
]
levelCtrl.AppendItems(strings=list)
if list.count(level) == 0:
levelCtrl.Select(n=0)
else:
levelCtrl.SetSelection(int(list.index(level)))
staticBox = wx.StaticBox(panel, -1, text.textBoxStepSize)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(levelCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
levelCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'DimStepWise_AC', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
addressCtrl.GetValue(),
deviceCtrl.GetStringSelection(),
bStepUpCtrl.GetValue(),
levelCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'DimStepWise_AC', nameCtrl.GetValue(), my_macro_indx
)
class DimGradually_AC(eg.ActionClass):
def __call__(
self,
name,
protocol,
address,
unitcode,
timeInBetween,
level,
my_macro_indx
):
protocols = {
'AC': '00'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
self.protocol = protocols[protocol]
self.address = address
self.unitcode = unitcodes[unitcode]
self.timeInBetween = timeInBetween
self.level = level
self.finished = Event()
self.DimGradually = Thread(
target=self.DimGraduallyThread,
name="DimGradually"
)
self.DimGradually.start()
def DimGraduallyThread(self):
start_level = 0
k_msg = ''
m_key = (
str(self.protocol) +
' ' +
str(self.address) +
' ' +
str(self.unitcode)
)
try:
start_level = int(CurrentStateData.dimStepWise[m_key])
# print self.plugin.dimGradually
except:
pass
while not self.finished.isSet():
if start_level >= int(self.level):
while start_level >= int(self.level):
# print start_level
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'02' + ' ' +
'0' + str(hex(int(start_level)))[2] + ' ' +
'00'
)
k_msg = (
str(start_level)
)
if start_level == 0:
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'00' + ' ' +
'0' + str(hex(int(start_level)))[2] + ' ' +
'00'
)
self.plugin.WriteMsg(msg, '', '')
start_level -= 1
self.finished.wait(self.timeInBetween)
elif start_level < int(self.level):
while start_level <= int(self.level):
# print start_level
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'02' + ' ' +
'0' + str(hex(int(start_level)))[2] + ' ' +
'00'
)
k_msg = (
str(start_level)
)
self.plugin.WriteMsg(msg, '', '')
start_level += 1
self.finished.wait(self.timeInBetween)
CurrentStateData.dimStepWise[m_key] = k_msg
self.finished.set()
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name='I can be dimmed gradually',
protocol='AC',
address='00 00 00 01',
unitcode='1',
timeInBetween=0.30,
level='15',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'AC'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a textfield for address
addressCtrl = wx.TextCtrl(panel, -1, address)
staticBox = wx.StaticBox(panel, -1, text.textBoxAddress)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(addressCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for time delay between commands
staticBox = wx.StaticBox(panel, -1, text.timeInBetween_txt)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.GridBagSizer(10, 10)
timeInBetweenCtrl = panel.SpinNumCtrl(
timeInBetween,
# by default, use '.' for decimal point
decimalChar='.',
# by default, use ',' for grouping
groupChar=',',
fractionWidth=2,
integerWidth=3,
min=0.10,
max=600.00,
increment=0.10
)
timeInBetweenCtrl.SetInitialSize((90, -1))
sizer3.Add(timeInBetweenCtrl, (0, 0))
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, flag=wx.EXPAND)
# Create a dropdown for dim level
levelCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15'
]
levelCtrl.AppendItems(strings=list)
if list.count(level) == 0:
levelCtrl.Select(n=0)
else:
levelCtrl.SetSelection(int(list.index(level)))
staticBox = wx.StaticBox(panel, -1, text.textBoxLevel)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(levelCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
levelCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'DimGradually_AC', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
addressCtrl.GetValue(),
deviceCtrl.GetStringSelection(),
timeInBetweenCtrl.GetValue(),
levelCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'DimGradually_AC', nameCtrl.GetValue(), my_macro_indx
)
class GoodMorning_AC(eg.ActionClass):
def __call__(
self,
name,
protocol,
address,
unitcode,
timeToWakeUp,
my_macro_indx
):
protocols = {
'AC': '00'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
self.protocol = protocols[protocol]
self.address = address
self.unitcode = unitcodes[unitcode]
self.increase = int(256 / (timeToWakeUp * 3))
self.finished = Event()
self.GoodMorning = Thread(
target=self.GoodMorningThread,
name="GoodMorning"
)
self.GoodMorning.start()
def GoodMorningThread(self):
while not self.finished.isSet():
level = 1
while level < 256:
# print level
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'02' + ' ' +
'0' + str(hex(int(level)))[2] + ' ' +
'00'
)
self.plugin.WriteMsg(msg, '', '')
level += self.increase
self.finished.wait(20.0)
self.finished.set()
time.sleep(0.1)
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'02' + ' ' +
'0' + str(hex(int(255)))[2] + ' ' +
'00'
)
self.plugin.WriteMsg(msg, '', '')
print "Good Morning action finished"
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="I could be a wake up lamp",
protocol="",
address="00 00 00 01",
unitcode="",
timeToWakeUp=15,
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'AC'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a textfield for address
addressCtrl = wx.TextCtrl(panel, -1, address)
staticBox = wx.StaticBox(panel, -1, text.textBoxAddress)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(addressCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.timeToWakeUp_txt)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
timeToWakeUpCtrl = wx.Slider(
panel,
-1,
timeToWakeUp,
0,
100,
(10, 10),
(200, 50),
wx.SL_HORIZONTAL | wx.SL_LABELS
)
sizer3.Add(timeToWakeUpCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
while panel.Affirmed():
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
addressCtrl.GetValue(),
deviceCtrl.GetStringSelection(),
timeToWakeUpCtrl.GetValue(),
my_macro_indx
)
class GoodNight_AC(eg.ActionClass):
def __call__(
self,
name,
protocol,
address,
unitcode,
timeToWakeUp,
my_macro_indx
):
protocols = {
'AC': '00'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
self.protocol = protocols[protocol]
self.address = address
self.unitcode = unitcodes[unitcode]
self.increase = int(256 / (timeToWakeUp * 3))
self.finished = Event()
self.GoodNight = Thread(
target=self.GoodNightThread,
name="GoodNight"
)
self.GoodNight.start()
def GoodNightThread(self):
while not self.finished.isSet():
level = 255
while level >= 0:
# print level
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'02' + ' ' +
'0' + str(hex(int(level)))[2] + ' ' +
'00'
)
self.plugin.WriteMsg(msg, '', '')
level -= self.increase
self.finished.wait(20.0)
self.finished.set()
time.sleep(0.1)
level = 0
msg = (
'0B 11 ' +
str(self.protocol) + ' ' +
'00' + ' ' +
str(self.address) + ' ' +
str(self.unitcode) + ' ' +
'00' + ' ' +
'0' + str(hex(int(level)))[2] + ' ' +
'00'
)
self.plugin.WriteMsg(msg, '', '')
print "Good Night action finished"
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="I could be a night lamp",
protocol="",
address="00 00 00 01",
unitcode="",
timeToSleep=15,
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'AC'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a textfield for address
addressCtrl = wx.TextCtrl(panel, -1, address)
staticBox = wx.StaticBox(panel, -1, text.textBoxAddress)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(addressCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.timeToSleep_txt)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
timeToSleepCtrl = wx.Slider(
panel,
-1,
timeToSleep,
0,
100,
(10, 10),
(200, 50),
wx.SL_HORIZONTAL | wx.SL_LABELS
)
sizer3.Add(timeToSleepCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
while panel.Affirmed():
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
addressCtrl.GetValue(),
deviceCtrl.GetStringSelection(),
timeToSleepCtrl.GetValue(),
my_macro_indx
)
class send_Koppla(eg.ActionClass):
def __call__(
self,
name,
protocol,
systemcode,
ch1,
ch2,
ch3,
ch4,
ch5,
ch6,
ch7,
ch8,
ch9,
ch10,
command,
my_macro_indx
):
channel_list_8_1 = []
channel_list_9_10 = [0, 0, 0, 0, 0, 0]
str_8_1 = ''
str_10_9 = ''
protocols = {
'Koppla': '00'
}
systems = {
'1': '00',
'2': '01',
'3': '02',
'4': '03',
'5': '04',
'6': '05',
'7': '06',
'8': '07',
'9': '08',
'10': '09',
'11': '0A',
'12': '0B',
'13': '0C',
'14': '0D',
'15': '0E',
'16': '0F'
}
commands = {
'Bright': '00',
'Dim': '08',
'On': '10',
'level 1': '11',
'level 2': '12',
'level 3': '13',
'level 4': '14',
'level 5': '15',
'level 6': '16',
'level 7': '17',
'level 8': '18',
'level 9': '19',
'Off': '1A',
'Program': '1C'
}
if ch8 == True:
channel_list_8_1.append(1)
elif ch8 == False:
channel_list_8_1.append(0)
if ch7 == True:
channel_list_8_1.append(1)
elif ch7 == False:
channel_list_8_1.append(0)
if ch6 == True:
channel_list_8_1.append(1)
elif ch6 == False:
channel_list_8_1.append(0)
if ch5 == True:
channel_list_8_1.append(1)
elif ch5 == False:
channel_list_8_1.append(0)
if ch4 == True:
channel_list_8_1.append(1)
elif ch4 == False:
channel_list_8_1.append(0)
if ch3 == True:
channel_list_8_1.append(1)
elif ch3 == False:
channel_list_8_1.append(0)
if ch2 == True:
channel_list_8_1.append(1)
elif ch2 == False:
channel_list_8_1.append(0)
if ch1 == True:
channel_list_8_1.append(1)
elif ch1 == False:
channel_list_8_1.append(0)
if ch10 == True:
channel_list_9_10.append(1)
elif ch10 == False:
channel_list_9_10.append(0)
if ch9 == True:
channel_list_9_10.append(1)
elif ch9 == False:
channel_list_9_10.append(0)
for item in channel_list_8_1:
str_8_1 += str(item)
for item in channel_list_9_10:
str_10_9 += str(item)
channel_8_1 = '0b' + str_8_1
channel_10_9 = '0b' + str_10_9
bt_8_1 = str(hex(int('0b' + str_8_1, 2))).split('x')[1].upper()
bt_10_9 = str(hex(int('0b' + str_10_9, 2))).split('x')[1].upper()
if len(bt_8_1) < 2:
bt_8_1 = '0' + bt_8_1
if len(bt_10_9) < 2:
bt_10_9 = '0' + bt_10_9
msg = (
'08 12 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(systems[systemcode]) + ' ' +
bt_8_1 + ' ' +
bt_10_9 + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(systemcode) < 2:
systemcode = '0' + systemcode
w_key = (
protocol + ' ' +
systemcode + ' ' +
bt_8_1 + ' ' +
bt_10_9
)
w_msg = (
protocol + ' ' +
systemcode + ' ' +
bt_8_1 + ' ' +
bt_10_9 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
systemcode="",
ch1=False,
ch2=False,
ch3=False,
ch4=False,
ch5=False,
ch6=False,
ch7=False,
ch8=False,
ch9=False,
ch10=False,
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Koppla'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for system
systemCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
systemCtrl.AppendItems(strings=list)
if list.count(systemcode) == 0:
systemCtrl.Select(n=0)
else:
systemCtrl.SetSelection(int(list.index(systemcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxSystem)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(systemCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
systemCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textChannel)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.GridBagSizer(10, 10)
ch1_Ctrl = wx.CheckBox(panel, -1, "")
ch1_Ctrl.SetValue(ch1)
sizer3.Add(wx.StaticText(panel, -1, '1'), (0, 0))
sizer3.Add(ch1_Ctrl, (1, 0))
ch2_Ctrl = wx.CheckBox(panel, -1, "")
ch2_Ctrl.SetValue(ch1)
sizer3.Add(wx.StaticText(panel, -1, '2'), (0, 1))
sizer3.Add(ch2_Ctrl, (1, 1))
ch3_Ctrl = wx.CheckBox(panel, -1, "")
ch3_Ctrl.SetValue(ch3)
sizer3.Add(wx.StaticText(panel, -1, '3'), (0, 2))
sizer3.Add(ch3_Ctrl, (1, 2))
ch4_Ctrl = wx.CheckBox(panel, -1, "")
ch4_Ctrl.SetValue(ch1)
sizer3.Add(wx.StaticText(panel, -1, '4'), (0, 3))
sizer3.Add(ch4_Ctrl, (1, 3))
ch5_Ctrl = wx.CheckBox(panel, -1, "")
ch5_Ctrl.SetValue(ch1)
sizer3.Add(wx.StaticText(panel, -1, '5'), (0, 4))
sizer3.Add(ch5_Ctrl, (1, 4))
ch6_Ctrl = wx.CheckBox(panel, -1, "")
ch6_Ctrl.SetValue(ch6)
sizer3.Add(wx.StaticText(panel, -1, '6'), (0, 5))
sizer3.Add(ch6_Ctrl, (1, 5))
ch7_Ctrl = wx.CheckBox(panel, -1, "")
ch7_Ctrl.SetValue(ch7)
sizer3.Add(wx.StaticText(panel, -1, '7'), (0, 6))
sizer3.Add(ch7_Ctrl, (1, 6))
ch8_Ctrl = wx.CheckBox(panel, -1, "")
ch8_Ctrl.SetValue(ch8)
sizer3.Add(wx.StaticText(panel, -1, '8'), (0, 7))
sizer3.Add(ch8_Ctrl, (1, 7))
ch9_Ctrl = wx.CheckBox(panel, -1, "")
ch9_Ctrl.SetValue(ch9)
sizer3.Add(wx.StaticText(panel, -1, '9'), (0, 8))
sizer3.Add(ch9_Ctrl, (1, 8))
ch10_Ctrl = wx.CheckBox(panel, -1, "")
ch10_Ctrl.SetValue(ch10)
sizer3.Add(wx.StaticText(panel, -1, '10'), (0, 9))
sizer3.Add(ch10_Ctrl, (1, 9))
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Bright',
'Dim',
'level 1',
'level 2',
'level 3',
'level 4',
'level 5',
'level 6',
'level 7',
'level 8',
'level 9',
'Off',
'Program'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Koppla', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
systemCtrl.GetStringSelection(),
ch1_Ctrl.GetValue(),
ch2_Ctrl.GetValue(),
ch3_Ctrl.GetValue(),
ch4_Ctrl.GetValue(),
ch5_Ctrl.GetValue(),
ch6_Ctrl.GetValue(),
ch7_Ctrl.GetValue(),
ch8_Ctrl.GetValue(),
ch9_Ctrl.GetValue(),
ch10_Ctrl.GetValue(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Koppla', nameCtrl.GetValue(), my_macro_indx
)
class send_Digimax(eg.ActionClass):
def checkLen(self, st):
if len(st) < 2:
st = '0' + st
return st
def __call__(
self,
name,
protocol,
id_1,
id_2,
status,
mode,
temperature,
set_point,
my_macro_indx
):
protocols = {
'Digimax, TLX7506': '00',
'Digimax with short format (no set point)': '01'
}
statuses = {
'demand': '1',
'no demand': '2',
'initializing': '3'
}
modes = {
'heating': '0',
'cooling': '1'
}
temp = hex(temperature).split('x')[1].upper()
temp = self.checkLen(temp)
setp = hex(set_point).split('x')[1].upper()
setp = self.checkLen(setp)
st = bin(int(statuses[status]))[2:].zfill(7)
md = modes[mode]
res = str(hex(int(('0b' + md + str(st)), 2))[2:]).upper()
res = self.checkLen(res)
msg = (
'09 40 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' +
str(temp) + ' ' +
str(setp) + ' ' +
res + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' +
str(temp) + ' ' +
str(setp) + ' ' +
res
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
status='no demand',
mode='heating',
temperature=21,
set_point=20,
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Digimax, TLX7506',
'Digimax with short format (no set point)'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for mode
modeCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'heating',
'cooling'
]
modeCtrl.AppendItems(strings=list)
if list.count(mode) == 0:
modeCtrl.Select(n=0)
else:
modeCtrl.SetSelection(int(list.index(mode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxMode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(modeCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
modeCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for status
statusCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'demand',
'no demand',
'initializing'
]
statusCtrl.AppendItems(strings=list)
if list.count(status) == 0:
statusCtrl.Select(n=0)
else:
statusCtrl.SetSelection(int(list.index(status)))
staticBox = wx.StaticBox(panel, -1, text.textBoxStatus)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(statusCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
statusCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a box for temperature
staticBox = wx.StaticBox(panel, -1, text.textBoxTemperature)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
temperatureCtrl = panel.SpinIntCtrl(temperature, 5, 35)
temperatureCtrl.SetInitialSize((30, -1))
sizer5.Add(temperatureCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a box for setpoint
staticBox = wx.StaticBox(panel, -1, text.textBoxSetPoint)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
setpointCtrl = panel.SpinIntCtrl(set_point, 16, 35)
setpointCtrl.SetInitialSize((30, -1))
sizer6.Add(setpointCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Digimax', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
statusCtrl.GetStringSelection(),
modeCtrl.GetStringSelection(),
temperatureCtrl.GetValue(),
setpointCtrl.GetValue(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Digimax', nameCtrl.GetValue(), my_macro_indx
)
class send_Thermostat_HE105(eg.ActionClass):
def __call__(
self,
name,
protocol,
unitcode,
command,
my_macro_indx
):
protocols = {
'HE105': '00'
}
commands = {
'Off': '00',
'On': '01'
}
msg = (
'06 41 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
unitcode + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'HE105'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Thermostat_HE105', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Thermostat_HE105', nameCtrl.GetValue(), my_macro_indx
)
class send_Thermostat_RTS10(eg.ActionClass):
def __call__(
self,
name,
protocol,
unitcode,
command,
my_macro_indx
):
protocols = {
'RTS10': '01'
}
commands = {
'Off': '00',
'On': '01',
'Program RTS10': '02'
}
msg = (
'06 41 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
unitcode + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RTS10'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On',
'Program RTS10'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Thermostat_RTS10', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Thermostat_RTS10', nameCtrl.GetValue(), my_macro_indx
)
class send_Mertik_G6R_H4T1(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Mertik G6R-H4T1': '00'
}
commands = {
'Off': '00',
'On': '01',
'Up': '02',
'Down': '03',
'Run Up': '04',
'Run Down': '05',
'Stop': '06'
}
cmd = commands[command]
msg = (
'08 42 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command='Off',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Mertik G6R-H4T1'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On',
'Up',
'Down',
'Run Up',
'Run Down',
'Stop'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Mertik_G6R_H4T1', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Mertik_G6R_H4T1', nameCtrl.GetValue(), my_macro_indx
)
class send_Mertik_G6R_H4TB(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Mertik G6R-H4TB/G6-H4T/G6R-H4T21-Z22': '01'
}
commands = {
'Off': '00',
'On': '01',
'Up': '02',
'Down': '03',
'2nd Off': '04',
'2nd On': '05'
}
cmd = commands[command]
msg = (
'08 42 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command='Off',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Mertik G6R-H4TB/G6-H4T/G6R-H4T21-Z22'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On',
'Up',
'Down',
'2nd Off',
'2nd On'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Mertik_G6R_H4TB', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Mertik_G6R_H4TB', nameCtrl.GetValue(), my_macro_indx
)
class send_Mertik_G6R_H4TD(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Mertik G6R-H4TD': '02'
}
commands = {
'Off': '00',
'On': '01',
'Up': '02',
'Down': '03'
}
cmd = commands[command]
msg = (
'08 42 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command='Off',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Mertik G6R-H4TD'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On',
'Up',
'Down'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Mertik_G6R_H4TD', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Mertik_G6R_H4TD', nameCtrl.GetValue(), my_macro_indx
)
class send_Mertik_G6R_H4S(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Mertik G6R-H4S': '03'
}
commands = {
'Off': '00',
'On': '01',
'Up': '02',
'Down': '03'
}
cmd = commands[command]
msg = (
'08 42 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
cmd
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command='Off',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Mertik G6R-H4S'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On',
'Up',
'Down'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Mertik_G6R_H4S', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Mertik_G6R_H4S', nameCtrl.GetValue(), my_macro_indx
)
class send_Siemens_Lightwave_RF(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
level,
my_macro_indx
):
protocols = {
'LightwaveRF, Siemens': '00'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'off': '00',
'on': '01',
'group Off': '02',
'mood1': '03',
'mood2': '04',
'mood3': '05',
'mood4': '06',
'mood5': '07',
'reserved': '08',
'reserved': '09',
'unlock': '0A',
'lock': '0B',
'all lock': '0C',
'close (inline relay)': '0D',
'stop (inline relay)': '0E',
'open (inline relay)': '0F',
'set level': '10',
'colour palette': '11',
'colour tone': '12',
'colour cycle': '13'
}
levels = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10',
'17': '11',
'18': '12',
'19': '13',
'20': '14',
'21': '15',
'22': '16',
'23': '17',
'24': '18',
'25': '19',
'26': '1A',
'27': '1B',
'28': '1C',
'29': '1D',
'30': '1E',
'31': '1F'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
str(levels[level]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command + ' ' +
level
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
unitcode="",
command="",
level='0',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'LightwaveRF, Siemens'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'group Off',
'mood1',
'mood2',
'mood3',
'mood4',
'mood5',
'reserved',
'reserved',
'unlock',
'lock',
'all lock',
'close (inline relay)',
'stop (inline relay)',
'open (inline relay)',
'set level',
'colour palette',
'colour tone',
'colour cycle'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for dim level
levelCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '20', '21', '22', '23', '24', '25',
'26', '27', '28', '29', '30', '31'
]
levelCtrl.AppendItems(strings=list)
if list.count(level) == 0:
levelCtrl.Select(n=0)
else:
levelCtrl.SetSelection(int(list.index(level)))
staticBox = wx.StaticBox(panel, -1, text.textBoxLevel)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer7 = wx.BoxSizer(wx.HORIZONTAL)
sizer7.Add(levelCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer7, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
levelCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
command = commandCtrl.GetStringSelection()
level = levelCtrl.GetStringSelection()
if command <> 'set level':
level = '0'
my_macro_indx = self.plugin.GetMacroIndex(
'send_Siemens_Lightwave_RF', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
command,
level,
my_macro_indx
)
self.plugin.SetMacroName(
'send_Siemens_Lightwave_RF', nameCtrl.GetValue(), my_macro_indx
)
class send_Siemens_SF01(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Siemens SF01': '00'
}
commands = {
'Timer': '01',
'-': '02',
'Learn': '03',
'+': '04',
'Confirm': '05',
'Light': '06'
}
msg = (
'08 17 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(commands[command]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Siemens SF01'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = ['00']
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Timer',
'-',
'Learn',
'+',
'Confirm',
'Light'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
command = commandCtrl.GetStringSelection()
my_macro_indx = self.plugin.GetMacroIndex(
'send_Siemens_SF01', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
command,
my_macro_indx
)
self.plugin.SetMacroName(
'send_Siemens_SF01', nameCtrl.GetValue(), my_macro_indx
)
class send_LucciAir(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'LucciAir': '02'
}
commands = {
'High': '01',
'Medium': '02',
'Low': '03',
'Off': '04',
'Light': '05'
}
msg = (
'08 17 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(commands[command]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'LucciAir'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = ['00']
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'High',
'Medium',
'Low',
'Off',
'Light'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
command = commandCtrl.GetStringSelection()
my_macro_indx = self.plugin.GetMacroIndex(
'send_LucciAir', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
command,
my_macro_indx
)
self.plugin.SetMacroName(
'send_LucciAir', nameCtrl.GetValue(), my_macro_indx
)
class send_SEAV_TXS4(eg.ActionClass):
def __call__(
self,
name,
protocol,
j1,
sw1,
sw2,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'SEAV TXS4': '03'
}
commands = {
'T1': '01',
'T2': '02',
'T3': '03',
'T4': '04'
}
msg = (
'08 17 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(commands[command]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
j1=False,
sw1=False,
sw2=False,
id_1="0x0",
id_2="00",
id_3="00",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer3 = wx.GridBagSizer(1, 1)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'SEAV TXS4'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# ID switches
j1_Ctrl = wx.CheckBox(panel, -1, "J1")
j1_Ctrl.SetValue(j1)
sizer3.Add(j1_Ctrl, (0, 0))
sw1_Ctrl = wx.CheckBox(panel, -1, "SW1")
sw1_Ctrl.SetValue(sw1)
sizer3.Add(sw1_Ctrl, (0, 1))
sw2_Ctrl = wx.CheckBox(panel, -1, "SW2")
sw2_Ctrl.SetValue(sw2)
sizer3.Add(sw2_Ctrl, (0, 2))
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer3.Add(id_2_Ctrl, (2, 0))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer3.Add(id_3_Ctrl, (2, 1))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'T1',
'T2',
'T3',
'T4'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 1, flag=wx.ALIGN_LEFT)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
id_1 = '0x0'
if j1_Ctrl.GetValue():
id_1 = hex(int(id_1, 16) | 0x80)
if sw1_Ctrl.GetValue():
id_1 = hex(int(id_1, 16) | 0x40)
if sw2_Ctrl.GetValue():
id_1 = hex(int(id_1, 16) | 0x20)
id_1 = id_1.split('x')[1].upper()
if len(id_1) < 2:
id_1 = '0' + id_1
command = commandCtrl.GetStringSelection()
my_macro_indx = self.plugin.GetMacroIndex(
'send_SEAV_TXS4', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
j1_Ctrl.GetValue(),
sw1_Ctrl.GetValue(),
sw2_Ctrl.GetValue(),
id_1,
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
command,
my_macro_indx
)
self.plugin.SetMacroName(
'send_SEAV_TXS4', nameCtrl.GetValue(), my_macro_indx
)
class send_PT2262(eg.ActionClass):
def __call__(
self,
name,
protocol,
pulseTiming,
pt_1,
pt_2,
cb_1,
cb_2,
cb_3,
cb_4,
cb_5,
cb_6,
cb_7,
cb_8,
cb_9,
cb_10,
cb_11,
cb_12,
cb_13,
cb_14,
cb_15,
cb_16,
cb_17,
cb_18,
cb_19,
cb_20,
cb_21,
cb_22,
cb_23,
cb_24,
s_1,
s_2,
s_3,
my_macro_indx
):
protocols = {
'PT2262': '00'
}
msg = (
'09 13 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
s_1 + ' ' + s_2 + ' ' + s_3 + ' ' +
pt_1 + ' ' + pt_2 + ' ' + '00'
)
w_key = (
protocol + ' ' +
s_1 + ' ' + s_2 + ' ' + s_3 + ' '
)
w_msg = (
protocol + ' ' +
s_1 + ' ' + s_2 + ' ' + s_3 + ' '
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
pulseTiming=350,
pt_1='',
pt_2='',
cb_1=False,
cb_2=False,
cb_3=False,
cb_4=False,
cb_5=False,
cb_6=False,
cb_7=False,
cb_8=False,
cb_9=False,
cb_10=False,
cb_11=False,
cb_12=False,
cb_13=False,
cb_14=False,
cb_15=False,
cb_16=False,
cb_17=False,
cb_18=False,
cb_19=False,
cb_20=False,
cb_21=False,
cb_22=False,
cb_23=False,
cb_24=False,
s_1='',
s_2='',
s_3='',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
myHeadings_0 = wx.GridBagSizer(1, 1)
mySizer = wx.GridBagSizer(1, 1)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'PT2262'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create an entry for pulse timing
pulseTimingCtrl = panel.SpinIntCtrl(pulseTiming)
staticBox = wx.StaticBox(panel, -1, text.textBoxPulseTiming)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(pulseTimingCtrl, 1, wx.ALIGN_LEFT)
staticBoxSizer.Add(sizer2, 0, wx.ALIGN_LEFT | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
myHeadings_0.Add(wx.StaticText(panel, -1, text.textBoxIdCommands), (1, 0))
cb1_Ctrl = wx.CheckBox(panel, -1, "")
cb1_Ctrl.SetValue(cb_1)
mySizer.Add(cb1_Ctrl, (1, 0))
cb2_Ctrl = wx.CheckBox(panel, -1, "")
cb2_Ctrl.SetValue(cb_2)
mySizer.Add(cb2_Ctrl, (1, 1))
cb3_Ctrl = wx.CheckBox(panel, -1, "")
cb3_Ctrl.SetValue(cb_3)
mySizer.Add(cb3_Ctrl, (1, 2))
cb4_Ctrl = wx.CheckBox(panel, -1, "")
cb4_Ctrl.SetValue(cb_4)
mySizer.Add(cb4_Ctrl, (1, 3))
cb5_Ctrl = wx.CheckBox(panel, -1, "")
cb5_Ctrl.SetValue(cb_5)
mySizer.Add(cb5_Ctrl, (1, 4))
cb6_Ctrl = wx.CheckBox(panel, -1, "")
cb6_Ctrl.SetValue(cb_6)
mySizer.Add(cb6_Ctrl, (1, 5))
cb7_Ctrl = wx.CheckBox(panel, -1, "")
cb7_Ctrl.SetValue(cb_7)
mySizer.Add(cb7_Ctrl, (1, 6))
cb8_Ctrl = wx.CheckBox(panel, -1, "")
cb8_Ctrl.SetValue(cb_8)
mySizer.Add(cb8_Ctrl, (1, 7))
cb9_Ctrl = wx.CheckBox(panel, -1, "")
cb9_Ctrl.SetValue(cb_9)
mySizer.Add(cb9_Ctrl, (1, 9))
cb10_Ctrl = wx.CheckBox(panel, -1, "")
cb10_Ctrl.SetValue(cb_10)
mySizer.Add(cb10_Ctrl, (1, 10))
cb11_Ctrl = wx.CheckBox(panel, -1, "")
cb11_Ctrl.SetValue(cb_11)
mySizer.Add(cb11_Ctrl, (1, 11))
cb12_Ctrl = wx.CheckBox(panel, -1, "")
cb12_Ctrl.SetValue(cb_12)
mySizer.Add(cb12_Ctrl, (1, 12))
cb13_Ctrl = wx.CheckBox(panel, -1, "")
cb13_Ctrl.SetValue(cb_13)
mySizer.Add(cb13_Ctrl, (1, 13))
cb14_Ctrl = wx.CheckBox(panel, -1, "")
cb14_Ctrl.SetValue(cb_14)
mySizer.Add(cb14_Ctrl, (1, 14))
cb15_Ctrl = wx.CheckBox(panel, -1, "")
cb15_Ctrl.SetValue(cb_15)
mySizer.Add(cb15_Ctrl, (1, 15))
cb16_Ctrl = wx.CheckBox(panel, -1, "")
cb16_Ctrl.SetValue(cb_16)
mySizer.Add(cb16_Ctrl, (1, 16))
cb17_Ctrl = wx.CheckBox(panel, -1, "")
cb17_Ctrl.SetValue(cb_17)
mySizer.Add(cb17_Ctrl, (1, 18))
cb18_Ctrl = wx.CheckBox(panel, -1, "")
cb18_Ctrl.SetValue(cb_18)
mySizer.Add(cb18_Ctrl, (1, 19))
cb19_Ctrl = wx.CheckBox(panel, -1, "")
cb19_Ctrl.SetValue(cb_19)
mySizer.Add(cb19_Ctrl, (1, 20))
cb20_Ctrl = wx.CheckBox(panel, -1, "")
cb20_Ctrl.SetValue(cb_20)
mySizer.Add(cb20_Ctrl, (1, 21))
cb21_Ctrl = wx.CheckBox(panel, -1, "")
cb21_Ctrl.SetValue(cb_21)
mySizer.Add(cb21_Ctrl, (1, 22))
cb22_Ctrl = wx.CheckBox(panel, -1, "")
cb22_Ctrl.SetValue(cb_22)
mySizer.Add(cb22_Ctrl, (1, 23))
cb23_Ctrl = wx.CheckBox(panel, -1, "")
cb23_Ctrl.SetValue(cb_23)
mySizer.Add(cb23_Ctrl, (1, 24))
cb24_Ctrl = wx.CheckBox(panel, -1, "")
cb24_Ctrl.SetValue(cb_24)
mySizer.Add(cb24_Ctrl, (1, 25))
panel.sizer.Add(myHeadings_0, 1, flag=wx.ALIGN_LEFT)
panel.sizer.Add(mySizer, 1, flag=wx.ALIGN_LEFT)
while panel.Affirmed():
pt = hex(pulseTimingCtrl.GetValue()).split('x')[1].upper()
pt_1 = pt[:-2]
if len(pt_1) < 2:
pt_1 = '0' + pt_1
pt_2 = pt[-2:]
if len(pt_2) < 2:
pt_2 = '0' + pt_2
cmd_1 = '0x0'
cmd_2 = '0x0'
cmd_3 = '0x0'
if cb1_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x80)
if cb2_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x40)
if cb3_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x20)
if cb4_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x10)
if cb5_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x8)
if cb6_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x4)
if cb7_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x2)
if cb8_Ctrl.GetValue():
cmd_1 = hex(int(cmd_1, 16) | 0x1)
if cb9_Ctrl.GetValue():
cmd_2 = hex(int(cmd_1, 16) | 0x80)
if cb10_Ctrl.GetValue():
cmd_2 = hex(int(cmd_2, 16) | 0x40)
if cb11_Ctrl.GetValue():
cmd_2 = hex(int(cmd_2, 16) | 0x20)
if cb12_Ctrl.GetValue():
cmd_2 = hex(int(cmd_2, 16) | 0x10)
if cb13_Ctrl.GetValue():
cmd_2 = hex(int(cmd_2, 16) | 0x8)
if cb14_Ctrl.GetValue():
cmd_2 = hex(int(cmd_2, 16) | 0x4)
if cb15_Ctrl.GetValue():
cmd_2 = hex(int(cmd_2, 16) | 0x2)
if cb16_Ctrl.GetValue():
cmd_2 = hex(int(cmd_2, 16) | 0x1)
if cb17_Ctrl.GetValue():
cmd_3 = hex(int(cmd_1, 16) | 0x80)
if cb18_Ctrl.GetValue():
cmd_3 = hex(int(cmd_3, 16) | 0x40)
if cb19_Ctrl.GetValue():
cmd_3 = hex(int(cmd_3, 16) | 0x20)
if cb20_Ctrl.GetValue():
cmd_3 = hex(int(cmd_3, 16) | 0x10)
if cb21_Ctrl.GetValue():
cmd_3 = hex(int(cmd_3, 16) | 0x8)
if cb22_Ctrl.GetValue():
cmd_3 = hex(int(cmd_3, 16) | 0x4)
if cb23_Ctrl.GetValue():
cmd_3 = hex(int(cmd_3, 16) | 0x2)
if cb24_Ctrl.GetValue():
cmd_3 = hex(int(cmd_3, 16) | 0x1)
s_1 = cmd_1.split('x')[1].upper()
if len(s_1) < 2:
s_1 = '0' + s_1
s_2 = cmd_2.split('x')[1].upper()
if len(s_2) < 2:
s_2 = '0' + s_2
s_3 = cmd_3.split('x')[1].upper()
if len(s_3) < 2:
s_3 = '0' + s_3
my_macro_indx = self.plugin.GetMacroIndex(
'send_PT2262',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
pulseTimingCtrl.GetValue(),
pt_1,
pt_2,
cb1_Ctrl.GetValue(),
cb2_Ctrl.GetValue(),
cb3_Ctrl.GetValue(),
cb4_Ctrl.GetValue(),
cb5_Ctrl.GetValue(),
cb6_Ctrl.GetValue(),
cb7_Ctrl.GetValue(),
cb8_Ctrl.GetValue(),
cb9_Ctrl.GetValue(),
cb10_Ctrl.GetValue(),
cb11_Ctrl.GetValue(),
cb12_Ctrl.GetValue(),
cb13_Ctrl.GetValue(),
cb14_Ctrl.GetValue(),
cb15_Ctrl.GetValue(),
cb16_Ctrl.GetValue(),
cb17_Ctrl.GetValue(),
cb18_Ctrl.GetValue(),
cb19_Ctrl.GetValue(),
cb20_Ctrl.GetValue(),
cb21_Ctrl.GetValue(),
cb22_Ctrl.GetValue(),
cb23_Ctrl.GetValue(),
cb24_Ctrl.GetValue(),
s_1,
s_2,
s_3,
my_macro_indx
)
self.plugin.SetMacroName(
'send_PT2262',
nameCtrl.GetValue(),
my_macro_indx
)
class send_EMW100_GAO_Everflourish(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'EMW100 GAO/Everflourish': '01'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'off': '00',
'on': '01',
'learn': '02'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'EMW100 GAO/Everflourish'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'learn'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_EMW100_GAO_Everflourish',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_EMW100_GAO_Everflourish',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Eurodomest(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Eurodomest': '09'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'off': '00',
'on': '01',
'group off': '02',
'group on': '03'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Eurodomest'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'group off',
'group on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Eurodomest',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Eurodomest',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Avantek(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Avantek': '0E'
}
unitcodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45'
}
commands = {
'off': '00',
'on': '01',
'group off': '02',
'group on': '03'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Avantek'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'group off',
'group on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Avantek',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Avantek',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Conrad_RSL2(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Conrad RSL2': '04'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'off': '00',
'on': '01',
'group off': '02',
'group on': '03'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Conrad RSL2'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'group off',
'group on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Conrad_RSL2',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Conrad_RSL2',
nameCtrl.GetValue(),
my_macro_indx
)
class send_ByeByeStandBy(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'ByeByeStandBy (BBSB)': '02'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06'
}
commands = {
'off': '00',
'on': '01',
'group off': '02',
'group on': '03'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'ByeByeStandBy (BBSB)'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'group off',
'group on'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_ByeByeStandBy',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_ByeByeStandBy',
nameCtrl.GetValue(),
my_macro_indx
)
class send_MDREMOTE_LED(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'MDREMOTE LED': '03',
'MDREMOTE LED 108': '10'
}
commands = {
'Power': '00',
'Light': '01',
'Bright': '02',
'Dim': '03',
'100%': '04',
'50%': '05',
'25%': '06',
'Mode': '07',
'Speed-': '08',
'Speed+': '09',
'Mode-': '0A'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'03'
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'03' + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'MDREMOTE LED',
'MDREMOTE LED 108'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Power',
'Light',
'Bright',
'Dim',
'100%',
'50%',
'25%',
'Mode',
'Speed-',
'Speed+',
'Mode-'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_MDREMOTE_LED',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_MDREMOTE_LED',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Livolo(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Livolo': '05'
}
commands = {
'Group Off': '00',
'Toggle On/Off': '01',
'Dim+': '02',
'Dim-': '03',
'Toggle On/Off Gang1': '01',
'Toggle On/Off Gang2': '02',
'Toggle On/Off Gang3': '03'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'05'
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'05' + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Livolo'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Group Off',
'Toggle On/Off',
'Dim+',
'Dim-',
'Toggle On/Off Gang1',
'Toggle On/Off Gang2',
'Toggle On/Off Gang3'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Livolo',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Livolo',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Livolo_Appliance(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Livolo Appliance On/Off': '0A'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A'
}
commands = {
'Group Off': '00',
'Toggle On/Off': '01',
'Dim+': '02',
'Dim-': '03',
'Scene1': '04',
'Scene2': '05',
'Dim+ room2': '06',
'Dim- room2': '07',
'Scene1 room2': '08',
'Scene2 room2': '09'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
'0A'
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
'0A' + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
unitcode="1",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Livolo Appliance On/Off'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '10'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Group Off',
'Toggle On/Off'
'Dim+',
'Dim-',
'Scene1',
'Scene2',
'Dim+ room2',
'Dim- room2',
'Scene1 room2',
'Scene2 room2'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Livolo_Appliance',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Livolo_Appliance',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Smartwares_radiator_valve(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
id_4,
unitcode,
command,
temperature,
my_macro_indx
):
tempStr = str(temperature).split('.')
tperature = self.IntToHex(int(tempStr[0]))
tpoint5 = self.IntToHex(int(tempStr[1]))
protocols = {
'Smartwares 433.92MHz radiator valve': '00'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'Night': '00',
'Day': '01',
'Set temperature': '02'
}
msg = (
'0C 48 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
tperature + ' ' +
tpoint5 + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 + ' ' +
unitcode + ' ' +
'0C'
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 + ' ' +
unitcode + ' ' +
'0C' + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Convert an integer to hex as string
def IntToHex(self, res):
s = hex(res).split('x')[1].upper()
if len(s) < 2:
s = '0' + s
return s
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
id_4="01",
unitcode="1",
command="",
temperature=21.0,
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Smartwares 433.92MHz radiator valve'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 4
id_4_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_4_Ctrl.AppendItems(strings=list)
if list.count(id_4) == 0:
id_4_Ctrl.Select(n=0)
else:
id_4_Ctrl.SetSelection(int(list.index(id_4)))
sizer2.Add(id_4_Ctrl, (0, 3))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_4_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11', '12',
'13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Night',
'Day',
'Set temperature'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxTemperature)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer7 = wx.BoxSizer(wx.HORIZONTAL)
tempCtrl = panel.SpinNumCtrl(
temperature,
# by default, use '.' for decimal point
decimalChar='.',
# by default, use ',' for grouping
groupChar=',',
fractionWidth=1,
integerWidth=2,
min=5.0,
max=28.0,
increment=0.5
)
tempCtrl.SetInitialSize((30, -1))
sizer7.Add(tempCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer7, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Smartwares_radiator_valve',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
id_4_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
tempCtrl.GetValue(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Smartwares_radiator_valve',
nameCtrl.GetValue(),
my_macro_indx
)
class send_IT_Intertek(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'IT Intertek,FA500,PROmax': '0F'
}
commands = {
'Off': '00',
'On': '01',
'Group Off': '02',
'Group On': '03',
'Set Level': '10'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00'
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'IT Intertek,FA500,PROmax'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On'
'Group Off',
'Group On',
'Set Level'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_IT_Intertek',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_IT_Intertek',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Aoke_Relay(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Aoke Relay': '07'
}
commands = {
'Off': '00',
'On': '01'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00'
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Aoke Relay'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Off',
'On'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Aoke_Relay',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Aoke_Relay',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Legrand_CAD(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Legrand CAD': '0D'
}
commands = {
'Toggle': '00'
}
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
str(commands[command]) + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00'
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Legrand CAD'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Toggle'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Legrand_CAD',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Legrand_CAD',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Blyss_Thomson(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
groupcode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Blyss_Thomson': '00'
}
groupcodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05'
}
commands = {
'on': '00',
'off': '01',
'group on': '02',
'group off': '03'
}
msg = (
'0B 15 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' +
str(groupcodes[groupcode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
self.CommandSeq() + ' ' +
'00' + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' +
groupcode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' +
groupcode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
CurrentStateData.cmndSeqNbr_015 += 1
if CurrentStateData.cmndSeqNbr_015 > 4:
CurrentStateData.cmndSeqNbr_015 -= 5
def CommandSeq(self):
if CurrentStateData.cmndSeqNbr_015 == 0:
return '00'
if CurrentStateData.cmndSeqNbr_015 == 1:
return '01'
if CurrentStateData.cmndSeqNbr_015 == 2:
return '02'
if CurrentStateData.cmndSeqNbr_015 == 3:
return '03'
if CurrentStateData.cmndSeqNbr_015 == 4:
return '04'
if CurrentStateData.cmndSeqNbr_015 == 5:
return '05'
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="01",
id_2="01",
groupcode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Blyss_Thomson'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for group code
groupCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
groupCtrl.AppendItems(strings=list)
if list.count(groupcode) == 0:
groupCtrl.Select(n=0)
else:
groupCtrl.SetSelection(int(list.index(groupcode)))
groupCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxGroupCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(groupCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for unit code
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceUnit)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'group on',
'group off'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Blyss_Thomson',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
groupCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Blyss_Thomson',
nameCtrl.GetValue(),
my_macro_indx
)
class send_RGB_TRC02(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
color,
my_macro_indx
):
protocols = {
'RGB_TRC02': '06'
}
commands = {
'off': '00',
'on': '01',
'bright': '02',
'dim': '03',
'color +': '04',
'color -': '05',
'select color': '06'
}
if command == 'select color':
res = str(color)
else:
res = str(commands[command])
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
res + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command="",
color='06',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RGB_TRC02'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'bright',
'dim',
'color +',
'color -',
'select color'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for color choice
colorCtrl = wx.Choice(parent=panel, pos=(10, 10))
color_choices = [
'06', '07',
'08', '09', '0A', '0B', '0C', '0D', '0E', '0F',
'10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '1A', '1B', '1C', '1D', '1E', '1F',
'20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F',
'30', '31', '32', '33', '34', '35', '36', '37',
'38', '39', '3A', '3B', '3C', '3D', '3E', '3F',
'40', '41', '42', '43', '44', '45', '46', '47',
'48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57',
'58', '59', '5A', '5B', '5C', '5D', '5E', '5F',
'60', '61', '62', '63', '64', '65', '66', '67',
'68', '69', '6A', '6B', '6C', '6D', '6E', '6F',
'70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F',
'80', '81', '82', '83', '84'
]
colorCtrl.AppendItems(strings=color_choices)
if color_choices.count(color) == 0:
colorCtrl.Select(n=0)
else:
colorCtrl.SetSelection(int(color_choices.index(color)))
staticBox = wx.StaticBox(panel, -1, text.textBoxColor)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer7 = wx.BoxSizer(wx.HORIZONTAL)
sizer7.Add(colorCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer7, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
colorCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RGB_TRC02', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
colorCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_RGB_TRC02', nameCtrl.GetValue(), my_macro_indx
)
class send_RGB_TRC02_2(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
color,
my_macro_indx
):
protocols = {
'RGB_TRC02': '06'
}
commands = {
'off': '00',
'on': '01',
'bright': '02',
'dim': '03',
'color +': '04',
'color -': '05',
'select color': '06'
}
if command == 'select color':
res = str(color)
else:
res = str(commands[command])
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
res + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command="",
color='06',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RGB_TRC02_2'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'bright',
'dim',
'color +',
'color -',
'select color'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for color choice
colorCtrl = wx.Choice(parent=panel, pos=(10, 10))
color_choices = [
'06', '07',
'08', '09', '0A', '0B', '0C', '0D', '0E', '0F',
'10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '1A', '1B', '1C', '1D', '1E', '1F',
'20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F',
'30', '31', '32', '33', '34', '35', '36', '37',
'38', '39', '3A', '3B', '3C', '3D', '3E', '3F',
'40', '41', '42', '43'
]
colorCtrl.AppendItems(strings=color_choices)
if color_choices.count(color) == 0:
colorCtrl.Select(n=0)
else:
colorCtrl.SetSelection(int(color_choices.index(color)))
staticBox = wx.StaticBox(panel, -1, text.textBoxColor)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer7 = wx.BoxSizer(wx.HORIZONTAL)
sizer7.Add(colorCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer7, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
colorCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RGB_TRC02_2', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
colorCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_RGB_TRC02_2', nameCtrl.GetValue(), my_macro_indx
)
class send_RGB432W(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
color,
my_macro_indx
):
protocols = {
'RGB432W': '0B'
}
commands = {
'off': '00',
'on': '01',
'bright': '02',
'dim': '03',
'color +': '04',
'color -': '05',
'select color': '06'
}
if command == 'select color':
res = str(color)
else:
res = str(commands[command])
msg = (
'0A 14 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
'00' + ' ' +
res + ' ' +
'00' + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command="",
color='06',
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RGB432W'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'off',
'on',
'bright',
'dim',
'color +',
'color -',
'select color'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for color choice
colorCtrl = wx.Choice(parent=panel, pos=(10, 10))
color_choices = [
'06', '07',
'08', '09', '0A', '0B', '0C', '0D', '0E', '0F',
'10', '11', '12', '13', '14', '15', '16', '17',
'18', '19', '1A', '1B', '1C', '1D', '1E', '1F',
'20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F',
'30', '31', '32', '33', '34', '35', '36', '37',
'38', '39', '3A', '3B', '3C', '3D', '3E', '3F',
'40', '41', '42', '43', '44', '45', '46', '47',
'48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57',
'58', '59', '5A', '5B', '5C', '5D', '5E', '5F',
'60', '61', '62', '63', '64', '65', '66', '67',
'68', '69', '6A', '6B', '6C', '6D', '6E', '6F',
'70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F',
'80', '81', '82', '83', '84'
]
colorCtrl.AppendItems(strings=color_choices)
if color_choices.count(color) == 0:
colorCtrl.Select(n=0)
else:
colorCtrl.SetSelection(int(color_choices.index(color)))
staticBox = wx.StaticBox(panel, -1, text.textBoxColor)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer7 = wx.BoxSizer(wx.HORIZONTAL)
sizer7.Add(colorCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer7, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
colorCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RGB432W', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
colorCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_RGB432W', nameCtrl.GetValue(), my_macro_indx
)
class send_Byron_SX(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
command,
my_macro_indx
):
protocols = {
'Byron_SX': '00'
}
commands = {
'Sound0': '00',
'Sound1': '01',
'Sound2': '02',
'Sound3': '03',
'Sound4': '04',
'Sound5': '05',
'Sound6': '06',
'Sound7': '07',
'Sound8': '08',
'Sound9': '09',
'Sound10': '0A',
'Sound11': '0B',
'Sound12': '0C',
'Sound13': '0D',
'Sound14': '0E',
'Sound15': '0F'
}
msg = (
'07 16 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' +
str(commands[command]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Byron_SX'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Sound0',
'Sound1',
'Sound2',
'Sound3',
'Sound4',
'Sound5',
'Sound6',
'Sound7',
'Sound8',
'Sound9',
'Sound10',
'Sound11',
'Sound12',
'Sound13',
'Sound14',
'Sound15'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Byron_SX',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Byron_SX',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Byron_MP001(eg.ActionClass):
def hexORing(self, val1, val2):
result = int(str(val1), 16) | int(str(val2), 16)
s = hex(result).split('x')[1].upper()
if len(s) < 2:
s = '0' + s
return '0x' + s
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
id_4,
id_5,
id_6,
my_macro_indx
):
ID1 = '0x00'
ID2 = '0x0F'
ID3 = '0x54'
if not id_1:
ID1 = self.hexORing(ID1, '0x40')
if not id_2:
ID1 = self.hexORing(ID1, '0x10')
if not id_3:
ID1 = self.hexORing(ID1, '0x4')
if not id_4:
ID1 = self.hexORing(ID1, '0x1')
if not id_5:
ID2 = self.hexORing(ID2, '0x40')
if not id_6:
ID2 = self.hexORing(ID2, '0x10')
ID1 = ID1.split('x')[1].upper()
ID2 = ID2.split('x')[1].upper()
ID3 = ID3.split('x')[1].upper()
protocols = {
'Byron MP001': '01'
}
msg = (
'07 16 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
ID1 + ' ' + ID2 + ' ' + ID3 + ' ' +
'00'
)
w_key = (
protocol + ' ' +
ID1 + ' ' + ID2 + ' ' + ID3
)
w_msg = (
protocol + ' ' +
ID1 + ' ' + ID2 + ' ' + ID3
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1=False,
id_2=False,
id_3=False,
id_4=False,
id_5=False,
id_6=False,
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Byron MP001'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create checkboxes for ID's
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.HORIZONTAL)
id_1_Ctrl = wx.CheckBox(panel, -1, "")
id_1_Ctrl.SetValue(id_1)
sizer2.Add(id_1_Ctrl, (0, 0))
id_2_Ctrl = wx.CheckBox(panel, -1, "")
id_2_Ctrl.SetValue(id_2)
sizer2.Add(id_2_Ctrl, (0, 1))
id_3_Ctrl = wx.CheckBox(panel, -1, "")
id_3_Ctrl.SetValue(id_3)
sizer2.Add(id_3_Ctrl, (0, 2))
id_4_Ctrl = wx.CheckBox(panel, -1, "")
id_4_Ctrl.SetValue(id_4)
sizer2.Add(id_4_Ctrl, (0, 3))
id_5_Ctrl = wx.CheckBox(panel, -1, "")
id_5_Ctrl.SetValue(id_5)
sizer2.Add(id_5_Ctrl, (0, 4))
id_6_Ctrl = wx.CheckBox(panel, -1, "")
id_6_Ctrl.SetValue(id_6)
sizer2.Add(id_6_Ctrl, (0, 5))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Byron_MP001',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetValue(),
id_2_Ctrl.GetValue(),
id_3_Ctrl.GetValue(),
id_4_Ctrl.GetValue(),
id_5_Ctrl.GetValue(),
id_6_Ctrl.GetValue(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Byron_MP001',
nameCtrl.GetValue(),
my_macro_indx
)
class send_SelectPlus(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'SelectPlus 200689101': '02'
}
commands = {
'Not used': '00'
}
msg = (
'07 16 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(commands[command])
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'SelectPlus 200689101'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Not used'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_SelectPlus',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_SelectPlus',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Envivo(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
command,
my_macro_indx
):
protocols = {
'Envivo': '04'
}
commands = {
'Not used': '00'
}
msg = (
'07 16 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(commands[command])
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Envivo'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Not used'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Envivo',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Envivo',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Harrison_Curtain(eg.ActionClass):
def __call__(
self,
name,
protocol,
housecode,
unitcode,
command,
my_macro_indx
):
protocols = {
'Harrison Curtain': '00'
}
housecodes = {
'A': '41',
'B': '42',
'C': '43',
'D': '44',
'E': '45',
'F': '46',
'G': '47',
'H': '48',
'I': '49',
'J': '4A',
'K': '4B',
'L': '4C',
'M': '4D',
'N': '4E',
'O': '4F',
'P': '50'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'16': '10'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Program': '03'
}
msg = (
'07 18 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
str(housecodes[housecode]) + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
housecode + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
housecode + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
housecode="",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Harrison Curtain'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for house code
houseCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H',
'I', 'J', 'K', 'L', 'M', 'N', 'O', 'P'
]
houseCtrl.AppendItems(strings=list)
if list.count(housecode) == 0:
houseCtrl.Select(n=0)
else:
houseCtrl.SetSelection(int(list.index(housecode)))
houseCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxHouseCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer3 = wx.BoxSizer(wx.HORIZONTAL)
sizer3.Add(houseCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer3, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', '16'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Program'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Harrison_Curtain', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
houseCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Harrison_Curtain', nameCtrl.GetValue(), my_macro_indx
)
class send_RollerTrol(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'RollerTrol, Hasta new': '00',
'Hasta old': '01'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'all units': '00'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Confirm/Pair': '03',
'Set Limit': '04'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RollerTrol, Hasta new',
'Hasta old'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', 'all units'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Confirm/Pair',
'Set Limit'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RollerTrol', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_RollerTrol', nameCtrl.GetValue(), my_macro_indx
)
class send_Confexx(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Confexx CNF24-2435': '0C'
}
unitcodes = {
'1': '00',
'2': '01',
'3': '02',
'4': '03',
'5': '04',
'6': '05',
'7': '06',
'8': '07',
'9': '08',
'10': '09',
'11': '0A',
'12': '0B',
'13': '0C',
'14': '0D',
'15': '0E',
'all units': '0F'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Confirm/Pair': '03'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Confexx CNF24-2435'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15', 'all units'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Confirm/Pair'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Confexx', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Confexx', nameCtrl.GetValue(), my_macro_indx
)
class send_A_OK(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'A-OK RF01': '02',
'A-OK AC114': '03'
}
unitcodes = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F',
'all units': '10'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Confirm/Pair': '03'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'A-OK RF01',
'A-OK AC114'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9', '10', '11',
'12', '13', '14', '15', 'all units'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Confirm/Pair'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_A_OK', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_A_OK', nameCtrl.GetValue(), my_macro_indx
)
class send_Raex(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Raex YR1326': '04'
}
unitcodes = {
'0': '00'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Confirm/Pair': '03',
'Set Upper Limit': '04',
'Set Lower Limit': '05',
'Delete Limits': '06',
'Change direction': '07',
'Left (not yet used)': '08',
'Right (not yet used)': '09'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
unitcode="0",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Raex YR1326'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Confirm/Pair',
'Set Upper Limit',
'Set Lower Limit',
'Delete Limits',
'Change direction',
'Left (not yet used)',
'Right (not yet used)'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Raex', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Raex', nameCtrl.GetValue(), my_macro_indx
)
class send_Media_Mount(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Media Mount': '05'
}
unitcodes = {
'0': '00'
}
commands = {
'Down': '00',
'Up': '01',
'Stop': '02'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="1A",
id_2="62",
id_3="80",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Media Mount'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Down',
'Up',
'Stop'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Media_Mount', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1,
id_2,
id_3,
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Media_Mount', nameCtrl.GetValue(), my_macro_indx
)
class send_Dolat_DLM_1_Topstar(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Dolat DLM-1, Topstar': '0A'
}
unitcodes = {
'0': '00'
}
commands = {
'Down': '00',
'Up': '01',
'Stop': '02',
'Confirm/Pair': '03',
'Change direction': '06',
'Erase current channel': '05',
'Learn Master': '04'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
unitcode="0",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Dolat DLM-1, Topstar'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Down',
'Up',
'Stop',
'Confirm/Pair',
'Change direction',
'Erase current channel',
'Learn Master'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Dolat_DLM_1_Topstar', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Dolat_DLM_1_Topstar', nameCtrl.GetValue(), my_macro_indx
)
class send_DC_Forest(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
id_4,
unitcode,
command,
my_macro_indx
):
protocols = {
'DC/RMF/Yooda': '06',
'Forest': '07'
}
unitcodes = {
'all units': '0',
'1': '1',
'2': '2',
'3': '3',
'4': '4',
'5': '5',
'6': '6',
'7': '7',
'8': '8',
'9': '9',
'10': 'A',
'11': 'B',
'12': 'C',
'13': 'D',
'14': 'E',
'15': 'F'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Confirm/Pair': '03'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' + id_4 +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
id_4="1",
unitcode="1",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'DC/RMF/Yooda',
'Forest'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 4
id_4_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
]
id_4_Ctrl.AppendItems(strings=list)
if list.count(id_4) == 0:
id_4_Ctrl.Select(n=0)
else:
id_4_Ctrl.SetSelection(int(list.index(id_4)))
sizer2.Add(id_4_Ctrl, (0, 3))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_4_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'all units', '1', '2', '3', '4', '5', '6', '7', '8',
'9', '10', '11', '12', '13', '14', '15'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Confirm/Pair'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_DC_Forest', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
id_4_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_DC_Forest', nameCtrl.GetValue(), my_macro_indx
)
class send_Chamberlain(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Chamberlain CS4330CN': '08'
}
unitcodes = {
'1': '00',
'2': '01',
'3': '02',
'4': '03',
'5': '04',
'6': '05'
}
commands = {
'Down': '00',
'Up': '01',
'Stop': '02'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
unitcode="",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Chamberlain CS4330CN'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5', '6'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Down',
'Up',
'Stop'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Chamberlain', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Chamberlain', nameCtrl.GetValue(), my_macro_indx
)
class send_Sunpery(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'Sunpery': '09'
}
unitcodes = {
'all units': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Confirm/Pair': '03',
'Set Upper Limit': '04',
'Set Lower Limit': '05',
'Change direction': '06',
'Intermediate position A': '07',
'Intermediate position Center': '08',
'Intermediate position B': '09',
'Erase Current Channel': '0A',
'Erase All Channels': '0B'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'09' + ' ' + '00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="0",
unitcode="1",
command="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Sunpery'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'all units',
'1',
'2',
'3',
'4',
'5',
'6'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Confirm/Pair',
'Set Upper Limit',
'Set Lower Limit',
'Change direction',
'Intermediate position A',
'Intermediate position Center',
'Intermediate position B',
'Erase Current Channel',
'Erase All Channels'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Sunpery', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Sunpery', nameCtrl.GetValue(), my_macro_indx
)
class send_ASP(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
my_macro_indx
):
protocols = {
'ASP': '0B'
}
unitcodes = {
'0': '00'
}
commands = {
'Open': '00',
'Close': '01',
'Stop': '02',
'Confirm/Pair': '03'
}
msg = (
'09 19 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="01",
unitcode="0",
command="Open",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'ASP'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Open',
'Close',
'Stop',
'Confirm/Pair'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_ASP', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_ASP', nameCtrl.GetValue(), my_macro_indx
)
class send_ASA(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
):
protocols = {
'ASA': '03'
}
id1_code = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'A': '0A',
'B': '0B',
'C': '0C',
'D': '0D',
'E': '0E',
'F': '0F'
}
unitcodes = {
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05'
}
commands = {
'Stop': '00',
'Up': '01',
'Down': '03',
'List programmed remotes': '06',
'Program': '07',
'Enable sun+wind detector': '13',
'Disable sun detector': '14'
}
msg = (
'0C 1A ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
rfu_1 + ' ' + rfu_2 + ' ' + rfu_3 + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="0",
id_2="00",
id_3="01",
unitcode="",
command="",
rfu_1="00",
rfu_2="00",
rfu_3="00",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'ASA'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'1', '2', '3', '4', '5'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Stop',
'Up',
'Down',
'List programmed remotes',
'Program',
'Enable sun+wind detector',
'Disable sun detector'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_ASA', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
)
self.plugin.SetMacroName(
'send_ASA', nameCtrl.GetValue(), my_macro_indx
)
class send_RFY(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
):
protocols = {
'RFY': '00'
}
id1_code = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'A': '0A',
'B': '0B',
'C': '0C',
'D': '0D',
'E': '0E',
'F': '0F'
}
unitcodes = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'Stop': '00',
'Up': '01',
'Down': '03',
'List programmed remotes': '06',
'Program': '07',
'Enable sun+wind detector': '13',
'Disable sun detector': '14'
}
msg = (
'0C 1A ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
rfu_1 + ' ' + rfu_2 + ' ' + rfu_3 + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="0",
id_2="00",
id_3="01",
unitcode="",
command="",
rfu_1="00",
rfu_2="00",
rfu_3="00",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RFY'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Stop',
'Up',
'Down',
'List programmed remotes',
'Program',
'Enable sun+wind detector',
'Disable sun detector'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RFY', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
)
self.plugin.SetMacroName(
'send_RFY', nameCtrl.GetValue(), my_macro_indx
)
class send_RFY_ext(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
):
protocols = {
'RFY ext': '01'
}
id1_code = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'A': '0A',
'B': '0B',
'C': '0C',
'D': '0D',
'E': '0E',
'F': '0F'
}
unitcodes = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'10': '0A',
'11': '0B',
'12': '0C',
'13': '0D',
'14': '0E',
'15': '0F'
}
commands = {
'Stop': '00',
'Up': '01',
'Down': '03',
'List programmed remotes': '06',
'Program': '07',
'Enable sun+wind detector': '13',
'Disable sun detector': '14'
}
msg = (
'0C 1A ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
rfu_1 + ' ' + rfu_2 + ' ' + rfu_3 + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="0",
id_2="00",
id_3="01",
unitcode="",
command="",
rfu_1="00",
rfu_2="00",
rfu_3="00",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RFY ext'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'10', '11', '12', '13', '14', '15'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Stop',
'Up',
'Down',
'List programmed remotes',
'Program',
'Enable sun+wind detector',
'Disable sun detector'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RFY_ext', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
)
self.plugin.SetMacroName(
'send_RFY_ext', nameCtrl.GetValue(), my_macro_indx
)
class send_RFY_Venetian(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
unitcode,
command,
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
):
protocols = {
'RFY_Venetian': '00'
}
id1_code = {
'0': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04',
'5': '05',
'6': '06',
'7': '07',
'8': '08',
'9': '09',
'A': '0A',
'B': '0B',
'C': '0C',
'D': '0D',
'E': '0E',
'F': '0F'
}
unitcodes = {
'all units': '00',
'1': '01',
'2': '02',
'3': '03',
'4': '04'
}
commands = {
'Stop': '00',
'Open': '0F',
'Close': '10',
'Change angle +': '11',
'Change angle -': '12',
'List programmed remotes': '06',
'Program': '07',
'Enable sun+wind detector': '13',
'Disable sun detector': '14'
}
msg = (
'0C 1A ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
str(unitcodes[unitcode]) + ' ' +
str(commands[command]) + ' ' +
rfu_1 + ' ' + rfu_2 + ' ' + rfu_3 + ' ' +
'00'
)
if len(unitcode) < 2:
unitcode = '0' + unitcode
w_key = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode
)
w_msg = (
protocol + ' ' +
id1_code[id_1] + ' ' + id_2 + ' ' + id_3 + ' ' +
unitcode + ' ' +
command
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give the Venetian blind a name",
protocol="",
id_1="0",
id_2="00",
id_3="01",
unitcode="",
command="",
rfu_1="00",
rfu_2="00",
rfu_3="00",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
sizer2 = wx.GridBagSizer(10, 10)
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'RFY_Venetian'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'0', '1', '2', '3', '4', '5', '6', '7', '8', '9',
'A', 'B', 'C', 'D', 'E', 'F'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unitcode
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'all units', '1', '2', '3', '4'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unitcode) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unitcode)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Stop',
'Open',
'Close',
'Change angle +',
'Change angle -',
'List programmed remotes',
'Program',
'Enable sun+wind detector',
'Disable sun detector'
]
commandCtrl.AppendItems(strings=list)
if list.count(command) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(command)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_RFY_Venetian', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
rfu_1,
rfu_2,
rfu_3,
my_macro_indx
)
self.plugin.SetMacroName(
'send_RFY_Venetian', nameCtrl.GetValue(), my_macro_indx
)
class send_x10_security_remote(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
status,
my_macro_indx
):
protocols = {
'X10 security remote': '02'
}
statuses = {
'panic': '06',
'end panic': '07',
'arm away': '09',
'arm away delayed': '0A',
'arm home': '0B',
'arm home delayed': '0C',
'disarm': '0D',
'light 1 off': '10',
'light 1 on': '11',
'light 2 off': '12',
'light 2 on': '13'
}
msg = (
'08 20 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(statuses[status]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
status
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
status="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'X10 security remote'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for status
statusCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'panic', 'end panic', 'arm away',
'arm away delayed', 'arm home', 'arm home delayed', 'disarm',
'light 1 off', 'light 1 on', 'light 2 off', 'light 2 on'
]
statusCtrl.AppendItems(strings=list)
if list.count(status) == 0:
statusCtrl.Select(n=0)
else:
statusCtrl.SetSelection(int(list.index(status)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(statusCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
statusCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_x10_security_remote', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2,
id_3_Ctrl.GetStringSelection(),
statusCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_x10_security_remote', nameCtrl.GetValue(), my_macro_indx
)
class send_KeeLoq_Classic(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
id_4,
id_5,
id_6,
id_7,
id_8,
id_9,
my_macro_indx
):
protocols = {
'Classic KeeLoq packet': '00'
}
msg = (
'1C 21 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
id_4 + ' ' + id_5 + ' ' + id_6 + ' ' +
id_7 + ' ' + id_8 + ' ' + id_9 + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'09'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
id_4 + ' ' + id_5 + ' ' + id_6 + ' ' +
id_7 + ' ' + id_8 + ' ' + id_9 + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00' + ' ' +
'00' + ' ' + '00' + ' ' + '00'
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
id_4="00",
id_5="00",
id_6="00",
id_7="00",
id_8="00",
id_9="00",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Classic KeeLoq packet'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 4
id_4_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_4_Ctrl.AppendItems(strings=list)
if list.count(id_4) == 0:
id_4_Ctrl.Select(n=0)
else:
id_4_Ctrl.SetSelection(int(list.index(id_4)))
sizer2.Add(id_4_Ctrl, (0, 3))
id_4_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 5
id_5_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_5_Ctrl.AppendItems(strings=list)
if list.count(id_5) == 0:
id_5_Ctrl.Select(n=0)
else:
id_5_Ctrl.SetSelection(int(list.index(id_5)))
sizer2.Add(id_5_Ctrl, (0, 4))
id_5_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 6
id_6_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_6_Ctrl.AppendItems(strings=list)
if list.count(id_6) == 0:
id_6_Ctrl.Select(n=0)
else:
id_6_Ctrl.SetSelection(int(list.index(id_6)))
sizer2.Add(id_6_Ctrl, (0, 5))
id_6_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 7
id_7_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_7_Ctrl.AppendItems(strings=list)
if list.count(id_7) == 0:
id_7_Ctrl.Select(n=0)
else:
id_7_Ctrl.SetSelection(int(list.index(id_7)))
sizer2.Add(id_7_Ctrl, (0, 6))
id_7_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 8
id_8_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_8_Ctrl.AppendItems(strings=list)
if list.count(id_8) == 0:
id_8_Ctrl.Select(n=0)
else:
id_8_Ctrl.SetSelection(int(list.index(id_8)))
sizer2.Add(id_8_Ctrl, (0, 7))
id_8_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 9
id_9_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_9_Ctrl.AppendItems(strings=list)
if list.count(id_9) == 0:
id_9_Ctrl.Select(n=0)
else:
id_9_Ctrl.SetSelection(int(list.index(id_9)))
sizer2.Add(id_9_Ctrl, (0, 8))
id_9_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_KeeLoq_Classic', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
id_4_Ctrl.GetStringSelection(),
id_5_Ctrl.GetStringSelection(),
id_6_Ctrl.GetStringSelection(),
id_7_Ctrl.GetStringSelection(),
id_8_Ctrl.GetStringSelection(),
id_9_Ctrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_KeeLoq_Classic', nameCtrl.GetValue(), my_macro_indx
)
class send_KD101_smoke_detector(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
status,
my_macro_indx
):
protocols = {
'KD101 smoke detector': '03'
}
statuses = {
'panic': '06',
'pair KD101': '17'
}
msg = (
'08 20 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(statuses[status]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
status
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
status="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'KD101 smoke detector'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for status
statusCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'panic', 'pair KD101'
]
statusCtrl.AppendItems(strings=list)
if list.count(status) == 0:
statusCtrl.Select(n=0)
else:
statusCtrl.SetSelection(int(list.index(status)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(statusCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
statusCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_KD101_smoke_detector',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3,
statusCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_KD101_smoke_detector',
nameCtrl.GetValue(),
my_macro_indx
)
class send_SA30_smoke_detector(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
status,
my_macro_indx
):
protocols = {
'Alecto SA30 smoke detector': '09'
}
statuses = {
'panic': '06',
'pair SA30': '17'
}
msg = (
'08 20 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(statuses[status]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
status
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
status="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Alecto SA30 smoke detector'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for status
statusCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'panic', 'pair SA30'
]
statusCtrl.AppendItems(strings=list)
if list.count(status) == 0:
statusCtrl.Select(n=0)
else:
statusCtrl.SetSelection(int(list.index(status)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(statusCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
statusCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_SA30_smoke_detector',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3,
statusCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_SA30_smoke_detector',
nameCtrl.GetValue(),
my_macro_indx
)
class send_Meiantech(eg.ActionClass):
def __call__(
self,
name,
protocol,
id_1,
id_2,
id_3,
status,
my_macro_indx
):
protocols = {
'Meiantech': '08'
}
statuses = {
'panic': '06',
'IR': '08',
'arm away': '09',
'arm home': '0B',
'disarm': '0D'
}
msg = (
'08 20 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
str(statuses[status]) + ' ' +
'00'
)
w_key = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3
)
w_msg = (
protocol + ' ' +
id_1 + ' ' + id_2 + ' ' + id_3 + ' ' +
status
)
self.plugin.WriteMsg(msg, w_msg, w_key)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
id_1="00",
id_2="00",
id_3="00",
status="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
sizer2 = wx.GridBagSizer(10, 10)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Meiantech'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for ID 1
id_1_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
id_1_Ctrl.AppendItems(strings=list)
if list.count(id_1) == 0:
id_1_Ctrl.Select(n=0)
else:
id_1_Ctrl.SetSelection(int(list.index(id_1)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceID)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2.Add(id_1_Ctrl, (0, 0))
id_1_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 2
id_2_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_2_Ctrl.AppendItems(strings=list)
if list.count(id_2) == 0:
id_2_Ctrl.Select(n=0)
else:
id_2_Ctrl.SetSelection(int(list.index(id_2)))
sizer2.Add(id_2_Ctrl, (0, 1))
id_2_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for ID 3
id_3_Ctrl = wx.Choice(parent=panel, pos=(10, 10))
id_3_Ctrl.AppendItems(strings=list)
if list.count(id_3) == 0:
id_3_Ctrl.Select(n=0)
else:
id_3_Ctrl.SetSelection(int(list.index(id_3)))
sizer2.Add(id_3_Ctrl, (0, 2))
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
id_3_Ctrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for status
statusCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'panic', 'arm away', 'arm home', 'disarm'
]
statusCtrl.AppendItems(strings=list)
if list.count(status) == 0:
statusCtrl.Select(n=0)
else:
statusCtrl.SetSelection(int(list.index(status)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer6 = wx.BoxSizer(wx.HORIZONTAL)
sizer6.Add(statusCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer6, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
statusCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Meiantech',
nameCtrl.GetValue(),
my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
id_1_Ctrl.GetStringSelection(),
id_2_Ctrl.GetStringSelection(),
id_3_Ctrl.GetStringSelection(),
statusCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Meiantech',
nameCtrl.GetValue(),
my_macro_indx
)
class send_ATI_RemoteWonder(eg.ActionClass):
def __call__(
self,
name,
protocol,
unit_id,
key,
my_macro_indx
):
protocols = {
'ATI Remote Wonder': '00'
}
remoteKeys = {
'Channel list': '30', 'X': '7C', 'Cursor-right': '71', 'v': '22',
'X-End': '7D', 'red': '32', 'power': '02', 'TV': '03', 'A': '00',
'B': '01', 'Guide': '06', 'Drag': '07', 'DVD': '04', '?': '05',
'V-End': '79', 'VOL+': '08', 'VOL-': '09', 'Stop': '28', 'Pause': '29',
'^': '1A', 'TV/RADIO': '1C', 'D': '1B', 'OK': '1E', '<': '1D',
'>': '1F', 'VCR': '2D', 'DVD Audio': '3A', 'V': '78', 'Rewind': '24',
'Play': '25', 'Full screen': '39', 'TV': '2C', 'Fast forward': '26',
'Cursor-down-left': '77', 'Cursor-down-right': '76',
'Cursor-up-right': '75', 'Record': '27', 'Cursor-down': '73',
'Cursor-up': '72', 'Cursor-left': '70', 'RADIO': '2E', '<-': '20',
'edit image': '38', 'Cursor-up-left': '74', 'E': '21', '5': '11',
'4': '10', '7': '13', '6': '12', '9': '15', '8': '14', '0': '17',
'txt': '16', 'C': '19', 'snapshot ESC': '18', 'Video Desktop': '31',
'F': '23', 'Acquire image': '37', 'rename TAB': '36', 'blue': '35',
'yellow': '34', 'CHAN+': '0B', 'CHAN-': '0C', 'TV Preview': '2F',
'MUTE': '0A', '3': '0F', '1': '0D', '2': '0E', 'green': '33'
}
msg = (
'06 30 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
unit_id + ' ' +
str(remoteKeys[key]) + ' ' +
'00'
)
self.plugin.WriteRemoteKey(msg)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
unit_id="",
key="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'ATI Remote Wonder'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit_id
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unit_id) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unit_id)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for key command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Channel list', 'X', 'Cursor-right', 'v', 'X-End', 'red', 'power',
'TV', 'A', 'B', 'Guide', 'Drag', 'DVD', '?', 'V-End', 'VOL+',
'VOL-', 'Stop', 'Pause', '^', 'TV/RADIO', 'D', 'OK', '<', '>',
'VCR', 'DVD Audio', 'V', 'Rewind', 'Play', 'Full screen', 'TV',
'Fast forward', 'Cursor-down-left', 'Cursor-down-right',
'Cursor-up-right', 'Record', 'Cursor-down', 'Cursor-up',
'Cursor-left', 'RADIO', '<-', 'edit image', 'Cursor-up-left', 'E',
'5', '4', '7', '6', '9', '8', '0', 'txt', 'C', 'snapshot ESC',
'Video Desktop', 'F', 'Acquire image', 'rename TAB', 'blue',
'yellow', 'CHAN+', 'CHAN-', 'TV Preview', 'MUTE', '3', '1', '2',
'green'
]
commandCtrl.AppendItems(strings=list)
if list.count(key) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(key)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_ATI_RemoteWonder', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_ATI_RemoteWonder', nameCtrl.GetValue(), my_macro_indx
)
class send_ATI_RemoteWonderPlus(eg.ActionClass):
def __call__(
self,
name,
protocol,
unit_id,
key,
my_macro_indx
):
protocols = {
'ATI Remote Wonder Plus': '01'
}
remoteKeys = {
'Channel list': '30', 'Right Mouse Button': '7C',
'Cursor-right': '71', 'v': '22', 'X-End': '7D', 'red': '32',
'power': '02', 'TV': '03', 'A': '00', 'B': '01', 'Guide': '06',
'Drag': '07', 'DVD': '04', '?': '05', 'V-End': '79', 'VOL+': '08',
'VOL-': '09', 'Stop': '28', 'Pause': '29', '^': '1A', 'FM': '1C',
'D': '1B', 'OK': '1E', '<': '1D', '>': '1F', 'ATI': '2D',
'DVD Audio': '3A', 'Left Mouse Button': '78', 'Rewind': '24',
'Clock': '2B', 'Play': '25', 'Full screen': '39', 'i': '2C',
'Fast forward': '26', 'Cursor-down-left': '77',
'Cursor-down-right': '76', 'Cursor-up-right': '75', 'Record': '27',
'Cursor-down': '73', 'Cursor-up': '72', 'Cursor-left': '70',
'RADIO': '2E', 'Max/Restore window': '20', 'edit image': '38',
'Cursor-up-left': '74', 'E': '21', '5': '11', '4': '10', '7': '13',
'6': '12', '9': '15', '8': '14', '0': '17', 'txt': '16', 'C': '19',
'Open Setup Menu': '18', 'Video Desktop': '31', 'F': '23',
'Acquire image': '37', 'rename TAB': '36', 'blue': '35',
'yellow': '34', 'CHAN+': '0B', 'CHAN-': '0C', 'TV Preview': '2F',
'MUTE': '0A', '3': '0F', 'TV2': '2A', '1': '0D', '2': '0E',
'green': '33'
}
msg = (
'06 30 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
unit_id + ' ' +
str(remoteKeys[key]) + ' ' +
'00'
)
self.plugin.WriteRemoteKey(msg)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
unit_id="",
key="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'ATI Remote Wonder Plus'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit_id
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unit_id) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unit_id)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for key command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Channel list', 'Right Mouse Button', 'Cursor-right', 'v', 'X-End',
'red', 'power', 'TV', 'A', 'B', 'Guide', 'Drag', 'DVD', '?',
'V-End', 'VOL+', 'VOL-', 'Stop', 'Pause', '^', 'FM', 'D', 'OK',
'<', '>', 'ATI', 'DVD Audio', 'Left Mouse Button', 'Rewind',
'Clock', 'Play', 'Full screen', 'i', 'Fast forward',
'Cursor-down-left', 'Cursor-down-right', 'Cursor-up-right',
'Record', 'Cursor-down', 'Cursor-up', 'Cursor-left', 'RADIO',
'Max/Restore window', 'edit image', 'Cursor-up-left', 'E', '5',
'4', '7', '6', '9', '8', '0', 'txt', 'C', 'Open Setup Menu',
'Video Desktop', 'F', 'Acquire image', 'rename TAB', 'blue',
'yellow', 'CHAN+', 'CHAN-', 'TV Preview', 'MUTE', '3', 'TV2',
'1', '2', 'green'
]
commandCtrl.AppendItems(strings=list)
if list.count(key) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(key)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_ATI_RemoteWonderPlus', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_ATI_RemoteWonderPlus', nameCtrl.GetValue(), my_macro_indx
)
class send_Medion_Remote(eg.ActionClass):
def __call__(
self,
name,
protocol,
unit_id,
key,
my_macro_indx
):
protocols = {
'Medion Remote': '02'
}
remoteKeys = {
'Channel list': '30', 'X': '7C', 'Cursor-right': '71', 'v': '22',
'X-End': '7D', 'red': '32', 'power': '02', 'TV': '03', 'Mute': '00',
'B': '01', 'Music': '06', 'Drag': '07', 'DVD': '04', 'Photo': '05',
'V-End': '79', 'VOL-': '08', 'VOL+': '09', 'Stop': '28', 'Pause': '29',
'^': '1A', 'TV/RADIO': '1C', 'Setup': '1B', 'OK': '1E', '<': '1D',
'>': '1F', 'VCR': '2D', 'DVD Audio': '3A', 'V': '78', 'Rewind': '24',
'Play': '25', 'Full screen': '39', 'TV': '2C', 'Fast forward': '26',
'Cursor-down-left': '77', 'Cursor-down-right': '76',
'Cursor-up-right': '75', 'Record': '27', 'Cursor-down': '73',
'Cursor-up': '72', 'Cursor-left': '70', 'RADIO': '2E', '<-': '20',
'edit image': '38', 'Cursor-up-left': '74', 'E': '21', '5': '11',
'4': '10', '7': '13', '6': '12', '9': '15', '8': '14', '0': '17',
'txt': '16', 'DVD MENU': '19', 'snapshot ESC': '18',
'Video Desktop': '31', 'F': '23', 'Acquire image': '37',
'rename TAB': '36', 'blue': '35', 'yellow': '34', 'CHAN+': '0B',
'CHAN-': '0C', 'TV Preview': '2F', 'MUTE': '0A', '3': '0F', '1': '0D',
'2': '0E', 'green': '33'
}
msg = (
'06 30 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
unit_id + ' ' +
str(remoteKeys[key]) + ' ' +
'00'
)
self.plugin.WriteRemoteKey(msg)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
unit_id="",
key="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Medion Remote'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit_id
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unit_id) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unit_id)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for key command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'Channel list', 'X', 'Cursor-right', 'v', 'X-End', 'red', 'power',
'TV', 'Mute', 'B', 'Music', 'Drag', 'DVD', 'Photo', 'V-End',
'VOL-', 'VOL+', 'Stop', 'Pause', '^', 'TV/RADIO', 'Setup', 'OK',
'<', '>', 'VCR', 'DVD Audio', 'V', 'Rewind', 'Play', 'Full screen',
'TV', 'Fast forward', 'Cursor-down-left', 'Cursor-down-right',
'Cursor-up-right', 'Record', 'Cursor-down', 'Cursor-up',
'Cursor-left', 'RADIO', '<-', 'edit image', 'Cursor-up-left', 'E',
'5', '4', '7', '6', '9', '8', '0', 'txt', 'DVD MENU',
'snapshot ESC', 'Video Desktop', 'F', 'Acquire image',
'rename TAB', 'blue', 'yellow', 'CHAN+', 'CHAN-', 'TV Preview',
'MUTE', '3', '1', '2', 'green'
]
commandCtrl.AppendItems(strings=list)
if list.count(key) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(key)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_Medion_Remote', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_Medion_Remote', nameCtrl.GetValue(), my_macro_indx
)
class send_X10_PC_Remote(eg.ActionClass):
def __call__(
self,
name,
protocol,
unit_id,
key,
my_macro_indx
):
protocols = {
'X10 PC Remote': '03'
}
remoteKeys = {
'VOL+': '60', '6': '62', 'STOP': '63', 'PAUSE': '64', 'TEXT': 'D8',
'SHIFT-TEXT': 'D9', 'SHIFT-ENT': 'D6', 'SHIFT-TELETEXT': 'D7',
'PC or SHIFT-4': 'D4', 'SHIFT-5': 'D5', 'DVD': 'D2', 'CD': 'D3',
'MP3': 'D1', '9': '92', '4': '22', 'Drag': '7B', '3': 'C2',
'Left mouse': '78', 'EXIT': 'C9', 'CH-': 'C0', '8': '12',
'ENT': '52', 'TELETEXT': 'F2', 'Right mouse-End': '7D',
'Right mouse': '7C', 'REC': 'FF', 'MENU': 'B6', 'PLAY': 'B0',
'1': '82', 'FF': 'B8', '0': '02', '2': '42', 'CH+': '40',
'INFO': '3A', 'A+B': 'BA', 'Cursor-down-left': '77', 'MUTE': 'A0',
'Cursor-up-right': '75', 'Cursor-up-left': '74',
'Cursor-down': '73', 'Cursor-up': '72', 'Cursor-right': '71',
'Cursor-left': '70', 'VOL-': 'E0', 'Left mouse-End': '79',
'7': 'E2', 'REW': '38', 'Cursor-down-right': '76', '5': 'A2'
}
msg = (
'06 30 ' +
str(protocols[protocol]) + ' ' +
'00' + ' ' +
unit_id + ' ' +
str(remoteKeys[key]) + ' ' +
'00'
)
self.plugin.WriteRemoteKey(msg)
# Get the choice from dropdown and perform some action
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
name="Give me a name",
protocol="",
unit_id="",
key="",
my_macro_indx=None
):
text = Text
panel = eg.ConfigPanel(self)
plugin = self.plugin
# Create a textfield for action name
nameCtrl = wx.TextCtrl(panel, -1, name)
staticBox = wx.StaticBox(panel, -1, text.textBoxName)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer0 = wx.BoxSizer(wx.HORIZONTAL)
sizer0.Add(nameCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer0, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for protocol
protocolCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'X10 PC Remote'
]
protocolCtrl.AppendItems(strings=list)
if list.count(protocol) == 0:
protocolCtrl.Select(n=0)
else:
protocolCtrl.SetSelection(int(list.index(protocol)))
protocolCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
staticBox = wx.StaticBox(panel, -1, text.textBoxProtocol)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer2 = wx.BoxSizer(wx.HORIZONTAL)
sizer2.Add(protocolCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer2, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
# Create a dropdown for device unit_id
deviceCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'00', '01', '02', '03', '04', '05', '06', '07', '08', '09',
'0A', '0B', '0C', '0D', '0E', '0F', '10', '11', '12', '13',
'14', '15', '16', '17', '18', '19', '1A', '1B', '1C', '1D',
'1E', '1F', '20', '21', '22', '23', '24', '25', '26', '27',
'28', '29', '2A', '2B', '2C', '2D', '2E', '2F', '30', '31',
'32', '33', '34', '35', '36', '37', '38', '39', '3A', '3B',
'3C', '3D', '3E', '3F', '40', '41', '42', '43', '44', '45',
'46', '47', '48', '49', '4A', '4B', '4C', '4D', '4E', '4F',
'50', '51', '52', '53', '54', '55', '56', '57', '58', '59',
'5A', '5B', '5C', '5D', '5E', '5F', '60', '61', '62', '63',
'64', '65', '66', '67', '68', '69', '6A', '6B', '6C', '6D',
'6E', '6F', '70', '71', '72', '73', '74', '75', '76', '77',
'78', '79', '7A', '7B', '7C', '7D', '7E', '7F', '80', '81',
'82', '83', '84', '85', '86', '87', '88', '89', '8A', '8B',
'8C', '8D', '8E', '8F', '90', '91', '92', '93', '94', '95',
'96', '97', '98', '99', '9A', '9B', '9C', '9D', '9E', '9F',
'A0', 'A1', 'A2', 'A3', 'A4', 'A5', 'A6', 'A7', 'A8', 'A9',
'AA', 'AB', 'AC', 'AD', 'AE', 'AF', 'B0', 'B1', 'B2', 'B3',
'B4', 'B5', 'B6', 'B7', 'B8', 'B9', 'BA', 'BB', 'BC', 'BD',
'BE', 'BF', 'C0', 'C1', 'C2', 'C3', 'C4', 'C5', 'C6', 'C7',
'C8', 'C9', 'CA', 'CB', 'CC', 'CD', 'CE', 'CF', 'D0', 'D1',
'D2', 'D3', 'D4', 'D5', 'D6', 'D7', 'D8', 'D9', 'DA', 'DB',
'DC', 'DD', 'DE', 'DF', 'E0', 'E1', 'E2', 'E3', 'E4', 'E5',
'E6', 'E7', 'E8', 'E9', 'EA', 'EB', 'EC', 'ED', 'EE', 'EF',
'F0', 'F1', 'F2', 'F3', 'F4', 'F5', 'F6', 'F7', 'F8', 'F9',
'FA', 'FB', 'FC', 'FD', 'FE', 'FF'
]
deviceCtrl.AppendItems(strings=list)
if list.count(unit_id) == 0:
deviceCtrl.Select(n=0)
else:
deviceCtrl.SetSelection(int(list.index(unit_id)))
staticBox = wx.StaticBox(panel, -1, text.textBoxDeviceCode)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer4 = wx.BoxSizer(wx.HORIZONTAL)
sizer4.Add(deviceCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer4, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
# Create a dropdown for key command
commandCtrl = wx.Choice(parent=panel, pos=(10, 10))
list = [
'VOL+', '6', 'STOP', 'PAUSE', 'TEXT', 'SHIFT-TEXT', 'SHIFT-ENT',
'SHIFT-TELETEXT', 'PC or SHIFT-4', 'SHIFT-5', 'DVD', 'CD', 'MP3',
'9', '4', 'Drag', '3', 'Left mouse', 'EXIT', 'CH-', '8', 'ENT',
'TELETEXT', 'Right mouse-End', 'Right mouse', 'REC', 'MENU',
'PLAY', '1', 'FF', '0', '2', 'CH+', 'INFO', 'A+B',
'Cursor-down-left', 'MUTE', 'Cursor-up-right', 'Cursor-up-left',
'Cursor-down', 'Cursor-up', 'Cursor-right', 'Cursor-left', 'VOL-',
'Left mouse-End', '7', 'REW', 'Cursor-down-right', '5'
]
commandCtrl.AppendItems(strings=list)
if list.count(key) == 0:
commandCtrl.Select(n=0)
else:
commandCtrl.SetSelection(int(list.index(key)))
staticBox = wx.StaticBox(panel, -1, text.textBoxCommand)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer5 = wx.BoxSizer(wx.HORIZONTAL)
sizer5.Add(commandCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer5, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
commandCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
my_macro_indx = self.plugin.GetMacroIndex(
'send_X10_PC_Remote', nameCtrl.GetValue(), my_macro_indx
)
panel.SetResult(
nameCtrl.GetValue(),
protocolCtrl.GetStringSelection(),
deviceCtrl.GetStringSelection(),
commandCtrl.GetStringSelection(),
my_macro_indx
)
self.plugin.SetMacroName(
'send_X10_PC_Remote', nameCtrl.GetValue(), my_macro_indx
)
class WebRefresh(eg.ActionClass):
def __call__(self):
# Refresh status with persistent data if available
time.sleep(0.5)
self.plugin.DateAndTimeInfo()
time.sleep(2.0)
self.plugin.StatusRefresh()
class ClearSensorsStatus(eg.ActionClass):
def __call__(self):
# Clear the repository for missing sensors
time.sleep(0.5)
CurrentStateData.sensors_status.clear()
self.plugin.sensors_status = (
CurrentStateData.sensors_status
)
class ResetCurrentStatus(eg.ActionClass):
def __call__(self):
# Reset the repository for captured data
time.sleep(0.5)
CurrentStateData.current_state_memory.clear()
self.plugin.current_state_memory = (
CurrentStateData.current_state_memory
)
class ResetLaCrosseTX5_data(eg.ActionClass):
def __call__(self, deviceId):
self.ClearData(deviceId)
def ClearData(self, deviceId):
try:
del self.plugin.totalRain[deviceId]
del self.plugin.flCount_prev[deviceId]
del self.plugin.flipCount[deviceId]
CurrentStateData.totalRain = self.plugin.totalRain
print deviceId, ': La Crosse TX5 data & counters resetted'
except:
pass
def OnChoice(self, event):
choice = event.GetSelection()
event.Skip()
return choice
def Configure(
self,
deviceId='1234'
):
text = Text
panel = eg.ConfigPanel(self)
list = []
for item in self.plugin.totalRain:
list.append(item)
# Create a dropdown for key command
deviceIdCtrl = wx.Choice(parent=panel, pos=(10, 10))
deviceIdCtrl.AppendItems(strings=list)
if list.count(deviceId) == 0:
deviceIdCtrl.Select(n=0)
else:
deviceIdCtrl.SetSelection(int(list.index(deviceId)))
staticBox = wx.StaticBox(panel, -1, text.textBoxLCdeviceId)
staticBoxSizer = wx.StaticBoxSizer(staticBox, wx.VERTICAL)
sizer1 = wx.BoxSizer(wx.HORIZONTAL)
sizer1.Add(deviceIdCtrl, 1, wx.EXPAND)
staticBoxSizer.Add(sizer1, 0, wx.EXPAND | wx.ALL, 5)
panel.sizer.Add(staticBoxSizer, 0, wx.EXPAND)
deviceIdCtrl.Bind(wx.EVT_CHOICE, self.OnChoice)
while panel.Affirmed():
try:
devId = deviceIdCtrl.GetStringSelection()
self.ClearData(devId)
if devId <> '':
deviceId = devId
panel.SetResult(
deviceId
)
except:
pass
class decode_Test_Message(eg.ActionClass):
def __call__(self, msg):
self.plugin.HandleChar(msg)
def Configure(
self,
msg='0b15000112ea480100012c60'
):
panel = eg.ConfigPanel(self)
mySizer_1 = wx.GridBagSizer(10, 10)
msgCtrl = wx.TextCtrl(panel, -1, msg)
msgCtrl.SetInitialSize((250, -1))
mySizer_1.Add(wx.StaticText(panel, -1, 'Test message to decode'), (0, 0))
mySizer_1.Add(msgCtrl, (0, 1))
panel.sizer.Add(mySizer_1, 0, flag=wx.EXPAND)
while panel.Affirmed():
msg = msgCtrl.GetValue()
panel.SetResult(
msg.lower().replace(" ", "")
)
class enable_unDecoded(eg.ActionClass):
def __call__(
self
):
base_msg = self.plugin.interfaceMode
try:
if int(base_msg[7], 16) < 128:
bb = str(bin(int(base_msg[7], 16)))[2:]
if len(bb) < 8:
bb = bb.zfill(7)
bb = '0b1' + bb
ib = int(bb, 2)
hb = hex(ib)
sb = str(hb[2:]).upper()
if len(sb) < 2:
sb = '0' + sb
msg = (
'0D 00 00 00 03 ' +
base_msg[5] + ' ' +
base_msg[6] + ' ' +
sb + ' ' +
base_msg[8] + ' ' +
base_msg[9] + ' ' +
base_msg[10] + ' ' +
base_msg[11] + ' ' +
base_msg[12] + ' ' +
base_msg[13]
)
msg = msg.upper()
print 'Undecoded enabled'
self.plugin.WriteMsg(msg, '', '')
except:
eg.PrintError('Action failed...')
class disable_unDecoded(eg.ActionClass):
def __call__(
self
):
base_msg = self.plugin.interfaceMode
try:
if int(base_msg[7], 16) > 127:
bb = str(bin(int(base_msg[7], 16)))
bb = '0b0' + bb[3:]
ib = int(bb, 2)
hb = hex(ib)
sb = str(hb[2:]).upper()
if len(sb) < 2:
sb = '0' + sb
msg = (
'0D 00 00 00 03 ' +
base_msg[5] + ' ' +
base_msg[6] + ' ' +
sb + ' ' +
base_msg[8] + ' ' +
base_msg[9] + ' ' +
base_msg[10] + ' ' +
base_msg[11] + ' ' +
base_msg[12] + ' ' +
base_msg[13]
)
msg = msg.upper()
print 'Undecoded disabled'
self.plugin.WriteMsg(msg, '', '')
except:
eg.PrintError('Action failed...')
class remote_address_Mapper(eg.ActionClass):
def __call__(self, adr_1, adr_2):
del CurrentStateData.remote_address_map[adr_1]
def Configure(
self,
adr_1='00467a6e',
adr_2='0048219a'
):
panel = eg.ConfigPanel(self)
mySizer_1 = wx.GridBagSizer(10, 10)
mySizer_2 = wx.GridBagSizer(10, 10)
adr_1_Ctrl = wx.TextCtrl(panel, -1, adr_1)
adr_1_Ctrl.SetInitialSize((250, -1))
mySizer_1.Add(wx.StaticText(panel, -1, 'Actual remote address: '), (0, 0))
mySizer_1.Add(adr_1_Ctrl, (0, 1))
panel.sizer.Add(mySizer_1, 0, flag=wx.EXPAND)
adr_2_Ctrl = wx.TextCtrl(panel, -1, adr_2)
adr_2_Ctrl.SetInitialSize((250, -1))
mySizer_2.Add(wx.StaticText(panel, -1, 'Replace address with : '), (0, 0))
mySizer_2.Add(adr_2_Ctrl, (0, 1))
panel.sizer.Add(mySizer_2, 0, flag=wx.EXPAND)
while panel.Affirmed():
adr_1 = adr_1_Ctrl.GetValue()
adr_2 = adr_2_Ctrl.GetValue()
CurrentStateData.remote_address_map[adr_1] = adr_2
panel.SetResult(
adr_1,
adr_2
)
class max_outPower(eg.ActionClass):
def __call__(
self
):
base_msg = self.plugin.interfaceMode
try:
msg = (
'0D 00 00 00 03 ' +
base_msg[5] + ' ' +
'1F' + ' ' +
base_msg[7] + ' ' +
base_msg[8] + ' ' +
base_msg[9] + ' ' +
base_msg[10] + ' ' +
'00' + ' ' +
'00' + ' ' +
'00'
)
msg = msg.upper()
print 'Max output power enabled'
self.plugin.WriteMsg(msg, '', '')
except:
eg.PrintError('Action failed...')
class normal_outPower(eg.ActionClass):
def __call__(
self
):
base_msg = self.plugin.interfaceMode
try:
msg = (
'0D 00 00 00 03 ' +
base_msg[5] + ' ' +
'1C' + ' ' +
base_msg[7] + ' ' +
base_msg[8] + ' ' +
base_msg[9] + ' ' +
base_msg[10] + ' ' +
'00' + ' ' +
'00' + ' ' +
'00'
)
msg = msg.upper()
print 'Normal output power enabled'
self.plugin.WriteMsg(msg, '', '')
except:
eg.PrintError('Action failed...')
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment