<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://www.elab.tecnico.ulisboa.pt/wwwelab/wiki/index.php?action=history&amp;feed=atom&amp;title=Controlador_remoto_del_experimento</id>
	<title>Controlador remoto del experimento - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://www.elab.tecnico.ulisboa.pt/wwwelab/wiki/index.php?action=history&amp;feed=atom&amp;title=Controlador_remoto_del_experimento"/>
	<link rel="alternate" type="text/html" href="http://www.elab.tecnico.ulisboa.pt/wiki/index.php?title=Controlador_remoto_del_experimento&amp;action=history"/>
	<updated>2026-07-17T02:41:23Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.34.2</generator>
	<entry>
		<id>http://www.elab.tecnico.ulisboa.pt/wiki/index.php?title=Controlador_remoto_del_experimento&amp;diff=4270&amp;oldid=prev</id>
		<title>Ist428984: Created page with &quot;PARA ESPANHOL  = Pre-requisites =  == Build environment ==  * Git (2.30.2+) * Ant (1.10.9+) * Maven (3.6.3+) * OpenJDK 11 (11.0.8+) * Docker (20.10+) * docker-compose (1.25.4+...&quot;</title>
		<link rel="alternate" type="text/html" href="http://www.elab.tecnico.ulisboa.pt/wiki/index.php?title=Controlador_remoto_del_experimento&amp;diff=4270&amp;oldid=prev"/>
		<updated>2021-08-24T13:36:25Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;PARA ESPANHOL  = Pre-requisites =  == Build environment ==  * Git (2.30.2+) * Ant (1.10.9+) * Maven (3.6.3+) * OpenJDK 11 (11.0.8+) * Docker (20.10+) * docker-compose (1.25.4+...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;PARA ESPANHOL&lt;br /&gt;
&lt;br /&gt;
= Pre-requisites =&lt;br /&gt;
&lt;br /&gt;
== Build environment ==&lt;br /&gt;
&lt;br /&gt;
* Git (2.30.2+)&lt;br /&gt;
* Ant (1.10.9+)&lt;br /&gt;
* Maven (3.6.3+)&lt;br /&gt;
* OpenJDK 11 (11.0.8+)&lt;br /&gt;
* Docker (20.10+)&lt;br /&gt;
* docker-compose (1.25.4+)&lt;br /&gt;
&lt;br /&gt;
== Multicast Controller and rec.client ==&lt;br /&gt;
&lt;br /&gt;
* Docker (20.10+)&lt;br /&gt;
* docker-compose (1.25.4+)&lt;br /&gt;
&lt;br /&gt;
== Hardware Server ==&lt;br /&gt;
&lt;br /&gt;
* OpenJDK 11 (11.0.8+)&lt;br /&gt;
&lt;br /&gt;
= Preparation steps =&lt;br /&gt;
&lt;br /&gt;
Setup JAVA_HOME environment variable pointing to a valid openjdk11 installation:&lt;br /&gt;
&lt;br /&gt;
    $ export JAVA_HOME=/path/to/openjdk11&lt;br /&gt;
&lt;br /&gt;
Setup ~/.m2/toolchains.xml pointing to a valid openjdk11 installation:&lt;br /&gt;
&lt;br /&gt;
    &amp;lt;toolchains&amp;gt;&lt;br /&gt;
        &amp;lt;toolchain&amp;gt;&lt;br /&gt;
            &amp;lt;type&amp;gt;jdk&amp;lt;/type&amp;gt;&lt;br /&gt;
                &amp;lt;provides&amp;gt;&lt;br /&gt;
                    &amp;lt;vendor&amp;gt;openjdk&amp;lt;/vendor&amp;gt;&lt;br /&gt;
                    &amp;lt;version&amp;gt;11&amp;lt;/version&amp;gt;&lt;br /&gt;
                &amp;lt;/provides&amp;gt;&lt;br /&gt;
            &amp;lt;configuration&amp;gt;&lt;br /&gt;
                &amp;lt;jdkHome&amp;gt;/path/to/openjdk/jdk11.0.8&amp;lt;/jdkHome&amp;gt;&lt;br /&gt;
            &amp;lt;/configuration&amp;gt;&lt;br /&gt;
        &amp;lt;/toolchain&amp;gt;&lt;br /&gt;
    &amp;lt;/toolchains&amp;gt;&lt;br /&gt;
&lt;br /&gt;
First checkout the project from github:&lt;br /&gt;
&lt;br /&gt;
    $ git clone https://github.com/linkareti/rec-project.git&lt;br /&gt;
&lt;br /&gt;
(FIXME) Then we need to switch to jdk11-migration branch:&lt;br /&gt;
&lt;br /&gt;
    $ git checkout jdk11-migration&lt;br /&gt;
&lt;br /&gt;
To create a pendulum experiment, the script create_pendulum_experiment.sh helps to create a base experiment for a brand new pendulum&lt;br /&gt;
&lt;br /&gt;
'''experiments/create_pendulum_experiment.sh'''&lt;br /&gt;
&lt;br /&gt;
    '''Mandatory arguments''':&lt;br /&gt;
    * '''1st argument''': Name of the experiment (e.g. worldpendulum)&lt;br /&gt;
    * '''2nd argument''': ID of the experiment (e.g. ELAB_WORLD_PENDULUM)&lt;br /&gt;
    * '''3rd argument''': Pendulum location (e.g. Faro)&lt;br /&gt;
&lt;br /&gt;
    '''Optional arguments''':&lt;br /&gt;
    * '''4th argument''': URL to the video (e.g. rtsp://elabmc.ist.utl.pt:80/wp_ccalg.sdp)&lt;br /&gt;
    * '''5th argument''': Pendulum serial device location (default: /dev/ttyS0)&lt;br /&gt;
&lt;br /&gt;
Sample script execution to create pendulum:&lt;br /&gt;
&lt;br /&gt;
    $ ./create_pendulum_experiment.sh wpalentejo ELAB_WP_ALENTEJO Alentejo rtsp://elabmc.ist.utl.pt:80/wp_alentejo.sdp /dev/ttyS0&lt;br /&gt;
&lt;br /&gt;
= Build =&lt;br /&gt;
&lt;br /&gt;
Configure the following properties based on your environment:&lt;br /&gt;
&lt;br /&gt;
'''build_pendulum.properties''':&lt;br /&gt;
&lt;br /&gt;
* '''pendulum.experiment.list''': Name of the experiment(s) to build, comma (,) delimited.&lt;br /&gt;
* '''pendulum.multicast.controller.host''': Hostname where Multicast controller is going to be installed (default: elab-multicast)&lt;br /&gt;
* '''pendulum.multicast.controller.port''': Listen CORBA port used to recieve connections from Hardware Server, rec.web and rec.client (default: 9001)&lt;br /&gt;
* '''pendulum.rec.multicastcontroller.jmxremote.port''': Listen JMX port used to recieve connections from rec.web (default: 25001)&lt;br /&gt;
* '''install.dir''': Base directory where Multicast Controller is going to be installed (default: /home/elab)&lt;br /&gt;
* '''deployment.subdir''': Sub directory where Multicast Controller is going to be installed (default: /rec-deployment)&lt;br /&gt;
&lt;br /&gt;
'''deployment/compose/src/main/docker/docker-compose-pendulum.yml''':&lt;br /&gt;
&lt;br /&gt;
* '''WEBSWING_PUBLIC_URL''': URL where webswing is accessible (e.g. https://elab-dev.vps.tecnico.ulisboa.pt/)&lt;br /&gt;
&lt;br /&gt;
'''experiments/{experiment}/etc/build.properties'''&lt;br /&gt;
&lt;br /&gt;
* '''experiment.driver.device''': Serial port device (e.g. /dev/ttyS0)&lt;br /&gt;
&lt;br /&gt;
Package everything:&lt;br /&gt;
    $ mvn clean package -Dmaven.test.skip=true -Djarsigner.alias=&amp;quot;REC&amp;quot; -Dbuild.environment=pendulum -Dpack.docker.images -Dpublic.repo=docker.io&lt;br /&gt;
&lt;br /&gt;
Copy resulting packages to destination servers:&lt;br /&gt;
&lt;br /&gt;
* Multicast Server&lt;br /&gt;
    $ scp deployment/images/target/reverse-proxy.tar multicast-server-name:/tmp/&lt;br /&gt;
    $ scp deployment/images/target/multicast.tar multicast-server-name:/tmp/&lt;br /&gt;
    $ scp deployment/images/target/webswing-admin.tar multicast-server-name:/tmp/&lt;br /&gt;
    $ scp deployment/images/target/webswing.tar multicast-server-name:/tmp/&lt;br /&gt;
    $ scp deployment/compose/target/docker-compose-runner.yml multicast-server-name:/tmp/docker-compose.yml&lt;br /&gt;
&lt;br /&gt;
* Hardware Server&lt;br /&gt;
    $ scp dist/java/*HardwareServer*.zip hardware-server-name:/tmp/&lt;br /&gt;
&lt;br /&gt;
= Install =&lt;br /&gt;
&lt;br /&gt;
== ReC Client and Multicast Controller==&lt;br /&gt;
&lt;br /&gt;
* Create user elab&lt;br /&gt;
    $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab&lt;br /&gt;
&lt;br /&gt;
* Add user to docker group&lt;br /&gt;
    $ sudo usermod -a -G docker elab&lt;br /&gt;
&lt;br /&gt;
* Load Docker images (only if building outside target deployment server)&lt;br /&gt;
    $ sudo -u elab docker load --input /tmp/webswing.tar # ReC client image&lt;br /&gt;
    $ sudo -u elab docker load --input /tmp/multicast.tar # Multicast Controller image&lt;br /&gt;
    $ sudo -u elab docker load --input /tmp/webswing-admin.tar # ReC client admin console image&lt;br /&gt;
    $ sudo -u elab docker load --input /tmp/reverse-proxy.tar # Reverse Proxy image&lt;br /&gt;
&lt;br /&gt;
* Copy docker-compose.yml file to elab user home&lt;br /&gt;
    $ sudo -u elab cp /tmp/docker-compose.yml /home/elab/&lt;br /&gt;
&lt;br /&gt;
* Start all services&lt;br /&gt;
    $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d&lt;br /&gt;
&lt;br /&gt;
== Hardware Server ==&lt;br /&gt;
&lt;br /&gt;
* Replace wpexperiment with your experiment name&lt;br /&gt;
    $ export experiment=wpexperiment&lt;br /&gt;
&lt;br /&gt;
* Create user elab&lt;br /&gt;
    $ sudo useradd --create-home --shell /bin/false --expiredate 1 elab&lt;br /&gt;
&lt;br /&gt;
* Create experiment directory&lt;br /&gt;
    $ sudo -u elab mkdir /home/elab/rec-deployment/${experiment}&lt;br /&gt;
&lt;br /&gt;
* Unpack experiment package to experiment directory&lt;br /&gt;
    $ sudo -u elab unzip /tmp/${experiment}HardwareServer*.zip -d  /home/elab/rec-deployment/${experiment}&lt;br /&gt;
&lt;br /&gt;
* Start experiment&lt;br /&gt;
    $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start&lt;br /&gt;
&lt;br /&gt;
= Test =&lt;br /&gt;
&lt;br /&gt;
* Direct access to experiment:&lt;br /&gt;
&lt;br /&gt;
Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com) + experiment name (e.g. wpalentejo)&lt;br /&gt;
&lt;br /&gt;
https://elab.my.url.com/wpalentejo&lt;br /&gt;
&lt;br /&gt;
* Webswing and administration console&lt;br /&gt;
&lt;br /&gt;
Access configured URL at WEBSWING_PUBLIC_URL property (e.g. https://elab.my.url.com)&lt;br /&gt;
&lt;br /&gt;
https://elab.my.url.com/&lt;br /&gt;
&lt;br /&gt;
User: admin&lt;br /&gt;
Pass: pwd&lt;br /&gt;
&lt;br /&gt;
= Operations =&lt;br /&gt;
&lt;br /&gt;
== Hardware Server ==&lt;br /&gt;
&lt;br /&gt;
* Startup&lt;br /&gt;
    $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh start&lt;br /&gt;
&lt;br /&gt;
* Shutdown&lt;br /&gt;
    $ sudo -u elab /home/elab/rec-deployment/${experiment}/${experiment}Daemon.sh stop&lt;br /&gt;
&lt;br /&gt;
* Logs&lt;br /&gt;
    $ /home/elab/rec-deployment/${experiment}/*.log&lt;br /&gt;
&lt;br /&gt;
== ReC Client and Multicast Controller ==&lt;br /&gt;
&lt;br /&gt;
* Startup&lt;br /&gt;
    $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml up -d&lt;br /&gt;
&lt;br /&gt;
* Shutdown&lt;br /&gt;
    $ sudo -u elab docker-compose -f /home/elab/docker-compose.yml down&lt;br /&gt;
&lt;br /&gt;
* Logs:&lt;br /&gt;
    $ docker logs rec.client # ReC client logs (webswing)&lt;br /&gt;
    $ docker logs rec.multicast # ReC Multicast Controller logs&lt;br /&gt;
    $ docker logs rec.proxy # ReC Proxy logs&lt;br /&gt;
    $ docker logs rec.client-admin # ReC client Administration Console logs (webswing)&lt;br /&gt;
&lt;br /&gt;
Steps to connect to IST environment:&lt;br /&gt;
&lt;br /&gt;
# TODO Steps&lt;br /&gt;
&lt;br /&gt;
{|&lt;br /&gt;
|[[Precision Pendulum Assembly: Apparatus description | Next Page (Apparatus description)]]&lt;br /&gt;
|}&lt;br /&gt;
&lt;br /&gt;
==Links==&lt;br /&gt;
&lt;br /&gt;
*[[Controlador de Experiências Remotas | Portuguese Version (Versão em português)]]&lt;br /&gt;
*[[Controlador remoto del experimento  | Spanish Version (Versión en español)]]&lt;/div&gt;</summary>
		<author><name>Ist428984</name></author>
		
	</entry>
</feed>