##### Теплосервер
```bash
/usr/uaserver/ -> uateploserver
```
##### После запуска в логах посмотреть порт:
```bash
Server opened endpoints for following URLs:
opc.tcp://a02:4841
```
##### В настройках клиента UA Expert прописать адрес сервера и протокол:
```bash
opc.tcp://192.168.24.35:4841
```
##### Добавить сетевой интерфейс:
```bash
sudo ifconfig eno1:1 192.168.24.30
```
##### Запуск Docker, сборка event_monitor, teploserver
```bash
sudo docker run \
-v $(pwd):/home/jenkins/workspace/BlueLake \
-v /home/dtelenkov/projects/gas/Silverstone:/home/jenkins/workspace/Silverstone \
-v /home/dtelenkov/projects/gas/BL_packages:/home/packages/BL_packages \
--privileged=true -it 192.168.24.227:8082/docker/bluelake-buildenv:jessie-v2-cc /bin/bash
```
##### Сборка buildroot (предварительно запустить docker):
```bash
make defconfig_BlueLake_Arbiter
cp -s /home/packages/BL_packages/buildroot/* ./buildroot/buildroot-2011.08/dl/
make brclean - Опционально
make
```
##### Сборка тепло-сервера:
```bach
cd workspace/BlueLake
```
```bash
rm -fr ./buildroot/buildroot-2011.08/swc/packages/uateploserver/; cp -r ./buildroot/BlueLake/swc/packages/uateploserver/ ./buildroot/buildroot-2011.08/swc/packages/uateploserver; rm -rf ./buildroot/buildroot-2011.08/output/build/uateploserver-1.0/; make
```
Путь к собранному исполняемому файлу:
```bash
/home/jenkins/workspace/BlueLake/buildroot/buildroot-2011.08/output/build/uateploserver-1.0/applications
```
Скопировать в /tmp Арбитра:
```bash
scp /home/dtelenkov/projects/gas/BlueLake-Arbiter-Gas-ASUTP-dev/buildroot/buildroot-2011.08/output/build/uateploserver-1.0/applications/uateploserver hidden@192.168.24.35:/tmp
```
Далее в Арбитре
```bash
cp /tmp/uateploserver /usr/uaserver/
```
##### Сборка event_monitor2:
```bash
rm -rf ./buildroot/buildroot-2011.08/fs/swc/configs/; cp -r ./buildroot/BlueLake/fs/swc/configs ./buildroot/buildroot-2011.08/fs/swc/; rm -rf ./buildroot/buildroot-2011.08/swc/packages/event_monitor2/; cp -r ./buildroot/BlueLake/swc/packages/event_monitor2 ./buildroot/buildroot-2011.08/swc/packages/; rm -rf ./buildroot/buildroot-2011.08/output/build/event_monitor2-3.0/; make
```
Путь к файлам pyc:
```bash
/home/jenkins/workspace/BlueLake/buildroot/buildroot-2011.08/output/build/event_monitor2-3.0/event_monitor
```
Скопировать во временную папку:
```bash
cp /home/dtelenkov/projects/gas/BlueLake-Arbiter-Gas-ASUTP-dev/buildroot/buildroot-2011.08/output/build/event_monitor2-3.0/services/teplo/teplo_api_controller.pyc /home/dtelenkov/projects/gas/new/my_pyc/
```
Скопировать в /tmp Арбитра:
```
scp /home/dtelenkov/projects/gas/new/my_pyc/teplo_api_controller.pyc hidden@192.168.24.35:/tmp
```
Далее на Арбитре:
```bash
cp -i /tmp/teplo_api_controller.pyc /usr/local/event_monitor2/services/teplo
```
##### Работа с event_monitor2
```bash
/etc/init.d/watchdog_pause start
/etc/init.d/S80event_monitor.sh stop
Обновить нужные pyc-файлы
/usr/local/event_monitor2/services/teplo
/etc/init.d/S80event_monitor.sh start
```
##### web контроллера:
```bash
/usr/local/web_ui
```
##### Сборка "pyc" файлов:
```bash
python -m compileall .py .pyc
```
##### Загрузка конфигурации:
```python
class ConfigReservedStorage(ConfigFileStorage):
FILE_PATH = "/mnt/config/reserved_config.tar"
class ConfigStartupStorage(ConfigFileStorage):
FILE_PATH = "/mnt/config/startup_config.tar"
class ConfigStorageDefault(ConfigFileStorage):
FILE_PATH = "/home/em/default_config.tar"
```
Первая попытка загрузки - Startup
Работа с JSON RPS:
```bash
/usr/local/event_monitor2/services/teplo
$ cp teplo_api_base.pyc /usr/local/event_monitor2/services/teplo
$ chmod 777 /usr/local/event_monitor2/services/teplo/teplo_api_base.pyc
```
GUISController:
Добавление параметров.
1. teplo_giuscontrollertypebase.h
```c++
class Teplo_EXPORT GIUSControllerTypeBase:public OpcUa::BaseObjectType
```
2. teplo_giuscontrollertype.cpp
```c++
m_pNewParam->setDescription(UaLocalizedText("ru", "Новый тестовый параметр"));
this->add_string_var (m_pNewParam, "NewParam");
```
3. teplo_guiscontrollertypebase.cpp
```c++
m_pNewParam = new OpcUa::PropertyType(this, s_pNewParam, m_pNodeConfig, m_pSharedMutex);
addStatus = m_pNodeConfig->addNodeAndReference(this, m_pNewParam, OpcUaId_HasProperty);
UA_ASSERT(addStatus.isGood());
```
##### Цифровые входы
1. teplo_intsensorsbase.h
Добавил:
```c++
virtual void setDI1(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI1() const;
virtual void setDI2(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI2() const;
virtual void setDI3(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI3() const;
virtual void setDI4(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI4() const;
virtual void setDI5(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI5() const;
virtual void setDI6(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI6() const;
virtual void setDI7(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI7() const;
virtual void setDI8(OpcUa_Byte DI1);
virtual OpcUa_Byte getDI8() const;
protected:
// Variable DI1
static Teplo::ExAnalogItemType* s_pDI1;
Teplo::ExAnalogItemType* m_pDI1;
// Variable DI2
static Teplo::ExAnalogItemType* s_pDI2;
Teplo::ExAnalogItemType* m_pDI2;
// Variable DI3
static Teplo::ExAnalogItemType* s_pDI3;
Teplo::ExAnalogItemType* m_pDI3;
// Variable DI4
static Teplo::ExAnalogItemType* s_pDI4;
Teplo::ExAnalogItemType* m_pDI4;
// Variable DI5
static Teplo::ExAnalogItemType* s_pDI5;
Teplo::ExAnalogItemType* m_pDI5;
// Variable DI6
static Teplo::ExAnalogItemType* s_pDI6;
Teplo::ExAnalogItemType* m_pDI6;
// Variable DI7
static Teplo::ExAnalogItemType* s_pDI7;
Teplo::ExAnalogItemType* m_pDI7;
// Variable DI8
static Teplo::ExAnalogItemType* s_pDI8;
Teplo::ExAnalogItemType* m_pDI8;
```
2. teplo_intsensorsbase.cpp
3. teplo_identifiers.h
```c++
```