Включить / выключить реле от MQTT Flespi с помощью мангуста (JavaScript) + ESP32 - PullRequest
0 голосов
/ 23 октября 2018

У меня есть проект, который включает и выключает релейную плату, которая подключена к ESP32 (программирование с использованием Mongoose OS Javascript).Теперь, используя flespi MQTT, я хочу включить и выключить реле, подписавшись на тему.Я выполнил настройку и настройку брокера MQTT flespi, который может включать и выключать плату реле, печатая любое сообщение на MQTT flespi.

Поскольку я новичок в MQTT, как я могу сделать только конкретное сообщениечто в состоянии включить и выключить реле, когда я получил (подписаться) от flespi MQTT.Например, «ON Relay» = включит реле, «OFF Relay» = выключит реле.Только это сообщение вызовет доску.

Это мой код:

load('api_config.js');
load('api_gpio.js');
load('api_mqtt.js');
load('api_net.js');
load('api_sys.js');
load('api_timer.js');
load('api_adc.js');

let currentState = 0,
  relaypin = 4;

GPIO.set_mode(relaypin, GPIO.MODE_OUTPUT);

MQTT.sub('topic/#', function(conn, topic, msg) {
  print('Topic', topic, 'message', msg);
  print('ok');
  currentState = 1 - currentState;
  GPIO.write(relaypin, currentState);
  print('Relay is = ' + (currentState ? 'OFF' : 'ON'));

}, null);

1 Ответ

0 голосов
/ 26 октября 2018

Я уже решил проблему:

/*This command will trigger relay 
ON
{
"actuator" : "relay1",
"state": 1
}
OFF
{
"actuator" : "relay1",
"state": 0
}
*/

load('api_config.js');
load('api_gpio.js');
load('api_mqtt.js');
load('api_net.js');
load('api_sys.js');
load('api_timer.js');
load('api_adc.js');

let relaypin = 4;

GPIO.set_mode(relaypin, GPIO.MODE_OUTPUT);
GPIO.write(relaypin, 1);

MQTT.sub('my/rainsensor', function(conn, topic, payload)
{
    let test = JSON.parse(payload);
    print('Topic:', topic, 'actuator type:', test.actuator, 'state:', test.state);

    //Check if '1' received and trigger relay ON
    if (1 === test.state) 
    {
    GPIO.write(relaypin, 0);
    print('Relay is = ON');
    }

    else if (0 === test.state) 
    {
    GPIO.write(relaypin, 1);
    print('Relay is = OFF');
    }

    else
    {
      print('WRONG COMMAND!!!');
    }
}, null);
...