//balong// Code generated by Arduino IoT Cloud
#include <ModbusIP_ESP8266.h>
#include <ArduinoIoTCloud.h>
#include <Arduino_ConnectionHandler.h>
IPAddress remote(192, 168, 1, 10);
ModbusIP mb;
const char DEVICE_LOGIN_NAME[] = "9ddf92eb-4814-4b3d-848b-d4b06b44426f";
const char SSID[] = "Wokwi-GUEST"; // Network SSID (name)
const char PASS[] = ""; // Network password (use for WPA, or use as key for WEP)
const char DEVICE_KEY[] = "fvXit#bq6C7kYpcfRDN4CPlX!"; // Secret device password
void onQ0Change();
void onQ1Change();
void onQ2Change();
void onQ3Change();
CloudSwitch q0;
CloudSwitch q1;
CloudSwitch q2;
CloudSwitch q3;
void initProperties(){
ArduinoCloud.setBoardId(DEVICE_LOGIN_NAME);
ArduinoCloud.setSecretDeviceKey(DEVICE_KEY);
ArduinoCloud.addProperty(q0, READWRITE, ON_CHANGE, onQ0Change);
ArduinoCloud.addProperty(q1, READWRITE, ON_CHANGE, onQ1Change);
ArduinoCloud.addProperty(q2, READWRITE, ON_CHANGE, onQ2Change);
ArduinoCloud.addProperty(q3, READWRITE, ON_CHANGE, onQ3Change);
}
const int REG = 100;
WiFiConnectionHandler ArduinoIoTPreferredConnection(SSID, PASS);
void setup() {
Serial.begin(115200);
delay(2000);
// Initialize Cloud
initProperties();
ArduinoCloud.begin(ArduinoIoTPreferredConnection);
setDebugMessageLevel(2);
ArduinoCloud.printDebugInfo();
// Initialize Modbus TCP client
mb.client();
}
void loop() {
ArduinoCloud.update();
if (!mb.isConnected(remote)) {
mb.connect(remote);
}
mb.task();
// Periodically check connection status
}
void onQ0Change() {
mb.writeCoil(remote, 0, q0);
Serial.print("Q0.set to: ");
}
void onQ1Change() {
mb.writeCoil(remote, 1, q1);
Serial.print("Q1");
}
void onQ2Change() {
mb.writeCoil(remote, 2, q2);
Serial.print("Q2 set to: ");
}
void onQ3Change() {
mb.writeCoil(remote, 3, q3);
Serial.print("Q3 set to: ");
}
4<------
2------>
Modbus Master
Modbus Slave
TX/RX<---> PC