├── openhab_config ├── transform │ ├── ventilation_ventmode.map │ ├── ventilation_temperature.js │ ├── ventilation_speed.map │ └── ventilation_mode.map ├── rules │ └── ventilation.rules ├── sitemap │ └── ventilation.sitemap └── items │ └── ventilation.items ├── pycomfoconnect ├── __init__.py ├── error.py ├── const.py ├── bridge.py ├── message.py ├── comfoconnect.py └── zehnder_pb2.py ├── LICENSE ├── README.md ├── .gitignore └── openhab_gw.py /openhab_config/transform/ventilation_ventmode.map: -------------------------------------------------------------------------------- 1 | 0=8 2 | 1=7 3 | -------------------------------------------------------------------------------- /openhab_config/transform/ventilation_temperature.js: -------------------------------------------------------------------------------- 1 | var temp = eval(input); 2 | result = temp/10; 3 | -------------------------------------------------------------------------------- /openhab_config/transform/ventilation_speed.map: -------------------------------------------------------------------------------- 1 | 0=AWAY 2 | 1=NORMAL 3 | 2=HIGH 4 | 3=MAX 5 | 4=AUTO 6 | -=UNKNOWN 7 | -------------------------------------------------------------------------------- /openhab_config/transform/ventilation_mode.map: -------------------------------------------------------------------------------- 1 | 0=MANUAL 2 | 1=AUTO 3 | -=UNKNOWN 4 | 4=AUTO 5 | 5=MANUAL 6 | 41=AUTO(MAN) 7 | -------------------------------------------------------------------------------- /pycomfoconnect/__init__.py: -------------------------------------------------------------------------------- 1 | """ 2 | PyComfoConnect: Manage your Zehnder ComfoConnect Q350/Q450/Q650 ventilation unit 3 | """ 4 | 5 | DEFAULT_UUID = '00000000000000000000000000000001' 6 | DEFAULT_NAME = 'pycomfoconnect' 7 | DEFAULT_PIN = 0 8 | 9 | __author__ = 'Michaël Arnauts ' 10 | 11 | from .comfoconnect import * 12 | from .error import * 13 | from .const import * -------------------------------------------------------------------------------- /LICENSE: -------------------------------------------------------------------------------- 1 | MIT License 2 | 3 | Copyright (c) 2017 ORi0N 4 | 5 | Permission is hereby granted, free of charge, to any person obtaining a copy 6 | of this software and associated documentation files (the "Software"), to deal 7 | in the Software without restriction, including without limitation the rights 8 | to use, copy, modify, merge, publish, distribute, sublicense, and/or sell 9 | copies of the Software, and to permit persons to whom the Software is 10 | furnished to do so, subject to the following conditions: 11 | 12 | The above copyright notice and this permission notice shall be included in all 13 | copies or substantial portions of the Software. 14 | 15 | THE SOFTWARE IS PROVIDED "AS IS", WITHOUT WARRANTY OF ANY KIND, EXPRESS OR 16 | IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY, 17 | FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE 18 | AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER 19 | LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM, 20 | OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE 21 | SOFTWARE. 22 | -------------------------------------------------------------------------------- /pycomfoconnect/error.py: -------------------------------------------------------------------------------- 1 | class PyComfoConnectError(Exception): 2 | """ Base error for PyComfoConnect """ 3 | pass 4 | 5 | 6 | class PyComfoConnectBadRequest(PyComfoConnectError): 7 | """ 8 | An error occured because the request was invalid. 9 | """ 10 | pass 11 | 12 | 13 | class PyComfoConnectInternalError(PyComfoConnectError): 14 | """ 15 | An error occured because something went wrong inside the bridge. 16 | """ 17 | pass 18 | 19 | 20 | class PyComfoConnectNotReachable(PyComfoConnectError): 21 | """ 22 | An error occured because the bridge could not reach the ventilation unit. 23 | """ 24 | pass 25 | 26 | 27 | class PyComfoConnectOtherSession(PyComfoConnectError): 28 | """ 29 | An error occured because the bridge is already connected to a different device. 30 | """ 31 | 32 | def __init__(self, devicename): 33 | self.devicename = devicename 34 | 35 | 36 | class PyComfoConnectNotAllowed(PyComfoConnectError): 37 | """ 38 | An error occured because you have not authenticated yet. 39 | """ 40 | pass 41 | 42 | 43 | class PyComfoConnectNoResources(PyComfoConnectError): 44 | pass 45 | 46 | 47 | class PyComfoConnectNotExist(PyComfoConnectError): 48 | pass 49 | 50 | 51 | class PyComfoConnectRmiError(PyComfoConnectError): 52 | pass 53 | -------------------------------------------------------------------------------- /openhab_config/rules/ventilation.rules: -------------------------------------------------------------------------------- 1 | rule "Readible Outside Temp" 2 | when 3 | Item Ventilation_TemperatureOutdoorAir changed or 4 | Item Ventilation_HumidityOutdoorAir changed or 5 | Time cron "0 */5 * * * ?" 6 | then 7 | logInfo("Ventilation", "Outside temp trigger") 8 | var Number Humi = Ventilation_HumidityOutdoorAir.state 9 | var Number Temp = Ventilation_TemperatureOutdoorAir.state 10 | var Number Humi_r = (Math::round(Humi.floatValue)) 11 | var Number Temp_r = (Math::round(Temp.floatValue*10.0)/10.0) 12 | postUpdate(TempHumOutside, Temp_r + " °C / " + Humi_r + "%") 13 | end 14 | 15 | rule "Readible Inside Temp" 16 | when 17 | Item Ventilation_TemperatureExtractAir changed or 18 | Item Ventilation_HumidityExtractAir changed or 19 | Time cron "0 */5 * * * ?" 20 | then 21 | logInfo("Ventilation", "Inside temp trigger") 22 | var Number Humi2 = Ventilation_HumidityExtractAir.state 23 | var Number Temp2 = Ventilation_TemperatureExtractAir.state 24 | var Number Humi_r2 = (Math::round(Humi2.floatValue)) 25 | var Number Temp_r2 = (Math::round(Temp2.floatValue*10.0)/10.0) 26 | postUpdate(TempHumInside, Temp_r2 + " °C / " + Humi_r2 + "%") 27 | end 28 | -------------------------------------------------------------------------------- /README.md: -------------------------------------------------------------------------------- 1 | This is a mod for the python library that michael arnauts has written on https://github.com/michaelarnauts/comfoconnect/ so that it would work together with any MQTT enabled smart home software (openhab in my case). 2 | 3 | You'll need: 4 | - Working linux env 5 | - Python3 6 | - See page of michael for other dependencies 7 | - Paho MQTT lib 8 | 9 | What does this gateway script do? 10 | 11 | It discovers the ComfoConnect LAN C Device. See the required config at the top in the gateway file. run it with option -d first and then set the parameters in the script. Then, run it without additional parameters and you should see messages in your MQTT broker. 12 | It connects to the Comfoconnect LAN C Device and relays the information between MQTT and the device in both directions. You can see sensor data, config and set the ventilation speed, balance mode, ... The main stuff Michael and myself discovered is in his protocol file. 13 | 14 | I am simply sharing my code here so that others may benefit from it. I cannot provide bugfixes or support for this. The python code is very basic and should get you going easily. Simply modify and debug as I did :) And if you discover new things about the protocol, share your intel :) 15 | 16 | To startup the script at boot time, add it to your rc.local file, or deamonize it: 17 | For example mine looks like this: /usr/bin/python3 -u /home/orion/comfoconnect/gateway.py >> /var/log/openhab_comfoconnect_gateway.log & 18 | 19 | -------------------------------------------------------------------------------- /.gitignore: -------------------------------------------------------------------------------- 1 | # Byte-compiled / optimized / DLL files 2 | __pycache__/ 3 | *.py[cod] 4 | *$py.class 5 | 6 | # C extensions 7 | *.so 8 | 9 | # Distribution / packaging 10 | .Python 11 | env/ 12 | build/ 13 | develop-eggs/ 14 | dist/ 15 | downloads/ 16 | eggs/ 17 | .eggs/ 18 | lib/ 19 | lib64/ 20 | parts/ 21 | sdist/ 22 | var/ 23 | wheels/ 24 | *.egg-info/ 25 | .installed.cfg 26 | *.egg 27 | 28 | # PyInstaller 29 | # Usually these files are written by a python script from a template 30 | # before PyInstaller builds the exe, so as to inject date/other infos into it. 31 | *.manifest 32 | *.spec 33 | 34 | # Installer logs 35 | pip-log.txt 36 | pip-delete-this-directory.txt 37 | 38 | # Unit test / coverage reports 39 | htmlcov/ 40 | .tox/ 41 | .coverage 42 | .coverage.* 43 | .cache 44 | nosetests.xml 45 | coverage.xml 46 | *.cover 47 | .hypothesis/ 48 | 49 | # Translations 50 | *.mo 51 | *.pot 52 | 53 | # Django stuff: 54 | *.log 55 | local_settings.py 56 | 57 | # Flask stuff: 58 | instance/ 59 | .webassets-cache 60 | 61 | # Scrapy stuff: 62 | .scrapy 63 | 64 | # Sphinx documentation 65 | docs/_build/ 66 | 67 | # PyBuilder 68 | target/ 69 | 70 | # Jupyter Notebook 71 | .ipynb_checkpoints 72 | 73 | # pyenv 74 | .python-version 75 | 76 | # celery beat schedule file 77 | celerybeat-schedule 78 | 79 | # SageMath parsed files 80 | *.sage.py 81 | 82 | # dotenv 83 | .env 84 | 85 | # virtualenv 86 | .venv 87 | venv/ 88 | ENV/ 89 | 90 | # Spyder project settings 91 | .spyderproject 92 | .spyproject 93 | 94 | # Rope project settings 95 | .ropeproject 96 | 97 | # mkdocs documentation 98 | /site 99 | 100 | # mypy 101 | .mypy_cache/ 102 | -------------------------------------------------------------------------------- /openhab_config/sitemap/ventilation.sitemap: -------------------------------------------------------------------------------- 1 | Text item=TempHumOutside label="Buiten [%s]" labelcolor=[Ventilation_TemperatureOutdoorAir>=35="fuchsia",Ventilation_TemperatureOutdoorAir>=30="darkviolett",Ventilation_TemperatureOutdoorAir>=25="blueviolett",Ventilation$ 2 | Text item=TempHumInside label="Binnen [%s]" labelcolor=[Ventilation_TemperatureExtractAir>=35="fuchsia",Ventilation_TemperatureExtractAir>=30="darkviolett",Ventilation_TemperatureExtractAir>=25="blueviolett",Ventilation_$ 3 | 4 | Text label="Ventilation details" icon="fan"{ 5 | Switch item=Ventilation_FanSpeed mappings=[0="AWAY", 1="NORMAL", 2="HIGH", 3="MAX"] 6 | Switch item=Ventilation_RunningMode mappings=[4="AUTO", 5="MANUAL", 41="AUTO(MAN)"] 7 | Switch item=Ventilation_VentilationMode mappings=[7="SUPPLY ONLY", 8="BALANCE"] 8 | Default item=Ventilation_CountdownTillNextSpeedChange 9 | Default item=Ventilation_BypassState 10 | Default item=Ventilation_FilterDaysLeft 11 | Default item=Ventilation_SupplyFanDuty 12 | Default item=Ventilation_ExhaustFanDuty 13 | Default item=Ventilation_SupplyFanFlow 14 | Default item=Ventilation_ExtractFanFlow 15 | Default item=Ventilation_CurrentPowerConsumption 16 | Default item=Ventilation_TotalPowerConsumption 17 | Default item=Ventilation_ActualAvoidedHeating 18 | Default item=Ventilation_TotalAvoidedHeating 19 | Default item=Ventilation_TemperatureSupplyAir 20 | Default item=Ventilation_HumiditySupplyAir 21 | Default item=Ventilation_TemperatureExtractAir 22 | Default item=Ventilation_HumidityExtractAir 23 | Default item=Ventilation_TemperatureExhaustAir 24 | Default item=Ventilation_HumidityExhaustAir 25 | Default item=Ventilation_TemperatureOutdoorAir 26 | Default item=Ventilation_HumidityOutdoorAir 27 | } 28 | -------------------------------------------------------------------------------- /pycomfoconnect/const.py: -------------------------------------------------------------------------------- 1 | # API contants 2 | 3 | FAN_MODE_AWAY = 'away' 4 | FAN_MODE_LOW = 'low' 5 | FAN_MODE_MEDIUM = 'medium' 6 | FAN_MODE_HIGH = 'high' 7 | 8 | # Commands 9 | CMD_FAN_MODE_AWAY = b'\x84\x15\x01\x01\x00\x00\x00\x00\x01\x00\x00\x00\x00' 10 | CMD_FAN_MODE_LOW = b'\x84\x15\x01\x01\x00\x00\x00\x00\x01\x00\x00\x00\x01' 11 | CMD_FAN_MODE_MEDIUM = b'\x84\x15\x01\x01\x00\x00\x00\x00\x01\x00\x00\x00\x02' 12 | CMD_FAN_MODE_HIGH = b'\x84\x15\x01\x01\x00\x00\x00\x00\x01\x00\x00\x00\x03' 13 | CMD_MODE_AUTO = b'\x85\x15\x08\x01' #AUTO !!! 14 | CMD_MODE_MANUAL = b'\x84\x15\x08\x01\x00\x00\x00\x00\x01\x00\x00\x00\x01' #MANUAL !!! 15 | CMD_READ_CONFIG = b'\x87\x15\x01' 16 | CMD_READ_HRU = b'\x01\x01\x01\x10\x08' 17 | 18 | CMD_VENTMODE_SUPPLY = b'\x84\x15\x06\x01\x00\x00\x00\x00\x10\x0e\x00\x00\x01' ## SUPPLY ONLY !!! 19 | CMD_VENTMODE_EXTRACT =b'\x84\x15\x06\x01\x00\x00\x00\x00\x10\x0e\x00\x00\x02' ## EXTRACT ONLY !!! 20 | CMD_VENTMODE_BALANCE =b'\x85\x15\06\01' #BALANCE MODE AGAIN !!! 21 | CMD_TEMPPROF_NORMAL = b'\x84\x15\x03\x01\x00\x00\x00\x00\xff\xff\xff\xff\x00' # NORMAL TEMP PROFILE 22 | CMD_TEMPPROF_COOL = b'\x84\x15\x03\x01\x00\x00\x00\x00\xff\xff\xff\xff\x01' # COOL TEMP PROFILE 23 | CMD_TEMPROF_WARM = b'\x84\x15\x03\x01\x00\x00\x00\x00\xff\xff\xff\xff\x02' # WARM TEMP PROFILE 24 | CMD_BYPASS_ON = b'\x84\x15\x02\x01\x00\x00\x00\x00\x10\x0e\x00\x00\x01' # BYPASS ASTIVATED 25 | CMD_BYPASS_OFF = b'\x84\x15\x02\x01\x00\x00\x00\x00\x10\x0e\x00\x00\x02' # BYPASS DEACTIVATED 26 | CMD_BYPASS_AUTO = b'\x85\x15\x02\x01' # BYPASS AUTO 27 | CMD_SENS_TEMP_OFF = b'\x03\x1d\x01\x04\x00' # SENSOR VENT: TEMP PASSIVE OFF 28 | CMD_SENS_TEMP_AUTO = b'\x03\x1d\x01\x04\x01' # SENSOR VENT: TEMP PASSIVE AUTO ONLY 29 | CMD_SENS_TEMP_ON = b'\x03\x1d\x01\x04\x02' # SENSOR VENT: TEMP PASSIVE ON 30 | CMD_SENS_HUMC_OFF = b'\x03\x1d\x01\x06\x00' # SENSOR VENT: HUMIDITY COMFORT OFF 31 | CMD_SENS_HUMC_AUTO = b'\x03\x1d\x01\x06\x01' # SENSOR VENT: HUMIDITY COMFORT AUTO ONLY 32 | CMD_SENS_HUMC_ON = b'\x03\x1d\x01\x06\x02' # SENSOR VENT: HUMIDITY COMFORT ON 33 | CMD_SENS_HUMP_OFF = b'\x03\x1d\x01\x07\x00' # SENSOR VENT: HUMIDITY PROTECTION OFF 34 | CMD_SENS_HUMP_AUTO = b'\x03\x1d\x01\x07\x01' # SENSOR VENT: HUMIDITY PROTECTION AUTO 35 | CMD_SENS_HUMP_ON = b'\x03\x1d\x01\x07\x02' # SENSOR VENT: HUMIDITY PROTECTION ON 36 | 37 | # Sensor locations 38 | SENSOR_TEMPERATURE_SUPPLY = 221 39 | SENSOR_TEMPERATURE_EXTRACT = 274 40 | SENSOR_TEMPERATURE_EXHAUST = 275 41 | SENSOR_TEMPERATURE_OUTDOOR = 276 42 | SENSOR_HUMIDITY_EXTRACT = 290 43 | SENSOR_HUMIDITY_EXHAUST = 291 44 | SENSOR_HUMIDITY_OUTDOOR = 292 45 | SENSOR_HUMIDITY_SUPPLY = 294 46 | SENSOR_FAN_NEXT_CHANGE = 81 47 | SENSOR_FAN_SPEED_MODE = 65 48 | SENSOR_FAN_SUPPLY_DUTY = 117 49 | SENSOR_FAN_EXHAUST_DUTY = 118 50 | SENSOR_FAN_SUPPLY_FLOW = 119 51 | SENSOR_FAN_EXHAUST_FLOW = 120 52 | SENSOR_FAN_SUPPLY_SPEED = 121 53 | SENSOR_FAN_EXHAUST_SPEED = 122 54 | SENSOR_POWER_CURRENT = 128 55 | SENSOR_POWER_TOTAL_YEAR = 129 56 | SENSOR_POWER_TOTAL = 130 57 | SENSOR_AVOIDED_HEATING_CURRENT = 213 58 | SENSOR_AVOIDED_HEATING_TOTAL_YEAR = 214 59 | SENSOR_AVOIDED_HEATING_TOTAL = 215 60 | SENSOR_DAYS_TO_REPLACE_FILTER = 192 61 | SENSOR_BYPASS_STATE = 227 62 | SENSOR_RUNMODE_SUPPLY_BALANCE = 70 63 | SENSOR_AUTO_STATE = 225 64 | SENSOR_AWAY_STATE = 16 65 | SENSOR_TEMP_PROFILE = 67 66 | SETTING_BYPASS = 66 67 | SETTING_HEATING_SEASON = 210 68 | SETTING_RF_PAIRING = 176 69 | 70 | -------------------------------------------------------------------------------- /openhab_config/items/ventilation.items: -------------------------------------------------------------------------------- 1 | Number Ventilation_FanSpeed "" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/config/speed:state:default],>[mosquitto:Zehnder/ComfoAirQ450/ExecuteFunction:command:*:default]", autoupdate="false" } 2 | Number Ventilation_RunningMode "" { mqtt=">[mosquitto:Zehnder/ComfoAirQ450/ExecuteFunction:command:*:default],<[mosquitto:Zehnder/ComfoAirQ450/config/mode:state:default]" , autoupdate="false", ihc="0x33c311"} 3 | Number Ventilation_VentilationMode "" { mqtt=">[mosquitto:Zehnder/ComfoAirQ450/ExecuteFunction:command:*:default],<[mosquitto:Zehnder/ComfoAirQ450/70:state:MAP(ventilation_ventmode.map)]", autoupdate="false", ihc="0x33c311"} 4 | Number Ventilation_SupplyFanDuty "Supply Fan Duty [%s %%]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/118:state:default]"} 5 | Number Ventilation_ExhaustFanDuty "Exhaust Fan Duty [%s %%]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/117:state:default]"} 6 | Number Ventilation_CurrentPowerConsumption "Current Power [%s W]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/128:state:default]"} 7 | Number Ventilation_TotalPowerConsumption "Total Power [%s W]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/130:state:default]"} 8 | Number Ventilation_SupplyFanFlow "Supply Flow [%s m³/h]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/120:state:default]"} 9 | Number Ventilation_ExtractFanFlow "Extract Flow [%s m³/h]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/119:state:default]"} 10 | Number Ventilation_FilterDaysLeft "Filter Days Left [%s d]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/192:state:default]"} 11 | Number Ventilation_ActualAvoidedHeating "Current Avoided Heating [%s W]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/213:state:default]"} 12 | Number Ventilation_TotalAvoidedHeating "Total Avoided Heating [%s W]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/215:state:default]"} 13 | Number Ventilation_TemperatureSupplyAir "Temp Supply [%.1f °C]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/221:state:JS(ventilation_temperature.js)]"} 14 | Number Ventilation_TemperatureExtractAir "Temp Extract [%.1f °C]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/274:state:JS(ventilation_temperature.js)]"} 15 | Number Ventilation_TemperatureExhaustAir "Temp Exhaust [%.1f °C]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/275:state:JS(ventilation_temperature.js)]"} 16 | Number Ventilation_TemperatureOutdoorAir "Temp Outdoor [%.1f °C]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/276:state:JS(ventilation_temperature.js)]"} 17 | Number Ventilation_HumidityExtractAir "Hum Extract [%s %%]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/290:state:default]"} 18 | Number Ventilation_HumidityExhaustAir "Hum Exhaust [%s %%]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/291:state:default]"} 19 | Number Ventilation_HumidityOutdoorAir "Hum Outdoor [%s %%]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/292:state:default]"} 20 | Number Ventilation_HumiditySupplyAir "Hum Supply [%s %%]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/294:state:default]"} 21 | Number Ventilation_BypassState "Bypass [%s %%]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/227:state:default]"} 22 | String Ventilation_CountdownTillNextSpeedChange "Countdown [%s]" { mqtt="<[mosquitto:Zehnder/ComfoAirQ450/81:state:default]"} 23 | 24 | // Easier Readable for sitemap 25 | String TempHumOutside "Outside [%s]" (Out) 26 | String TempHumInside "Inside [%s]" (Out) 27 | -------------------------------------------------------------------------------- /pycomfoconnect/bridge.py: -------------------------------------------------------------------------------- 1 | from __future__ import print_function 2 | 3 | import select 4 | import socket 5 | 6 | from .message import * 7 | 8 | 9 | class Bridge(object): 10 | """Implements an interface to send and receive messages from the Bridge.""" 11 | 12 | PORT = 56747 13 | 14 | @staticmethod 15 | def discover(host=None, timeout=5): 16 | """Broadcast the network and look for local bridges.""" 17 | 18 | # Setup socket 19 | udpsocket = socket.socket(socket.AF_INET, socket.SOCK_DGRAM) 20 | udpsocket.setblocking(0) 21 | udpsocket.setsockopt(socket.SOL_SOCKET, socket.SO_BROADCAST, 1) 22 | 23 | # Send broadcast packet 24 | if host is None: 25 | udpsocket.sendto(b"\x0a\x00", ('', Bridge.PORT)) 26 | else: 27 | udpsocket.sendto(b"\x0a\x00", (host, Bridge.PORT)) 28 | 29 | # Try to read response 30 | parser = DiscoveryOperation() 31 | bridges = [] 32 | while True: 33 | ready = select.select([udpsocket], [], [], timeout) 34 | if not ready[0]: 35 | break 36 | 37 | data, source = udpsocket.recvfrom(100) 38 | 39 | # Parse data 40 | parser.ParseFromString(data) 41 | ip_address = parser.searchGatewayResponse.ipaddress 42 | uuid = parser.searchGatewayResponse.uuid 43 | 44 | # Add a new Bridge to the list 45 | bridges.append( 46 | Bridge(ip_address, uuid) 47 | ) 48 | 49 | # Don't look for other bridges if we directly discovered it by IP 50 | if host: 51 | break 52 | 53 | udpsocket.close() 54 | 55 | # Return found bridges 56 | return bridges 57 | 58 | def __init__(self, host: str, uuid: str) -> None: 59 | self.host = host 60 | self.uuid = uuid 61 | 62 | self._socket = None 63 | self.debug = False 64 | 65 | def connect(self) -> bool: 66 | """Open connection to the bridge.""" 67 | 68 | if self._socket is None: 69 | tcpsocket = socket.socket(socket.AF_INET, socket.SOCK_STREAM) 70 | tcpsocket.connect((self.host, Bridge.PORT)) 71 | tcpsocket.setblocking(0) 72 | self._socket = tcpsocket 73 | 74 | return True 75 | 76 | def disconnect(self) -> bool: 77 | """Close connection to the bridge.""" 78 | 79 | self._socket.close() 80 | self._socket = None 81 | 82 | return True 83 | 84 | def is_connected(self): 85 | """Returns weather there is an open socket.""" 86 | 87 | return self._socket is not None 88 | 89 | def read_message(self, timeout=1) -> Message: 90 | """Read a message from the connection.""" 91 | 92 | if self._socket is None: 93 | raise BrokenPipeError() 94 | 95 | # Check if there is data available 96 | ready = select.select([self._socket], [], [], timeout) 97 | if not ready[0]: 98 | # Timeout 99 | return None 100 | 101 | # Read packet size 102 | msg_len_buf = self._socket.recv(4) 103 | if not msg_len_buf: 104 | # No data, but there has to be. 105 | raise BrokenPipeError() 106 | 107 | # Read rest of packet 108 | msg_len = struct.unpack('>L', msg_len_buf)[0] 109 | msg_buf = self._socket.recv(msg_len) 110 | if not msg_buf: 111 | # No data, but there has to be. 112 | raise BrokenPipeError() 113 | 114 | # Decode message 115 | message = Message.decode(msg_len_buf + msg_buf) 116 | 117 | # Debug message 118 | if self.debug: 119 | print("BRIDGE: read_message(): %s" % message) 120 | 121 | return message 122 | 123 | def write_message(self, message: Message) -> bool: 124 | """Send a message.""" 125 | 126 | if self._socket is None: 127 | raise Exception('Not connected!') 128 | 129 | # Construct packet 130 | packet = message.encode() 131 | 132 | # Debug message 133 | if self.debug: 134 | print("BRIDGE: write_message(): %s" % message) 135 | 136 | # Send packet 137 | try: 138 | self._socket.sendall(packet) 139 | except BrokenPipeError: 140 | self.disconnect() 141 | return False 142 | 143 | return True 144 | -------------------------------------------------------------------------------- /pycomfoconnect/message.py: -------------------------------------------------------------------------------- 1 | import struct 2 | 3 | from .error import * 4 | from .zehnder_pb2 import * 5 | 6 | 7 | class Message(object): 8 | class_to_type = { 9 | SetAddressRequest: GatewayOperation.SetAddressRequestType, 10 | RegisterAppRequest: GatewayOperation.RegisterAppRequestType, 11 | StartSessionRequest: GatewayOperation.StartSessionRequestType, 12 | CloseSessionRequest: GatewayOperation.CloseSessionRequestType, 13 | ListRegisteredAppsRequest: GatewayOperation.ListRegisteredAppsRequestType, 14 | DeregisterAppRequest: GatewayOperation.DeregisterAppRequestType, 15 | ChangePinRequest: GatewayOperation.ChangePinRequestType, 16 | GetRemoteAccessIdRequest: GatewayOperation.GetRemoteAccessIdRequestType, 17 | SetRemoteAccessIdRequest: GatewayOperation.SetRemoteAccessIdRequestType, 18 | GetSupportIdRequest: GatewayOperation.GetSupportIdRequestType, 19 | SetSupportIdRequest: GatewayOperation.SetSupportIdRequestType, 20 | GetWebIdRequest: GatewayOperation.GetWebIdRequestType, 21 | SetWebIdRequest: GatewayOperation.SetWebIdRequestType, 22 | SetPushIdRequest: GatewayOperation.SetPushIdRequestType, 23 | DebugRequest: GatewayOperation.DebugRequestType, 24 | UpgradeRequest: GatewayOperation.UpgradeRequestType, 25 | SetDeviceSettingsRequest: GatewayOperation.SetDeviceSettingsRequestType, 26 | VersionRequest: GatewayOperation.VersionRequestType, 27 | SetAddressConfirm: GatewayOperation.SetAddressConfirmType, 28 | RegisterAppConfirm: GatewayOperation.RegisterAppConfirmType, 29 | StartSessionConfirm: GatewayOperation.StartSessionConfirmType, 30 | CloseSessionConfirm: GatewayOperation.CloseSessionConfirmType, 31 | ListRegisteredAppsConfirm: GatewayOperation.ListRegisteredAppsConfirmType, 32 | DeregisterAppConfirm: GatewayOperation.DeregisterAppConfirmType, 33 | ChangePinConfirm: GatewayOperation.ChangePinConfirmType, 34 | GetRemoteAccessIdConfirm: GatewayOperation.GetRemoteAccessIdConfirmType, 35 | SetRemoteAccessIdConfirm: GatewayOperation.SetRemoteAccessIdConfirmType, 36 | GetSupportIdConfirm: GatewayOperation.GetSupportIdConfirmType, 37 | SetSupportIdConfirm: GatewayOperation.SetSupportIdConfirmType, 38 | GetWebIdConfirm: GatewayOperation.GetWebIdConfirmType, 39 | SetWebIdConfirm: GatewayOperation.SetWebIdConfirmType, 40 | SetPushIdConfirm: GatewayOperation.SetPushIdConfirmType, 41 | DebugConfirm: GatewayOperation.DebugConfirmType, 42 | UpgradeConfirm: GatewayOperation.UpgradeConfirmType, 43 | SetDeviceSettingsConfirm: GatewayOperation.SetDeviceSettingsConfirmType, 44 | VersionConfirm: GatewayOperation.VersionConfirmType, 45 | GatewayNotification: GatewayOperation.GatewayNotificationType, 46 | KeepAlive: GatewayOperation.KeepAliveType, 47 | FactoryReset: GatewayOperation.FactoryResetType, 48 | CnTimeRequest: GatewayOperation.CnTimeRequestType, 49 | CnTimeConfirm: GatewayOperation.CnTimeConfirmType, 50 | CnNodeRequest: GatewayOperation.CnNodeRequestType, 51 | CnNodeNotification: GatewayOperation.CnNodeNotificationType, 52 | CnRmiRequest: GatewayOperation.CnRmiRequestType, 53 | CnRmiResponse: GatewayOperation.CnRmiResponseType, 54 | CnRmiAsyncRequest: GatewayOperation.CnRmiAsyncRequestType, 55 | CnRmiAsyncConfirm: GatewayOperation.CnRmiAsyncConfirmType, 56 | CnRmiAsyncResponse: GatewayOperation.CnRmiAsyncResponseType, 57 | CnRpdoRequest: GatewayOperation.CnRpdoRequestType, 58 | CnRpdoConfirm: GatewayOperation.CnRpdoConfirmType, 59 | CnRpdoNotification: GatewayOperation.CnRpdoNotificationType, 60 | CnAlarmNotification: GatewayOperation.CnAlarmNotificationType, 61 | CnFupReadRegisterRequest: GatewayOperation.CnFupReadRegisterRequestType, 62 | CnFupReadRegisterConfirm: GatewayOperation.CnFupReadRegisterConfirmType, 63 | CnFupProgramBeginRequest: GatewayOperation.CnFupProgramBeginRequestType, 64 | CnFupProgramBeginConfirm: GatewayOperation.CnFupProgramBeginConfirmType, 65 | CnFupProgramRequest: GatewayOperation.CnFupProgramRequestType, 66 | CnFupProgramConfirm: GatewayOperation.CnFupProgramConfirmType, 67 | CnFupProgramEndRequest: GatewayOperation.CnFupProgramEndRequestType, 68 | CnFupProgramEndConfirm: GatewayOperation.CnFupProgramEndConfirmType, 69 | CnFupReadRequest: GatewayOperation.CnFupReadRequestType, 70 | CnFupReadConfirm: GatewayOperation.CnFupReadConfirmType, 71 | CnFupResetRequest: GatewayOperation.CnFupResetRequestType, 72 | CnFupResetConfirm: GatewayOperation.CnFupResetConfirmType, 73 | } 74 | 75 | class_to_confirm = { 76 | SetAddressRequest: SetAddressConfirm, 77 | RegisterAppRequest: RegisterAppConfirm, 78 | StartSessionRequest: StartSessionConfirm, 79 | CloseSessionRequest: CloseSessionConfirm, 80 | ListRegisteredAppsRequest: ListRegisteredAppsConfirm, 81 | DeregisterAppRequest: DeregisterAppConfirm, 82 | ChangePinRequest: ChangePinConfirm, 83 | GetRemoteAccessIdRequest: GetRemoteAccessIdConfirm, 84 | SetRemoteAccessIdRequest: SetRemoteAccessIdConfirm, 85 | GetSupportIdRequest: GetSupportIdConfirm, 86 | SetSupportIdRequest: SetSupportIdConfirm, 87 | GetWebIdRequest: GetWebIdConfirm, 88 | SetWebIdRequest: SetWebIdConfirm, 89 | SetPushIdRequest: SetPushIdConfirm, 90 | DebugRequest: DebugConfirm, 91 | UpgradeRequest: UpgradeConfirm, 92 | SetDeviceSettingsRequest: SetDeviceSettingsConfirm, 93 | VersionRequest: VersionConfirm, 94 | CnTimeRequest: CnTimeConfirm, 95 | CnRmiRequest: CnRmiResponse, 96 | CnRmiAsyncRequest: CnRmiAsyncConfirm, 97 | CnRpdoRequest: CnRpdoConfirm, 98 | CnFupReadRegisterRequest: CnFupReadRegisterConfirm, 99 | CnFupProgramBeginRequest: CnFupProgramBeginConfirm, 100 | CnFupProgramRequest: CnFupProgramConfirm, 101 | CnFupProgramEndRequest: CnFupProgramEndConfirm, 102 | CnFupReadRequest: CnFupReadConfirm, 103 | CnFupResetRequest: CnFupResetConfirm, 104 | } 105 | 106 | request_type_to_class_mapping = { 107 | GatewayOperation.SetAddressRequestType: SetAddressRequest, 108 | GatewayOperation.RegisterAppRequestType: RegisterAppRequest, 109 | GatewayOperation.StartSessionRequestType: StartSessionRequest, 110 | GatewayOperation.CloseSessionRequestType: CloseSessionRequest, 111 | GatewayOperation.ListRegisteredAppsRequestType: ListRegisteredAppsRequest, 112 | GatewayOperation.DeregisterAppRequestType: DeregisterAppRequest, 113 | GatewayOperation.ChangePinRequestType: ChangePinRequest, 114 | GatewayOperation.GetRemoteAccessIdRequestType: GetRemoteAccessIdRequest, 115 | GatewayOperation.SetRemoteAccessIdRequestType: SetRemoteAccessIdRequest, 116 | GatewayOperation.GetSupportIdRequestType: GetSupportIdRequest, 117 | GatewayOperation.SetSupportIdRequestType: SetSupportIdRequest, 118 | GatewayOperation.GetWebIdRequestType: GetWebIdRequest, 119 | GatewayOperation.SetWebIdRequestType: SetWebIdRequest, 120 | GatewayOperation.SetPushIdRequestType: SetPushIdRequest, 121 | GatewayOperation.DebugRequestType: DebugRequest, 122 | GatewayOperation.UpgradeRequestType: UpgradeRequest, 123 | GatewayOperation.SetDeviceSettingsRequestType: SetDeviceSettingsRequest, 124 | GatewayOperation.VersionRequestType: VersionRequest, 125 | GatewayOperation.SetAddressConfirmType: SetAddressConfirm, 126 | GatewayOperation.RegisterAppConfirmType: RegisterAppConfirm, 127 | GatewayOperation.StartSessionConfirmType: StartSessionConfirm, 128 | GatewayOperation.CloseSessionConfirmType: CloseSessionConfirm, 129 | GatewayOperation.ListRegisteredAppsConfirmType: ListRegisteredAppsConfirm, 130 | GatewayOperation.DeregisterAppConfirmType: DeregisterAppConfirm, 131 | GatewayOperation.ChangePinConfirmType: ChangePinConfirm, 132 | GatewayOperation.GetRemoteAccessIdConfirmType: GetRemoteAccessIdConfirm, 133 | GatewayOperation.SetRemoteAccessIdConfirmType: SetRemoteAccessIdConfirm, 134 | GatewayOperation.GetSupportIdConfirmType: GetSupportIdConfirm, 135 | GatewayOperation.SetSupportIdConfirmType: SetSupportIdConfirm, 136 | GatewayOperation.GetWebIdConfirmType: GetWebIdConfirm, 137 | GatewayOperation.SetWebIdConfirmType: SetWebIdConfirm, 138 | GatewayOperation.SetPushIdConfirmType: SetPushIdConfirm, 139 | GatewayOperation.DebugConfirmType: DebugConfirm, 140 | GatewayOperation.UpgradeConfirmType: UpgradeConfirm, 141 | GatewayOperation.SetDeviceSettingsConfirmType: SetDeviceSettingsConfirm, 142 | GatewayOperation.VersionConfirmType: VersionConfirm, 143 | GatewayOperation.GatewayNotificationType: GatewayNotification, 144 | GatewayOperation.KeepAliveType: KeepAlive, 145 | GatewayOperation.FactoryResetType: FactoryReset, 146 | GatewayOperation.CnTimeRequestType: CnTimeRequest, 147 | GatewayOperation.CnTimeConfirmType: CnTimeConfirm, 148 | GatewayOperation.CnNodeRequestType: CnNodeRequest, 149 | GatewayOperation.CnNodeNotificationType: CnNodeNotification, 150 | GatewayOperation.CnRmiRequestType: CnRmiRequest, 151 | GatewayOperation.CnRmiResponseType: CnRmiResponse, 152 | GatewayOperation.CnRmiAsyncRequestType: CnRmiAsyncRequest, 153 | GatewayOperation.CnRmiAsyncConfirmType: CnRmiAsyncConfirm, 154 | GatewayOperation.CnRmiAsyncResponseType: CnRmiAsyncResponse, 155 | GatewayOperation.CnRpdoRequestType: CnRpdoRequest, 156 | GatewayOperation.CnRpdoConfirmType: CnRpdoConfirm, 157 | GatewayOperation.CnRpdoNotificationType: CnRpdoNotification, 158 | GatewayOperation.CnAlarmNotificationType: CnAlarmNotification, 159 | GatewayOperation.CnFupReadRegisterRequestType: CnFupReadRegisterRequest, 160 | GatewayOperation.CnFupReadRegisterConfirmType: CnFupReadRegisterConfirm, 161 | GatewayOperation.CnFupProgramBeginRequestType: CnFupProgramBeginRequest, 162 | GatewayOperation.CnFupProgramBeginConfirmType: CnFupProgramBeginConfirm, 163 | GatewayOperation.CnFupProgramRequestType: CnFupProgramRequest, 164 | GatewayOperation.CnFupProgramConfirmType: CnFupProgramConfirm, 165 | GatewayOperation.CnFupProgramEndRequestType: CnFupProgramEndRequest, 166 | GatewayOperation.CnFupProgramEndConfirmType: CnFupProgramEndConfirm, 167 | GatewayOperation.CnFupReadRequestType: CnFupReadRequest, 168 | GatewayOperation.CnFupReadConfirmType: CnFupReadConfirm, 169 | GatewayOperation.CnFupResetRequestType: CnFupResetRequest, 170 | GatewayOperation.CnFupResetConfirmType: CnFupResetConfirm, 171 | } 172 | 173 | def __init__(self, cmd, msg, src, dst): 174 | self.cmd = cmd 175 | self.msg = msg 176 | self.src = src 177 | self.dst = dst 178 | 179 | @classmethod 180 | def create(cls, src, dst, command, cmd_params=None, msg_params=None): 181 | 182 | cmd = GatewayOperation() 183 | cmd.type = cls.class_to_type[command] 184 | if cmd_params is not None: 185 | for param in cmd_params: 186 | if cmd_params[param] is not None: 187 | setattr(cmd, param, cmd_params[param]) 188 | 189 | msg = command() 190 | if msg_params is not None: 191 | for param in msg_params: 192 | if msg_params[param] is not None: 193 | setattr(msg, param, msg_params[param]) 194 | 195 | return Message(cmd, msg, src, dst) 196 | 197 | def __str__(self): 198 | return "%s -> %s: %s %s\n%s\n%s" % ( 199 | self.src.hex(), 200 | self.dst.hex(), 201 | self.cmd.SerializeToString().hex(), 202 | self.msg.SerializeToString().hex(), 203 | self.cmd, 204 | self.msg, 205 | ) 206 | 207 | def encode(self): 208 | cmd_buf = self.cmd.SerializeToString() 209 | msg_buf = self.msg.SerializeToString() 210 | cmd_len_buf = struct.pack('>H', len(cmd_buf)) 211 | msg_len_buf = struct.pack('>L', 16 + 16 + 2 + len(cmd_buf) + len(msg_buf)) 212 | 213 | return msg_len_buf + self.src + self.dst + cmd_len_buf + cmd_buf + msg_buf 214 | 215 | @classmethod 216 | def decode(cls, packet): 217 | 218 | src_buf = packet[4:20] 219 | dst_buf = packet[20:36] 220 | cmd_len = struct.unpack('>H', packet[36:38])[0] 221 | cmd_buf = packet[38:38 + cmd_len] 222 | msg_buf = packet[38 + cmd_len:] 223 | 224 | # Parse command 225 | cmd = GatewayOperation() 226 | cmd.ParseFromString(cmd_buf) 227 | 228 | # Parse message 229 | cmd_type = cls.request_type_to_class_mapping.get(cmd.type) 230 | msg = cmd_type() 231 | msg.ParseFromString(msg_buf) 232 | 233 | return Message(cmd, msg, src_buf, dst_buf) 234 | -------------------------------------------------------------------------------- /openhab_gw.py: -------------------------------------------------------------------------------- 1 | #!/usr/bin/python3 2 | import argparse 3 | import paho.mqtt.client as mqtt 4 | import datetime 5 | from time import sleep 6 | from binascii import unhexlify 7 | from random import randint 8 | from pycomfoconnect import * 9 | import getopt 10 | 11 | ## Configuration ####################################################################################################### 12 | 13 | local_name = 'OpenHAB2 ComfoConnect Gateway' # Name of the service 14 | local_uuid = bytes.fromhex('00000000000000000000000000000005') # Can be what you want, used to differentiate devices (as only 1 simultaneously connected device is allowed) 15 | 16 | device_ip = "192.168.2.150" # Look in your router administration and get the ip of the comfoconnect device and set it as static lease 17 | device_uuid = bytes.fromhex('0000000000191011800170b3d5426d66') # Get this from using discovery first by running the script with flag: -d and then configure it here 18 | pin = 1234 # Set PIN of vent unit ! 19 | 20 | mqtt_broker = "192.168.1.50" # Set your MQTT broker here 21 | mqtt_user = "my_user" # Set the MQTT user login 22 | mqtt_passw = "my_pw" # Set the MQTT user password 23 | mqtt_topic = "Zehnder/ComfoAirQ450/" # Set the MQTT root topic 24 | 25 | ## Start logger ######################################################################################################## 26 | 27 | ## Connect to Comfocontrol device ##################################################################################### 28 | bridge = Bridge(device_ip, device_uuid) 29 | #bridge.debug = True 30 | comfoconnect = ComfoConnect(bridge, local_uuid, local_name, pin) 31 | 32 | previousreply = b'\x01' 33 | prevspeed = 0 34 | prevmode = 0 35 | prevalt = 0 36 | prevvalue = {81 : 0, 213 : 0, 122 : 0, 121 : 0 } 37 | 38 | def pub_on_connect(client, userdata, flags, rc): 39 | print("publisher connected") 40 | def pub_on_disconnect(client, userdata, rc): 41 | print("publisher disconnected, reconnecting...") 42 | clientpub.reconnect() 43 | def sub_on_connect(client, userdata, flags, rc): 44 | print("subscriber connected") 45 | def sub_on_disconnect(client, userdata, rc): 46 | print("subscriber disconnected, reconnecting...") 47 | client.reconnect() 48 | 49 | def on_message(client, userdata, message): 50 | global prevalt 51 | #print("message received " ,str(message.payload.decode("utf-8"))) 52 | setting = str(message.payload.decode("utf-8")) 53 | # comfoconnect.cmd_rmi_request(CMD_FAN_MODE_AWAY) # Go to away mode 54 | # comfoconnect.cmd_rmi_request(CMD_FAN_MODE_LOW) # Set fan speed to 1 55 | # comfoconnect.cmd_rmi_request(CMD_FAN_MODE_MEDIUM) # Set fan speed to 2 56 | # comfoconnect.cmd_rmi_request(CMD_FAN_MODE_HIGH) # Set fan speed to 3 57 | if setting == '0': 58 | comfoconnect.cmd_rmi_request(CMD_FAN_MODE_AWAY) 59 | print("SETTING FANSPEED LOW") 60 | get_status_msg() 61 | elif setting == '1': 62 | comfoconnect.cmd_rmi_request(CMD_FAN_MODE_LOW) 63 | print("SETTING FANSPEED NORMAL") 64 | get_status_msg() 65 | elif setting == '2': 66 | comfoconnect.cmd_rmi_request(CMD_FAN_MODE_MEDIUM) 67 | print("SETTING FANSPEED HIGH") 68 | get_status_msg() 69 | elif setting == '3': 70 | comfoconnect.cmd_rmi_request(CMD_FAN_MODE_HIGH) 71 | print("SETTING FANSPEED MAX") 72 | get_status_msg() 73 | elif setting == '4': 74 | comfoconnect.cmd_rmi_request(CMD_MODE_AUTO) 75 | print("SETTING TO AUTO") 76 | prevalt=0 77 | get_status_msg() 78 | elif setting == '5': 79 | comfoconnect.cmd_rmi_request(CMD_MODE_MANUAL) 80 | print("SETTING TO MANUAL") 81 | prevalt=0 82 | get_status_msg() 83 | elif setting == '6': 84 | get_status_msg() 85 | elif setting == '7': 86 | comfoconnect.cmd_rmi_request(CMD_VENTMODE_SUPPLY) 87 | print("NOW IN SUPPLY MODE ONLY") 88 | elif setting == '8': 89 | comfoconnect.cmd_rmi_request(CMD_VENTMODE_BALANCE) 90 | print("NOW IN BALANCE MODE") 91 | elif setting == '9': 92 | comfoconnect.cmd_rmi_request(CMD_TEMPPROF_NORMAL) 93 | print("CONFIG: TEMP PROFILE NORMAL") 94 | elif setting == '10': 95 | comfoconnect.cmd_rmi_request(CMD_TEMPPROF_COOL) 96 | print("CONFIG: TEMP PROFILE COOL") 97 | elif setting == '11': 98 | comfoconnect.cmd_rmi_request(CMD_TEMPROF_WARM) 99 | print("CONFIG: TEMP PROFILE WARM") 100 | elif setting == '12': 101 | comfoconnect.cmd_rmi_request(CMD_BYPASS_ON) 102 | print("CONFIG: BYPASS ACTIVATED") 103 | elif setting == '13': 104 | comfoconnect.cmd_rmi_request(CMD_BYPASS_OFF) 105 | print("CONFIG: BYPASS DEACTIVATED") 106 | elif setting == '14': 107 | comfoconnect.cmd_rmi_request(CMD_BYPASS_AUTO) 108 | print("CONFIG: BYPASS IN AUTO MODE") 109 | elif setting == '15': 110 | comfoconnect.cmd_rmi_request(CMD_SENS_TEMP_OFF) 111 | print("CONFIG: TEMPERATURE PASSIVE DEACTIVATED") 112 | elif setting == '16': 113 | comfoconnect.cmd_rmi_request(CMD_SENS_TEMP_AUTO) 114 | print("CONFIG: TEMPERATURE PASSIVE IN AUTO MODE") 115 | elif setting == '17': 116 | comfoconnect.cmd_rmi_request(CMD_SENS_TEMP_ON) 117 | print("CONFIG: TEMPERATURE PASSIVE ACTIVATED") 118 | elif setting == '18': 119 | comfoconnect.cmd_rmi_request(CMD_SENS_HUMC_OFF) 120 | print("CONFIG: HUMIDITY COMFORT DEACTIVATED") 121 | elif setting == '19': 122 | comfoconnect.cmd_rmi_request(CMD_SENS_HUMC_AUTO) 123 | print("CONFIG: HUMIDITY COMFORT IN AUTO MODE") 124 | elif setting == '20': 125 | comfoconnect.cmd_rmi_request(CMD_SENS_HUMC_ON) 126 | print("CONFIG: HUMIDITY COMFORT ACTIVATED") 127 | elif setting == '21': 128 | comfoconnect.cmd_rmi_request(CMD_SENS_HUMP_OFF) 129 | print("CONFIG: HUMIDITY PROTECTION DEACTIVATED") 130 | elif setting == '22': 131 | comfoconnect.cmd_rmi_request(CMD_SENS_HUMP_AUTO) 132 | print("CONFIG: HUMIDITY PROTECTION IN AUTO MODE") 133 | elif setting == '23': 134 | comfoconnect.cmd_rmi_request(CMD_SENS_HUMP_ON) 135 | print("CONFIG: HUMIDITY PROTECTION ACTIVATED") 136 | elif setting == '24': 137 | comfoconnect.cmd_rmi_request(CMD_VENTMODE_EXTRACT) 138 | print("VENT MODE EXTRACT ONLY ACTIVATED") 139 | elif int(setting) >= 50: 140 | comfoconnect.cmd_rmi_request(eval("CMD_UNKNOWN%s" %setting)) 141 | print("UNKNOWN%s" % setting) 142 | 143 | def get_status_msg(): 144 | global previousreply, prevspeed, prevmode, prevalt 145 | reply = comfoconnect.cmd_rmi_request(CMD_READ_CONFIG) 146 | 147 | if previousreply != reply.msg.message[11:58]: 148 | #print("READ CONFIG %s" % reply.msg) 149 | #print("READ CONFIG %s" % reply.msg.message) 150 | previousreply = reply.msg.message[11:58] 151 | 152 | if b'\x00' == reply.msg.message[10:11]: 153 | alt = 0 154 | else: 155 | alt = 1 156 | if b'\x01' == reply.msg.message[57:58]: 157 | #print("IS MANUAL") 158 | mode="5" 159 | else: 160 | #print("IS AUTOMATIC") 161 | if (alt==0): 162 | mode=4 163 | else: 164 | mode=41 165 | if b'\x00' == reply.msg.message[14:15]: 166 | #print("SPEED 0") 167 | speed=0 168 | elif b'\x01' == reply.msg.message[14:15]: 169 | #print("SPEED 1") 170 | speed=1 171 | elif b'\x02' == reply.msg.message[14:15]: 172 | #print("SPEED 2") 173 | speed=2 174 | elif b'\x03' == reply.msg.message[14:15]: 175 | #print("SPEED 3") 176 | speed=3 177 | if b'\x00' == reply.msg.message[10:11]: 178 | alt = 0 179 | else: 180 | alt = 1 181 | if (speed != prevspeed) or (mode!= prevmode) or (alt != prevalt): 182 | print("mode:%s speed:%s alt:%s" % (mode, speed, alt)) 183 | clientpub.publish(("%sconfig/mode" % mqtt_topic), ("%s" % mode)) 184 | clientpub.publish(("%sconfig/speed" % mqtt_topic), ("%s" % speed)) 185 | prevspeed = speed 186 | prevmode = mode 187 | prevalt = alt 188 | 189 | clientpub.publish(("%sconfig/mode" % mqtt_topic), ("%s" % mode)) 190 | clientpub.publish(("%sconfig/speed" % mqtt_topic), ("%s" % speed)) 191 | 192 | client = mqtt.Client(client_id="S1_%s" % randint(1, 10000), clean_session=False) 193 | client.on_connect = sub_on_connect 194 | client.on_disconnect = sub_on_disconnect 195 | client.username_pw_set(mqtt_user,mqtt_passw) 196 | client.connect(mqtt_broker) 197 | client.subscribe("Zehnder/ComfoAirQ450/ExecuteFunction",qos=1) 198 | client.on_message=on_message #attach function to callback 199 | client.loop_start() 200 | 201 | clientpub = mqtt.Client(client_id="P1_%s" % randint(1, 10000), clean_session=False) 202 | clientpub.on_connect = pub_on_connect 203 | clientpub.on_disconnect = pub_on_disconnect 204 | clientpub.username_pw_set(mqtt_user,mqtt_passw) 205 | clientpub.connect(mqtt_broker) 206 | clientpub.loop_start() 207 | 208 | def bridge_discovery(ip): 209 | ## Bridge discovery ################################################################################################ 210 | 211 | # Method 1: Use discovery to initialise Bridge 212 | #bridges = Bridge.discover(timeout=1) 213 | #if bridges: 214 | # bridge = bridges[0] 215 | #else: 216 | # bridge = None 217 | 218 | # Method 2: Use direct discovery to initialise Bridge 219 | bridges = Bridge.discover(ip) 220 | if bridges: 221 | bridge = bridges[0] 222 | else: 223 | bridge = None 224 | 225 | # Method 3: Setup bridge manually 226 | # bridge = Bridge(args.ip, bytes.fromhex('0000000000251010800170b3d54264b4')) 227 | 228 | if bridge is None: 229 | print("No bridges found!") 230 | exit(1) 231 | 232 | print("Bridge found: %s (%s)" % (bridge.uuid.hex(), bridge.host)) 233 | bridge.debug = True 234 | 235 | return bridge 236 | 237 | def callback_sensor(var, value): 238 | ## Callback sensors ################################################################################################ 239 | if (var == 81): 240 | num = struct.unpack(' We are not connected anymore...' % datetime.datetime.now()) 336 | sleep(5) 337 | except KeyboardInterrupt: 338 | pass 339 | 340 | ## Closing the session ############################################################################################# 341 | 342 | client.loop_stop() 343 | clientpub.loop_stop() 344 | comfoconnect.disconnect() 345 | 346 | 347 | if __name__ == "__main__": 348 | main() 349 | -------------------------------------------------------------------------------- /pycomfoconnect/comfoconnect.py: -------------------------------------------------------------------------------- 1 | import queue 2 | import struct 3 | import threading 4 | import time 5 | 6 | from .bridge import Bridge 7 | from .error import * 8 | from .message import Message 9 | from .zehnder_pb2 import * 10 | 11 | KEEPALIVE = 60 12 | 13 | DEFAULT_LOCAL_UUID = bytes.fromhex('00000000000000000000000000001337') 14 | DEFAULT_LOCAL_DEVICENAME = 'pycomfoconnect' 15 | DEFAULT_PIN = 0 16 | 17 | # Sensor variable size 18 | RPDO_TYPE_MAP = { 19 | 65: 1, 20 | 81: 3, 21 | 117: 1, 22 | 118: 1, 23 | 119: 2, 24 | 120: 2, 25 | 121: 2, 26 | 122: 2, 27 | 128: 2, 28 | 129: 2, 29 | 130: 2, 30 | 192: 2, 31 | 213: 2, 32 | 214: 2, 33 | 215: 2, 34 | 221: 6, 35 | 227: 1, 36 | 274: 6, 37 | 275: 6, 38 | 276: 6, 39 | 290: 1, 40 | 291: 1, 41 | 292: 1, 42 | 294: 1, 43 | } 44 | 45 | class ComfoConnect(object): 46 | """Implements the commands to communicate with the ComfoConnect ventilation unit.""" 47 | 48 | """Callback function to invoke when sensor updates are received.""" 49 | callback_sensor = None 50 | 51 | def __init__(self, bridge: Bridge, local_uuid=DEFAULT_LOCAL_UUID, local_devicename=DEFAULT_LOCAL_DEVICENAME, 52 | pin=DEFAULT_PIN): 53 | self._bridge = bridge 54 | self._local_uuid = local_uuid 55 | self._local_devicename = local_devicename 56 | self._pin = pin 57 | self._reference = 1 58 | 59 | self._queue = queue.Queue() 60 | self._connected = threading.Event() 61 | self._stopping = False 62 | self._message_thread = None 63 | self._connection_thread = None 64 | 65 | self.sensors = {} 66 | 67 | # ================================================================================================================== 68 | # Core functions 69 | # ================================================================================================================== 70 | 71 | def connect(self, takeover=False): 72 | """Connect to the bridge and login. Disconnect existing clients if needed by default.""" 73 | 74 | try: 75 | # Start connection 76 | self._connect(takeover=takeover) 77 | 78 | except PyComfoConnectNotAllowed: 79 | raise Exception('Could not connect to the bridge since the PIN seems to be invalid.') 80 | except PyComfoConnectOtherSession: 81 | raise Exception('Could not connect to the bridge since there is already an open session.') 82 | except: 83 | raise Exception('Could not connect to the bridge.') 84 | 85 | # Set the stopping flag 86 | self._stopping = False 87 | self._connected.clear() 88 | 89 | # Start connection thread 90 | self._connection_thread = threading.Thread(target=self._connection_thread_loop) 91 | self._connection_thread.start() 92 | 93 | if not self._connected.wait(10): 94 | raise Exception('Could not connect to bridge since it didn\'t reply on time.') 95 | 96 | return True 97 | 98 | def disconnect(self): 99 | """Disconnect from the bridge.""" 100 | 101 | # Set the stopping flag 102 | self._stopping = True 103 | 104 | # Wait for the background thread to finish 105 | self._connection_thread.join() 106 | self._connection_thread = None 107 | 108 | def is_connected(self): 109 | """Returns whether there is a connection with the bridge.""" 110 | 111 | return self._bridge.is_connected() 112 | 113 | def register_sensor(self, sensor_id: int): 114 | """Register a sensor on the bridge and keep it in memory that we are registered to this sensor.""" 115 | 116 | # Register in memory 117 | self.sensors[sensor_id] = True 118 | 119 | # Register on bridge 120 | self.cmd_rpdo_request(sensor_id) 121 | 122 | def unregister_sensor(self, sensor_id: int): 123 | """Register a sensor on the bridge and keep it in memory that we are registered to this sensor.""" 124 | 125 | # Unregister in memory 126 | self.sensors.pop(sensor_id, None) 127 | 128 | # Unregister on bridge 129 | self.cmd_rpdo_request(sensor_id, timeout=0) 130 | 131 | def _command(self, command, params=None, use_queue=True): 132 | """Sends a command and wait for a response if the request is known to return a result.""" 133 | 134 | # Construct the message 135 | message = Message.create( 136 | self._local_uuid, 137 | self._bridge.uuid, 138 | command, 139 | {'reference': self._reference}, 140 | params 141 | ) 142 | 143 | # Increase message reference 144 | self._reference += 1 145 | 146 | # Send the message 147 | self._bridge.write_message(message) 148 | 149 | try: 150 | # Check if this command has a confirm type set 151 | confirm_type = message.class_to_confirm[command] 152 | 153 | # Read a message 154 | reply = self._get_reply(confirm_type, use_queue=use_queue) 155 | 156 | return reply 157 | 158 | except KeyError: 159 | return None 160 | 161 | def _get_reply(self, confirm_type=None, timeout=5, use_queue=True): 162 | """Pops a message of the queue, optionally looking for a specific type.""" 163 | 164 | start = time.time() 165 | 166 | while True: 167 | message = None 168 | 169 | if use_queue: 170 | try: 171 | # Fetch the message from the queue. The network thread has put it there for us. 172 | message = self._queue.get(timeout=timeout) 173 | if message: 174 | self._queue.task_done() 175 | except queue.Empty: 176 | # We got no message 177 | pass 178 | 179 | else: 180 | # Fetch the message directly from the socket 181 | message = self._bridge.read_message(timeout=timeout) 182 | 183 | if message: 184 | # Check status code 185 | if message.cmd.result == GatewayOperation.OK: 186 | pass 187 | elif message.cmd.result == GatewayOperation.BAD_REQUEST: 188 | raise PyComfoConnectBadRequest() 189 | elif message.cmd.result == GatewayOperation.INTERNAL_ERROR: 190 | raise PyComfoConnectInternalError() 191 | elif message.cmd.result == GatewayOperation.NOT_REACHABLE: 192 | raise PyComfoConnectNotReachable() 193 | elif message.cmd.result == GatewayOperation.OTHER_SESSION: 194 | raise PyComfoConnectOtherSession(message.msg.devicename) 195 | elif message.cmd.result == GatewayOperation.NOT_ALLOWED: 196 | raise PyComfoConnectNotAllowed() 197 | elif message.cmd.result == GatewayOperation.NO_RESOURCES: 198 | raise PyComfoConnectNoResources() 199 | elif message.cmd.result == GatewayOperation.NOT_EXIST: 200 | raise PyComfoConnectNotExist() 201 | elif message.cmd.result == GatewayOperation.RMI_ERROR: 202 | raise PyComfoConnectRmiError() 203 | 204 | if confirm_type is None: 205 | # We just need a message 206 | return message 207 | elif message.msg.__class__ == confirm_type: 208 | # We need the message with the correct type 209 | return message 210 | else: 211 | # We got a message with an incorrect type. Hopefully, this doesn't happen to often, 212 | # since we just put it back on the queue. 213 | self._queue.put(message) 214 | 215 | if time.time() - start > timeout: 216 | raise ValueError('Timeout waiting for response.') 217 | 218 | # ================================================================================================================== 219 | # Connection thread 220 | # ================================================================================================================== 221 | def _connection_thread_loop(self): 222 | """Makes sure that there is a connection open.""" 223 | 224 | self._stopping = False 225 | while not self._stopping: 226 | 227 | # Start connection 228 | if not self.is_connected(): 229 | 230 | # Wait a bit to avoid hammering the bridge 231 | time.sleep(5) 232 | 233 | try: 234 | # Connect or re-connect 235 | self._connect() 236 | 237 | except PyComfoConnectOtherSession: 238 | self._bridge.disconnect() 239 | print('Could not connect to the bridge since there is already an open session.') 240 | continue 241 | 242 | except Exception: 243 | raise Exception('Could not connect to the bridge.') 244 | 245 | # Start background thread 246 | self._message_thread = threading.Thread(target=self._message_thread_loop) 247 | self._message_thread.start() 248 | 249 | # Reregister for sensor updates 250 | for sensor_id in self.sensors: 251 | self.cmd_rpdo_request(sensor_id) 252 | 253 | # Send the event that we are ready 254 | self._connected.set() 255 | 256 | # Wait until the message thread stops working 257 | self._message_thread.join() 258 | 259 | # Close socket connection 260 | self._bridge.disconnect() 261 | 262 | def _connect(self, takeover=False): 263 | """Connect to the bridge and login. Disconnect existing clients if needed by default.""" 264 | 265 | try: 266 | # Connect to the bridge 267 | self._bridge.connect() 268 | 269 | # Login 270 | self.cmd_start_session(takeover, use_queue=False) 271 | 272 | except PyComfoConnectNotAllowed: 273 | # No dice, maybe we are not registered yet... 274 | 275 | # Register 276 | self.cmd_register_app(self._local_uuid, self._local_devicename, self._pin, use_queue=False) 277 | 278 | # Login 279 | self.cmd_start_session(takeover, use_queue=False) 280 | 281 | return True 282 | 283 | # ================================================================================================================== 284 | # Message thread 285 | # ================================================================================================================== 286 | 287 | def _message_thread_loop(self): 288 | """Listen for incoming messages and queue them or send them to a callback method.""" 289 | 290 | # Reinitialise the queues 291 | self._queue = queue.Queue() 292 | 293 | next_keepalive = 0 294 | 295 | while not self._stopping: 296 | 297 | # Sends a keepalive every KEEPALIVE seconds. 298 | if time.time() > next_keepalive: 299 | next_keepalive = time.time() + KEEPALIVE 300 | self.cmd_keepalive() 301 | 302 | try: 303 | # Read a message from the bridge. 304 | message = self._bridge.read_message() 305 | 306 | except BrokenPipeError: 307 | # Close this thread. The connection_thread will restart us. 308 | return 309 | 310 | if message: 311 | if message.cmd.type == GatewayOperation.CnRpdoNotificationType: 312 | self._handle_rpdo_notification(message) 313 | 314 | elif message.cmd.type == GatewayOperation.GatewayNotificationType: 315 | # TODO: We should probably handle these somehow 316 | pass 317 | 318 | elif message.cmd.type == GatewayOperation.CnNodeNotificationType: 319 | # TODO: We should probably handle these somehow 320 | pass 321 | 322 | elif message.cmd.type == GatewayOperation.CnAlarmNotificationType: 323 | # TODO: We should probably handle these somehow 324 | pass 325 | 326 | elif message.cmd.type == GatewayOperation.CloseSessionRequestType: 327 | # Close this thread. The connection_thread will restart us. 328 | return 329 | 330 | else: 331 | # Send other messages to a queue 332 | self._queue.put(message) 333 | 334 | return 335 | 336 | def _handle_rpdo_notification(self, message): 337 | """Update internal sensor state and invoke callback.""" 338 | 339 | # Only process CnRpdoNotificationType 340 | if message.cmd.type != GatewayOperation.CnRpdoNotificationType: 341 | return False 342 | 343 | # Extract data 344 | data = message.msg.data.hex() 345 | if len(data) == 2: 346 | val = struct.unpack('b', message.msg.data)[0] 347 | elif len(data) == 4: 348 | val = struct.unpack('h', message.msg.data)[0] 349 | elif len(data) == 8: 350 | val = data 351 | else: 352 | val = data 353 | 354 | # Update local state 355 | # self.sensors[message.msg.pdid] = val 356 | 357 | if self.callback_sensor: 358 | self.callback_sensor(message.msg.pdid, val) 359 | 360 | return True 361 | 362 | # ================================================================================================================== 363 | # Commands 364 | # ================================================================================================================== 365 | 366 | def cmd_start_session(self, take_over=False, use_queue: bool = True): 367 | """Starts the session on the device by logging in and optionally disconnecting an already existing session.""" 368 | 369 | reply = self._command( 370 | StartSessionRequest, 371 | { 372 | 'takeover': take_over 373 | }, 374 | use_queue=use_queue 375 | ) 376 | return reply # TODO: parse output 377 | 378 | def cmd_close_session(self, use_queue: bool = True): 379 | """Stops the current session.""" 380 | 381 | reply = self._command( 382 | CloseSessionRequest, 383 | use_queue=use_queue 384 | ) 385 | return reply # TODO: parse output 386 | 387 | def cmd_list_registered_apps(self, use_queue: bool = True): 388 | """Returns a list of all the registered clients.""" 389 | 390 | reply = self._command( 391 | ListRegisteredAppsRequest, 392 | use_queue=use_queue 393 | ) 394 | return [ 395 | {'uuid': app.uuid, 'devicename': app.devicename} for app in reply.msg.apps 396 | ] 397 | 398 | def cmd_register_app(self, uuid, device_name, pin, use_queue: bool = True): 399 | """Register a new app by specifying our own uuid, device_name and pin code.""" 400 | 401 | reply = self._command( 402 | RegisterAppRequest, 403 | { 404 | 'uuid': uuid, 405 | 'devicename': device_name, 406 | 'pin': pin, 407 | }, 408 | use_queue=use_queue 409 | ) 410 | return reply # TODO: parse output 411 | 412 | def cmd_deregister_app(self, uuid, use_queue: bool = True): 413 | """Remove the specified app from the registration list.""" 414 | 415 | if uuid == self._local_uuid: 416 | raise Exception('You should not deregister yourself.') 417 | 418 | try: 419 | self._command( 420 | DeregisterAppRequest, 421 | { 422 | 'uuid': uuid 423 | }, 424 | use_queue=use_queue 425 | ) 426 | return True 427 | 428 | except PyComfoConnectBadRequest: 429 | return False 430 | 431 | def cmd_version_request(self, use_queue: bool = True): 432 | """Returns version information.""" 433 | 434 | reply = self._command( 435 | VersionRequest, 436 | use_queue=use_queue 437 | ) 438 | return { 439 | 'gatewayVersion': reply.msg.gatewayVersion, 440 | 'serialNumber': reply.msg.serialNumber, 441 | 'comfoNetVersion': reply.msg.comfoNetVersion, 442 | } 443 | 444 | def cmd_time_request(self, use_queue: bool = True): 445 | """Returns the current time on the device.""" 446 | 447 | reply = self._command( 448 | CnTimeRequest, 449 | use_queue=use_queue 450 | ) 451 | return reply.msg.currentTime 452 | 453 | def cmd_rmi_request(self, message, node_id: int = 1, use_queue: bool = True): 454 | """Sends a RMI request.""" 455 | 456 | reply = self._command( 457 | CnRmiRequest, 458 | { 459 | 'nodeId': node_id or 1, 460 | 'message': message 461 | }, 462 | use_queue=use_queue 463 | ) 464 | return reply 465 | #return True 466 | 467 | def cmd_rpdo_request(self, pdid: int, type: int = None, zone: int = 1, timeout=None, use_queue: bool = True): 468 | """Register a RPDO request.""" 469 | 470 | reply = self._command( 471 | CnRpdoRequest, 472 | { 473 | 'pdid': pdid, 474 | 'type': type or RPDO_TYPE_MAP.get(pdid) or 1, 475 | 'zone': zone or 1, 476 | 'timeout': timeout 477 | }, 478 | use_queue=use_queue 479 | ) 480 | return True 481 | 482 | def cmd_keepalive(self, use_queue: bool = True): 483 | """Sends a keepalive.""" 484 | 485 | self._command( 486 | KeepAlive, 487 | use_queue=use_queue 488 | ) 489 | return True 490 | -------------------------------------------------------------------------------- /pycomfoconnect/zehnder_pb2.py: -------------------------------------------------------------------------------- 1 | # Generated by the protocol buffer compiler. DO NOT EDIT! 2 | # source: zehnder.proto 3 | 4 | import sys 5 | _b=sys.version_info[0]<3 and (lambda x:x) or (lambda x:x.encode('latin1')) 6 | from google.protobuf import descriptor as _descriptor 7 | from google.protobuf import message as _message 8 | from google.protobuf import reflection as _reflection 9 | from google.protobuf import symbol_database as _symbol_database 10 | from google.protobuf import descriptor_pb2 11 | # @@protoc_insertion_point(imports) 12 | 13 | _sym_db = _symbol_database.Default() 14 | 15 | 16 | 17 | 18 | DESCRIPTOR = _descriptor.FileDescriptor( 19 | name='zehnder.proto', 20 | package='', 21 | serialized_pb=_b('\n\rzehnder.proto\"\x80\x01\n\x12\x44iscoveryOperation\x12\x33\n\x14searchGatewayRequest\x18\x01 \x01(\x0b\x32\x15.SearchGatewayRequest\x12\x35\n\x15searchGatewayResponse\x18\x02 \x01(\x0b\x32\x16.SearchGatewayResponse\"\x16\n\x14SearchGatewayRequest\"I\n\x15SearchGatewayResponse\x12\x11\n\tipaddress\x18\x01 \x02(\t\x12\x0c\n\x04uuid\x18\x02 \x02(\x0c\x12\x0f\n\x07version\x18\x03 \x02(\r\"\xde\x10\n\x10GatewayOperation\x12-\n\x04type\x18\x01 \x01(\x0e\x32\x1f.GatewayOperation.OperationType\x12/\n\x06result\x18\x02 \x01(\x0e\x32\x1f.GatewayOperation.GatewayResult\x12\x19\n\x11resultDescription\x18\x03 \x01(\t\x12\x11\n\treference\x18\x04 \x01(\r\"\x95\x0e\n\rOperationType\x12\x0f\n\x0bNoOperation\x10\x00\x12\x19\n\x15SetAddressRequestType\x10\x01\x12\x1a\n\x16RegisterAppRequestType\x10\x02\x12\x1b\n\x17StartSessionRequestType\x10\x03\x12\x1b\n\x17\x43loseSessionRequestType\x10\x04\x12!\n\x1dListRegisteredAppsRequestType\x10\x05\x12\x1c\n\x18\x44\x65registerAppRequestType\x10\x06\x12\x18\n\x14\x43hangePinRequestType\x10\x07\x12 \n\x1cGetRemoteAccessIdRequestType\x10\x08\x12 \n\x1cSetRemoteAccessIdRequestType\x10\t\x12\x1b\n\x17GetSupportIdRequestType\x10\n\x12\x1b\n\x17SetSupportIdRequestType\x10\x0b\x12\x17\n\x13GetWebIdRequestType\x10\x0c\x12\x17\n\x13SetWebIdRequestType\x10\r\x12\x18\n\x14SetPushIdRequestType\x10\x0e\x12\x14\n\x10\x44\x65\x62ugRequestType\x10\x0f\x12\x16\n\x12UpgradeRequestType\x10\x10\x12 \n\x1cSetDeviceSettingsRequestType\x10\x11\x12\x16\n\x12VersionRequestType\x10\x12\x12\x19\n\x15SetAddressConfirmType\x10\x33\x12\x1a\n\x16RegisterAppConfirmType\x10\x34\x12\x1b\n\x17StartSessionConfirmType\x10\x35\x12\x1b\n\x17\x43loseSessionConfirmType\x10\x36\x12!\n\x1dListRegisteredAppsConfirmType\x10\x37\x12\x1c\n\x18\x44\x65registerAppConfirmType\x10\x38\x12\x18\n\x14\x43hangePinConfirmType\x10\x39\x12 \n\x1cGetRemoteAccessIdConfirmType\x10:\x12 \n\x1cSetRemoteAccessIdConfirmType\x10;\x12\x1b\n\x17GetSupportIdConfirmType\x10<\x12\x1b\n\x17SetSupportIdConfirmType\x10=\x12\x17\n\x13GetWebIdConfirmType\x10>\x12\x17\n\x13SetWebIdConfirmType\x10?\x12\x18\n\x14SetPushIdConfirmType\x10@\x12\x14\n\x10\x44\x65\x62ugConfirmType\x10\x41\x12\x16\n\x12UpgradeConfirmType\x10\x42\x12 \n\x1cSetDeviceSettingsConfirmType\x10\x43\x12\x16\n\x12VersionConfirmType\x10\x44\x12\x1b\n\x17GatewayNotificationType\x10\x64\x12\x11\n\rKeepAliveType\x10\x65\x12\x14\n\x10\x46\x61\x63toryResetType\x10\x66\x12\x15\n\x11\x43nTimeRequestType\x10\x1e\x12\x15\n\x11\x43nTimeConfirmType\x10\x1f\x12\x15\n\x11\x43nNodeRequestType\x10*\x12\x1a\n\x16\x43nNodeNotificationType\x10 \x12\x14\n\x10\x43nRmiRequestType\x10!\x12\x15\n\x11\x43nRmiResponseType\x10\"\x12\x19\n\x15\x43nRmiAsyncRequestType\x10#\x12\x19\n\x15\x43nRmiAsyncConfirmType\x10$\x12\x1a\n\x16\x43nRmiAsyncResponseType\x10%\x12\x15\n\x11\x43nRpdoRequestType\x10&\x12\x15\n\x11\x43nRpdoConfirmType\x10\'\x12\x1a\n\x16\x43nRpdoNotificationType\x10(\x12\x1b\n\x17\x43nAlarmNotificationType\x10)\x12 \n\x1c\x43nFupReadRegisterRequestType\x10\x46\x12 \n\x1c\x43nFupReadRegisterConfirmType\x10G\x12 \n\x1c\x43nFupProgramBeginRequestType\x10H\x12 \n\x1c\x43nFupProgramBeginConfirmType\x10I\x12\x1b\n\x17\x43nFupProgramRequestType\x10J\x12\x1b\n\x17\x43nFupProgramConfirmType\x10K\x12\x1e\n\x1a\x43nFupProgramEndRequestType\x10L\x12\x1e\n\x1a\x43nFupProgramEndConfirmType\x10M\x12\x18\n\x14\x43nFupReadRequestType\x10N\x12\x18\n\x14\x43nFupReadConfirmType\x10O\x12\x19\n\x15\x43nFupResetRequestType\x10P\x12\x19\n\x15\x43nFupResetConfirmType\x10Q\"\xa3\x01\n\rGatewayResult\x12\x06\n\x02OK\x10\x00\x12\x0f\n\x0b\x42\x41\x44_REQUEST\x10\x01\x12\x12\n\x0eINTERNAL_ERROR\x10\x02\x12\x11\n\rNOT_REACHABLE\x10\x03\x12\x11\n\rOTHER_SESSION\x10\x04\x12\x0f\n\x0bNOT_ALLOWED\x10\x05\x12\x10\n\x0cNO_RESOURCES\x10\x06\x12\r\n\tNOT_EXIST\x10\x07\x12\r\n\tRMI_ERROR\x10\x08\"M\n\x13GatewayNotification\x12\x11\n\tpushUUIDs\x18\x01 \x03(\x0c\x12#\n\x05\x61larm\x18\x02 \x01(\x0b\x32\x14.CnAlarmNotification\"\x0b\n\tKeepAlive\" \n\x0c\x46\x61\x63toryReset\x12\x10\n\x08resetKey\x18\x01 \x02(\x0c\"D\n\x18SetDeviceSettingsRequest\x12\x12\n\nmacAddress\x18\x01 \x02(\x0c\x12\x14\n\x0cserialNumber\x18\x02 \x02(\t\"\x1a\n\x18SetDeviceSettingsConfirm\"!\n\x11SetAddressRequest\x12\x0c\n\x04uuid\x18\x01 \x02(\x0c\"\x13\n\x11SetAddressConfirm\"C\n\x12RegisterAppRequest\x12\x0c\n\x04uuid\x18\x01 \x02(\x0c\x12\x0b\n\x03pin\x18\x02 \x02(\r\x12\x12\n\ndevicename\x18\x03 \x02(\t\"\x14\n\x12RegisterAppConfirm\"\'\n\x13StartSessionRequest\x12\x10\n\x08takeover\x18\x01 \x01(\x08\":\n\x13StartSessionConfirm\x12\x12\n\ndevicename\x18\x01 \x01(\t\x12\x0f\n\x07resumed\x18\x02 \x01(\x08\"\x15\n\x13\x43loseSessionRequest\"\x15\n\x13\x43loseSessionConfirm\"\x1b\n\x19ListRegisteredAppsRequest\"r\n\x19ListRegisteredAppsConfirm\x12,\n\x04\x61pps\x18\x01 \x03(\x0b\x32\x1e.ListRegisteredAppsConfirm.App\x1a\'\n\x03\x41pp\x12\x0c\n\x04uuid\x18\x01 \x02(\x0c\x12\x12\n\ndevicename\x18\x02 \x02(\t\"$\n\x14\x44\x65registerAppRequest\x12\x0c\n\x04uuid\x18\x01 \x02(\x0c\"\x16\n\x14\x44\x65registerAppConfirm\"2\n\x10\x43hangePinRequest\x12\x0e\n\x06oldpin\x18\x01 \x02(\r\x12\x0e\n\x06newpin\x18\x02 \x02(\r\"\x12\n\x10\x43hangePinConfirm\"\x1a\n\x18GetRemoteAccessIdRequest\"(\n\x18GetRemoteAccessIdConfirm\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\"(\n\x18SetRemoteAccessIdRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\"\x1a\n\x18SetRemoteAccessIdConfirm\"\x15\n\x13GetSupportIdRequest\":\n\x13GetSupportIdConfirm\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\x12\x15\n\rremainingTime\x18\x02 \x01(\r\"6\n\x13SetSupportIdRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\x12\x11\n\tvalidTime\x18\x02 \x01(\r\"\x15\n\x13SetSupportIdConfirm\"\x11\n\x0fGetWebIdRequest\"\x1f\n\x0fGetWebIdConfirm\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\"\x1f\n\x0fSetWebIdRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\"\x11\n\x0fSetWebIdConfirm\" \n\x10SetPushIdRequest\x12\x0c\n\x04uuid\x18\x01 \x01(\x0c\"\x12\n\x10SetPushIdConfirm\"\xc0\x01\n\x0eUpgradeRequest\x12\x36\n\x07\x63ommand\x18\x01 \x01(\x0e\x32%.UpgradeRequest.UpgradeRequestCommand\x12\r\n\x05\x63hunk\x18\x02 \x01(\x0c\"g\n\x15UpgradeRequestCommand\x12\x11\n\rUPGRADE_START\x10\x00\x12\x14\n\x10UPGRADE_CONTINUE\x10\x01\x12\x12\n\x0eUPGRADE_FINISH\x10\x02\x12\x11\n\rUPGRADE_ABORT\x10\x03\"\x10\n\x0eUpgradeConfirm\"\xba\x03\n\x0c\x44\x65\x62ugRequest\x12\x32\n\x07\x63ommand\x18\x01 \x02(\x0e\x32!.DebugRequest.DebugRequestCommand\x12\x10\n\x08\x61rgument\x18\x02 \x01(\x05\"\xe3\x02\n\x13\x44\x65\x62ugRequestCommand\x12\x0c\n\x08\x44\x42G_ECHO\x10\x00\x12\r\n\tDBG_SLEEP\x10\x01\x12\x14\n\x10\x44\x42G_SESSION_ECHO\x10\x02\x12\x16\n\x12\x44\x42G_PRINT_SETTINGS\x10\x03\x12\r\n\tDBG_ALARM\x10\x04\x12\x0b\n\x07\x44\x42G_LED\x10\x05\x12\x0b\n\x07\x44\x42G_GPI\x10\x06\x12\x0b\n\x07\x44\x42G_GPO\x10\x07\x12\x13\n\x0f\x44\x42G_RS232_WRITE\x10\x08\x12\x12\n\x0e\x44\x42G_RS232_READ\x10\t\x12\x11\n\rDBG_CAN_WRITE\x10\n\x12\x10\n\x0c\x44\x42G_CAN_READ\x10\x0b\x12\x11\n\rDBG_KNX_WRITE\x10\x0c\x12\x10\n\x0c\x44\x42G_KNX_READ\x10\r\x12\x0e\n\nDBG_TOGGLE\x10\x0e\x12\x0e\n\nDBG_REBOOT\x10\x0f\x12\r\n\tDBG_CLOUD\x10\x10\x12\x13\n\x0f\x44\x42G_EEPROM_READ\x10\x11\x12\x14\n\x10\x44\x42G_EEPROM_WRITE\x10\x12\"\x1e\n\x0c\x44\x65\x62ugConfirm\x12\x0e\n\x06result\x18\x01 \x02(\x05\"\x10\n\x0eVersionRequest\"W\n\x0eVersionConfirm\x12\x16\n\x0egatewayVersion\x18\x01 \x02(\r\x12\x14\n\x0cserialNumber\x18\x02 \x02(\t\x12\x17\n\x0f\x63omfoNetVersion\x18\x03 \x02(\r\" \n\rCnTimeRequest\x12\x0f\n\x07setTime\x18\x01 \x01(\r\"$\n\rCnTimeConfirm\x12\x13\n\x0b\x63urrentTime\x18\x01 \x02(\r\"\x0f\n\rCnNodeRequest\"\xcf\x01\n\x12\x43nNodeNotification\x12\x0e\n\x06nodeId\x18\x01 \x02(\r\x12\x14\n\tproductId\x18\x02 \x01(\r:\x01\x30\x12\x0e\n\x06zoneId\x18\x03 \x01(\r\x12.\n\x04mode\x18\x04 \x01(\x0e\x32 .CnNodeNotification.NodeModeType\"S\n\x0cNodeModeType\x12\x0f\n\x0bNODE_LEGACY\x10\x00\x12\x10\n\x0cNODE_OFFLINE\x10\x01\x12\x0f\n\x0bNODE_NORMAL\x10\x02\x12\x0f\n\x0bNODE_UPDATE\x10\x03\"/\n\x0c\x43nRmiRequest\x12\x0e\n\x06nodeId\x18\x01 \x02(\r\x12\x0f\n\x07message\x18\x02 \x02(\x0c\"3\n\rCnRmiResponse\x12\x11\n\x06result\x18\x01 \x01(\r:\x01\x30\x12\x0f\n\x07message\x18\x02 \x01(\x0c\"4\n\x11\x43nRmiAsyncRequest\x12\x0e\n\x06nodeId\x18\x01 \x02(\r\x12\x0f\n\x07message\x18\x02 \x02(\x0c\"&\n\x11\x43nRmiAsyncConfirm\x12\x11\n\x06result\x18\x01 \x01(\r:\x01\x30\"8\n\x12\x43nRmiAsyncResponse\x12\x11\n\x06result\x18\x01 \x01(\r:\x01\x30\x12\x0f\n\x07message\x18\x02 \x01(\x0c\"[\n\rCnRpdoRequest\x12\x0c\n\x04pdid\x18\x01 \x02(\r\x12\x11\n\x04zone\x18\x02 \x01(\r:\x03\x32\x35\x35\x12\x0c\n\x04type\x18\x03 \x01(\r\x12\x1b\n\x07timeout\x18\x04 \x01(\r:\n4294967295\"\x0f\n\rCnRpdoConfirm\"0\n\x12\x43nRpdoNotification\x12\x0c\n\x04pdid\x18\x01 \x02(\r\x12\x0c\n\x04\x64\x61ta\x18\x02 \x02(\x0c\"\xaf\x01\n\x13\x43nAlarmNotification\x12\x0c\n\x04zone\x18\x01 \x01(\r\x12\x11\n\tproductId\x18\x02 \x01(\r\x12\x16\n\x0eproductVariant\x18\x03 \x01(\r\x12\x14\n\x0cserialNumber\x18\x04 \x01(\t\x12\x18\n\x10swProgramVersion\x18\x05 \x01(\r\x12\x0e\n\x06\x65rrors\x18\x06 \x01(\x0c\x12\x0f\n\x07\x65rrorId\x18\x07 \x01(\r\x12\x0e\n\x06nodeId\x18\x08 \x01(\r\"K\n\x18\x43nFupReadRegisterRequest\x12\x0c\n\x04node\x18\x01 \x02(\r\x12\x12\n\nregisterId\x18\x02 \x02(\r\x12\r\n\x05index\x18\x03 \x01(\r\")\n\x18\x43nFupReadRegisterConfirm\x12\r\n\x05value\x18\x01 \x02(\r\":\n\x18\x43nFupProgramBeginRequest\x12\x0c\n\x04node\x18\x01 \x03(\r\x12\x10\n\x05\x62lock\x18\x02 \x01(\r:\x01\x30\"\x1a\n\x18\x43nFupProgramBeginConfirm\"$\n\x13\x43nFupProgramRequest\x12\r\n\x05\x63hunk\x18\x01 \x02(\x0c\"\x15\n\x13\x43nFupProgramConfirm\"\x18\n\x16\x43nFupProgramEndRequest\"\x18\n\x16\x43nFupProgramEndConfirm\"2\n\x10\x43nFupReadRequest\x12\x0c\n\x04node\x18\x01 \x02(\r\x12\x10\n\x05\x62lock\x18\x02 \x01(\r:\x01\x30\"6\n\x10\x43nFupReadConfirm\x12\r\n\x05\x63hunk\x18\x01 \x01(\x0c\x12\x13\n\x04last\x18\x02 \x01(\x08:\x05\x66\x61lse\"!\n\x11\x43nFupResetRequest\x12\x0c\n\x04node\x18\x01 \x02(\r\"\x13\n\x11\x43nFupResetConfirm') 22 | ) 23 | _sym_db.RegisterFileDescriptor(DESCRIPTOR) 24 | 25 | 26 | 27 | _GATEWAYOPERATION_OPERATIONTYPE = _descriptor.EnumDescriptor( 28 | name='OperationType', 29 | full_name='GatewayOperation.OperationType', 30 | filename=None, 31 | file=DESCRIPTOR, 32 | values=[ 33 | _descriptor.EnumValueDescriptor( 34 | name='NoOperation', index=0, number=0, 35 | options=None, 36 | type=None), 37 | _descriptor.EnumValueDescriptor( 38 | name='SetAddressRequestType', index=1, number=1, 39 | options=None, 40 | type=None), 41 | _descriptor.EnumValueDescriptor( 42 | name='RegisterAppRequestType', index=2, number=2, 43 | options=None, 44 | type=None), 45 | _descriptor.EnumValueDescriptor( 46 | name='StartSessionRequestType', index=3, number=3, 47 | options=None, 48 | type=None), 49 | _descriptor.EnumValueDescriptor( 50 | name='CloseSessionRequestType', index=4, number=4, 51 | options=None, 52 | type=None), 53 | _descriptor.EnumValueDescriptor( 54 | name='ListRegisteredAppsRequestType', index=5, number=5, 55 | options=None, 56 | type=None), 57 | _descriptor.EnumValueDescriptor( 58 | name='DeregisterAppRequestType', index=6, number=6, 59 | options=None, 60 | type=None), 61 | _descriptor.EnumValueDescriptor( 62 | name='ChangePinRequestType', index=7, number=7, 63 | options=None, 64 | type=None), 65 | _descriptor.EnumValueDescriptor( 66 | name='GetRemoteAccessIdRequestType', index=8, number=8, 67 | options=None, 68 | type=None), 69 | _descriptor.EnumValueDescriptor( 70 | name='SetRemoteAccessIdRequestType', index=9, number=9, 71 | options=None, 72 | type=None), 73 | _descriptor.EnumValueDescriptor( 74 | name='GetSupportIdRequestType', index=10, number=10, 75 | options=None, 76 | type=None), 77 | _descriptor.EnumValueDescriptor( 78 | name='SetSupportIdRequestType', index=11, number=11, 79 | options=None, 80 | type=None), 81 | _descriptor.EnumValueDescriptor( 82 | name='GetWebIdRequestType', index=12, number=12, 83 | options=None, 84 | type=None), 85 | _descriptor.EnumValueDescriptor( 86 | name='SetWebIdRequestType', index=13, number=13, 87 | options=None, 88 | type=None), 89 | _descriptor.EnumValueDescriptor( 90 | name='SetPushIdRequestType', index=14, number=14, 91 | options=None, 92 | type=None), 93 | _descriptor.EnumValueDescriptor( 94 | name='DebugRequestType', index=15, number=15, 95 | options=None, 96 | type=None), 97 | _descriptor.EnumValueDescriptor( 98 | name='UpgradeRequestType', index=16, number=16, 99 | options=None, 100 | type=None), 101 | _descriptor.EnumValueDescriptor( 102 | name='SetDeviceSettingsRequestType', index=17, number=17, 103 | options=None, 104 | type=None), 105 | _descriptor.EnumValueDescriptor( 106 | name='VersionRequestType', index=18, number=18, 107 | options=None, 108 | type=None), 109 | _descriptor.EnumValueDescriptor( 110 | name='SetAddressConfirmType', index=19, number=51, 111 | options=None, 112 | type=None), 113 | _descriptor.EnumValueDescriptor( 114 | name='RegisterAppConfirmType', index=20, number=52, 115 | options=None, 116 | type=None), 117 | _descriptor.EnumValueDescriptor( 118 | name='StartSessionConfirmType', index=21, number=53, 119 | options=None, 120 | type=None), 121 | _descriptor.EnumValueDescriptor( 122 | name='CloseSessionConfirmType', index=22, number=54, 123 | options=None, 124 | type=None), 125 | _descriptor.EnumValueDescriptor( 126 | name='ListRegisteredAppsConfirmType', index=23, number=55, 127 | options=None, 128 | type=None), 129 | _descriptor.EnumValueDescriptor( 130 | name='DeregisterAppConfirmType', index=24, number=56, 131 | options=None, 132 | type=None), 133 | _descriptor.EnumValueDescriptor( 134 | name='ChangePinConfirmType', index=25, number=57, 135 | options=None, 136 | type=None), 137 | _descriptor.EnumValueDescriptor( 138 | name='GetRemoteAccessIdConfirmType', index=26, number=58, 139 | options=None, 140 | type=None), 141 | _descriptor.EnumValueDescriptor( 142 | name='SetRemoteAccessIdConfirmType', index=27, number=59, 143 | options=None, 144 | type=None), 145 | _descriptor.EnumValueDescriptor( 146 | name='GetSupportIdConfirmType', index=28, number=60, 147 | options=None, 148 | type=None), 149 | _descriptor.EnumValueDescriptor( 150 | name='SetSupportIdConfirmType', index=29, number=61, 151 | options=None, 152 | type=None), 153 | _descriptor.EnumValueDescriptor( 154 | name='GetWebIdConfirmType', index=30, number=62, 155 | options=None, 156 | type=None), 157 | _descriptor.EnumValueDescriptor( 158 | name='SetWebIdConfirmType', index=31, number=63, 159 | options=None, 160 | type=None), 161 | _descriptor.EnumValueDescriptor( 162 | name='SetPushIdConfirmType', index=32, number=64, 163 | options=None, 164 | type=None), 165 | _descriptor.EnumValueDescriptor( 166 | name='DebugConfirmType', index=33, number=65, 167 | options=None, 168 | type=None), 169 | _descriptor.EnumValueDescriptor( 170 | name='UpgradeConfirmType', index=34, number=66, 171 | options=None, 172 | type=None), 173 | _descriptor.EnumValueDescriptor( 174 | name='SetDeviceSettingsConfirmType', index=35, number=67, 175 | options=None, 176 | type=None), 177 | _descriptor.EnumValueDescriptor( 178 | name='VersionConfirmType', index=36, number=68, 179 | options=None, 180 | type=None), 181 | _descriptor.EnumValueDescriptor( 182 | name='GatewayNotificationType', index=37, number=100, 183 | options=None, 184 | type=None), 185 | _descriptor.EnumValueDescriptor( 186 | name='KeepAliveType', index=38, number=101, 187 | options=None, 188 | type=None), 189 | _descriptor.EnumValueDescriptor( 190 | name='FactoryResetType', index=39, number=102, 191 | options=None, 192 | type=None), 193 | _descriptor.EnumValueDescriptor( 194 | name='CnTimeRequestType', index=40, number=30, 195 | options=None, 196 | type=None), 197 | _descriptor.EnumValueDescriptor( 198 | name='CnTimeConfirmType', index=41, number=31, 199 | options=None, 200 | type=None), 201 | _descriptor.EnumValueDescriptor( 202 | name='CnNodeRequestType', index=42, number=42, 203 | options=None, 204 | type=None), 205 | _descriptor.EnumValueDescriptor( 206 | name='CnNodeNotificationType', index=43, number=32, 207 | options=None, 208 | type=None), 209 | _descriptor.EnumValueDescriptor( 210 | name='CnRmiRequestType', index=44, number=33, 211 | options=None, 212 | type=None), 213 | _descriptor.EnumValueDescriptor( 214 | name='CnRmiResponseType', index=45, number=34, 215 | options=None, 216 | type=None), 217 | _descriptor.EnumValueDescriptor( 218 | name='CnRmiAsyncRequestType', index=46, number=35, 219 | options=None, 220 | type=None), 221 | _descriptor.EnumValueDescriptor( 222 | name='CnRmiAsyncConfirmType', index=47, number=36, 223 | options=None, 224 | type=None), 225 | _descriptor.EnumValueDescriptor( 226 | name='CnRmiAsyncResponseType', index=48, number=37, 227 | options=None, 228 | type=None), 229 | _descriptor.EnumValueDescriptor( 230 | name='CnRpdoRequestType', index=49, number=38, 231 | options=None, 232 | type=None), 233 | _descriptor.EnumValueDescriptor( 234 | name='CnRpdoConfirmType', index=50, number=39, 235 | options=None, 236 | type=None), 237 | _descriptor.EnumValueDescriptor( 238 | name='CnRpdoNotificationType', index=51, number=40, 239 | options=None, 240 | type=None), 241 | _descriptor.EnumValueDescriptor( 242 | name='CnAlarmNotificationType', index=52, number=41, 243 | options=None, 244 | type=None), 245 | _descriptor.EnumValueDescriptor( 246 | name='CnFupReadRegisterRequestType', index=53, number=70, 247 | options=None, 248 | type=None), 249 | _descriptor.EnumValueDescriptor( 250 | name='CnFupReadRegisterConfirmType', index=54, number=71, 251 | options=None, 252 | type=None), 253 | _descriptor.EnumValueDescriptor( 254 | name='CnFupProgramBeginRequestType', index=55, number=72, 255 | options=None, 256 | type=None), 257 | _descriptor.EnumValueDescriptor( 258 | name='CnFupProgramBeginConfirmType', index=56, number=73, 259 | options=None, 260 | type=None), 261 | _descriptor.EnumValueDescriptor( 262 | name='CnFupProgramRequestType', index=57, number=74, 263 | options=None, 264 | type=None), 265 | _descriptor.EnumValueDescriptor( 266 | name='CnFupProgramConfirmType', index=58, number=75, 267 | options=None, 268 | type=None), 269 | _descriptor.EnumValueDescriptor( 270 | name='CnFupProgramEndRequestType', index=59, number=76, 271 | options=None, 272 | type=None), 273 | _descriptor.EnumValueDescriptor( 274 | name='CnFupProgramEndConfirmType', index=60, number=77, 275 | options=None, 276 | type=None), 277 | _descriptor.EnumValueDescriptor( 278 | name='CnFupReadRequestType', index=61, number=78, 279 | options=None, 280 | type=None), 281 | _descriptor.EnumValueDescriptor( 282 | name='CnFupReadConfirmType', index=62, number=79, 283 | options=None, 284 | type=None), 285 | _descriptor.EnumValueDescriptor( 286 | name='CnFupResetRequestType', index=63, number=80, 287 | options=None, 288 | type=None), 289 | _descriptor.EnumValueDescriptor( 290 | name='CnFupResetConfirmType', index=64, number=81, 291 | options=None, 292 | type=None), 293 | ], 294 | containing_type=None, 295 | options=None, 296 | serialized_start=411, 297 | serialized_end=2224, 298 | ) 299 | _sym_db.RegisterEnumDescriptor(_GATEWAYOPERATION_OPERATIONTYPE) 300 | 301 | _GATEWAYOPERATION_GATEWAYRESULT = _descriptor.EnumDescriptor( 302 | name='GatewayResult', 303 | full_name='GatewayOperation.GatewayResult', 304 | filename=None, 305 | file=DESCRIPTOR, 306 | values=[ 307 | _descriptor.EnumValueDescriptor( 308 | name='OK', index=0, number=0, 309 | options=None, 310 | type=None), 311 | _descriptor.EnumValueDescriptor( 312 | name='BAD_REQUEST', index=1, number=1, 313 | options=None, 314 | type=None), 315 | _descriptor.EnumValueDescriptor( 316 | name='INTERNAL_ERROR', index=2, number=2, 317 | options=None, 318 | type=None), 319 | _descriptor.EnumValueDescriptor( 320 | name='NOT_REACHABLE', index=3, number=3, 321 | options=None, 322 | type=None), 323 | _descriptor.EnumValueDescriptor( 324 | name='OTHER_SESSION', index=4, number=4, 325 | options=None, 326 | type=None), 327 | _descriptor.EnumValueDescriptor( 328 | name='NOT_ALLOWED', index=5, number=5, 329 | options=None, 330 | type=None), 331 | _descriptor.EnumValueDescriptor( 332 | name='NO_RESOURCES', index=6, number=6, 333 | options=None, 334 | type=None), 335 | _descriptor.EnumValueDescriptor( 336 | name='NOT_EXIST', index=7, number=7, 337 | options=None, 338 | type=None), 339 | _descriptor.EnumValueDescriptor( 340 | name='RMI_ERROR', index=8, number=8, 341 | options=None, 342 | type=None), 343 | ], 344 | containing_type=None, 345 | options=None, 346 | serialized_start=2227, 347 | serialized_end=2390, 348 | ) 349 | _sym_db.RegisterEnumDescriptor(_GATEWAYOPERATION_GATEWAYRESULT) 350 | 351 | _UPGRADEREQUEST_UPGRADEREQUESTCOMMAND = _descriptor.EnumDescriptor( 352 | name='UpgradeRequestCommand', 353 | full_name='UpgradeRequest.UpgradeRequestCommand', 354 | filename=None, 355 | file=DESCRIPTOR, 356 | values=[ 357 | _descriptor.EnumValueDescriptor( 358 | name='UPGRADE_START', index=0, number=0, 359 | options=None, 360 | type=None), 361 | _descriptor.EnumValueDescriptor( 362 | name='UPGRADE_CONTINUE', index=1, number=1, 363 | options=None, 364 | type=None), 365 | _descriptor.EnumValueDescriptor( 366 | name='UPGRADE_FINISH', index=2, number=2, 367 | options=None, 368 | type=None), 369 | _descriptor.EnumValueDescriptor( 370 | name='UPGRADE_ABORT', index=3, number=3, 371 | options=None, 372 | type=None), 373 | ], 374 | containing_type=None, 375 | options=None, 376 | serialized_start=3739, 377 | serialized_end=3842, 378 | ) 379 | _sym_db.RegisterEnumDescriptor(_UPGRADEREQUEST_UPGRADEREQUESTCOMMAND) 380 | 381 | _DEBUGREQUEST_DEBUGREQUESTCOMMAND = _descriptor.EnumDescriptor( 382 | name='DebugRequestCommand', 383 | full_name='DebugRequest.DebugRequestCommand', 384 | filename=None, 385 | file=DESCRIPTOR, 386 | values=[ 387 | _descriptor.EnumValueDescriptor( 388 | name='DBG_ECHO', index=0, number=0, 389 | options=None, 390 | type=None), 391 | _descriptor.EnumValueDescriptor( 392 | name='DBG_SLEEP', index=1, number=1, 393 | options=None, 394 | type=None), 395 | _descriptor.EnumValueDescriptor( 396 | name='DBG_SESSION_ECHO', index=2, number=2, 397 | options=None, 398 | type=None), 399 | _descriptor.EnumValueDescriptor( 400 | name='DBG_PRINT_SETTINGS', index=3, number=3, 401 | options=None, 402 | type=None), 403 | _descriptor.EnumValueDescriptor( 404 | name='DBG_ALARM', index=4, number=4, 405 | options=None, 406 | type=None), 407 | _descriptor.EnumValueDescriptor( 408 | name='DBG_LED', index=5, number=5, 409 | options=None, 410 | type=None), 411 | _descriptor.EnumValueDescriptor( 412 | name='DBG_GPI', index=6, number=6, 413 | options=None, 414 | type=None), 415 | _descriptor.EnumValueDescriptor( 416 | name='DBG_GPO', index=7, number=7, 417 | options=None, 418 | type=None), 419 | _descriptor.EnumValueDescriptor( 420 | name='DBG_RS232_WRITE', index=8, number=8, 421 | options=None, 422 | type=None), 423 | _descriptor.EnumValueDescriptor( 424 | name='DBG_RS232_READ', index=9, number=9, 425 | options=None, 426 | type=None), 427 | _descriptor.EnumValueDescriptor( 428 | name='DBG_CAN_WRITE', index=10, number=10, 429 | options=None, 430 | type=None), 431 | _descriptor.EnumValueDescriptor( 432 | name='DBG_CAN_READ', index=11, number=11, 433 | options=None, 434 | type=None), 435 | _descriptor.EnumValueDescriptor( 436 | name='DBG_KNX_WRITE', index=12, number=12, 437 | options=None, 438 | type=None), 439 | _descriptor.EnumValueDescriptor( 440 | name='DBG_KNX_READ', index=13, number=13, 441 | options=None, 442 | type=None), 443 | _descriptor.EnumValueDescriptor( 444 | name='DBG_TOGGLE', index=14, number=14, 445 | options=None, 446 | type=None), 447 | _descriptor.EnumValueDescriptor( 448 | name='DBG_REBOOT', index=15, number=15, 449 | options=None, 450 | type=None), 451 | _descriptor.EnumValueDescriptor( 452 | name='DBG_CLOUD', index=16, number=16, 453 | options=None, 454 | type=None), 455 | _descriptor.EnumValueDescriptor( 456 | name='DBG_EEPROM_READ', index=17, number=17, 457 | options=None, 458 | type=None), 459 | _descriptor.EnumValueDescriptor( 460 | name='DBG_EEPROM_WRITE', index=18, number=18, 461 | options=None, 462 | type=None), 463 | ], 464 | containing_type=None, 465 | options=None, 466 | serialized_start=3950, 467 | serialized_end=4305, 468 | ) 469 | _sym_db.RegisterEnumDescriptor(_DEBUGREQUEST_DEBUGREQUESTCOMMAND) 470 | 471 | _CNNODENOTIFICATION_NODEMODETYPE = _descriptor.EnumDescriptor( 472 | name='NodeModeType', 473 | full_name='CnNodeNotification.NodeModeType', 474 | filename=None, 475 | file=DESCRIPTOR, 476 | values=[ 477 | _descriptor.EnumValueDescriptor( 478 | name='NODE_LEGACY', index=0, number=0, 479 | options=None, 480 | type=None), 481 | _descriptor.EnumValueDescriptor( 482 | name='NODE_OFFLINE', index=1, number=1, 483 | options=None, 484 | type=None), 485 | _descriptor.EnumValueDescriptor( 486 | name='NODE_NORMAL', index=2, number=2, 487 | options=None, 488 | type=None), 489 | _descriptor.EnumValueDescriptor( 490 | name='NODE_UPDATE', index=3, number=3, 491 | options=None, 492 | type=None), 493 | ], 494 | containing_type=None, 495 | options=None, 496 | serialized_start=4660, 497 | serialized_end=4743, 498 | ) 499 | _sym_db.RegisterEnumDescriptor(_CNNODENOTIFICATION_NODEMODETYPE) 500 | 501 | 502 | _DISCOVERYOPERATION = _descriptor.Descriptor( 503 | name='DiscoveryOperation', 504 | full_name='DiscoveryOperation', 505 | filename=None, 506 | file=DESCRIPTOR, 507 | containing_type=None, 508 | fields=[ 509 | _descriptor.FieldDescriptor( 510 | name='searchGatewayRequest', full_name='DiscoveryOperation.searchGatewayRequest', index=0, 511 | number=1, type=11, cpp_type=10, label=1, 512 | has_default_value=False, default_value=None, 513 | message_type=None, enum_type=None, containing_type=None, 514 | is_extension=False, extension_scope=None, 515 | options=None), 516 | _descriptor.FieldDescriptor( 517 | name='searchGatewayResponse', full_name='DiscoveryOperation.searchGatewayResponse', index=1, 518 | number=2, type=11, cpp_type=10, label=1, 519 | has_default_value=False, default_value=None, 520 | message_type=None, enum_type=None, containing_type=None, 521 | is_extension=False, extension_scope=None, 522 | options=None), 523 | ], 524 | extensions=[ 525 | ], 526 | nested_types=[], 527 | enum_types=[ 528 | ], 529 | options=None, 530 | is_extendable=False, 531 | extension_ranges=[], 532 | oneofs=[ 533 | ], 534 | serialized_start=18, 535 | serialized_end=146, 536 | ) 537 | 538 | 539 | _SEARCHGATEWAYREQUEST = _descriptor.Descriptor( 540 | name='SearchGatewayRequest', 541 | full_name='SearchGatewayRequest', 542 | filename=None, 543 | file=DESCRIPTOR, 544 | containing_type=None, 545 | fields=[ 546 | ], 547 | extensions=[ 548 | ], 549 | nested_types=[], 550 | enum_types=[ 551 | ], 552 | options=None, 553 | is_extendable=False, 554 | extension_ranges=[], 555 | oneofs=[ 556 | ], 557 | serialized_start=148, 558 | serialized_end=170, 559 | ) 560 | 561 | 562 | _SEARCHGATEWAYRESPONSE = _descriptor.Descriptor( 563 | name='SearchGatewayResponse', 564 | full_name='SearchGatewayResponse', 565 | filename=None, 566 | file=DESCRIPTOR, 567 | containing_type=None, 568 | fields=[ 569 | _descriptor.FieldDescriptor( 570 | name='ipaddress', full_name='SearchGatewayResponse.ipaddress', index=0, 571 | number=1, type=9, cpp_type=9, label=2, 572 | has_default_value=False, default_value=_b("").decode('utf-8'), 573 | message_type=None, enum_type=None, containing_type=None, 574 | is_extension=False, extension_scope=None, 575 | options=None), 576 | _descriptor.FieldDescriptor( 577 | name='uuid', full_name='SearchGatewayResponse.uuid', index=1, 578 | number=2, type=12, cpp_type=9, label=2, 579 | has_default_value=False, default_value=_b(""), 580 | message_type=None, enum_type=None, containing_type=None, 581 | is_extension=False, extension_scope=None, 582 | options=None), 583 | _descriptor.FieldDescriptor( 584 | name='version', full_name='SearchGatewayResponse.version', index=2, 585 | number=3, type=13, cpp_type=3, label=2, 586 | has_default_value=False, default_value=0, 587 | message_type=None, enum_type=None, containing_type=None, 588 | is_extension=False, extension_scope=None, 589 | options=None), 590 | ], 591 | extensions=[ 592 | ], 593 | nested_types=[], 594 | enum_types=[ 595 | ], 596 | options=None, 597 | is_extendable=False, 598 | extension_ranges=[], 599 | oneofs=[ 600 | ], 601 | serialized_start=172, 602 | serialized_end=245, 603 | ) 604 | 605 | 606 | _GATEWAYOPERATION = _descriptor.Descriptor( 607 | name='GatewayOperation', 608 | full_name='GatewayOperation', 609 | filename=None, 610 | file=DESCRIPTOR, 611 | containing_type=None, 612 | fields=[ 613 | _descriptor.FieldDescriptor( 614 | name='type', full_name='GatewayOperation.type', index=0, 615 | number=1, type=14, cpp_type=8, label=1, 616 | has_default_value=False, default_value=0, 617 | message_type=None, enum_type=None, containing_type=None, 618 | is_extension=False, extension_scope=None, 619 | options=None), 620 | _descriptor.FieldDescriptor( 621 | name='result', full_name='GatewayOperation.result', index=1, 622 | number=2, type=14, cpp_type=8, label=1, 623 | has_default_value=False, default_value=0, 624 | message_type=None, enum_type=None, containing_type=None, 625 | is_extension=False, extension_scope=None, 626 | options=None), 627 | _descriptor.FieldDescriptor( 628 | name='resultDescription', full_name='GatewayOperation.resultDescription', index=2, 629 | number=3, type=9, cpp_type=9, label=1, 630 | has_default_value=False, default_value=_b("").decode('utf-8'), 631 | message_type=None, enum_type=None, containing_type=None, 632 | is_extension=False, extension_scope=None, 633 | options=None), 634 | _descriptor.FieldDescriptor( 635 | name='reference', full_name='GatewayOperation.reference', index=3, 636 | number=4, type=13, cpp_type=3, label=1, 637 | has_default_value=False, default_value=0, 638 | message_type=None, enum_type=None, containing_type=None, 639 | is_extension=False, extension_scope=None, 640 | options=None), 641 | ], 642 | extensions=[ 643 | ], 644 | nested_types=[], 645 | enum_types=[ 646 | _GATEWAYOPERATION_OPERATIONTYPE, 647 | _GATEWAYOPERATION_GATEWAYRESULT, 648 | ], 649 | options=None, 650 | is_extendable=False, 651 | extension_ranges=[], 652 | oneofs=[ 653 | ], 654 | serialized_start=248, 655 | serialized_end=2390, 656 | ) 657 | 658 | 659 | _GATEWAYNOTIFICATION = _descriptor.Descriptor( 660 | name='GatewayNotification', 661 | full_name='GatewayNotification', 662 | filename=None, 663 | file=DESCRIPTOR, 664 | containing_type=None, 665 | fields=[ 666 | _descriptor.FieldDescriptor( 667 | name='pushUUIDs', full_name='GatewayNotification.pushUUIDs', index=0, 668 | number=1, type=12, cpp_type=9, label=3, 669 | has_default_value=False, default_value=[], 670 | message_type=None, enum_type=None, containing_type=None, 671 | is_extension=False, extension_scope=None, 672 | options=None), 673 | _descriptor.FieldDescriptor( 674 | name='alarm', full_name='GatewayNotification.alarm', index=1, 675 | number=2, type=11, cpp_type=10, label=1, 676 | has_default_value=False, default_value=None, 677 | message_type=None, enum_type=None, containing_type=None, 678 | is_extension=False, extension_scope=None, 679 | options=None), 680 | ], 681 | extensions=[ 682 | ], 683 | nested_types=[], 684 | enum_types=[ 685 | ], 686 | options=None, 687 | is_extendable=False, 688 | extension_ranges=[], 689 | oneofs=[ 690 | ], 691 | serialized_start=2392, 692 | serialized_end=2469, 693 | ) 694 | 695 | 696 | _KEEPALIVE = _descriptor.Descriptor( 697 | name='KeepAlive', 698 | full_name='KeepAlive', 699 | filename=None, 700 | file=DESCRIPTOR, 701 | containing_type=None, 702 | fields=[ 703 | ], 704 | extensions=[ 705 | ], 706 | nested_types=[], 707 | enum_types=[ 708 | ], 709 | options=None, 710 | is_extendable=False, 711 | extension_ranges=[], 712 | oneofs=[ 713 | ], 714 | serialized_start=2471, 715 | serialized_end=2482, 716 | ) 717 | 718 | 719 | _FACTORYRESET = _descriptor.Descriptor( 720 | name='FactoryReset', 721 | full_name='FactoryReset', 722 | filename=None, 723 | file=DESCRIPTOR, 724 | containing_type=None, 725 | fields=[ 726 | _descriptor.FieldDescriptor( 727 | name='resetKey', full_name='FactoryReset.resetKey', index=0, 728 | number=1, type=12, cpp_type=9, label=2, 729 | has_default_value=False, default_value=_b(""), 730 | message_type=None, enum_type=None, containing_type=None, 731 | is_extension=False, extension_scope=None, 732 | options=None), 733 | ], 734 | extensions=[ 735 | ], 736 | nested_types=[], 737 | enum_types=[ 738 | ], 739 | options=None, 740 | is_extendable=False, 741 | extension_ranges=[], 742 | oneofs=[ 743 | ], 744 | serialized_start=2484, 745 | serialized_end=2516, 746 | ) 747 | 748 | 749 | _SETDEVICESETTINGSREQUEST = _descriptor.Descriptor( 750 | name='SetDeviceSettingsRequest', 751 | full_name='SetDeviceSettingsRequest', 752 | filename=None, 753 | file=DESCRIPTOR, 754 | containing_type=None, 755 | fields=[ 756 | _descriptor.FieldDescriptor( 757 | name='macAddress', full_name='SetDeviceSettingsRequest.macAddress', index=0, 758 | number=1, type=12, cpp_type=9, label=2, 759 | has_default_value=False, default_value=_b(""), 760 | message_type=None, enum_type=None, containing_type=None, 761 | is_extension=False, extension_scope=None, 762 | options=None), 763 | _descriptor.FieldDescriptor( 764 | name='serialNumber', full_name='SetDeviceSettingsRequest.serialNumber', index=1, 765 | number=2, type=9, cpp_type=9, label=2, 766 | has_default_value=False, default_value=_b("").decode('utf-8'), 767 | message_type=None, enum_type=None, containing_type=None, 768 | is_extension=False, extension_scope=None, 769 | options=None), 770 | ], 771 | extensions=[ 772 | ], 773 | nested_types=[], 774 | enum_types=[ 775 | ], 776 | options=None, 777 | is_extendable=False, 778 | extension_ranges=[], 779 | oneofs=[ 780 | ], 781 | serialized_start=2518, 782 | serialized_end=2586, 783 | ) 784 | 785 | 786 | _SETDEVICESETTINGSCONFIRM = _descriptor.Descriptor( 787 | name='SetDeviceSettingsConfirm', 788 | full_name='SetDeviceSettingsConfirm', 789 | filename=None, 790 | file=DESCRIPTOR, 791 | containing_type=None, 792 | fields=[ 793 | ], 794 | extensions=[ 795 | ], 796 | nested_types=[], 797 | enum_types=[ 798 | ], 799 | options=None, 800 | is_extendable=False, 801 | extension_ranges=[], 802 | oneofs=[ 803 | ], 804 | serialized_start=2588, 805 | serialized_end=2614, 806 | ) 807 | 808 | 809 | _SETADDRESSREQUEST = _descriptor.Descriptor( 810 | name='SetAddressRequest', 811 | full_name='SetAddressRequest', 812 | filename=None, 813 | file=DESCRIPTOR, 814 | containing_type=None, 815 | fields=[ 816 | _descriptor.FieldDescriptor( 817 | name='uuid', full_name='SetAddressRequest.uuid', index=0, 818 | number=1, type=12, cpp_type=9, label=2, 819 | has_default_value=False, default_value=_b(""), 820 | message_type=None, enum_type=None, containing_type=None, 821 | is_extension=False, extension_scope=None, 822 | options=None), 823 | ], 824 | extensions=[ 825 | ], 826 | nested_types=[], 827 | enum_types=[ 828 | ], 829 | options=None, 830 | is_extendable=False, 831 | extension_ranges=[], 832 | oneofs=[ 833 | ], 834 | serialized_start=2616, 835 | serialized_end=2649, 836 | ) 837 | 838 | 839 | _SETADDRESSCONFIRM = _descriptor.Descriptor( 840 | name='SetAddressConfirm', 841 | full_name='SetAddressConfirm', 842 | filename=None, 843 | file=DESCRIPTOR, 844 | containing_type=None, 845 | fields=[ 846 | ], 847 | extensions=[ 848 | ], 849 | nested_types=[], 850 | enum_types=[ 851 | ], 852 | options=None, 853 | is_extendable=False, 854 | extension_ranges=[], 855 | oneofs=[ 856 | ], 857 | serialized_start=2651, 858 | serialized_end=2670, 859 | ) 860 | 861 | 862 | _REGISTERAPPREQUEST = _descriptor.Descriptor( 863 | name='RegisterAppRequest', 864 | full_name='RegisterAppRequest', 865 | filename=None, 866 | file=DESCRIPTOR, 867 | containing_type=None, 868 | fields=[ 869 | _descriptor.FieldDescriptor( 870 | name='uuid', full_name='RegisterAppRequest.uuid', index=0, 871 | number=1, type=12, cpp_type=9, label=2, 872 | has_default_value=False, default_value=_b(""), 873 | message_type=None, enum_type=None, containing_type=None, 874 | is_extension=False, extension_scope=None, 875 | options=None), 876 | _descriptor.FieldDescriptor( 877 | name='pin', full_name='RegisterAppRequest.pin', index=1, 878 | number=2, type=13, cpp_type=3, label=2, 879 | has_default_value=False, default_value=0, 880 | message_type=None, enum_type=None, containing_type=None, 881 | is_extension=False, extension_scope=None, 882 | options=None), 883 | _descriptor.FieldDescriptor( 884 | name='devicename', full_name='RegisterAppRequest.devicename', index=2, 885 | number=3, type=9, cpp_type=9, label=2, 886 | has_default_value=False, default_value=_b("").decode('utf-8'), 887 | message_type=None, enum_type=None, containing_type=None, 888 | is_extension=False, extension_scope=None, 889 | options=None), 890 | ], 891 | extensions=[ 892 | ], 893 | nested_types=[], 894 | enum_types=[ 895 | ], 896 | options=None, 897 | is_extendable=False, 898 | extension_ranges=[], 899 | oneofs=[ 900 | ], 901 | serialized_start=2672, 902 | serialized_end=2739, 903 | ) 904 | 905 | 906 | _REGISTERAPPCONFIRM = _descriptor.Descriptor( 907 | name='RegisterAppConfirm', 908 | full_name='RegisterAppConfirm', 909 | filename=None, 910 | file=DESCRIPTOR, 911 | containing_type=None, 912 | fields=[ 913 | ], 914 | extensions=[ 915 | ], 916 | nested_types=[], 917 | enum_types=[ 918 | ], 919 | options=None, 920 | is_extendable=False, 921 | extension_ranges=[], 922 | oneofs=[ 923 | ], 924 | serialized_start=2741, 925 | serialized_end=2761, 926 | ) 927 | 928 | 929 | _STARTSESSIONREQUEST = _descriptor.Descriptor( 930 | name='StartSessionRequest', 931 | full_name='StartSessionRequest', 932 | filename=None, 933 | file=DESCRIPTOR, 934 | containing_type=None, 935 | fields=[ 936 | _descriptor.FieldDescriptor( 937 | name='takeover', full_name='StartSessionRequest.takeover', index=0, 938 | number=1, type=8, cpp_type=7, label=1, 939 | has_default_value=False, default_value=False, 940 | message_type=None, enum_type=None, containing_type=None, 941 | is_extension=False, extension_scope=None, 942 | options=None), 943 | ], 944 | extensions=[ 945 | ], 946 | nested_types=[], 947 | enum_types=[ 948 | ], 949 | options=None, 950 | is_extendable=False, 951 | extension_ranges=[], 952 | oneofs=[ 953 | ], 954 | serialized_start=2763, 955 | serialized_end=2802, 956 | ) 957 | 958 | 959 | _STARTSESSIONCONFIRM = _descriptor.Descriptor( 960 | name='StartSessionConfirm', 961 | full_name='StartSessionConfirm', 962 | filename=None, 963 | file=DESCRIPTOR, 964 | containing_type=None, 965 | fields=[ 966 | _descriptor.FieldDescriptor( 967 | name='devicename', full_name='StartSessionConfirm.devicename', index=0, 968 | number=1, type=9, cpp_type=9, label=1, 969 | has_default_value=False, default_value=_b("").decode('utf-8'), 970 | message_type=None, enum_type=None, containing_type=None, 971 | is_extension=False, extension_scope=None, 972 | options=None), 973 | _descriptor.FieldDescriptor( 974 | name='resumed', full_name='StartSessionConfirm.resumed', index=1, 975 | number=2, type=8, cpp_type=7, label=1, 976 | has_default_value=False, default_value=False, 977 | message_type=None, enum_type=None, containing_type=None, 978 | is_extension=False, extension_scope=None, 979 | options=None), 980 | ], 981 | extensions=[ 982 | ], 983 | nested_types=[], 984 | enum_types=[ 985 | ], 986 | options=None, 987 | is_extendable=False, 988 | extension_ranges=[], 989 | oneofs=[ 990 | ], 991 | serialized_start=2804, 992 | serialized_end=2862, 993 | ) 994 | 995 | 996 | _CLOSESESSIONREQUEST = _descriptor.Descriptor( 997 | name='CloseSessionRequest', 998 | full_name='CloseSessionRequest', 999 | filename=None, 1000 | file=DESCRIPTOR, 1001 | containing_type=None, 1002 | fields=[ 1003 | ], 1004 | extensions=[ 1005 | ], 1006 | nested_types=[], 1007 | enum_types=[ 1008 | ], 1009 | options=None, 1010 | is_extendable=False, 1011 | extension_ranges=[], 1012 | oneofs=[ 1013 | ], 1014 | serialized_start=2864, 1015 | serialized_end=2885, 1016 | ) 1017 | 1018 | 1019 | _CLOSESESSIONCONFIRM = _descriptor.Descriptor( 1020 | name='CloseSessionConfirm', 1021 | full_name='CloseSessionConfirm', 1022 | filename=None, 1023 | file=DESCRIPTOR, 1024 | containing_type=None, 1025 | fields=[ 1026 | ], 1027 | extensions=[ 1028 | ], 1029 | nested_types=[], 1030 | enum_types=[ 1031 | ], 1032 | options=None, 1033 | is_extendable=False, 1034 | extension_ranges=[], 1035 | oneofs=[ 1036 | ], 1037 | serialized_start=2887, 1038 | serialized_end=2908, 1039 | ) 1040 | 1041 | 1042 | _LISTREGISTEREDAPPSREQUEST = _descriptor.Descriptor( 1043 | name='ListRegisteredAppsRequest', 1044 | full_name='ListRegisteredAppsRequest', 1045 | filename=None, 1046 | file=DESCRIPTOR, 1047 | containing_type=None, 1048 | fields=[ 1049 | ], 1050 | extensions=[ 1051 | ], 1052 | nested_types=[], 1053 | enum_types=[ 1054 | ], 1055 | options=None, 1056 | is_extendable=False, 1057 | extension_ranges=[], 1058 | oneofs=[ 1059 | ], 1060 | serialized_start=2910, 1061 | serialized_end=2937, 1062 | ) 1063 | 1064 | 1065 | _LISTREGISTEREDAPPSCONFIRM_APP = _descriptor.Descriptor( 1066 | name='App', 1067 | full_name='ListRegisteredAppsConfirm.App', 1068 | filename=None, 1069 | file=DESCRIPTOR, 1070 | containing_type=None, 1071 | fields=[ 1072 | _descriptor.FieldDescriptor( 1073 | name='uuid', full_name='ListRegisteredAppsConfirm.App.uuid', index=0, 1074 | number=1, type=12, cpp_type=9, label=2, 1075 | has_default_value=False, default_value=_b(""), 1076 | message_type=None, enum_type=None, containing_type=None, 1077 | is_extension=False, extension_scope=None, 1078 | options=None), 1079 | _descriptor.FieldDescriptor( 1080 | name='devicename', full_name='ListRegisteredAppsConfirm.App.devicename', index=1, 1081 | number=2, type=9, cpp_type=9, label=2, 1082 | has_default_value=False, default_value=_b("").decode('utf-8'), 1083 | message_type=None, enum_type=None, containing_type=None, 1084 | is_extension=False, extension_scope=None, 1085 | options=None), 1086 | ], 1087 | extensions=[ 1088 | ], 1089 | nested_types=[], 1090 | enum_types=[ 1091 | ], 1092 | options=None, 1093 | is_extendable=False, 1094 | extension_ranges=[], 1095 | oneofs=[ 1096 | ], 1097 | serialized_start=3014, 1098 | serialized_end=3053, 1099 | ) 1100 | 1101 | _LISTREGISTEREDAPPSCONFIRM = _descriptor.Descriptor( 1102 | name='ListRegisteredAppsConfirm', 1103 | full_name='ListRegisteredAppsConfirm', 1104 | filename=None, 1105 | file=DESCRIPTOR, 1106 | containing_type=None, 1107 | fields=[ 1108 | _descriptor.FieldDescriptor( 1109 | name='apps', full_name='ListRegisteredAppsConfirm.apps', index=0, 1110 | number=1, type=11, cpp_type=10, label=3, 1111 | has_default_value=False, default_value=[], 1112 | message_type=None, enum_type=None, containing_type=None, 1113 | is_extension=False, extension_scope=None, 1114 | options=None), 1115 | ], 1116 | extensions=[ 1117 | ], 1118 | nested_types=[_LISTREGISTEREDAPPSCONFIRM_APP, ], 1119 | enum_types=[ 1120 | ], 1121 | options=None, 1122 | is_extendable=False, 1123 | extension_ranges=[], 1124 | oneofs=[ 1125 | ], 1126 | serialized_start=2939, 1127 | serialized_end=3053, 1128 | ) 1129 | 1130 | 1131 | _DEREGISTERAPPREQUEST = _descriptor.Descriptor( 1132 | name='DeregisterAppRequest', 1133 | full_name='DeregisterAppRequest', 1134 | filename=None, 1135 | file=DESCRIPTOR, 1136 | containing_type=None, 1137 | fields=[ 1138 | _descriptor.FieldDescriptor( 1139 | name='uuid', full_name='DeregisterAppRequest.uuid', index=0, 1140 | number=1, type=12, cpp_type=9, label=2, 1141 | has_default_value=False, default_value=_b(""), 1142 | message_type=None, enum_type=None, containing_type=None, 1143 | is_extension=False, extension_scope=None, 1144 | options=None), 1145 | ], 1146 | extensions=[ 1147 | ], 1148 | nested_types=[], 1149 | enum_types=[ 1150 | ], 1151 | options=None, 1152 | is_extendable=False, 1153 | extension_ranges=[], 1154 | oneofs=[ 1155 | ], 1156 | serialized_start=3055, 1157 | serialized_end=3091, 1158 | ) 1159 | 1160 | 1161 | _DEREGISTERAPPCONFIRM = _descriptor.Descriptor( 1162 | name='DeregisterAppConfirm', 1163 | full_name='DeregisterAppConfirm', 1164 | filename=None, 1165 | file=DESCRIPTOR, 1166 | containing_type=None, 1167 | fields=[ 1168 | ], 1169 | extensions=[ 1170 | ], 1171 | nested_types=[], 1172 | enum_types=[ 1173 | ], 1174 | options=None, 1175 | is_extendable=False, 1176 | extension_ranges=[], 1177 | oneofs=[ 1178 | ], 1179 | serialized_start=3093, 1180 | serialized_end=3115, 1181 | ) 1182 | 1183 | 1184 | _CHANGEPINREQUEST = _descriptor.Descriptor( 1185 | name='ChangePinRequest', 1186 | full_name='ChangePinRequest', 1187 | filename=None, 1188 | file=DESCRIPTOR, 1189 | containing_type=None, 1190 | fields=[ 1191 | _descriptor.FieldDescriptor( 1192 | name='oldpin', full_name='ChangePinRequest.oldpin', index=0, 1193 | number=1, type=13, cpp_type=3, label=2, 1194 | has_default_value=False, default_value=0, 1195 | message_type=None, enum_type=None, containing_type=None, 1196 | is_extension=False, extension_scope=None, 1197 | options=None), 1198 | _descriptor.FieldDescriptor( 1199 | name='newpin', full_name='ChangePinRequest.newpin', index=1, 1200 | number=2, type=13, cpp_type=3, label=2, 1201 | has_default_value=False, default_value=0, 1202 | message_type=None, enum_type=None, containing_type=None, 1203 | is_extension=False, extension_scope=None, 1204 | options=None), 1205 | ], 1206 | extensions=[ 1207 | ], 1208 | nested_types=[], 1209 | enum_types=[ 1210 | ], 1211 | options=None, 1212 | is_extendable=False, 1213 | extension_ranges=[], 1214 | oneofs=[ 1215 | ], 1216 | serialized_start=3117, 1217 | serialized_end=3167, 1218 | ) 1219 | 1220 | 1221 | _CHANGEPINCONFIRM = _descriptor.Descriptor( 1222 | name='ChangePinConfirm', 1223 | full_name='ChangePinConfirm', 1224 | filename=None, 1225 | file=DESCRIPTOR, 1226 | containing_type=None, 1227 | fields=[ 1228 | ], 1229 | extensions=[ 1230 | ], 1231 | nested_types=[], 1232 | enum_types=[ 1233 | ], 1234 | options=None, 1235 | is_extendable=False, 1236 | extension_ranges=[], 1237 | oneofs=[ 1238 | ], 1239 | serialized_start=3169, 1240 | serialized_end=3187, 1241 | ) 1242 | 1243 | 1244 | _GETREMOTEACCESSIDREQUEST = _descriptor.Descriptor( 1245 | name='GetRemoteAccessIdRequest', 1246 | full_name='GetRemoteAccessIdRequest', 1247 | filename=None, 1248 | file=DESCRIPTOR, 1249 | containing_type=None, 1250 | fields=[ 1251 | ], 1252 | extensions=[ 1253 | ], 1254 | nested_types=[], 1255 | enum_types=[ 1256 | ], 1257 | options=None, 1258 | is_extendable=False, 1259 | extension_ranges=[], 1260 | oneofs=[ 1261 | ], 1262 | serialized_start=3189, 1263 | serialized_end=3215, 1264 | ) 1265 | 1266 | 1267 | _GETREMOTEACCESSIDCONFIRM = _descriptor.Descriptor( 1268 | name='GetRemoteAccessIdConfirm', 1269 | full_name='GetRemoteAccessIdConfirm', 1270 | filename=None, 1271 | file=DESCRIPTOR, 1272 | containing_type=None, 1273 | fields=[ 1274 | _descriptor.FieldDescriptor( 1275 | name='uuid', full_name='GetRemoteAccessIdConfirm.uuid', index=0, 1276 | number=1, type=12, cpp_type=9, label=1, 1277 | has_default_value=False, default_value=_b(""), 1278 | message_type=None, enum_type=None, containing_type=None, 1279 | is_extension=False, extension_scope=None, 1280 | options=None), 1281 | ], 1282 | extensions=[ 1283 | ], 1284 | nested_types=[], 1285 | enum_types=[ 1286 | ], 1287 | options=None, 1288 | is_extendable=False, 1289 | extension_ranges=[], 1290 | oneofs=[ 1291 | ], 1292 | serialized_start=3217, 1293 | serialized_end=3257, 1294 | ) 1295 | 1296 | 1297 | _SETREMOTEACCESSIDREQUEST = _descriptor.Descriptor( 1298 | name='SetRemoteAccessIdRequest', 1299 | full_name='SetRemoteAccessIdRequest', 1300 | filename=None, 1301 | file=DESCRIPTOR, 1302 | containing_type=None, 1303 | fields=[ 1304 | _descriptor.FieldDescriptor( 1305 | name='uuid', full_name='SetRemoteAccessIdRequest.uuid', index=0, 1306 | number=1, type=12, cpp_type=9, label=1, 1307 | has_default_value=False, default_value=_b(""), 1308 | message_type=None, enum_type=None, containing_type=None, 1309 | is_extension=False, extension_scope=None, 1310 | options=None), 1311 | ], 1312 | extensions=[ 1313 | ], 1314 | nested_types=[], 1315 | enum_types=[ 1316 | ], 1317 | options=None, 1318 | is_extendable=False, 1319 | extension_ranges=[], 1320 | oneofs=[ 1321 | ], 1322 | serialized_start=3259, 1323 | serialized_end=3299, 1324 | ) 1325 | 1326 | 1327 | _SETREMOTEACCESSIDCONFIRM = _descriptor.Descriptor( 1328 | name='SetRemoteAccessIdConfirm', 1329 | full_name='SetRemoteAccessIdConfirm', 1330 | filename=None, 1331 | file=DESCRIPTOR, 1332 | containing_type=None, 1333 | fields=[ 1334 | ], 1335 | extensions=[ 1336 | ], 1337 | nested_types=[], 1338 | enum_types=[ 1339 | ], 1340 | options=None, 1341 | is_extendable=False, 1342 | extension_ranges=[], 1343 | oneofs=[ 1344 | ], 1345 | serialized_start=3301, 1346 | serialized_end=3327, 1347 | ) 1348 | 1349 | 1350 | _GETSUPPORTIDREQUEST = _descriptor.Descriptor( 1351 | name='GetSupportIdRequest', 1352 | full_name='GetSupportIdRequest', 1353 | filename=None, 1354 | file=DESCRIPTOR, 1355 | containing_type=None, 1356 | fields=[ 1357 | ], 1358 | extensions=[ 1359 | ], 1360 | nested_types=[], 1361 | enum_types=[ 1362 | ], 1363 | options=None, 1364 | is_extendable=False, 1365 | extension_ranges=[], 1366 | oneofs=[ 1367 | ], 1368 | serialized_start=3329, 1369 | serialized_end=3350, 1370 | ) 1371 | 1372 | 1373 | _GETSUPPORTIDCONFIRM = _descriptor.Descriptor( 1374 | name='GetSupportIdConfirm', 1375 | full_name='GetSupportIdConfirm', 1376 | filename=None, 1377 | file=DESCRIPTOR, 1378 | containing_type=None, 1379 | fields=[ 1380 | _descriptor.FieldDescriptor( 1381 | name='uuid', full_name='GetSupportIdConfirm.uuid', index=0, 1382 | number=1, type=12, cpp_type=9, label=1, 1383 | has_default_value=False, default_value=_b(""), 1384 | message_type=None, enum_type=None, containing_type=None, 1385 | is_extension=False, extension_scope=None, 1386 | options=None), 1387 | _descriptor.FieldDescriptor( 1388 | name='remainingTime', full_name='GetSupportIdConfirm.remainingTime', index=1, 1389 | number=2, type=13, cpp_type=3, label=1, 1390 | has_default_value=False, default_value=0, 1391 | message_type=None, enum_type=None, containing_type=None, 1392 | is_extension=False, extension_scope=None, 1393 | options=None), 1394 | ], 1395 | extensions=[ 1396 | ], 1397 | nested_types=[], 1398 | enum_types=[ 1399 | ], 1400 | options=None, 1401 | is_extendable=False, 1402 | extension_ranges=[], 1403 | oneofs=[ 1404 | ], 1405 | serialized_start=3352, 1406 | serialized_end=3410, 1407 | ) 1408 | 1409 | 1410 | _SETSUPPORTIDREQUEST = _descriptor.Descriptor( 1411 | name='SetSupportIdRequest', 1412 | full_name='SetSupportIdRequest', 1413 | filename=None, 1414 | file=DESCRIPTOR, 1415 | containing_type=None, 1416 | fields=[ 1417 | _descriptor.FieldDescriptor( 1418 | name='uuid', full_name='SetSupportIdRequest.uuid', index=0, 1419 | number=1, type=12, cpp_type=9, label=1, 1420 | has_default_value=False, default_value=_b(""), 1421 | message_type=None, enum_type=None, containing_type=None, 1422 | is_extension=False, extension_scope=None, 1423 | options=None), 1424 | _descriptor.FieldDescriptor( 1425 | name='validTime', full_name='SetSupportIdRequest.validTime', index=1, 1426 | number=2, type=13, cpp_type=3, label=1, 1427 | has_default_value=False, default_value=0, 1428 | message_type=None, enum_type=None, containing_type=None, 1429 | is_extension=False, extension_scope=None, 1430 | options=None), 1431 | ], 1432 | extensions=[ 1433 | ], 1434 | nested_types=[], 1435 | enum_types=[ 1436 | ], 1437 | options=None, 1438 | is_extendable=False, 1439 | extension_ranges=[], 1440 | oneofs=[ 1441 | ], 1442 | serialized_start=3412, 1443 | serialized_end=3466, 1444 | ) 1445 | 1446 | 1447 | _SETSUPPORTIDCONFIRM = _descriptor.Descriptor( 1448 | name='SetSupportIdConfirm', 1449 | full_name='SetSupportIdConfirm', 1450 | filename=None, 1451 | file=DESCRIPTOR, 1452 | containing_type=None, 1453 | fields=[ 1454 | ], 1455 | extensions=[ 1456 | ], 1457 | nested_types=[], 1458 | enum_types=[ 1459 | ], 1460 | options=None, 1461 | is_extendable=False, 1462 | extension_ranges=[], 1463 | oneofs=[ 1464 | ], 1465 | serialized_start=3468, 1466 | serialized_end=3489, 1467 | ) 1468 | 1469 | 1470 | _GETWEBIDREQUEST = _descriptor.Descriptor( 1471 | name='GetWebIdRequest', 1472 | full_name='GetWebIdRequest', 1473 | filename=None, 1474 | file=DESCRIPTOR, 1475 | containing_type=None, 1476 | fields=[ 1477 | ], 1478 | extensions=[ 1479 | ], 1480 | nested_types=[], 1481 | enum_types=[ 1482 | ], 1483 | options=None, 1484 | is_extendable=False, 1485 | extension_ranges=[], 1486 | oneofs=[ 1487 | ], 1488 | serialized_start=3491, 1489 | serialized_end=3508, 1490 | ) 1491 | 1492 | 1493 | _GETWEBIDCONFIRM = _descriptor.Descriptor( 1494 | name='GetWebIdConfirm', 1495 | full_name='GetWebIdConfirm', 1496 | filename=None, 1497 | file=DESCRIPTOR, 1498 | containing_type=None, 1499 | fields=[ 1500 | _descriptor.FieldDescriptor( 1501 | name='uuid', full_name='GetWebIdConfirm.uuid', index=0, 1502 | number=1, type=12, cpp_type=9, label=1, 1503 | has_default_value=False, default_value=_b(""), 1504 | message_type=None, enum_type=None, containing_type=None, 1505 | is_extension=False, extension_scope=None, 1506 | options=None), 1507 | ], 1508 | extensions=[ 1509 | ], 1510 | nested_types=[], 1511 | enum_types=[ 1512 | ], 1513 | options=None, 1514 | is_extendable=False, 1515 | extension_ranges=[], 1516 | oneofs=[ 1517 | ], 1518 | serialized_start=3510, 1519 | serialized_end=3541, 1520 | ) 1521 | 1522 | 1523 | _SETWEBIDREQUEST = _descriptor.Descriptor( 1524 | name='SetWebIdRequest', 1525 | full_name='SetWebIdRequest', 1526 | filename=None, 1527 | file=DESCRIPTOR, 1528 | containing_type=None, 1529 | fields=[ 1530 | _descriptor.FieldDescriptor( 1531 | name='uuid', full_name='SetWebIdRequest.uuid', index=0, 1532 | number=1, type=12, cpp_type=9, label=1, 1533 | has_default_value=False, default_value=_b(""), 1534 | message_type=None, enum_type=None, containing_type=None, 1535 | is_extension=False, extension_scope=None, 1536 | options=None), 1537 | ], 1538 | extensions=[ 1539 | ], 1540 | nested_types=[], 1541 | enum_types=[ 1542 | ], 1543 | options=None, 1544 | is_extendable=False, 1545 | extension_ranges=[], 1546 | oneofs=[ 1547 | ], 1548 | serialized_start=3543, 1549 | serialized_end=3574, 1550 | ) 1551 | 1552 | 1553 | _SETWEBIDCONFIRM = _descriptor.Descriptor( 1554 | name='SetWebIdConfirm', 1555 | full_name='SetWebIdConfirm', 1556 | filename=None, 1557 | file=DESCRIPTOR, 1558 | containing_type=None, 1559 | fields=[ 1560 | ], 1561 | extensions=[ 1562 | ], 1563 | nested_types=[], 1564 | enum_types=[ 1565 | ], 1566 | options=None, 1567 | is_extendable=False, 1568 | extension_ranges=[], 1569 | oneofs=[ 1570 | ], 1571 | serialized_start=3576, 1572 | serialized_end=3593, 1573 | ) 1574 | 1575 | 1576 | _SETPUSHIDREQUEST = _descriptor.Descriptor( 1577 | name='SetPushIdRequest', 1578 | full_name='SetPushIdRequest', 1579 | filename=None, 1580 | file=DESCRIPTOR, 1581 | containing_type=None, 1582 | fields=[ 1583 | _descriptor.FieldDescriptor( 1584 | name='uuid', full_name='SetPushIdRequest.uuid', index=0, 1585 | number=1, type=12, cpp_type=9, label=1, 1586 | has_default_value=False, default_value=_b(""), 1587 | message_type=None, enum_type=None, containing_type=None, 1588 | is_extension=False, extension_scope=None, 1589 | options=None), 1590 | ], 1591 | extensions=[ 1592 | ], 1593 | nested_types=[], 1594 | enum_types=[ 1595 | ], 1596 | options=None, 1597 | is_extendable=False, 1598 | extension_ranges=[], 1599 | oneofs=[ 1600 | ], 1601 | serialized_start=3595, 1602 | serialized_end=3627, 1603 | ) 1604 | 1605 | 1606 | _SETPUSHIDCONFIRM = _descriptor.Descriptor( 1607 | name='SetPushIdConfirm', 1608 | full_name='SetPushIdConfirm', 1609 | filename=None, 1610 | file=DESCRIPTOR, 1611 | containing_type=None, 1612 | fields=[ 1613 | ], 1614 | extensions=[ 1615 | ], 1616 | nested_types=[], 1617 | enum_types=[ 1618 | ], 1619 | options=None, 1620 | is_extendable=False, 1621 | extension_ranges=[], 1622 | oneofs=[ 1623 | ], 1624 | serialized_start=3629, 1625 | serialized_end=3647, 1626 | ) 1627 | 1628 | 1629 | _UPGRADEREQUEST = _descriptor.Descriptor( 1630 | name='UpgradeRequest', 1631 | full_name='UpgradeRequest', 1632 | filename=None, 1633 | file=DESCRIPTOR, 1634 | containing_type=None, 1635 | fields=[ 1636 | _descriptor.FieldDescriptor( 1637 | name='command', full_name='UpgradeRequest.command', index=0, 1638 | number=1, type=14, cpp_type=8, label=1, 1639 | has_default_value=False, default_value=0, 1640 | message_type=None, enum_type=None, containing_type=None, 1641 | is_extension=False, extension_scope=None, 1642 | options=None), 1643 | _descriptor.FieldDescriptor( 1644 | name='chunk', full_name='UpgradeRequest.chunk', index=1, 1645 | number=2, type=12, cpp_type=9, label=1, 1646 | has_default_value=False, default_value=_b(""), 1647 | message_type=None, enum_type=None, containing_type=None, 1648 | is_extension=False, extension_scope=None, 1649 | options=None), 1650 | ], 1651 | extensions=[ 1652 | ], 1653 | nested_types=[], 1654 | enum_types=[ 1655 | _UPGRADEREQUEST_UPGRADEREQUESTCOMMAND, 1656 | ], 1657 | options=None, 1658 | is_extendable=False, 1659 | extension_ranges=[], 1660 | oneofs=[ 1661 | ], 1662 | serialized_start=3650, 1663 | serialized_end=3842, 1664 | ) 1665 | 1666 | 1667 | _UPGRADECONFIRM = _descriptor.Descriptor( 1668 | name='UpgradeConfirm', 1669 | full_name='UpgradeConfirm', 1670 | filename=None, 1671 | file=DESCRIPTOR, 1672 | containing_type=None, 1673 | fields=[ 1674 | ], 1675 | extensions=[ 1676 | ], 1677 | nested_types=[], 1678 | enum_types=[ 1679 | ], 1680 | options=None, 1681 | is_extendable=False, 1682 | extension_ranges=[], 1683 | oneofs=[ 1684 | ], 1685 | serialized_start=3844, 1686 | serialized_end=3860, 1687 | ) 1688 | 1689 | 1690 | _DEBUGREQUEST = _descriptor.Descriptor( 1691 | name='DebugRequest', 1692 | full_name='DebugRequest', 1693 | filename=None, 1694 | file=DESCRIPTOR, 1695 | containing_type=None, 1696 | fields=[ 1697 | _descriptor.FieldDescriptor( 1698 | name='command', full_name='DebugRequest.command', index=0, 1699 | number=1, type=14, cpp_type=8, label=2, 1700 | has_default_value=False, default_value=0, 1701 | message_type=None, enum_type=None, containing_type=None, 1702 | is_extension=False, extension_scope=None, 1703 | options=None), 1704 | _descriptor.FieldDescriptor( 1705 | name='argument', full_name='DebugRequest.argument', index=1, 1706 | number=2, type=5, cpp_type=1, label=1, 1707 | has_default_value=False, default_value=0, 1708 | message_type=None, enum_type=None, containing_type=None, 1709 | is_extension=False, extension_scope=None, 1710 | options=None), 1711 | ], 1712 | extensions=[ 1713 | ], 1714 | nested_types=[], 1715 | enum_types=[ 1716 | _DEBUGREQUEST_DEBUGREQUESTCOMMAND, 1717 | ], 1718 | options=None, 1719 | is_extendable=False, 1720 | extension_ranges=[], 1721 | oneofs=[ 1722 | ], 1723 | serialized_start=3863, 1724 | serialized_end=4305, 1725 | ) 1726 | 1727 | 1728 | _DEBUGCONFIRM = _descriptor.Descriptor( 1729 | name='DebugConfirm', 1730 | full_name='DebugConfirm', 1731 | filename=None, 1732 | file=DESCRIPTOR, 1733 | containing_type=None, 1734 | fields=[ 1735 | _descriptor.FieldDescriptor( 1736 | name='result', full_name='DebugConfirm.result', index=0, 1737 | number=1, type=5, cpp_type=1, label=2, 1738 | has_default_value=False, default_value=0, 1739 | message_type=None, enum_type=None, containing_type=None, 1740 | is_extension=False, extension_scope=None, 1741 | options=None), 1742 | ], 1743 | extensions=[ 1744 | ], 1745 | nested_types=[], 1746 | enum_types=[ 1747 | ], 1748 | options=None, 1749 | is_extendable=False, 1750 | extension_ranges=[], 1751 | oneofs=[ 1752 | ], 1753 | serialized_start=4307, 1754 | serialized_end=4337, 1755 | ) 1756 | 1757 | 1758 | _VERSIONREQUEST = _descriptor.Descriptor( 1759 | name='VersionRequest', 1760 | full_name='VersionRequest', 1761 | filename=None, 1762 | file=DESCRIPTOR, 1763 | containing_type=None, 1764 | fields=[ 1765 | ], 1766 | extensions=[ 1767 | ], 1768 | nested_types=[], 1769 | enum_types=[ 1770 | ], 1771 | options=None, 1772 | is_extendable=False, 1773 | extension_ranges=[], 1774 | oneofs=[ 1775 | ], 1776 | serialized_start=4339, 1777 | serialized_end=4355, 1778 | ) 1779 | 1780 | 1781 | _VERSIONCONFIRM = _descriptor.Descriptor( 1782 | name='VersionConfirm', 1783 | full_name='VersionConfirm', 1784 | filename=None, 1785 | file=DESCRIPTOR, 1786 | containing_type=None, 1787 | fields=[ 1788 | _descriptor.FieldDescriptor( 1789 | name='gatewayVersion', full_name='VersionConfirm.gatewayVersion', index=0, 1790 | number=1, type=13, cpp_type=3, label=2, 1791 | has_default_value=False, default_value=0, 1792 | message_type=None, enum_type=None, containing_type=None, 1793 | is_extension=False, extension_scope=None, 1794 | options=None), 1795 | _descriptor.FieldDescriptor( 1796 | name='serialNumber', full_name='VersionConfirm.serialNumber', index=1, 1797 | number=2, type=9, cpp_type=9, label=2, 1798 | has_default_value=False, default_value=_b("").decode('utf-8'), 1799 | message_type=None, enum_type=None, containing_type=None, 1800 | is_extension=False, extension_scope=None, 1801 | options=None), 1802 | _descriptor.FieldDescriptor( 1803 | name='comfoNetVersion', full_name='VersionConfirm.comfoNetVersion', index=2, 1804 | number=3, type=13, cpp_type=3, label=2, 1805 | has_default_value=False, default_value=0, 1806 | message_type=None, enum_type=None, containing_type=None, 1807 | is_extension=False, extension_scope=None, 1808 | options=None), 1809 | ], 1810 | extensions=[ 1811 | ], 1812 | nested_types=[], 1813 | enum_types=[ 1814 | ], 1815 | options=None, 1816 | is_extendable=False, 1817 | extension_ranges=[], 1818 | oneofs=[ 1819 | ], 1820 | serialized_start=4357, 1821 | serialized_end=4444, 1822 | ) 1823 | 1824 | 1825 | _CNTIMEREQUEST = _descriptor.Descriptor( 1826 | name='CnTimeRequest', 1827 | full_name='CnTimeRequest', 1828 | filename=None, 1829 | file=DESCRIPTOR, 1830 | containing_type=None, 1831 | fields=[ 1832 | _descriptor.FieldDescriptor( 1833 | name='setTime', full_name='CnTimeRequest.setTime', index=0, 1834 | number=1, type=13, cpp_type=3, label=1, 1835 | has_default_value=False, default_value=0, 1836 | message_type=None, enum_type=None, containing_type=None, 1837 | is_extension=False, extension_scope=None, 1838 | options=None), 1839 | ], 1840 | extensions=[ 1841 | ], 1842 | nested_types=[], 1843 | enum_types=[ 1844 | ], 1845 | options=None, 1846 | is_extendable=False, 1847 | extension_ranges=[], 1848 | oneofs=[ 1849 | ], 1850 | serialized_start=4446, 1851 | serialized_end=4478, 1852 | ) 1853 | 1854 | 1855 | _CNTIMECONFIRM = _descriptor.Descriptor( 1856 | name='CnTimeConfirm', 1857 | full_name='CnTimeConfirm', 1858 | filename=None, 1859 | file=DESCRIPTOR, 1860 | containing_type=None, 1861 | fields=[ 1862 | _descriptor.FieldDescriptor( 1863 | name='currentTime', full_name='CnTimeConfirm.currentTime', index=0, 1864 | number=1, type=13, cpp_type=3, label=2, 1865 | has_default_value=False, default_value=0, 1866 | message_type=None, enum_type=None, containing_type=None, 1867 | is_extension=False, extension_scope=None, 1868 | options=None), 1869 | ], 1870 | extensions=[ 1871 | ], 1872 | nested_types=[], 1873 | enum_types=[ 1874 | ], 1875 | options=None, 1876 | is_extendable=False, 1877 | extension_ranges=[], 1878 | oneofs=[ 1879 | ], 1880 | serialized_start=4480, 1881 | serialized_end=4516, 1882 | ) 1883 | 1884 | 1885 | _CNNODEREQUEST = _descriptor.Descriptor( 1886 | name='CnNodeRequest', 1887 | full_name='CnNodeRequest', 1888 | filename=None, 1889 | file=DESCRIPTOR, 1890 | containing_type=None, 1891 | fields=[ 1892 | ], 1893 | extensions=[ 1894 | ], 1895 | nested_types=[], 1896 | enum_types=[ 1897 | ], 1898 | options=None, 1899 | is_extendable=False, 1900 | extension_ranges=[], 1901 | oneofs=[ 1902 | ], 1903 | serialized_start=4518, 1904 | serialized_end=4533, 1905 | ) 1906 | 1907 | 1908 | _CNNODENOTIFICATION = _descriptor.Descriptor( 1909 | name='CnNodeNotification', 1910 | full_name='CnNodeNotification', 1911 | filename=None, 1912 | file=DESCRIPTOR, 1913 | containing_type=None, 1914 | fields=[ 1915 | _descriptor.FieldDescriptor( 1916 | name='nodeId', full_name='CnNodeNotification.nodeId', index=0, 1917 | number=1, type=13, cpp_type=3, label=2, 1918 | has_default_value=False, default_value=0, 1919 | message_type=None, enum_type=None, containing_type=None, 1920 | is_extension=False, extension_scope=None, 1921 | options=None), 1922 | _descriptor.FieldDescriptor( 1923 | name='productId', full_name='CnNodeNotification.productId', index=1, 1924 | number=2, type=13, cpp_type=3, label=1, 1925 | has_default_value=True, default_value=0, 1926 | message_type=None, enum_type=None, containing_type=None, 1927 | is_extension=False, extension_scope=None, 1928 | options=None), 1929 | _descriptor.FieldDescriptor( 1930 | name='zoneId', full_name='CnNodeNotification.zoneId', index=2, 1931 | number=3, type=13, cpp_type=3, label=1, 1932 | has_default_value=False, default_value=0, 1933 | message_type=None, enum_type=None, containing_type=None, 1934 | is_extension=False, extension_scope=None, 1935 | options=None), 1936 | _descriptor.FieldDescriptor( 1937 | name='mode', full_name='CnNodeNotification.mode', index=3, 1938 | number=4, type=14, cpp_type=8, label=1, 1939 | has_default_value=False, default_value=0, 1940 | message_type=None, enum_type=None, containing_type=None, 1941 | is_extension=False, extension_scope=None, 1942 | options=None), 1943 | ], 1944 | extensions=[ 1945 | ], 1946 | nested_types=[], 1947 | enum_types=[ 1948 | _CNNODENOTIFICATION_NODEMODETYPE, 1949 | ], 1950 | options=None, 1951 | is_extendable=False, 1952 | extension_ranges=[], 1953 | oneofs=[ 1954 | ], 1955 | serialized_start=4536, 1956 | serialized_end=4743, 1957 | ) 1958 | 1959 | 1960 | _CNRMIREQUEST = _descriptor.Descriptor( 1961 | name='CnRmiRequest', 1962 | full_name='CnRmiRequest', 1963 | filename=None, 1964 | file=DESCRIPTOR, 1965 | containing_type=None, 1966 | fields=[ 1967 | _descriptor.FieldDescriptor( 1968 | name='nodeId', full_name='CnRmiRequest.nodeId', index=0, 1969 | number=1, type=13, cpp_type=3, label=2, 1970 | has_default_value=False, default_value=0, 1971 | message_type=None, enum_type=None, containing_type=None, 1972 | is_extension=False, extension_scope=None, 1973 | options=None), 1974 | _descriptor.FieldDescriptor( 1975 | name='message', full_name='CnRmiRequest.message', index=1, 1976 | number=2, type=12, cpp_type=9, label=2, 1977 | has_default_value=False, default_value=_b(""), 1978 | message_type=None, enum_type=None, containing_type=None, 1979 | is_extension=False, extension_scope=None, 1980 | options=None), 1981 | ], 1982 | extensions=[ 1983 | ], 1984 | nested_types=[], 1985 | enum_types=[ 1986 | ], 1987 | options=None, 1988 | is_extendable=False, 1989 | extension_ranges=[], 1990 | oneofs=[ 1991 | ], 1992 | serialized_start=4745, 1993 | serialized_end=4792, 1994 | ) 1995 | 1996 | 1997 | _CNRMIRESPONSE = _descriptor.Descriptor( 1998 | name='CnRmiResponse', 1999 | full_name='CnRmiResponse', 2000 | filename=None, 2001 | file=DESCRIPTOR, 2002 | containing_type=None, 2003 | fields=[ 2004 | _descriptor.FieldDescriptor( 2005 | name='result', full_name='CnRmiResponse.result', index=0, 2006 | number=1, type=13, cpp_type=3, label=1, 2007 | has_default_value=True, default_value=0, 2008 | message_type=None, enum_type=None, containing_type=None, 2009 | is_extension=False, extension_scope=None, 2010 | options=None), 2011 | _descriptor.FieldDescriptor( 2012 | name='message', full_name='CnRmiResponse.message', index=1, 2013 | number=2, type=12, cpp_type=9, label=1, 2014 | has_default_value=False, default_value=_b(""), 2015 | message_type=None, enum_type=None, containing_type=None, 2016 | is_extension=False, extension_scope=None, 2017 | options=None), 2018 | ], 2019 | extensions=[ 2020 | ], 2021 | nested_types=[], 2022 | enum_types=[ 2023 | ], 2024 | options=None, 2025 | is_extendable=False, 2026 | extension_ranges=[], 2027 | oneofs=[ 2028 | ], 2029 | serialized_start=4794, 2030 | serialized_end=4845, 2031 | ) 2032 | 2033 | 2034 | _CNRMIASYNCREQUEST = _descriptor.Descriptor( 2035 | name='CnRmiAsyncRequest', 2036 | full_name='CnRmiAsyncRequest', 2037 | filename=None, 2038 | file=DESCRIPTOR, 2039 | containing_type=None, 2040 | fields=[ 2041 | _descriptor.FieldDescriptor( 2042 | name='nodeId', full_name='CnRmiAsyncRequest.nodeId', index=0, 2043 | number=1, type=13, cpp_type=3, label=2, 2044 | has_default_value=False, default_value=0, 2045 | message_type=None, enum_type=None, containing_type=None, 2046 | is_extension=False, extension_scope=None, 2047 | options=None), 2048 | _descriptor.FieldDescriptor( 2049 | name='message', full_name='CnRmiAsyncRequest.message', index=1, 2050 | number=2, type=12, cpp_type=9, label=2, 2051 | has_default_value=False, default_value=_b(""), 2052 | message_type=None, enum_type=None, containing_type=None, 2053 | is_extension=False, extension_scope=None, 2054 | options=None), 2055 | ], 2056 | extensions=[ 2057 | ], 2058 | nested_types=[], 2059 | enum_types=[ 2060 | ], 2061 | options=None, 2062 | is_extendable=False, 2063 | extension_ranges=[], 2064 | oneofs=[ 2065 | ], 2066 | serialized_start=4847, 2067 | serialized_end=4899, 2068 | ) 2069 | 2070 | 2071 | _CNRMIASYNCCONFIRM = _descriptor.Descriptor( 2072 | name='CnRmiAsyncConfirm', 2073 | full_name='CnRmiAsyncConfirm', 2074 | filename=None, 2075 | file=DESCRIPTOR, 2076 | containing_type=None, 2077 | fields=[ 2078 | _descriptor.FieldDescriptor( 2079 | name='result', full_name='CnRmiAsyncConfirm.result', index=0, 2080 | number=1, type=13, cpp_type=3, label=1, 2081 | has_default_value=True, default_value=0, 2082 | message_type=None, enum_type=None, containing_type=None, 2083 | is_extension=False, extension_scope=None, 2084 | options=None), 2085 | ], 2086 | extensions=[ 2087 | ], 2088 | nested_types=[], 2089 | enum_types=[ 2090 | ], 2091 | options=None, 2092 | is_extendable=False, 2093 | extension_ranges=[], 2094 | oneofs=[ 2095 | ], 2096 | serialized_start=4901, 2097 | serialized_end=4939, 2098 | ) 2099 | 2100 | 2101 | _CNRMIASYNCRESPONSE = _descriptor.Descriptor( 2102 | name='CnRmiAsyncResponse', 2103 | full_name='CnRmiAsyncResponse', 2104 | filename=None, 2105 | file=DESCRIPTOR, 2106 | containing_type=None, 2107 | fields=[ 2108 | _descriptor.FieldDescriptor( 2109 | name='result', full_name='CnRmiAsyncResponse.result', index=0, 2110 | number=1, type=13, cpp_type=3, label=1, 2111 | has_default_value=True, default_value=0, 2112 | message_type=None, enum_type=None, containing_type=None, 2113 | is_extension=False, extension_scope=None, 2114 | options=None), 2115 | _descriptor.FieldDescriptor( 2116 | name='message', full_name='CnRmiAsyncResponse.message', index=1, 2117 | number=2, type=12, cpp_type=9, label=1, 2118 | has_default_value=False, default_value=_b(""), 2119 | message_type=None, enum_type=None, containing_type=None, 2120 | is_extension=False, extension_scope=None, 2121 | options=None), 2122 | ], 2123 | extensions=[ 2124 | ], 2125 | nested_types=[], 2126 | enum_types=[ 2127 | ], 2128 | options=None, 2129 | is_extendable=False, 2130 | extension_ranges=[], 2131 | oneofs=[ 2132 | ], 2133 | serialized_start=4941, 2134 | serialized_end=4997, 2135 | ) 2136 | 2137 | 2138 | _CNRPDOREQUEST = _descriptor.Descriptor( 2139 | name='CnRpdoRequest', 2140 | full_name='CnRpdoRequest', 2141 | filename=None, 2142 | file=DESCRIPTOR, 2143 | containing_type=None, 2144 | fields=[ 2145 | _descriptor.FieldDescriptor( 2146 | name='pdid', full_name='CnRpdoRequest.pdid', index=0, 2147 | number=1, type=13, cpp_type=3, label=2, 2148 | has_default_value=False, default_value=0, 2149 | message_type=None, enum_type=None, containing_type=None, 2150 | is_extension=False, extension_scope=None, 2151 | options=None), 2152 | _descriptor.FieldDescriptor( 2153 | name='zone', full_name='CnRpdoRequest.zone', index=1, 2154 | number=2, type=13, cpp_type=3, label=1, 2155 | has_default_value=True, default_value=255, 2156 | message_type=None, enum_type=None, containing_type=None, 2157 | is_extension=False, extension_scope=None, 2158 | options=None), 2159 | _descriptor.FieldDescriptor( 2160 | name='type', full_name='CnRpdoRequest.type', index=2, 2161 | number=3, type=13, cpp_type=3, label=1, 2162 | has_default_value=False, default_value=0, 2163 | message_type=None, enum_type=None, containing_type=None, 2164 | is_extension=False, extension_scope=None, 2165 | options=None), 2166 | _descriptor.FieldDescriptor( 2167 | name='timeout', full_name='CnRpdoRequest.timeout', index=3, 2168 | number=4, type=13, cpp_type=3, label=1, 2169 | has_default_value=True, default_value=4294967295, 2170 | message_type=None, enum_type=None, containing_type=None, 2171 | is_extension=False, extension_scope=None, 2172 | options=None), 2173 | ], 2174 | extensions=[ 2175 | ], 2176 | nested_types=[], 2177 | enum_types=[ 2178 | ], 2179 | options=None, 2180 | is_extendable=False, 2181 | extension_ranges=[], 2182 | oneofs=[ 2183 | ], 2184 | serialized_start=4999, 2185 | serialized_end=5090, 2186 | ) 2187 | 2188 | 2189 | _CNRPDOCONFIRM = _descriptor.Descriptor( 2190 | name='CnRpdoConfirm', 2191 | full_name='CnRpdoConfirm', 2192 | filename=None, 2193 | file=DESCRIPTOR, 2194 | containing_type=None, 2195 | fields=[ 2196 | ], 2197 | extensions=[ 2198 | ], 2199 | nested_types=[], 2200 | enum_types=[ 2201 | ], 2202 | options=None, 2203 | is_extendable=False, 2204 | extension_ranges=[], 2205 | oneofs=[ 2206 | ], 2207 | serialized_start=5092, 2208 | serialized_end=5107, 2209 | ) 2210 | 2211 | 2212 | _CNRPDONOTIFICATION = _descriptor.Descriptor( 2213 | name='CnRpdoNotification', 2214 | full_name='CnRpdoNotification', 2215 | filename=None, 2216 | file=DESCRIPTOR, 2217 | containing_type=None, 2218 | fields=[ 2219 | _descriptor.FieldDescriptor( 2220 | name='pdid', full_name='CnRpdoNotification.pdid', index=0, 2221 | number=1, type=13, cpp_type=3, label=2, 2222 | has_default_value=False, default_value=0, 2223 | message_type=None, enum_type=None, containing_type=None, 2224 | is_extension=False, extension_scope=None, 2225 | options=None), 2226 | _descriptor.FieldDescriptor( 2227 | name='data', full_name='CnRpdoNotification.data', index=1, 2228 | number=2, type=12, cpp_type=9, label=2, 2229 | has_default_value=False, default_value=_b(""), 2230 | message_type=None, enum_type=None, containing_type=None, 2231 | is_extension=False, extension_scope=None, 2232 | options=None), 2233 | ], 2234 | extensions=[ 2235 | ], 2236 | nested_types=[], 2237 | enum_types=[ 2238 | ], 2239 | options=None, 2240 | is_extendable=False, 2241 | extension_ranges=[], 2242 | oneofs=[ 2243 | ], 2244 | serialized_start=5109, 2245 | serialized_end=5157, 2246 | ) 2247 | 2248 | 2249 | _CNALARMNOTIFICATION = _descriptor.Descriptor( 2250 | name='CnAlarmNotification', 2251 | full_name='CnAlarmNotification', 2252 | filename=None, 2253 | file=DESCRIPTOR, 2254 | containing_type=None, 2255 | fields=[ 2256 | _descriptor.FieldDescriptor( 2257 | name='zone', full_name='CnAlarmNotification.zone', index=0, 2258 | number=1, type=13, cpp_type=3, label=1, 2259 | has_default_value=False, default_value=0, 2260 | message_type=None, enum_type=None, containing_type=None, 2261 | is_extension=False, extension_scope=None, 2262 | options=None), 2263 | _descriptor.FieldDescriptor( 2264 | name='productId', full_name='CnAlarmNotification.productId', index=1, 2265 | number=2, type=13, cpp_type=3, label=1, 2266 | has_default_value=False, default_value=0, 2267 | message_type=None, enum_type=None, containing_type=None, 2268 | is_extension=False, extension_scope=None, 2269 | options=None), 2270 | _descriptor.FieldDescriptor( 2271 | name='productVariant', full_name='CnAlarmNotification.productVariant', index=2, 2272 | number=3, type=13, cpp_type=3, label=1, 2273 | has_default_value=False, default_value=0, 2274 | message_type=None, enum_type=None, containing_type=None, 2275 | is_extension=False, extension_scope=None, 2276 | options=None), 2277 | _descriptor.FieldDescriptor( 2278 | name='serialNumber', full_name='CnAlarmNotification.serialNumber', index=3, 2279 | number=4, type=9, cpp_type=9, label=1, 2280 | has_default_value=False, default_value=_b("").decode('utf-8'), 2281 | message_type=None, enum_type=None, containing_type=None, 2282 | is_extension=False, extension_scope=None, 2283 | options=None), 2284 | _descriptor.FieldDescriptor( 2285 | name='swProgramVersion', full_name='CnAlarmNotification.swProgramVersion', index=4, 2286 | number=5, type=13, cpp_type=3, label=1, 2287 | has_default_value=False, default_value=0, 2288 | message_type=None, enum_type=None, containing_type=None, 2289 | is_extension=False, extension_scope=None, 2290 | options=None), 2291 | _descriptor.FieldDescriptor( 2292 | name='errors', full_name='CnAlarmNotification.errors', index=5, 2293 | number=6, type=12, cpp_type=9, label=1, 2294 | has_default_value=False, default_value=_b(""), 2295 | message_type=None, enum_type=None, containing_type=None, 2296 | is_extension=False, extension_scope=None, 2297 | options=None), 2298 | _descriptor.FieldDescriptor( 2299 | name='errorId', full_name='CnAlarmNotification.errorId', index=6, 2300 | number=7, type=13, cpp_type=3, label=1, 2301 | has_default_value=False, default_value=0, 2302 | message_type=None, enum_type=None, containing_type=None, 2303 | is_extension=False, extension_scope=None, 2304 | options=None), 2305 | _descriptor.FieldDescriptor( 2306 | name='nodeId', full_name='CnAlarmNotification.nodeId', index=7, 2307 | number=8, type=13, cpp_type=3, label=1, 2308 | has_default_value=False, default_value=0, 2309 | message_type=None, enum_type=None, containing_type=None, 2310 | is_extension=False, extension_scope=None, 2311 | options=None), 2312 | ], 2313 | extensions=[ 2314 | ], 2315 | nested_types=[], 2316 | enum_types=[ 2317 | ], 2318 | options=None, 2319 | is_extendable=False, 2320 | extension_ranges=[], 2321 | oneofs=[ 2322 | ], 2323 | serialized_start=5160, 2324 | serialized_end=5335, 2325 | ) 2326 | 2327 | 2328 | _CNFUPREADREGISTERREQUEST = _descriptor.Descriptor( 2329 | name='CnFupReadRegisterRequest', 2330 | full_name='CnFupReadRegisterRequest', 2331 | filename=None, 2332 | file=DESCRIPTOR, 2333 | containing_type=None, 2334 | fields=[ 2335 | _descriptor.FieldDescriptor( 2336 | name='node', full_name='CnFupReadRegisterRequest.node', index=0, 2337 | number=1, type=13, cpp_type=3, label=2, 2338 | has_default_value=False, default_value=0, 2339 | message_type=None, enum_type=None, containing_type=None, 2340 | is_extension=False, extension_scope=None, 2341 | options=None), 2342 | _descriptor.FieldDescriptor( 2343 | name='registerId', full_name='CnFupReadRegisterRequest.registerId', index=1, 2344 | number=2, type=13, cpp_type=3, label=2, 2345 | has_default_value=False, default_value=0, 2346 | message_type=None, enum_type=None, containing_type=None, 2347 | is_extension=False, extension_scope=None, 2348 | options=None), 2349 | _descriptor.FieldDescriptor( 2350 | name='index', full_name='CnFupReadRegisterRequest.index', index=2, 2351 | number=3, type=13, cpp_type=3, label=1, 2352 | has_default_value=False, default_value=0, 2353 | message_type=None, enum_type=None, containing_type=None, 2354 | is_extension=False, extension_scope=None, 2355 | options=None), 2356 | ], 2357 | extensions=[ 2358 | ], 2359 | nested_types=[], 2360 | enum_types=[ 2361 | ], 2362 | options=None, 2363 | is_extendable=False, 2364 | extension_ranges=[], 2365 | oneofs=[ 2366 | ], 2367 | serialized_start=5337, 2368 | serialized_end=5412, 2369 | ) 2370 | 2371 | 2372 | _CNFUPREADREGISTERCONFIRM = _descriptor.Descriptor( 2373 | name='CnFupReadRegisterConfirm', 2374 | full_name='CnFupReadRegisterConfirm', 2375 | filename=None, 2376 | file=DESCRIPTOR, 2377 | containing_type=None, 2378 | fields=[ 2379 | _descriptor.FieldDescriptor( 2380 | name='value', full_name='CnFupReadRegisterConfirm.value', index=0, 2381 | number=1, type=13, cpp_type=3, label=2, 2382 | has_default_value=False, default_value=0, 2383 | message_type=None, enum_type=None, containing_type=None, 2384 | is_extension=False, extension_scope=None, 2385 | options=None), 2386 | ], 2387 | extensions=[ 2388 | ], 2389 | nested_types=[], 2390 | enum_types=[ 2391 | ], 2392 | options=None, 2393 | is_extendable=False, 2394 | extension_ranges=[], 2395 | oneofs=[ 2396 | ], 2397 | serialized_start=5414, 2398 | serialized_end=5455, 2399 | ) 2400 | 2401 | 2402 | _CNFUPPROGRAMBEGINREQUEST = _descriptor.Descriptor( 2403 | name='CnFupProgramBeginRequest', 2404 | full_name='CnFupProgramBeginRequest', 2405 | filename=None, 2406 | file=DESCRIPTOR, 2407 | containing_type=None, 2408 | fields=[ 2409 | _descriptor.FieldDescriptor( 2410 | name='node', full_name='CnFupProgramBeginRequest.node', index=0, 2411 | number=1, type=13, cpp_type=3, label=3, 2412 | has_default_value=False, default_value=[], 2413 | message_type=None, enum_type=None, containing_type=None, 2414 | is_extension=False, extension_scope=None, 2415 | options=None), 2416 | _descriptor.FieldDescriptor( 2417 | name='block', full_name='CnFupProgramBeginRequest.block', index=1, 2418 | number=2, type=13, cpp_type=3, label=1, 2419 | has_default_value=True, default_value=0, 2420 | message_type=None, enum_type=None, containing_type=None, 2421 | is_extension=False, extension_scope=None, 2422 | options=None), 2423 | ], 2424 | extensions=[ 2425 | ], 2426 | nested_types=[], 2427 | enum_types=[ 2428 | ], 2429 | options=None, 2430 | is_extendable=False, 2431 | extension_ranges=[], 2432 | oneofs=[ 2433 | ], 2434 | serialized_start=5457, 2435 | serialized_end=5515, 2436 | ) 2437 | 2438 | 2439 | _CNFUPPROGRAMBEGINCONFIRM = _descriptor.Descriptor( 2440 | name='CnFupProgramBeginConfirm', 2441 | full_name='CnFupProgramBeginConfirm', 2442 | filename=None, 2443 | file=DESCRIPTOR, 2444 | containing_type=None, 2445 | fields=[ 2446 | ], 2447 | extensions=[ 2448 | ], 2449 | nested_types=[], 2450 | enum_types=[ 2451 | ], 2452 | options=None, 2453 | is_extendable=False, 2454 | extension_ranges=[], 2455 | oneofs=[ 2456 | ], 2457 | serialized_start=5517, 2458 | serialized_end=5543, 2459 | ) 2460 | 2461 | 2462 | _CNFUPPROGRAMREQUEST = _descriptor.Descriptor( 2463 | name='CnFupProgramRequest', 2464 | full_name='CnFupProgramRequest', 2465 | filename=None, 2466 | file=DESCRIPTOR, 2467 | containing_type=None, 2468 | fields=[ 2469 | _descriptor.FieldDescriptor( 2470 | name='chunk', full_name='CnFupProgramRequest.chunk', index=0, 2471 | number=1, type=12, cpp_type=9, label=2, 2472 | has_default_value=False, default_value=_b(""), 2473 | message_type=None, enum_type=None, containing_type=None, 2474 | is_extension=False, extension_scope=None, 2475 | options=None), 2476 | ], 2477 | extensions=[ 2478 | ], 2479 | nested_types=[], 2480 | enum_types=[ 2481 | ], 2482 | options=None, 2483 | is_extendable=False, 2484 | extension_ranges=[], 2485 | oneofs=[ 2486 | ], 2487 | serialized_start=5545, 2488 | serialized_end=5581, 2489 | ) 2490 | 2491 | 2492 | _CNFUPPROGRAMCONFIRM = _descriptor.Descriptor( 2493 | name='CnFupProgramConfirm', 2494 | full_name='CnFupProgramConfirm', 2495 | filename=None, 2496 | file=DESCRIPTOR, 2497 | containing_type=None, 2498 | fields=[ 2499 | ], 2500 | extensions=[ 2501 | ], 2502 | nested_types=[], 2503 | enum_types=[ 2504 | ], 2505 | options=None, 2506 | is_extendable=False, 2507 | extension_ranges=[], 2508 | oneofs=[ 2509 | ], 2510 | serialized_start=5583, 2511 | serialized_end=5604, 2512 | ) 2513 | 2514 | 2515 | _CNFUPPROGRAMENDREQUEST = _descriptor.Descriptor( 2516 | name='CnFupProgramEndRequest', 2517 | full_name='CnFupProgramEndRequest', 2518 | filename=None, 2519 | file=DESCRIPTOR, 2520 | containing_type=None, 2521 | fields=[ 2522 | ], 2523 | extensions=[ 2524 | ], 2525 | nested_types=[], 2526 | enum_types=[ 2527 | ], 2528 | options=None, 2529 | is_extendable=False, 2530 | extension_ranges=[], 2531 | oneofs=[ 2532 | ], 2533 | serialized_start=5606, 2534 | serialized_end=5630, 2535 | ) 2536 | 2537 | 2538 | _CNFUPPROGRAMENDCONFIRM = _descriptor.Descriptor( 2539 | name='CnFupProgramEndConfirm', 2540 | full_name='CnFupProgramEndConfirm', 2541 | filename=None, 2542 | file=DESCRIPTOR, 2543 | containing_type=None, 2544 | fields=[ 2545 | ], 2546 | extensions=[ 2547 | ], 2548 | nested_types=[], 2549 | enum_types=[ 2550 | ], 2551 | options=None, 2552 | is_extendable=False, 2553 | extension_ranges=[], 2554 | oneofs=[ 2555 | ], 2556 | serialized_start=5632, 2557 | serialized_end=5656, 2558 | ) 2559 | 2560 | 2561 | _CNFUPREADREQUEST = _descriptor.Descriptor( 2562 | name='CnFupReadRequest', 2563 | full_name='CnFupReadRequest', 2564 | filename=None, 2565 | file=DESCRIPTOR, 2566 | containing_type=None, 2567 | fields=[ 2568 | _descriptor.FieldDescriptor( 2569 | name='node', full_name='CnFupReadRequest.node', index=0, 2570 | number=1, type=13, cpp_type=3, label=2, 2571 | has_default_value=False, default_value=0, 2572 | message_type=None, enum_type=None, containing_type=None, 2573 | is_extension=False, extension_scope=None, 2574 | options=None), 2575 | _descriptor.FieldDescriptor( 2576 | name='block', full_name='CnFupReadRequest.block', index=1, 2577 | number=2, type=13, cpp_type=3, label=1, 2578 | has_default_value=True, default_value=0, 2579 | message_type=None, enum_type=None, containing_type=None, 2580 | is_extension=False, extension_scope=None, 2581 | options=None), 2582 | ], 2583 | extensions=[ 2584 | ], 2585 | nested_types=[], 2586 | enum_types=[ 2587 | ], 2588 | options=None, 2589 | is_extendable=False, 2590 | extension_ranges=[], 2591 | oneofs=[ 2592 | ], 2593 | serialized_start=5658, 2594 | serialized_end=5708, 2595 | ) 2596 | 2597 | 2598 | _CNFUPREADCONFIRM = _descriptor.Descriptor( 2599 | name='CnFupReadConfirm', 2600 | full_name='CnFupReadConfirm', 2601 | filename=None, 2602 | file=DESCRIPTOR, 2603 | containing_type=None, 2604 | fields=[ 2605 | _descriptor.FieldDescriptor( 2606 | name='chunk', full_name='CnFupReadConfirm.chunk', index=0, 2607 | number=1, type=12, cpp_type=9, label=1, 2608 | has_default_value=False, default_value=_b(""), 2609 | message_type=None, enum_type=None, containing_type=None, 2610 | is_extension=False, extension_scope=None, 2611 | options=None), 2612 | _descriptor.FieldDescriptor( 2613 | name='last', full_name='CnFupReadConfirm.last', index=1, 2614 | number=2, type=8, cpp_type=7, label=1, 2615 | has_default_value=True, default_value=False, 2616 | message_type=None, enum_type=None, containing_type=None, 2617 | is_extension=False, extension_scope=None, 2618 | options=None), 2619 | ], 2620 | extensions=[ 2621 | ], 2622 | nested_types=[], 2623 | enum_types=[ 2624 | ], 2625 | options=None, 2626 | is_extendable=False, 2627 | extension_ranges=[], 2628 | oneofs=[ 2629 | ], 2630 | serialized_start=5710, 2631 | serialized_end=5764, 2632 | ) 2633 | 2634 | 2635 | _CNFUPRESETREQUEST = _descriptor.Descriptor( 2636 | name='CnFupResetRequest', 2637 | full_name='CnFupResetRequest', 2638 | filename=None, 2639 | file=DESCRIPTOR, 2640 | containing_type=None, 2641 | fields=[ 2642 | _descriptor.FieldDescriptor( 2643 | name='node', full_name='CnFupResetRequest.node', index=0, 2644 | number=1, type=13, cpp_type=3, label=2, 2645 | has_default_value=False, default_value=0, 2646 | message_type=None, enum_type=None, containing_type=None, 2647 | is_extension=False, extension_scope=None, 2648 | options=None), 2649 | ], 2650 | extensions=[ 2651 | ], 2652 | nested_types=[], 2653 | enum_types=[ 2654 | ], 2655 | options=None, 2656 | is_extendable=False, 2657 | extension_ranges=[], 2658 | oneofs=[ 2659 | ], 2660 | serialized_start=5766, 2661 | serialized_end=5799, 2662 | ) 2663 | 2664 | 2665 | _CNFUPRESETCONFIRM = _descriptor.Descriptor( 2666 | name='CnFupResetConfirm', 2667 | full_name='CnFupResetConfirm', 2668 | filename=None, 2669 | file=DESCRIPTOR, 2670 | containing_type=None, 2671 | fields=[ 2672 | ], 2673 | extensions=[ 2674 | ], 2675 | nested_types=[], 2676 | enum_types=[ 2677 | ], 2678 | options=None, 2679 | is_extendable=False, 2680 | extension_ranges=[], 2681 | oneofs=[ 2682 | ], 2683 | serialized_start=5801, 2684 | serialized_end=5820, 2685 | ) 2686 | 2687 | _DISCOVERYOPERATION.fields_by_name['searchGatewayRequest'].message_type = _SEARCHGATEWAYREQUEST 2688 | _DISCOVERYOPERATION.fields_by_name['searchGatewayResponse'].message_type = _SEARCHGATEWAYRESPONSE 2689 | _GATEWAYOPERATION.fields_by_name['type'].enum_type = _GATEWAYOPERATION_OPERATIONTYPE 2690 | _GATEWAYOPERATION.fields_by_name['result'].enum_type = _GATEWAYOPERATION_GATEWAYRESULT 2691 | _GATEWAYOPERATION_OPERATIONTYPE.containing_type = _GATEWAYOPERATION 2692 | _GATEWAYOPERATION_GATEWAYRESULT.containing_type = _GATEWAYOPERATION 2693 | _GATEWAYNOTIFICATION.fields_by_name['alarm'].message_type = _CNALARMNOTIFICATION 2694 | _LISTREGISTEREDAPPSCONFIRM_APP.containing_type = _LISTREGISTEREDAPPSCONFIRM 2695 | _LISTREGISTEREDAPPSCONFIRM.fields_by_name['apps'].message_type = _LISTREGISTEREDAPPSCONFIRM_APP 2696 | _UPGRADEREQUEST.fields_by_name['command'].enum_type = _UPGRADEREQUEST_UPGRADEREQUESTCOMMAND 2697 | _UPGRADEREQUEST_UPGRADEREQUESTCOMMAND.containing_type = _UPGRADEREQUEST 2698 | _DEBUGREQUEST.fields_by_name['command'].enum_type = _DEBUGREQUEST_DEBUGREQUESTCOMMAND 2699 | _DEBUGREQUEST_DEBUGREQUESTCOMMAND.containing_type = _DEBUGREQUEST 2700 | _CNNODENOTIFICATION.fields_by_name['mode'].enum_type = _CNNODENOTIFICATION_NODEMODETYPE 2701 | _CNNODENOTIFICATION_NODEMODETYPE.containing_type = _CNNODENOTIFICATION 2702 | DESCRIPTOR.message_types_by_name['DiscoveryOperation'] = _DISCOVERYOPERATION 2703 | DESCRIPTOR.message_types_by_name['SearchGatewayRequest'] = _SEARCHGATEWAYREQUEST 2704 | DESCRIPTOR.message_types_by_name['SearchGatewayResponse'] = _SEARCHGATEWAYRESPONSE 2705 | DESCRIPTOR.message_types_by_name['GatewayOperation'] = _GATEWAYOPERATION 2706 | DESCRIPTOR.message_types_by_name['GatewayNotification'] = _GATEWAYNOTIFICATION 2707 | DESCRIPTOR.message_types_by_name['KeepAlive'] = _KEEPALIVE 2708 | DESCRIPTOR.message_types_by_name['FactoryReset'] = _FACTORYRESET 2709 | DESCRIPTOR.message_types_by_name['SetDeviceSettingsRequest'] = _SETDEVICESETTINGSREQUEST 2710 | DESCRIPTOR.message_types_by_name['SetDeviceSettingsConfirm'] = _SETDEVICESETTINGSCONFIRM 2711 | DESCRIPTOR.message_types_by_name['SetAddressRequest'] = _SETADDRESSREQUEST 2712 | DESCRIPTOR.message_types_by_name['SetAddressConfirm'] = _SETADDRESSCONFIRM 2713 | DESCRIPTOR.message_types_by_name['RegisterAppRequest'] = _REGISTERAPPREQUEST 2714 | DESCRIPTOR.message_types_by_name['RegisterAppConfirm'] = _REGISTERAPPCONFIRM 2715 | DESCRIPTOR.message_types_by_name['StartSessionRequest'] = _STARTSESSIONREQUEST 2716 | DESCRIPTOR.message_types_by_name['StartSessionConfirm'] = _STARTSESSIONCONFIRM 2717 | DESCRIPTOR.message_types_by_name['CloseSessionRequest'] = _CLOSESESSIONREQUEST 2718 | DESCRIPTOR.message_types_by_name['CloseSessionConfirm'] = _CLOSESESSIONCONFIRM 2719 | DESCRIPTOR.message_types_by_name['ListRegisteredAppsRequest'] = _LISTREGISTEREDAPPSREQUEST 2720 | DESCRIPTOR.message_types_by_name['ListRegisteredAppsConfirm'] = _LISTREGISTEREDAPPSCONFIRM 2721 | DESCRIPTOR.message_types_by_name['DeregisterAppRequest'] = _DEREGISTERAPPREQUEST 2722 | DESCRIPTOR.message_types_by_name['DeregisterAppConfirm'] = _DEREGISTERAPPCONFIRM 2723 | DESCRIPTOR.message_types_by_name['ChangePinRequest'] = _CHANGEPINREQUEST 2724 | DESCRIPTOR.message_types_by_name['ChangePinConfirm'] = _CHANGEPINCONFIRM 2725 | DESCRIPTOR.message_types_by_name['GetRemoteAccessIdRequest'] = _GETREMOTEACCESSIDREQUEST 2726 | DESCRIPTOR.message_types_by_name['GetRemoteAccessIdConfirm'] = _GETREMOTEACCESSIDCONFIRM 2727 | DESCRIPTOR.message_types_by_name['SetRemoteAccessIdRequest'] = _SETREMOTEACCESSIDREQUEST 2728 | DESCRIPTOR.message_types_by_name['SetRemoteAccessIdConfirm'] = _SETREMOTEACCESSIDCONFIRM 2729 | DESCRIPTOR.message_types_by_name['GetSupportIdRequest'] = _GETSUPPORTIDREQUEST 2730 | DESCRIPTOR.message_types_by_name['GetSupportIdConfirm'] = _GETSUPPORTIDCONFIRM 2731 | DESCRIPTOR.message_types_by_name['SetSupportIdRequest'] = _SETSUPPORTIDREQUEST 2732 | DESCRIPTOR.message_types_by_name['SetSupportIdConfirm'] = _SETSUPPORTIDCONFIRM 2733 | DESCRIPTOR.message_types_by_name['GetWebIdRequest'] = _GETWEBIDREQUEST 2734 | DESCRIPTOR.message_types_by_name['GetWebIdConfirm'] = _GETWEBIDCONFIRM 2735 | DESCRIPTOR.message_types_by_name['SetWebIdRequest'] = _SETWEBIDREQUEST 2736 | DESCRIPTOR.message_types_by_name['SetWebIdConfirm'] = _SETWEBIDCONFIRM 2737 | DESCRIPTOR.message_types_by_name['SetPushIdRequest'] = _SETPUSHIDREQUEST 2738 | DESCRIPTOR.message_types_by_name['SetPushIdConfirm'] = _SETPUSHIDCONFIRM 2739 | DESCRIPTOR.message_types_by_name['UpgradeRequest'] = _UPGRADEREQUEST 2740 | DESCRIPTOR.message_types_by_name['UpgradeConfirm'] = _UPGRADECONFIRM 2741 | DESCRIPTOR.message_types_by_name['DebugRequest'] = _DEBUGREQUEST 2742 | DESCRIPTOR.message_types_by_name['DebugConfirm'] = _DEBUGCONFIRM 2743 | DESCRIPTOR.message_types_by_name['VersionRequest'] = _VERSIONREQUEST 2744 | DESCRIPTOR.message_types_by_name['VersionConfirm'] = _VERSIONCONFIRM 2745 | DESCRIPTOR.message_types_by_name['CnTimeRequest'] = _CNTIMEREQUEST 2746 | DESCRIPTOR.message_types_by_name['CnTimeConfirm'] = _CNTIMECONFIRM 2747 | DESCRIPTOR.message_types_by_name['CnNodeRequest'] = _CNNODEREQUEST 2748 | DESCRIPTOR.message_types_by_name['CnNodeNotification'] = _CNNODENOTIFICATION 2749 | DESCRIPTOR.message_types_by_name['CnRmiRequest'] = _CNRMIREQUEST 2750 | DESCRIPTOR.message_types_by_name['CnRmiResponse'] = _CNRMIRESPONSE 2751 | DESCRIPTOR.message_types_by_name['CnRmiAsyncRequest'] = _CNRMIASYNCREQUEST 2752 | DESCRIPTOR.message_types_by_name['CnRmiAsyncConfirm'] = _CNRMIASYNCCONFIRM 2753 | DESCRIPTOR.message_types_by_name['CnRmiAsyncResponse'] = _CNRMIASYNCRESPONSE 2754 | DESCRIPTOR.message_types_by_name['CnRpdoRequest'] = _CNRPDOREQUEST 2755 | DESCRIPTOR.message_types_by_name['CnRpdoConfirm'] = _CNRPDOCONFIRM 2756 | DESCRIPTOR.message_types_by_name['CnRpdoNotification'] = _CNRPDONOTIFICATION 2757 | DESCRIPTOR.message_types_by_name['CnAlarmNotification'] = _CNALARMNOTIFICATION 2758 | DESCRIPTOR.message_types_by_name['CnFupReadRegisterRequest'] = _CNFUPREADREGISTERREQUEST 2759 | DESCRIPTOR.message_types_by_name['CnFupReadRegisterConfirm'] = _CNFUPREADREGISTERCONFIRM 2760 | DESCRIPTOR.message_types_by_name['CnFupProgramBeginRequest'] = _CNFUPPROGRAMBEGINREQUEST 2761 | DESCRIPTOR.message_types_by_name['CnFupProgramBeginConfirm'] = _CNFUPPROGRAMBEGINCONFIRM 2762 | DESCRIPTOR.message_types_by_name['CnFupProgramRequest'] = _CNFUPPROGRAMREQUEST 2763 | DESCRIPTOR.message_types_by_name['CnFupProgramConfirm'] = _CNFUPPROGRAMCONFIRM 2764 | DESCRIPTOR.message_types_by_name['CnFupProgramEndRequest'] = _CNFUPPROGRAMENDREQUEST 2765 | DESCRIPTOR.message_types_by_name['CnFupProgramEndConfirm'] = _CNFUPPROGRAMENDCONFIRM 2766 | DESCRIPTOR.message_types_by_name['CnFupReadRequest'] = _CNFUPREADREQUEST 2767 | DESCRIPTOR.message_types_by_name['CnFupReadConfirm'] = _CNFUPREADCONFIRM 2768 | DESCRIPTOR.message_types_by_name['CnFupResetRequest'] = _CNFUPRESETREQUEST 2769 | DESCRIPTOR.message_types_by_name['CnFupResetConfirm'] = _CNFUPRESETCONFIRM 2770 | 2771 | DiscoveryOperation = _reflection.GeneratedProtocolMessageType('DiscoveryOperation', (_message.Message,), dict( 2772 | DESCRIPTOR = _DISCOVERYOPERATION, 2773 | __module__ = 'zehnder_pb2' 2774 | # @@protoc_insertion_point(class_scope:DiscoveryOperation) 2775 | )) 2776 | _sym_db.RegisterMessage(DiscoveryOperation) 2777 | 2778 | SearchGatewayRequest = _reflection.GeneratedProtocolMessageType('SearchGatewayRequest', (_message.Message,), dict( 2779 | DESCRIPTOR = _SEARCHGATEWAYREQUEST, 2780 | __module__ = 'zehnder_pb2' 2781 | # @@protoc_insertion_point(class_scope:SearchGatewayRequest) 2782 | )) 2783 | _sym_db.RegisterMessage(SearchGatewayRequest) 2784 | 2785 | SearchGatewayResponse = _reflection.GeneratedProtocolMessageType('SearchGatewayResponse', (_message.Message,), dict( 2786 | DESCRIPTOR = _SEARCHGATEWAYRESPONSE, 2787 | __module__ = 'zehnder_pb2' 2788 | # @@protoc_insertion_point(class_scope:SearchGatewayResponse) 2789 | )) 2790 | _sym_db.RegisterMessage(SearchGatewayResponse) 2791 | 2792 | GatewayOperation = _reflection.GeneratedProtocolMessageType('GatewayOperation', (_message.Message,), dict( 2793 | DESCRIPTOR = _GATEWAYOPERATION, 2794 | __module__ = 'zehnder_pb2' 2795 | # @@protoc_insertion_point(class_scope:GatewayOperation) 2796 | )) 2797 | _sym_db.RegisterMessage(GatewayOperation) 2798 | 2799 | GatewayNotification = _reflection.GeneratedProtocolMessageType('GatewayNotification', (_message.Message,), dict( 2800 | DESCRIPTOR = _GATEWAYNOTIFICATION, 2801 | __module__ = 'zehnder_pb2' 2802 | # @@protoc_insertion_point(class_scope:GatewayNotification) 2803 | )) 2804 | _sym_db.RegisterMessage(GatewayNotification) 2805 | 2806 | KeepAlive = _reflection.GeneratedProtocolMessageType('KeepAlive', (_message.Message,), dict( 2807 | DESCRIPTOR = _KEEPALIVE, 2808 | __module__ = 'zehnder_pb2' 2809 | # @@protoc_insertion_point(class_scope:KeepAlive) 2810 | )) 2811 | _sym_db.RegisterMessage(KeepAlive) 2812 | 2813 | FactoryReset = _reflection.GeneratedProtocolMessageType('FactoryReset', (_message.Message,), dict( 2814 | DESCRIPTOR = _FACTORYRESET, 2815 | __module__ = 'zehnder_pb2' 2816 | # @@protoc_insertion_point(class_scope:FactoryReset) 2817 | )) 2818 | _sym_db.RegisterMessage(FactoryReset) 2819 | 2820 | SetDeviceSettingsRequest = _reflection.GeneratedProtocolMessageType('SetDeviceSettingsRequest', (_message.Message,), dict( 2821 | DESCRIPTOR = _SETDEVICESETTINGSREQUEST, 2822 | __module__ = 'zehnder_pb2' 2823 | # @@protoc_insertion_point(class_scope:SetDeviceSettingsRequest) 2824 | )) 2825 | _sym_db.RegisterMessage(SetDeviceSettingsRequest) 2826 | 2827 | SetDeviceSettingsConfirm = _reflection.GeneratedProtocolMessageType('SetDeviceSettingsConfirm', (_message.Message,), dict( 2828 | DESCRIPTOR = _SETDEVICESETTINGSCONFIRM, 2829 | __module__ = 'zehnder_pb2' 2830 | # @@protoc_insertion_point(class_scope:SetDeviceSettingsConfirm) 2831 | )) 2832 | _sym_db.RegisterMessage(SetDeviceSettingsConfirm) 2833 | 2834 | SetAddressRequest = _reflection.GeneratedProtocolMessageType('SetAddressRequest', (_message.Message,), dict( 2835 | DESCRIPTOR = _SETADDRESSREQUEST, 2836 | __module__ = 'zehnder_pb2' 2837 | # @@protoc_insertion_point(class_scope:SetAddressRequest) 2838 | )) 2839 | _sym_db.RegisterMessage(SetAddressRequest) 2840 | 2841 | SetAddressConfirm = _reflection.GeneratedProtocolMessageType('SetAddressConfirm', (_message.Message,), dict( 2842 | DESCRIPTOR = _SETADDRESSCONFIRM, 2843 | __module__ = 'zehnder_pb2' 2844 | # @@protoc_insertion_point(class_scope:SetAddressConfirm) 2845 | )) 2846 | _sym_db.RegisterMessage(SetAddressConfirm) 2847 | 2848 | RegisterAppRequest = _reflection.GeneratedProtocolMessageType('RegisterAppRequest', (_message.Message,), dict( 2849 | DESCRIPTOR = _REGISTERAPPREQUEST, 2850 | __module__ = 'zehnder_pb2' 2851 | # @@protoc_insertion_point(class_scope:RegisterAppRequest) 2852 | )) 2853 | _sym_db.RegisterMessage(RegisterAppRequest) 2854 | 2855 | RegisterAppConfirm = _reflection.GeneratedProtocolMessageType('RegisterAppConfirm', (_message.Message,), dict( 2856 | DESCRIPTOR = _REGISTERAPPCONFIRM, 2857 | __module__ = 'zehnder_pb2' 2858 | # @@protoc_insertion_point(class_scope:RegisterAppConfirm) 2859 | )) 2860 | _sym_db.RegisterMessage(RegisterAppConfirm) 2861 | 2862 | StartSessionRequest = _reflection.GeneratedProtocolMessageType('StartSessionRequest', (_message.Message,), dict( 2863 | DESCRIPTOR = _STARTSESSIONREQUEST, 2864 | __module__ = 'zehnder_pb2' 2865 | # @@protoc_insertion_point(class_scope:StartSessionRequest) 2866 | )) 2867 | _sym_db.RegisterMessage(StartSessionRequest) 2868 | 2869 | StartSessionConfirm = _reflection.GeneratedProtocolMessageType('StartSessionConfirm', (_message.Message,), dict( 2870 | DESCRIPTOR = _STARTSESSIONCONFIRM, 2871 | __module__ = 'zehnder_pb2' 2872 | # @@protoc_insertion_point(class_scope:StartSessionConfirm) 2873 | )) 2874 | _sym_db.RegisterMessage(StartSessionConfirm) 2875 | 2876 | CloseSessionRequest = _reflection.GeneratedProtocolMessageType('CloseSessionRequest', (_message.Message,), dict( 2877 | DESCRIPTOR = _CLOSESESSIONREQUEST, 2878 | __module__ = 'zehnder_pb2' 2879 | # @@protoc_insertion_point(class_scope:CloseSessionRequest) 2880 | )) 2881 | _sym_db.RegisterMessage(CloseSessionRequest) 2882 | 2883 | CloseSessionConfirm = _reflection.GeneratedProtocolMessageType('CloseSessionConfirm', (_message.Message,), dict( 2884 | DESCRIPTOR = _CLOSESESSIONCONFIRM, 2885 | __module__ = 'zehnder_pb2' 2886 | # @@protoc_insertion_point(class_scope:CloseSessionConfirm) 2887 | )) 2888 | _sym_db.RegisterMessage(CloseSessionConfirm) 2889 | 2890 | ListRegisteredAppsRequest = _reflection.GeneratedProtocolMessageType('ListRegisteredAppsRequest', (_message.Message,), dict( 2891 | DESCRIPTOR = _LISTREGISTEREDAPPSREQUEST, 2892 | __module__ = 'zehnder_pb2' 2893 | # @@protoc_insertion_point(class_scope:ListRegisteredAppsRequest) 2894 | )) 2895 | _sym_db.RegisterMessage(ListRegisteredAppsRequest) 2896 | 2897 | ListRegisteredAppsConfirm = _reflection.GeneratedProtocolMessageType('ListRegisteredAppsConfirm', (_message.Message,), dict( 2898 | 2899 | App = _reflection.GeneratedProtocolMessageType('App', (_message.Message,), dict( 2900 | DESCRIPTOR = _LISTREGISTEREDAPPSCONFIRM_APP, 2901 | __module__ = 'zehnder_pb2' 2902 | # @@protoc_insertion_point(class_scope:ListRegisteredAppsConfirm.App) 2903 | )) 2904 | , 2905 | DESCRIPTOR = _LISTREGISTEREDAPPSCONFIRM, 2906 | __module__ = 'zehnder_pb2' 2907 | # @@protoc_insertion_point(class_scope:ListRegisteredAppsConfirm) 2908 | )) 2909 | _sym_db.RegisterMessage(ListRegisteredAppsConfirm) 2910 | _sym_db.RegisterMessage(ListRegisteredAppsConfirm.App) 2911 | 2912 | DeregisterAppRequest = _reflection.GeneratedProtocolMessageType('DeregisterAppRequest', (_message.Message,), dict( 2913 | DESCRIPTOR = _DEREGISTERAPPREQUEST, 2914 | __module__ = 'zehnder_pb2' 2915 | # @@protoc_insertion_point(class_scope:DeregisterAppRequest) 2916 | )) 2917 | _sym_db.RegisterMessage(DeregisterAppRequest) 2918 | 2919 | DeregisterAppConfirm = _reflection.GeneratedProtocolMessageType('DeregisterAppConfirm', (_message.Message,), dict( 2920 | DESCRIPTOR = _DEREGISTERAPPCONFIRM, 2921 | __module__ = 'zehnder_pb2' 2922 | # @@protoc_insertion_point(class_scope:DeregisterAppConfirm) 2923 | )) 2924 | _sym_db.RegisterMessage(DeregisterAppConfirm) 2925 | 2926 | ChangePinRequest = _reflection.GeneratedProtocolMessageType('ChangePinRequest', (_message.Message,), dict( 2927 | DESCRIPTOR = _CHANGEPINREQUEST, 2928 | __module__ = 'zehnder_pb2' 2929 | # @@protoc_insertion_point(class_scope:ChangePinRequest) 2930 | )) 2931 | _sym_db.RegisterMessage(ChangePinRequest) 2932 | 2933 | ChangePinConfirm = _reflection.GeneratedProtocolMessageType('ChangePinConfirm', (_message.Message,), dict( 2934 | DESCRIPTOR = _CHANGEPINCONFIRM, 2935 | __module__ = 'zehnder_pb2' 2936 | # @@protoc_insertion_point(class_scope:ChangePinConfirm) 2937 | )) 2938 | _sym_db.RegisterMessage(ChangePinConfirm) 2939 | 2940 | GetRemoteAccessIdRequest = _reflection.GeneratedProtocolMessageType('GetRemoteAccessIdRequest', (_message.Message,), dict( 2941 | DESCRIPTOR = _GETREMOTEACCESSIDREQUEST, 2942 | __module__ = 'zehnder_pb2' 2943 | # @@protoc_insertion_point(class_scope:GetRemoteAccessIdRequest) 2944 | )) 2945 | _sym_db.RegisterMessage(GetRemoteAccessIdRequest) 2946 | 2947 | GetRemoteAccessIdConfirm = _reflection.GeneratedProtocolMessageType('GetRemoteAccessIdConfirm', (_message.Message,), dict( 2948 | DESCRIPTOR = _GETREMOTEACCESSIDCONFIRM, 2949 | __module__ = 'zehnder_pb2' 2950 | # @@protoc_insertion_point(class_scope:GetRemoteAccessIdConfirm) 2951 | )) 2952 | _sym_db.RegisterMessage(GetRemoteAccessIdConfirm) 2953 | 2954 | SetRemoteAccessIdRequest = _reflection.GeneratedProtocolMessageType('SetRemoteAccessIdRequest', (_message.Message,), dict( 2955 | DESCRIPTOR = _SETREMOTEACCESSIDREQUEST, 2956 | __module__ = 'zehnder_pb2' 2957 | # @@protoc_insertion_point(class_scope:SetRemoteAccessIdRequest) 2958 | )) 2959 | _sym_db.RegisterMessage(SetRemoteAccessIdRequest) 2960 | 2961 | SetRemoteAccessIdConfirm = _reflection.GeneratedProtocolMessageType('SetRemoteAccessIdConfirm', (_message.Message,), dict( 2962 | DESCRIPTOR = _SETREMOTEACCESSIDCONFIRM, 2963 | __module__ = 'zehnder_pb2' 2964 | # @@protoc_insertion_point(class_scope:SetRemoteAccessIdConfirm) 2965 | )) 2966 | _sym_db.RegisterMessage(SetRemoteAccessIdConfirm) 2967 | 2968 | GetSupportIdRequest = _reflection.GeneratedProtocolMessageType('GetSupportIdRequest', (_message.Message,), dict( 2969 | DESCRIPTOR = _GETSUPPORTIDREQUEST, 2970 | __module__ = 'zehnder_pb2' 2971 | # @@protoc_insertion_point(class_scope:GetSupportIdRequest) 2972 | )) 2973 | _sym_db.RegisterMessage(GetSupportIdRequest) 2974 | 2975 | GetSupportIdConfirm = _reflection.GeneratedProtocolMessageType('GetSupportIdConfirm', (_message.Message,), dict( 2976 | DESCRIPTOR = _GETSUPPORTIDCONFIRM, 2977 | __module__ = 'zehnder_pb2' 2978 | # @@protoc_insertion_point(class_scope:GetSupportIdConfirm) 2979 | )) 2980 | _sym_db.RegisterMessage(GetSupportIdConfirm) 2981 | 2982 | SetSupportIdRequest = _reflection.GeneratedProtocolMessageType('SetSupportIdRequest', (_message.Message,), dict( 2983 | DESCRIPTOR = _SETSUPPORTIDREQUEST, 2984 | __module__ = 'zehnder_pb2' 2985 | # @@protoc_insertion_point(class_scope:SetSupportIdRequest) 2986 | )) 2987 | _sym_db.RegisterMessage(SetSupportIdRequest) 2988 | 2989 | SetSupportIdConfirm = _reflection.GeneratedProtocolMessageType('SetSupportIdConfirm', (_message.Message,), dict( 2990 | DESCRIPTOR = _SETSUPPORTIDCONFIRM, 2991 | __module__ = 'zehnder_pb2' 2992 | # @@protoc_insertion_point(class_scope:SetSupportIdConfirm) 2993 | )) 2994 | _sym_db.RegisterMessage(SetSupportIdConfirm) 2995 | 2996 | GetWebIdRequest = _reflection.GeneratedProtocolMessageType('GetWebIdRequest', (_message.Message,), dict( 2997 | DESCRIPTOR = _GETWEBIDREQUEST, 2998 | __module__ = 'zehnder_pb2' 2999 | # @@protoc_insertion_point(class_scope:GetWebIdRequest) 3000 | )) 3001 | _sym_db.RegisterMessage(GetWebIdRequest) 3002 | 3003 | GetWebIdConfirm = _reflection.GeneratedProtocolMessageType('GetWebIdConfirm', (_message.Message,), dict( 3004 | DESCRIPTOR = _GETWEBIDCONFIRM, 3005 | __module__ = 'zehnder_pb2' 3006 | # @@protoc_insertion_point(class_scope:GetWebIdConfirm) 3007 | )) 3008 | _sym_db.RegisterMessage(GetWebIdConfirm) 3009 | 3010 | SetWebIdRequest = _reflection.GeneratedProtocolMessageType('SetWebIdRequest', (_message.Message,), dict( 3011 | DESCRIPTOR = _SETWEBIDREQUEST, 3012 | __module__ = 'zehnder_pb2' 3013 | # @@protoc_insertion_point(class_scope:SetWebIdRequest) 3014 | )) 3015 | _sym_db.RegisterMessage(SetWebIdRequest) 3016 | 3017 | SetWebIdConfirm = _reflection.GeneratedProtocolMessageType('SetWebIdConfirm', (_message.Message,), dict( 3018 | DESCRIPTOR = _SETWEBIDCONFIRM, 3019 | __module__ = 'zehnder_pb2' 3020 | # @@protoc_insertion_point(class_scope:SetWebIdConfirm) 3021 | )) 3022 | _sym_db.RegisterMessage(SetWebIdConfirm) 3023 | 3024 | SetPushIdRequest = _reflection.GeneratedProtocolMessageType('SetPushIdRequest', (_message.Message,), dict( 3025 | DESCRIPTOR = _SETPUSHIDREQUEST, 3026 | __module__ = 'zehnder_pb2' 3027 | # @@protoc_insertion_point(class_scope:SetPushIdRequest) 3028 | )) 3029 | _sym_db.RegisterMessage(SetPushIdRequest) 3030 | 3031 | SetPushIdConfirm = _reflection.GeneratedProtocolMessageType('SetPushIdConfirm', (_message.Message,), dict( 3032 | DESCRIPTOR = _SETPUSHIDCONFIRM, 3033 | __module__ = 'zehnder_pb2' 3034 | # @@protoc_insertion_point(class_scope:SetPushIdConfirm) 3035 | )) 3036 | _sym_db.RegisterMessage(SetPushIdConfirm) 3037 | 3038 | UpgradeRequest = _reflection.GeneratedProtocolMessageType('UpgradeRequest', (_message.Message,), dict( 3039 | DESCRIPTOR = _UPGRADEREQUEST, 3040 | __module__ = 'zehnder_pb2' 3041 | # @@protoc_insertion_point(class_scope:UpgradeRequest) 3042 | )) 3043 | _sym_db.RegisterMessage(UpgradeRequest) 3044 | 3045 | UpgradeConfirm = _reflection.GeneratedProtocolMessageType('UpgradeConfirm', (_message.Message,), dict( 3046 | DESCRIPTOR = _UPGRADECONFIRM, 3047 | __module__ = 'zehnder_pb2' 3048 | # @@protoc_insertion_point(class_scope:UpgradeConfirm) 3049 | )) 3050 | _sym_db.RegisterMessage(UpgradeConfirm) 3051 | 3052 | DebugRequest = _reflection.GeneratedProtocolMessageType('DebugRequest', (_message.Message,), dict( 3053 | DESCRIPTOR = _DEBUGREQUEST, 3054 | __module__ = 'zehnder_pb2' 3055 | # @@protoc_insertion_point(class_scope:DebugRequest) 3056 | )) 3057 | _sym_db.RegisterMessage(DebugRequest) 3058 | 3059 | DebugConfirm = _reflection.GeneratedProtocolMessageType('DebugConfirm', (_message.Message,), dict( 3060 | DESCRIPTOR = _DEBUGCONFIRM, 3061 | __module__ = 'zehnder_pb2' 3062 | # @@protoc_insertion_point(class_scope:DebugConfirm) 3063 | )) 3064 | _sym_db.RegisterMessage(DebugConfirm) 3065 | 3066 | VersionRequest = _reflection.GeneratedProtocolMessageType('VersionRequest', (_message.Message,), dict( 3067 | DESCRIPTOR = _VERSIONREQUEST, 3068 | __module__ = 'zehnder_pb2' 3069 | # @@protoc_insertion_point(class_scope:VersionRequest) 3070 | )) 3071 | _sym_db.RegisterMessage(VersionRequest) 3072 | 3073 | VersionConfirm = _reflection.GeneratedProtocolMessageType('VersionConfirm', (_message.Message,), dict( 3074 | DESCRIPTOR = _VERSIONCONFIRM, 3075 | __module__ = 'zehnder_pb2' 3076 | # @@protoc_insertion_point(class_scope:VersionConfirm) 3077 | )) 3078 | _sym_db.RegisterMessage(VersionConfirm) 3079 | 3080 | CnTimeRequest = _reflection.GeneratedProtocolMessageType('CnTimeRequest', (_message.Message,), dict( 3081 | DESCRIPTOR = _CNTIMEREQUEST, 3082 | __module__ = 'zehnder_pb2' 3083 | # @@protoc_insertion_point(class_scope:CnTimeRequest) 3084 | )) 3085 | _sym_db.RegisterMessage(CnTimeRequest) 3086 | 3087 | CnTimeConfirm = _reflection.GeneratedProtocolMessageType('CnTimeConfirm', (_message.Message,), dict( 3088 | DESCRIPTOR = _CNTIMECONFIRM, 3089 | __module__ = 'zehnder_pb2' 3090 | # @@protoc_insertion_point(class_scope:CnTimeConfirm) 3091 | )) 3092 | _sym_db.RegisterMessage(CnTimeConfirm) 3093 | 3094 | CnNodeRequest = _reflection.GeneratedProtocolMessageType('CnNodeRequest', (_message.Message,), dict( 3095 | DESCRIPTOR = _CNNODEREQUEST, 3096 | __module__ = 'zehnder_pb2' 3097 | # @@protoc_insertion_point(class_scope:CnNodeRequest) 3098 | )) 3099 | _sym_db.RegisterMessage(CnNodeRequest) 3100 | 3101 | CnNodeNotification = _reflection.GeneratedProtocolMessageType('CnNodeNotification', (_message.Message,), dict( 3102 | DESCRIPTOR = _CNNODENOTIFICATION, 3103 | __module__ = 'zehnder_pb2' 3104 | # @@protoc_insertion_point(class_scope:CnNodeNotification) 3105 | )) 3106 | _sym_db.RegisterMessage(CnNodeNotification) 3107 | 3108 | CnRmiRequest = _reflection.GeneratedProtocolMessageType('CnRmiRequest', (_message.Message,), dict( 3109 | DESCRIPTOR = _CNRMIREQUEST, 3110 | __module__ = 'zehnder_pb2' 3111 | # @@protoc_insertion_point(class_scope:CnRmiRequest) 3112 | )) 3113 | _sym_db.RegisterMessage(CnRmiRequest) 3114 | 3115 | CnRmiResponse = _reflection.GeneratedProtocolMessageType('CnRmiResponse', (_message.Message,), dict( 3116 | DESCRIPTOR = _CNRMIRESPONSE, 3117 | __module__ = 'zehnder_pb2' 3118 | # @@protoc_insertion_point(class_scope:CnRmiResponse) 3119 | )) 3120 | _sym_db.RegisterMessage(CnRmiResponse) 3121 | 3122 | CnRmiAsyncRequest = _reflection.GeneratedProtocolMessageType('CnRmiAsyncRequest', (_message.Message,), dict( 3123 | DESCRIPTOR = _CNRMIASYNCREQUEST, 3124 | __module__ = 'zehnder_pb2' 3125 | # @@protoc_insertion_point(class_scope:CnRmiAsyncRequest) 3126 | )) 3127 | _sym_db.RegisterMessage(CnRmiAsyncRequest) 3128 | 3129 | CnRmiAsyncConfirm = _reflection.GeneratedProtocolMessageType('CnRmiAsyncConfirm', (_message.Message,), dict( 3130 | DESCRIPTOR = _CNRMIASYNCCONFIRM, 3131 | __module__ = 'zehnder_pb2' 3132 | # @@protoc_insertion_point(class_scope:CnRmiAsyncConfirm) 3133 | )) 3134 | _sym_db.RegisterMessage(CnRmiAsyncConfirm) 3135 | 3136 | CnRmiAsyncResponse = _reflection.GeneratedProtocolMessageType('CnRmiAsyncResponse', (_message.Message,), dict( 3137 | DESCRIPTOR = _CNRMIASYNCRESPONSE, 3138 | __module__ = 'zehnder_pb2' 3139 | # @@protoc_insertion_point(class_scope:CnRmiAsyncResponse) 3140 | )) 3141 | _sym_db.RegisterMessage(CnRmiAsyncResponse) 3142 | 3143 | CnRpdoRequest = _reflection.GeneratedProtocolMessageType('CnRpdoRequest', (_message.Message,), dict( 3144 | DESCRIPTOR = _CNRPDOREQUEST, 3145 | __module__ = 'zehnder_pb2' 3146 | # @@protoc_insertion_point(class_scope:CnRpdoRequest) 3147 | )) 3148 | _sym_db.RegisterMessage(CnRpdoRequest) 3149 | 3150 | CnRpdoConfirm = _reflection.GeneratedProtocolMessageType('CnRpdoConfirm', (_message.Message,), dict( 3151 | DESCRIPTOR = _CNRPDOCONFIRM, 3152 | __module__ = 'zehnder_pb2' 3153 | # @@protoc_insertion_point(class_scope:CnRpdoConfirm) 3154 | )) 3155 | _sym_db.RegisterMessage(CnRpdoConfirm) 3156 | 3157 | CnRpdoNotification = _reflection.GeneratedProtocolMessageType('CnRpdoNotification', (_message.Message,), dict( 3158 | DESCRIPTOR = _CNRPDONOTIFICATION, 3159 | __module__ = 'zehnder_pb2' 3160 | # @@protoc_insertion_point(class_scope:CnRpdoNotification) 3161 | )) 3162 | _sym_db.RegisterMessage(CnRpdoNotification) 3163 | 3164 | CnAlarmNotification = _reflection.GeneratedProtocolMessageType('CnAlarmNotification', (_message.Message,), dict( 3165 | DESCRIPTOR = _CNALARMNOTIFICATION, 3166 | __module__ = 'zehnder_pb2' 3167 | # @@protoc_insertion_point(class_scope:CnAlarmNotification) 3168 | )) 3169 | _sym_db.RegisterMessage(CnAlarmNotification) 3170 | 3171 | CnFupReadRegisterRequest = _reflection.GeneratedProtocolMessageType('CnFupReadRegisterRequest', (_message.Message,), dict( 3172 | DESCRIPTOR = _CNFUPREADREGISTERREQUEST, 3173 | __module__ = 'zehnder_pb2' 3174 | # @@protoc_insertion_point(class_scope:CnFupReadRegisterRequest) 3175 | )) 3176 | _sym_db.RegisterMessage(CnFupReadRegisterRequest) 3177 | 3178 | CnFupReadRegisterConfirm = _reflection.GeneratedProtocolMessageType('CnFupReadRegisterConfirm', (_message.Message,), dict( 3179 | DESCRIPTOR = _CNFUPREADREGISTERCONFIRM, 3180 | __module__ = 'zehnder_pb2' 3181 | # @@protoc_insertion_point(class_scope:CnFupReadRegisterConfirm) 3182 | )) 3183 | _sym_db.RegisterMessage(CnFupReadRegisterConfirm) 3184 | 3185 | CnFupProgramBeginRequest = _reflection.GeneratedProtocolMessageType('CnFupProgramBeginRequest', (_message.Message,), dict( 3186 | DESCRIPTOR = _CNFUPPROGRAMBEGINREQUEST, 3187 | __module__ = 'zehnder_pb2' 3188 | # @@protoc_insertion_point(class_scope:CnFupProgramBeginRequest) 3189 | )) 3190 | _sym_db.RegisterMessage(CnFupProgramBeginRequest) 3191 | 3192 | CnFupProgramBeginConfirm = _reflection.GeneratedProtocolMessageType('CnFupProgramBeginConfirm', (_message.Message,), dict( 3193 | DESCRIPTOR = _CNFUPPROGRAMBEGINCONFIRM, 3194 | __module__ = 'zehnder_pb2' 3195 | # @@protoc_insertion_point(class_scope:CnFupProgramBeginConfirm) 3196 | )) 3197 | _sym_db.RegisterMessage(CnFupProgramBeginConfirm) 3198 | 3199 | CnFupProgramRequest = _reflection.GeneratedProtocolMessageType('CnFupProgramRequest', (_message.Message,), dict( 3200 | DESCRIPTOR = _CNFUPPROGRAMREQUEST, 3201 | __module__ = 'zehnder_pb2' 3202 | # @@protoc_insertion_point(class_scope:CnFupProgramRequest) 3203 | )) 3204 | _sym_db.RegisterMessage(CnFupProgramRequest) 3205 | 3206 | CnFupProgramConfirm = _reflection.GeneratedProtocolMessageType('CnFupProgramConfirm', (_message.Message,), dict( 3207 | DESCRIPTOR = _CNFUPPROGRAMCONFIRM, 3208 | __module__ = 'zehnder_pb2' 3209 | # @@protoc_insertion_point(class_scope:CnFupProgramConfirm) 3210 | )) 3211 | _sym_db.RegisterMessage(CnFupProgramConfirm) 3212 | 3213 | CnFupProgramEndRequest = _reflection.GeneratedProtocolMessageType('CnFupProgramEndRequest', (_message.Message,), dict( 3214 | DESCRIPTOR = _CNFUPPROGRAMENDREQUEST, 3215 | __module__ = 'zehnder_pb2' 3216 | # @@protoc_insertion_point(class_scope:CnFupProgramEndRequest) 3217 | )) 3218 | _sym_db.RegisterMessage(CnFupProgramEndRequest) 3219 | 3220 | CnFupProgramEndConfirm = _reflection.GeneratedProtocolMessageType('CnFupProgramEndConfirm', (_message.Message,), dict( 3221 | DESCRIPTOR = _CNFUPPROGRAMENDCONFIRM, 3222 | __module__ = 'zehnder_pb2' 3223 | # @@protoc_insertion_point(class_scope:CnFupProgramEndConfirm) 3224 | )) 3225 | _sym_db.RegisterMessage(CnFupProgramEndConfirm) 3226 | 3227 | CnFupReadRequest = _reflection.GeneratedProtocolMessageType('CnFupReadRequest', (_message.Message,), dict( 3228 | DESCRIPTOR = _CNFUPREADREQUEST, 3229 | __module__ = 'zehnder_pb2' 3230 | # @@protoc_insertion_point(class_scope:CnFupReadRequest) 3231 | )) 3232 | _sym_db.RegisterMessage(CnFupReadRequest) 3233 | 3234 | CnFupReadConfirm = _reflection.GeneratedProtocolMessageType('CnFupReadConfirm', (_message.Message,), dict( 3235 | DESCRIPTOR = _CNFUPREADCONFIRM, 3236 | __module__ = 'zehnder_pb2' 3237 | # @@protoc_insertion_point(class_scope:CnFupReadConfirm) 3238 | )) 3239 | _sym_db.RegisterMessage(CnFupReadConfirm) 3240 | 3241 | CnFupResetRequest = _reflection.GeneratedProtocolMessageType('CnFupResetRequest', (_message.Message,), dict( 3242 | DESCRIPTOR = _CNFUPRESETREQUEST, 3243 | __module__ = 'zehnder_pb2' 3244 | # @@protoc_insertion_point(class_scope:CnFupResetRequest) 3245 | )) 3246 | _sym_db.RegisterMessage(CnFupResetRequest) 3247 | 3248 | CnFupResetConfirm = _reflection.GeneratedProtocolMessageType('CnFupResetConfirm', (_message.Message,), dict( 3249 | DESCRIPTOR = _CNFUPRESETCONFIRM, 3250 | __module__ = 'zehnder_pb2' 3251 | # @@protoc_insertion_point(class_scope:CnFupResetConfirm) 3252 | )) 3253 | _sym_db.RegisterMessage(CnFupResetConfirm) 3254 | 3255 | 3256 | # @@protoc_insertion_point(module_scope) 3257 | --------------------------------------------------------------------------------