Skip to content
Snippets Groups Projects
Commit 00ea69ac authored by shinedday's avatar shinedday
Browse files

Fix exit topic typo that led to unwanted behaviour

parent 45feef7a
Branches
No related tags found
No related merge requests found
...@@ -7,20 +7,8 @@ ...@@ -7,20 +7,8 @@
- [Shared work](#shared-work) - [Shared work](#shared-work)
- [Wait function](#wait-function) - [Wait function](#wait-function)
- [Experience format](#experience-format) - [Experience format](#experience-format)
- [Topics](#topics)
- [Agent](#agent)
- [Scheduler](#scheduler)
- [Amas](#amas)
- [Env](#env)
- [Mosquitto (Windows)](#mosquitto-windows)
- [Mosquitto (Linux) Didn't work](#mosquitto-linux-didnt-work)
requirement :
* paho-mqtt
* pexpect
# Reseau # Reseau
Port : Port :
...@@ -31,8 +19,6 @@ Port : ...@@ -31,8 +19,6 @@ Port :
* Broker : Mosquitto (Windows) * Broker : Mosquitto (Windows)
* Client : python paho-mqtt * Client : python paho-mqtt
**Configuration raspberry :**
SSH activé avec hostname et mdp
**Configuration windows :** **Configuration windows :**
WSL (pour pouvoir démarer l'amas) WSL (pour pouvoir démarer l'amas)
...@@ -40,8 +26,11 @@ WSL (pour pouvoir démarer l'amas) ...@@ -40,8 +26,11 @@ WSL (pour pouvoir démarer l'amas)
# Random note # Random note
First procedure : ihm :
1. etre sur que le ssh est trust (faire un premier ssh hors du programe) 1. Loading (check if good format) -> Warning -> can't "start"
2. Ping (all in config) -> Warning -> can't start, can't agent
3. Agent -> Warning -> already running -> kill ?
4. Whatever (start)
Start procédure : Start procédure :
...@@ -186,117 +175,3 @@ Pour ajouter des attributs a l'initialisation aux agents il suffit de rajouter d ...@@ -186,117 +175,3 @@ Pour ajouter des attributs a l'initialisation aux agents il suffit de rajouter d
**A AJOUTER** **A AJOUTER**
un .config dans les experience avec la version du coeur un .config dans les experience avec la version du coeur
# Topics
## Agent
Tout les topics des agents sont du format :
> `agent/agentid/topicname`
Par exemple le topic `log` de l'agent 2 est :
> `agent/2/log`
Les topics présent par défaut :
`log` :
> envoie un message qui sera print par l'amas
`cycle_done` :
> prévient le scheduler qu'une action c'est fini
`metric` :
> a la fin de chaque cycle envoie un dico avec tout les info a potentielement partager
## Scheduler
Les topics du scheduler sont dans le format :
> `scheduler/aQui/topic`
Par exemple, pour débloquer les agents :
> `scheduler/agent/wakeup`
Les topics présent par défaut :
`agent/wakeup` :
> envoie a tout les agents un message pour les débloquer
`schedulable/wakeup` :
> envoie a l'amas et l'environment un message pour les débloquer
## Amas
Les topics présent par défaut :
`amas/agent/new` :
> Envoie un message pour prévenir qu'un nouvel agent est crée avec son ID
`amas/action_done` :
> Envoie un message pour prévenir le scheduleur de la fin d'une action
`amas/agent/id/neighbor` :
> Topic to communicate to agent "id" his neighborhood
## Env
Les topics présent par défaut :
`env/action_done` :
> Envoie un message pour prévenir le scheduleur de la fin d'une action
# Mosquitto (Windows)
Stop mosquitto in service
Start mosquitto : `mosquitto -v -c D:\data\mosquitto\mosquitto.conf`
Config file :
```
allow_anonymous false
password_file D:\data\mosquitto\pwfile
listener 1883
```
Check port 1883 : `netstat -a`
# Mosquitto (Linux) Didn't work
Config file :
```
allow_anonymous false
password_file /etc/mosquitto/pwfile
listener 1883
```
Restart moquitto :
```
sudo service mosquitto stop
// check if a pid is still running
sudo lsof -i:1883
// or
pgrep mosquitto
// and kill it
sudo kill pid
sudo start mosquitto -v
```
**firewall (didn't work):**
```
sudo apt update
sudo apt full-upgrade
sudo apt install ufw
sudo ufw status verbose
```
allow :
```
sudo ufw allow port
sudo ufw enable
```
```
sudo ufw disable
sudo apt remove ufw
```
No preview for this file type
...@@ -20,7 +20,7 @@ class Schedulable(MqttClient): ...@@ -20,7 +20,7 @@ class Schedulable(MqttClient):
MqttClient.__init__(self, broker_ip, client_id) MqttClient.__init__(self, broker_ip, client_id)
self.exit_bool: bool = False self.exit_bool: bool = False
self.subscribe("ping/exit", self.exit_procedure) self.subscribe("ihm/exit", self.exit_procedure)
self.nbr_cycle: int = 0 self.nbr_cycle: int = 0
self.wait_delay: float = 0.01 self.wait_delay: float = 0.01
......
...@@ -26,7 +26,8 @@ class SSHClient: ...@@ -26,7 +26,8 @@ class SSHClient:
def __init__(self, clients: List[RemoteClient]): def __init__(self, clients: List[RemoteClient]):
self.clients = clients self.clients = clients
def run_cmd(self, client: int, cmd: list): def run_cmd(self, client: int, cmd: list) -> list[str]:
ret = []
try: try:
s = pxssh.pxssh() s = pxssh.pxssh()
dest = self.clients[client] dest = self.clients[client]
...@@ -35,13 +36,15 @@ class SSHClient: ...@@ -35,13 +36,15 @@ class SSHClient:
for command in cmd: for command in cmd:
s.sendline(command.cmd) s.sendline(command.cmd)
s.prompt() s.prompt()
ret.append(s.before.decode('utf-8'))
if command.do_print: if command.do_print:
print(command.prefix, s.before.decode('utf-8')) print(command.prefix, ret[-1])
s.logout() s.logout()
except pxssh.ExceptionPxssh as e: except pxssh.ExceptionPxssh as e:
print("pxssh failed on login.") print("pxssh failed on login.")
print(e) print(e)
return ret
def update(self, experiment_name): def update(self, experiment_name):
for client in self.clients: for client in self.clients:
......
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Please register or to comment