2
0
This commit is contained in:
2026-01-21 07:39:24 +01:00
parent 0203d8d481
commit c1288d5296
3 changed files with 127 additions and 39 deletions

View File

@@ -320,7 +320,7 @@
"group": "0b9ca135d0b7313a",
"name": "",
"label": "B0",
"order": 6,
"order": 7,
"width": 0,
"height": 0,
"emulateClick": false,
@@ -359,7 +359,7 @@
"group": "0b9ca135d0b7313a",
"name": "",
"label": "B1",
"order": 7,
"order": 8,
"width": 0,
"height": 0,
"emulateClick": false,
@@ -398,7 +398,7 @@
"group": "b7568fe107ccb2e6",
"name": "",
"label": "B2",
"order": 6,
"order": 7,
"width": 0,
"height": 0,
"emulateClick": false,
@@ -437,7 +437,7 @@
"group": "b7568fe107ccb2e6",
"name": "",
"label": "B3",
"order": 7,
"order": 8,
"width": 0,
"height": 0,
"emulateClick": false,
@@ -657,10 +657,10 @@
"id": "9a23c6f558ea0378",
"type": "ui-text",
"z": "86a34ee77bf6db10",
"group": "c3dd11d0778f9e67",
"order": 8,
"width": 0,
"height": 0,
"group": "0b9ca135d0b7313a",
"order": 6,
"width": "1",
"height": "1",
"name": "",
"label": "s0",
"format": "{{msg.payload}}",
@@ -681,10 +681,10 @@
"id": "a80fa1a313f076c8",
"type": "ui-text",
"z": "86a34ee77bf6db10",
"group": "c3dd11d0778f9e67",
"order": 7,
"width": 0,
"height": 0,
"group": "b7568fe107ccb2e6",
"order": 6,
"width": "1",
"height": "1",
"name": "",
"label": "s1",
"format": "{{msg.payload}}",
@@ -705,10 +705,10 @@
"id": "10e55237847991c9",
"type": "ui-text",
"z": "86a34ee77bf6db10",
"group": "c3dd11d0778f9e67",
"group": "6ba51f61417860c1",
"order": 6,
"width": 0,
"height": 0,
"width": "1",
"height": "1",
"name": "",
"label": "s2",
"format": "{{msg.payload}}",
@@ -1041,7 +1041,7 @@
"group": "6ba51f61417860c1",
"name": "",
"label": "B4",
"order": 6,
"order": 7,
"width": 0,
"height": 0,
"emulateClick": false,
@@ -1080,7 +1080,7 @@
"group": "6ba51f61417860c1",
"name": "",
"label": "B5",
"order": 7,
"order": 8,
"width": 0,
"height": 0,
"emulateClick": false,

View File

@@ -88,6 +88,7 @@ const int CYCLE_MS = 100;
mqtt::async_client client(ADDRESS, CLIENTID);
void mqtt_start(mqtt::async_client *client);
void mqtt_send(mqtt::async_client *client);
// Réception des messages MQTT
@@ -111,10 +112,16 @@ public:
if (j.empty())
return;
if (j.contains("reset"))
{
reset = j["reset"].get<int>() != 0;
}
if (j.contains("marche")) {
marche = j["marche"].get<int>() != 0;
}
if (j.contains("arret")) {
arret = j["arret"].get<int>() != 0;
}
@@ -193,26 +200,19 @@ public:
v0 = j["v0"].get<int>();
if (j.contains("p0") && j["p0"].is_number()) {
p0 = j["p0"].get<int>();
niveau[0] = j["p0"].get<int>();
niveau[0] = p0 = j["p0"].get<int>();
}
if (j.contains("p1") && j["p1"].is_number())
{
p1 = j["p1"].get<int>();
niveau[1] = j["p1"].get<int>();
if (j.contains("p1") && j["p1"].is_number()) {
niveau[1] = p1 = j["p1"].get<int>();
}
if (j.contains("p2") && j["p2"].is_number())
{
p2 = j["p2"].get<int>();
niveau[2] = j["p2"].get<int>();
if (j.contains("p2") && j["p2"].is_number()) {
niveau[2] = p2 = j["p2"].get<int>();
}
if (j.contains("p3") && j["p3"].is_number())
{
p3 = j["p3"].get<int>();
niveau[3] = j["p3"].get<int>();
if (j.contains("p3") && j["p3"].is_number()) {
niveau[3] = p3 = j["p3"].get<int>();
}
process();
@@ -229,7 +229,6 @@ callback cb;
void mqtt_open(mqtt::async_client *client)
{
client->set_callback(cb);
mqtt::connect_options connOpts;
connOpts.set_clean_session(true);
@@ -240,6 +239,7 @@ void mqtt_open(mqtt::async_client *client)
client->connect(connOpts)->wait();
client->start_consuming();
client->subscribe(TOPIC, QOS)->wait();
mqtt_start(client);
}
catch (const mqtt::exception &exc)
{
@@ -272,6 +272,13 @@ void mqtt_send(mqtt::async_client *client)
client->publish(msg);
}
void mqtt_start(mqtt::async_client *client)
{
auto msg = mqtt::make_message("geii/out", "reset");
msg->set_qos(2);
client->publish(msg);
}
void mqtt_close()
{
try

View File

@@ -25,6 +25,7 @@ int mode_auto = 0;
int mode_manu = 0;
int etape = 0;
int etape_2 = 0;
int etape_sauvegarde = 0;
int c7_frontdescendant = 0;
int c7_precedent = 0;
@@ -47,6 +48,15 @@ int main()
void process()
{
// Gestion du RESET
// ****************************************************************
if (reset == 1) {
std::cout << "RESET" << std::endl;
etape = 0;
return;
}
// ****************************************************************
// Détection des fronts
// front montant (état courant supérieur à l'état précédent)
@@ -64,8 +74,79 @@ void process()
/* ****************************************************************
VOTRE PROGRAMME COMMENCE ICI
**************************************************************** */
if (etape == 0 && interrupteur[1] == 1 && capteur[1] == 1 && capteur[3] == 1 && capteur[5] == 1) {
etape = 1;
}
if (etape == 1 && !interrupteur[1]) {
etape = 0;
}
if (etape != 11 && interrupteur[2] && interrupteur[1] == 0 && (capteur[1]!=1 || capteur[3]!=1 || capteur[5]!=1))
{
etape = 10;
}
if (etape == 1 && marche_frontmontant) {
etape = 2;
}
if (etape == 2 && capteur[0]) {
etape = 3;
}
if (etape == 3 && capteur[2]) {
etape = 4;
}
if (etape == 4 && capteur[4]) {
etape = 5;
}
if (arret_frontdescedant) {
etape_sauvegarde = etape;
etape = 6;
}
if (etape == 6 && marche_frontmontant) {
etape = etape_sauvegarde;
}
if (etape == 10 && marche_frontmontant)
{
etape = 11;
}
if (etape == 11 && capteur[1] && capteur[3] && capteur[5])
{
etape = 0;
}
if (etape == 1) {
sortie[8] = 1;
}
else if (etape == 5) {
sortie[8] = 3;
}
else if (etape > 1 && etape < 5) {
sortie[8] = 2;
}
else if (etape == 10)
{
sortie[8] = millis() / 500 % 2 ? 2 : 0;;
}
else {
sortie[8] = 0;
}
actionneur[0] = !capteur[0] && etape == 2;
actionneur[2] = !capteur[2] && etape == 3;
actionneur[4] = !capteur[4] && etape == 4;
actionneur[1] = !capteur[1] && etape == 11;
actionneur[3] = !capteur[3] && etape == 11;
actionneur[5] = !capteur[5] && etape == 11;
actionneur[0] = actionneur[2] = actionneur[4] = 1;
/* ****************************************************************
VOTRE PROGRAMME S'ARRETE ICI
**************************************************************** */
@@ -81,4 +162,4 @@ actionneur[0] = actionneur[2] = actionneur[4] = 1;
bouton_precedent[i] = bouton[i];
}
c7_precedent = capteur[7];
}
}