I ask for help to build a unit that helps in the self-consumption of photovoltaics, I don’t know where to start …
on the net we talk about triac or ssr and let pass half-waves.
help me
@Massimotruglio83 you are looking for help in the wrong forum. if you need any help with cayenne, then you can ask here.
forgive me, I think a forum is for exchanging ideas, anyway dusting off my electrotechnics books I took a 40A SSR relay (https://www.digikey.it/product-detail/it/te-connectivity-potter-&- Brumfield / SSR-240D25 / PB545-ND / 678,179? utm_adgroup = & mkwid = s5qZaWcqt & pcrid = 315874699131 & pkw = & pmt = & pdv = c & productid = 678179 && gclid = Cj0KCQjwpsLkBRDpARIsAKoYI8zXJ4WPKopkW8jrYAnhjJIpyFunGYuNT3td_g-5DeeuDWIqgoo3ZPAaAhUwEALw_wcB), I just have to create the code, but on the net there a few things, I hope to do in weekend
yup, but there are many other forum that specialises in their respective field where you can find more help. anything related cayenne we are here to help.
how can I connect two devices with cayenne and exchange data in order to manage the automatisms?
are you familer with node-red?
no
anyways, based on @spacefolder code, i modified to subscribe to other device topic .
/*
MQTT Raw Data to Cayenne Dashboard,
using the great Nick O'Leary's PubSubClient
(Arduino Client for MQTT, https://github.com/knolleary/pubsubclient)
What does it do?
This sketch will attempt to connect to Cayenne MQTT server via Wifi,
subscribe to a "dashboard button" topic, to turn on/off the esp8266 built in led.
Also it will publish temperature readings from a Dallas DS18b20 digital temperature sensor.
In a near future, the esp8266 (NodeMCU v2) should act as a smart thermostat, controlling my central heater/boiler.
It should be possible to remotely check ambient temperature and boiler status using
Cayenne Dashboard and turn the heater on/off (in case I left home in a hurry!, etc.)
Inspired in several tutorials and sketches mashed up, mainly..
Andreas Spiess https://github.com/SensorsIot
Terry King terry@yourduino.com
Markus Ulsass https://github.com/markbeee
Marc / spacefolder
*/
// ---------- INLCUDE LIBRARIES ----------
#include <ESP8266WiFi.h>
#include <PubSubClient.h>
// ---------- DEFINE CONSTANT VALUES ----------
#define MQTT_SERVER "mqtt.mydevices.com"
#define MQTT_SERVERPORT 1883
#define MQTT_USERNAME ""
#define MQTT_PASSWORD ""
#define CLIENT_ID ""
#define CLIENT_ID_SUB ""
#define MQTT_TOPIC_BTN_ONOFF "v1/" MQTT_USERNAME "/things/" CLIENT_ID_SUB "/data/2"
// ---------- INITIALIZE INSTANCES ----------
WiFiClient espClient; // Creates a client instance for the PubSubClient
PubSubClient client(espClient);
// ---------- DEFINE VARIABLES ----------
const char* ssid = ""; // WLAN-SSID (WiFi router)
const char* password = ""; // WLAN Password
// Define a datatype to store the mqtt message, up to 50 bytes.
char msg[50]; // 50 BYTES QUIZAS SEA MUCHO AL GAS, pero bueh
// -------------------- SETUP -------------------
void setup() {
// Initialize serial monitor for debugging purposes.
Serial.begin(9600);
Serial.println("DEBUG: Entering setup ");
// Attempt to connect to WiFi.
WiFi.begin(ssid, password);
Serial.println();
Serial.println();
Serial.print("Connecting to ");
Serial.println(ssid);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
Serial.print(".");
}
Serial.println(""); // Faltaria agregar que muestre el ip si no es estatico
Serial.println("WiFi connected");
// Initialize MQTT PubSub Library
client.setServer(MQTT_SERVER, MQTT_SERVERPORT);
// Function called in case of an incomming mqtt message from Cayenne Dashboard
// (In this case is the dashboard button to turn on/off the heater)
client.setCallback(mqttCallback);
Serial.println("DEBUG: Setup Done! ");
}
// -------------------- LOOOP -------------------
void loop() {
// Check if the esp8266 is connected to the mqtt server.
if (!client.connected()) {
reconnect();
}
// If connected, perform PubSubClient housekeeping function.
client.loop();
delay(500);
}
// ------------------------------ OTHER FUNCTIONS
// Function that attempts to reconnect to the mqtt server.
void reconnect() {
// If esp8266 is disconnected from the mqtt server, try to reconnect.
// (*** I still need to think what wil happen to the boiler if connection is lost ***)
while (!client.connected()) {
Serial.print("DEBUG: Attempting MQTT connection...");
// Attempt to connect
if (client.connect(CLIENT_ID, MQTT_USERNAME, MQTT_PASSWORD)) {
Serial.println("connected");
// Once connected, resubscribe to the Dashboard on/off button topic.
client.subscribe(MQTT_TOPIC_BTN_ONOFF);
} else {
Serial.print("failed, rc=");
Serial.print(client.state());
Serial.println(" try again in 5 seconds");
// Wait 5 seconds before retrying
delay(5000);
}
}
Serial.println("DEBUG: Quiting reconnect loop ");
}
// Function to intercept MQTT messages
void mqttCallback(char* topic, byte* payload, unsigned int length) {
Serial.print("Message arrived [");
Serial.print(topic);
Serial.print("] ");
for (int i = 0; i < length; i++) {
// Show the received message "stream" in the serial monitor.
Serial.print((char)payload[i]);
}
Serial.println();
// Delay for debugging purposes. If a message arrives from Cayenne, the terminal feed pauses 5'.
delay(5000);
}