|
| 1 | +[](./LICENSE.txt) |
| 2 | +[](https://twitter.com/buildsimhub) |
| 3 | + |
| 4 | +**Esta librería te permite usar rápida y fácilmente el API v1 de WEB BuildSimHub via Python.** |
| 5 | + |
| 6 | +Esta librería representa el comienzo de la función de Cloud Simulation en BuildSimHub. Queremos que esta librería sea llevada por la comunidad y guiada por BuildSimHub. Necesitamos tu ayuda para alcanzar esta meta. Para ayudar, asegúrate que estamos creando las cosas correctas en el orden correcto, te pedimos que crees issues y pull requests, |
| 7 | +o simplemente que votes o comentes issues o pull requests ya existentes. Apreciamos su apoyo continuo, ¡gracias! |
| 8 | + |
| 9 | +# Tabla de Contenidos |
| 10 | +* [Instalación](#installation) |
| 11 | +* [Empezar](#quick-start) |
| 12 | +* [Funciones y Objetos](#functions) |
| 13 | +* [Hoja de Ruta](#roadmap) |
| 14 | +* [Acerca De](#about) |
| 15 | +* [Licencia](#license) |
| 16 | + |
| 17 | +<a name="installation"></a> |
| 18 | + |
| 19 | +# Instalación |
| 20 | + |
| 21 | +## Prerrequisitos |
| 22 | +- El servicio BuildSimHub, empezando en el [free level](https://my.buildsim.io/register.html) |
| 23 | +- Python version 2.6, 2.7, 3.4, 3.5 or 3.6 |
| 24 | + |
| 25 | +## Instalación de Paquete |
| 26 | +Simplemente clona este repositorio y colócalo dentro de la carpeta en la que quieras crear la aplicación. Ejemplos: |
| 27 | + |
| 28 | + |
| 29 | +## Preparación del entorno |
| 30 | +Después que has descargado todo el paquete. Lo primero que necesitas hacer es reconfigurar el API de usuario en el archivo [info.config](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/info.config) file. |
| 31 | +Puedes conseguir la llave API asociada a tu cuenta en la página de perfil: |
| 32 | + |
| 33 | + |
| 34 | + |
| 35 | +Simplemente edita el [info.config](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/info.config) |
| 36 | +`user_api_key:[YOUR_API_KEY]` |
| 37 | + |
| 38 | +## Modelo clave |
| 39 | +La clave del modelo se puede encontrar en su proyecto buildsimhub. |
| 40 | + |
| 41 | +<a name="quick-start"></a> |
| 42 | + |
| 43 | +# Empezar |
| 44 | + |
| 45 | +## Corre la simulación |
| 46 | +Lo siguiente es el código mínimo requerido para iniciar una simulación regular con el [helpers/simulationJob](https://github.com/weilix88/buildsimhub_python_api/tree/master/BuildSimHubAPI/helpers) |
| 47 | + |
| 48 | +### Con SimulationJob Class |
| 49 | +```python |
| 50 | +from BuildSimHubAPI import buildsimhub |
| 51 | +#this key can be found under an energy model |
| 52 | +model_key="0ade3a46-4d07-4b99-907f-0cfeece321072" |
| 53 | + |
| 54 | +#absolute directory to the energyplus model |
| 55 | +file_dir = "/Users/weilixu/Desktop/5ZoneAirCooled.idf" |
| 56 | + |
| 57 | +############### AHORA, UTILIZA EL CÓDIGO ######################## |
| 58 | + |
| 59 | +bsh = buildsimhub.BuildSimHubAPIClient() |
| 60 | +newSJ = bsh.new_simulation_job(model_key,'my first cloud simulation', 'regular',1) |
| 61 | +response = newSj.create_model(file_dir) |
| 62 | + |
| 63 | +############### LISTO! ################################# |
| 64 | + |
| 65 | +#Puedes imprimir las respuestas para verificar si la simulación |
| 66 | +#tuvo éxito o no. |
| 67 | +print (response) |
| 68 | +``` |
| 69 | +El `BuildSimHubAPIClient` crea un [portal object](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/buildsimhub.py) que maneja el flujo de trabajo de la simulación. |
| 70 | +Desde este objeto, puedes iniciar un [simulationJob](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationJob.py) para conducir una Cloud Simulation. Llama el método createModel() con parámetros que puedan empezar la Cloud Simulation. |
| 71 | + |
| 72 | +### Sigue el progreso de la Cloud Simulation |
| 73 | +```python |
| 74 | +from BuildSimHubAPI import buildsimhub |
| 75 | +bsh = buildsimhub.BuildSimHubAPIClient() |
| 76 | + |
| 77 | +#this key can be found under your project folder |
| 78 | +model_key="0ade3a46-4d07-4b99-907f-0cfeece321072" |
| 79 | + |
| 80 | +#absolute directory to the energyplus model |
| 81 | +file_dir = "/Users/weilixu/Desktop/5ZoneAirCooled.idf" |
| 82 | + |
| 83 | +newSJ = bsh.new_simulation_job(model_key) |
| 84 | +response = newSj.create_model(file_dir) |
| 85 | + |
| 86 | +######DEBAJO ESTÁ EL CODIGO PARA SEGUIR LA SIMULACIÓN######### |
| 87 | +if(response == 'success'): |
| 88 | + while newSJ.track_simulation(): |
| 89 | + print (newSJ.trackStatus) |
| 90 | + time.sleep(5) |
| 91 | +``` |
| 92 | +Como fue mencionado previamente, [BuildSimHubAPIClient](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/buildsimhub.py) maneja la totalidad de flujo de trabajo de la simulación. Así que una vez que la Cloud Simulation ha sido correctamente empezada por la clase [SimulationJob](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationJob.py) puedes simplemente llamar la función `trackSimulation()` para recibir el progreso de la simulación. |
| 93 | + |
| 94 | +### Obtener los resultados de la Cloud Simulation |
| 95 | +```python |
| 96 | +from BuildSimHubAPI import buildsimhub |
| 97 | +bsh = buildsimhub.BuildSimHubAPIClient() |
| 98 | + |
| 99 | +#this key can be found under your project folder |
| 100 | +model_key="0ade3a46-4d07-4b99-907f-0cfeece321072" |
| 101 | + |
| 102 | +#absolute directory to the energyplus model |
| 103 | +file_dir = "/Users/weilixu/Desktop/5ZoneAirCooled.idf" |
| 104 | + |
| 105 | +newSJ = bsh.new_simulation_job(model_key) |
| 106 | +response = newSj.create_model(file_dir) |
| 107 | + |
| 108 | +if(response == 'success'): |
| 109 | + while newSJ.track_simulation(): |
| 110 | + print (newSJ.trackStatus) |
| 111 | + time.sleep(5) |
| 112 | + |
| 113 | + ######DEBAJO ESTÁ EL CODIGO PARA OBTENER LOS RESULTADOS DE LA SIMULACION######### |
| 114 | + response = newSJ.get_simulation_results('html') |
| 115 | + print(response) |
| 116 | +``` |
| 117 | +Si el trabajo se completó, puedes obtener los resultados llamando la funcion `get_simulation_results(type)`. |
| 118 | + |
| 119 | +<a name="functions"></a> |
| 120 | + |
| 121 | +#Funciones y Objetos |
| 122 | +## SimulationJob |
| 123 | +La manera más fácil de generar una clase [SimulationJob](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationJob.py) es llamando el método `newSimulationJob()` en el [BuildSimHubAPIClient](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/buildsimhub.py). |
| 124 | + Sin embargo, tienes que proveer una `folder_key` para poder crear una nueva instancia [SimulationJob](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationJob.py). |
| 125 | + |
| 126 | +La `folder_key` puede ser encontrada en cada carpeta de tu proyecto |
| 127 | + |
| 128 | + |
| 129 | +## simulationType |
| 130 | +La clase [SimulationType](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationType.py) te ayuda a configurar la Cloud Simulation. Hay dos tipos de simulación: `regular` y `fast`. Además, puedes incrementar el número de agentes llamando la función `increaseAgents()`. |
| 131 | +```python |
| 132 | +simulationType = bsh.get_simulation_type() |
| 133 | +numOfAgents = simulationType.increaseAgents(); |
| 134 | +print (numOfAgents) |
| 135 | +``` |
| 136 | +Hay que tomar en cuenta que el número máximo de agentes laborando en un trabajo de simulación está limitado a 12, y mientras más agentes asignaste a un trabajo de simulación, más rápido será tu simulación. También podrías llamar la función `resetAgent()` para resetear el número de agentes a 2. |
| 137 | + |
| 138 | +## SimulationJob |
| 139 | +Un trabajo de simulación maneja un solo tipo de Cloud Simulation. Este contiene tres funciones principales las cuales son mostradas a continuación: |
| 140 | + |
| 141 | +### create_model |
| 142 | +la función `create_model()`tiene un total de 4 parámetros. |
| 143 | +1. `file_dir` (requerido): el directorio local absoluto de tu EnergyPlus / OpenStudio model (p.ej., "/Users/weilixu/Desktop/5ZoneAirCooled.idf") |
| 144 | +2. `comment`(opcional): La descripción de la version del modelo que será subido a tu carpeta. El mensaje por defecto es `Upload through Python API` |
| 145 | +3. `simulationType` (opcional): El simulation Type debería ser generado de la clase [SimulationType](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationType.py). Esta clase maneja el simulation type además de la cantidad de agentes que quieras asignar al trabajo de simulación. **Hay que tomar en cuenta que si este parámetro no es usado, entonces el create_model método no lanzará la simulación** |
| 146 | +4. `agent` (opcional): El número de agentes es propiedad de la clase [SimulationType](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationType.py). Si se selecciona la simulación rápida, Entonces la cantidad de agentes por defecto será de 2. |
| 147 | + |
| 148 | +Este método devuelve dos tipos de información: |
| 149 | +Si es exitoso: `success` |
| 150 | +o un mensaje de error mostrará que estuvo mal en tu pedido. |
| 151 | + |
| 152 | +### run_simulation |
| 153 | +La función `run_simulation()` puede ser llamada dentro de un trabajo de simulación si la simulación no es conducida. La función tiene dos parámetros: |
| 154 | +1. `simulationType` (optional): El simulation Type debería ser generado de la clase [SimulationType](https://github.com/weilix88/buildsimhub_python_api/blob/master/BuildSimHubAPI/helpers/simulationType.py). Esta clase maneja el simulation type además de la cantidad de agentes que quieras asignar al trabajo de simulación. **Hay que tomar en cuenta que si este parámetro no es usado, entonces el create_model método no lanzará la simulación** |
| 155 | + |
| 156 | +### track_simulaiton |
| 157 | +La función `track_simulation()` no requiere ningún parámetro. Sin embargo, es necesario que una cloud simulation exitosa sea creada y lanzada en la nube. De otra manera, recibirás un mensaje llamando esta función: |
| 158 | +`No simulation is running or completed in this Job - please start simulation using createModel method.` |
| 159 | +Si hay una simulación corriendo en la nube para este simulationJob, entonces, esta función se convertirá en `true` y podrás obtener el estatus de la simulación mediante el parámetro de la clase trackStatus.Ejemplo a continuación: |
| 160 | +```python |
| 161 | +if(newSimulationJob.track_simulation()): |
| 162 | + print(newSimulationJob.trackStatus) |
| 163 | +``` |
| 164 | +### get_simulation_results |
| 165 | +La función `get_simulation_results(type)` requiere 1 parámetro, el result type. Actualmente, puedes obtener tres tipos de resultados: el archive error (`err`), archivo eso (`eso`) y archivo html (`html`), generado de la simulación EnergyPlus. |
| 166 | + |
| 167 | +```python |
| 168 | +response = newSimulationJob.get_simulation_results('err') |
| 169 | +print (response) |
| 170 | +``` |
| 171 | +## Model |
| 172 | +La clase model contiene una serie de métodos que provee la información del modelo y resultados (después de la simulación) |
| 173 | +### Pre-simulation methods |
| 174 | +1. *num_total_floor()*: puede ser llamado antes de que la simulación se complete. Este obtiene el número de suelos, o -1 si hay un error. |
| 175 | +2. *num_zones()*: puede ser llamado antes que la simulación se complete. Este obtiene el número total de zonas termales, o -1 si hay un error. |
| 176 | +3. *num_condition_zones()*: puede ser llamado antes que la simulación se complete. Este obtiene el número total de zonas condicionadas, o -1 si hay un error. |
| 177 | +4. *conditioned_floor_area (unit)*: puede ser llamado antes que la simulación se complete. Este obtiene las áreas de suelo de espacios condicionados, o -1 si hay un error. Este método tiene una entrada adicional: unit. Si deseas obtener la unidad ft2, entonces necesitas especificar ‘ip’ para el parámetro de la unidad: |
| 178 | +` m.condition_floor_area("ip") |
| 179 | +` |
| 180 | +5. *gross_floor_area(unit)*: puede ser llamado antes que la simulación se complete. Este obtiene el total de áreas de suelo (incluyendo espacios plenum), o -1 si hay un error. Este método tiene una entrada opcional: unit. Si deseas obtener la unidad ft2, entonces necesitas especificar ‘ip’ para el parámetro de la unidad: |
| 181 | +` m.gross_floor_area("ip") |
| 182 | +` |
| 183 | +6. *window_wall_ratio()*: puede ser llamado antes que la simulación se complete. Este obtiene el radio total de ventana a pared (por encima del area de superficie del suelo) o -1 si hay un error. |
| 184 | + |
| 185 | +### Métodos Pre-simulación |
| 186 | +1. *new_site_eui()*: Obtiene el net site eui de la simulación (incluye generadores como PV). La unidad debería basarse en la especificación de modelo: SI (kWh/m2 or MJ/m2), IP(kWh/m2). |
| 187 | +2. *total_site_eui()*: Obtiene el total site eui de la simulación. La unidad debería basarse en la especificación de modelo: SI (kWh/m2 or MJ/m2), IP(kWh/m2). |
| 188 | +3. *not_met_hour_cooling()*: Regresa el setpoint de tiempo ‘not met hours’ durante el periodo enfriamiento. unidad: hora |
| 189 | +4. *not_met_hour_heating()*: Regresa el setpoint de tiempo ‘not met hours’ durante del periodo de calentamiento. unidad: hora |
| 190 | +5. *not_met_hour_total()*: Regresa el setpoint de tiempo ‘not met hours’ durante el periodo total de enfriamiento y calentamiento. unidad: hora |
| 191 | +6. *total_end_use_electricity()*: Obtiene el total de consumo eléctrico del diseño. unidad: kWh or GJ, IP is kBtu |
| 192 | +7. *total_end_use_naturalgas()*: Obtiene el total de consumo de gas natural del diseño. unidad: kWh or GJ, IP is kBtu |
| 193 | + |
| 194 | + |
| 195 | +### Métodos diversos y variables |
| 196 | +1. lastParameterUnit: Puedes verificar el valor de la variable pedida por la llamada API más reciente. |
| 197 | +```python |
| 198 | +m = newSj.model |
| 199 | +print(str(m.net_site_eui())+ " " + m.lastParameterUnit) |
| 200 | +#Output: 242.98 MJ/m2 |
| 201 | +print(str(m.total_end_use_electricity())+ " " + m.lastParameterUnit) |
| 202 | +#Output: 156.67 GJ |
| 203 | +``` |
| 204 | + |
| 205 | +<a name="roadmap"></a> |
| 206 | +# Hoja de Ruta |
| 207 | +1. También estamos en APIs para obtención de resultados, los cuales permiten a los usuarios obtener resultados de la simulación para el post-procesamiento. |
| 208 | +2. Si estás interesado en el futuro de este proyecto, por favor echa un vistazo a nuestros [issues](https://github.com/weilix88/buildsimhub_python_api/issues) y [pull requests](https://github.com/weilix88/buildsimhub_python_api/pulls). Nos encantaría escuchar tus opiniones y recomendaciones. |
| 209 | + |
| 210 | + |
| 211 | +<a name="about"></a> |
| 212 | +# Acerca De |
| 213 | + |
| 214 | +buildsimhub-python está guíado y apoyado por el BuildSimHub [Developer Experience Team](mailto:haopeng.wang@buildsimhub.net). |
| 215 | + |
| 216 | +buildsimhub-python es mantenido y financiado por BuildSimHub, Inc. Los nombres y logos de buildsimhub-python son trademarks de BuildSimHub, Inc. |
| 217 | + |
| 218 | +<a name="license"></a> |
| 219 | +# Licencia |
| 220 | +[The MIT License (MIT)](LICENSE.txt) |
0 commit comments