Mam kilka stacji na ESP8266, którymi do niedawna zarządzałem przez stronę remoteme.org, a kody tworzyłem w Arduino IDE. Niestety twórca po pięciu latach porzucił ten fajny projekt i muszę znaleźć inne rozwiązanie do sterowania przez internet. Podjąłem próbę przejścia do Supli – z kilkoma urządzeniami nie było kłopotu i dały się ustawić konfiguratorem. Mam jednak stacje, które obsługują kilka przekaźników i termometr DS18B20, a dodatkowo wysyłają na jeden z adresów mojej sieci lokalnej informacje o zdarzeniach (alarmy z czujki zbliżeniowej). W kodzie wygląda to tak:
if(digitalRead(D6)==1){
WiFiClient client;
const int httpPort = 80;
if (!client.connect("192.168.0.6", httpPort)) {
Serial.println("connection failed");
return;
}
client.print(String("GET ") +"/Led"+" HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
}
O ile konfiguracja przekaźników i termometru jest dość łatwa w konfiguratorze, to nie udało mi się znaleźć w nim opcji warunkowości mogącej rozwiazać mój problem.
Myślę, że dobrym rozwiązaniem będzie stworzenie kodu w Arduino IDE, ale nie jestem w stanie zrobić tego od podstaw. Moje doświadczenie pozwala mi co najwyżej zmodyfikować jakiś „gotowiec” obsługujący przekaźniki i DS18B20 o w/w warunkowość. Jednak znalezienie takiego „gotowca” nie jest łatwe – jedyne co znalazłem to:
https://majsterkowo.pl/supla-nodemcu-v3 ... ogle-home/
Problem w tym, że projekt jest już nieco „nieświeży” i ze współczesnymi bibliotekami nie działa.
Będę wdzięczny za wskazanie mi kodów nadających się do modyfikacji.
Kod do ESP w Arduino - przekaźniki + żądanie HTTP
Witam, widaje mi sie ze mogę cieściowo pomóc.
wejdz na
https://github.com/SUPLA/supla-device
Na samym dole masz tekst w którym opisane jest wszystko dokładnie co i jak.
Przetłumacz sobie to najlepiej w chrome i masz tam takie cos jak:
Jesli jakies inne fukcje potrzebujesz to pisz na PW, moze ci cos pomogłem
wejdz na
https://github.com/SUPLA/supla-device
Na samym dole masz tekst w którym opisane jest wszystko dokładnie co i jak.
Przetłumacz sobie to najlepiej w chrome i masz tam takie cos jak:
Co do przekaznika to ja robię tak:Jak przeprowadzić migrację programów napisanych w bibliotece SuplaDevice w wersji 1.6 i starszych?
Kod: Zaznacz cały
#include <SuplaDevice.h>
#include <Arduino.h>
#include <supla/sensor/DS18B20.h>
#include <supla/sensor/Thermometer.h>
#include <supla/network/esp_wifi.h>
#include <supla/control/roller_shutter.h>
#include <supla/control/relay.h>
#include <supla/control/button.h>
#include <supla/control/action_trigger.h>
#include <supla/device/status_led.h>
#include <supla/storage/littlefs_config.h>
#include <supla/network/esp_web_server.h>
#include <supla/network/html/device_info.h>
#include <supla/network/html/protocol_parameters.h>
#include <supla/network/html/status_led_parameters.h>
#include <supla/network/html/wifi_parameters.h>
#include <supla/network/html/security_certificate.h>
#include <supla/device/supla_ca_cert.h>
#include <supla/events.h>
Supla::ESPWifi wifi("WIFI NAZWA", "**********");
void setup() {
uint8_t mac[6];
WiFi.macAddress(mac);
// Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
char GUID[SUPLA_GUID_SIZE] = {};
// Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {};
// Temperatura DS18B20
DeviceAddress ds1addr = {0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0, 0x0}; // Adres czujnika DS18B20 :)
new Supla::Sensor::DS18B20(5, ds1addr); // Pin czujnika i adres
// Przekazniki i przyciski
auto r1 = new Supla::Control::Relay(14); // Przekaznik 1
auto r2 = new Supla::Control::Relay(13); // Przekaznik 2
auto button1 = new Supla::Control::Button(2, true, true); // Przycisk 1
auto button2 = new Supla::Control::Button(12, true, true); // Przycisk 2
button1->addAction(Supla::TOGGLE, *r1, Supla::ON_PRESS); // Funkcja łaczaca przycisk i przekaznik
button2->addAction(Supla::TOGGLE, *r2, Supla::ON_PRESS); // Funkcja łaczaca przycisk i przekaznik
auto at1 = new Supla::Control::ActionTrigger(); // AKCJA
at1->setRelatedChannel(r1); // Kanał w supla
at1->setRelatedChannel(r2); ////////////////
SuplaDevice.begin(GUID, "svrXX.supla.org", "email@email.com", AUTHKEY);
}
void loop() {
SuplaDevice.iterate();
}
Dziękuję za zainteresowanie i wskazówki. Udało mi się problem rozwiązać wychodząc od kodu załączonego przez kol. bigthomas w temacie:
viewtopic.php?t=7263
Dla zainteresowanych załączam wynikowy kod:
#include <SPI.h>
#include <SuplaDevice.h>
#include <ESP8266WiFi.h>
#define STORAGE_OFFSET 100
#include <supla/storage/eeprom.h>
Supla::Eeprom eeprom(STORAGE_OFFSET);
const char* host = "192.168.0.6";
#include <supla/control/relay.h>
#include <supla/sensor/DS18B20.h>
WiFiServer server(80);
auto r1 = new Supla::Control::Relay(5, false); // przekaźnik sterowany stanem niskim
auto r2 = new Supla::Control::Relay(4, false); // przekaźnik sterowany stanem niskim
auto r3 = new Supla::Control::Relay(2, false); // przekaźnik sterowany stanem niskim
auto r4 = new Supla::Control::Relay(0, false); // przekaźnik sterowany stanem niskim
auto r5 = new Supla::Control::Relay(14, false); // przekaźnik sterowany stanem niskim
//auto r6 = new Supla::Control::Relay(33, false); // przekaźnik sterowany stanem niskim
//auto r7 = new Supla::Control::Relay(25, false); // przekaźnik sterowany stanem niskim
//auto r8 = new Supla::Control::Relay(26, false); // przekaźnik sterowany stanem niskim
// ESP8266 based board:
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("XXXX", "XXXXXX"); //SSID i hasło do WiFi
void setup() {
Serial.begin(115200);
pinMode(15, OUTPUT);
pinMode(12, INPUT);
// Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
char GUID[SUPLA_GUID_SIZE] = {0xXX,0xXX,0x02,0xXX,0x25,0xD5,0xD8,0xB4,0x19,0xXX,0xA9,0xXX,0x5E,0xCB,0x76,0xXX};
// Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0xXX,0xAB,0xC9,0xXX,0x0A,0xEC,0xXX,0x7C,0x02,0xXX,0x8E,0x8B,0xXX,0x62,0x46,0xXX};
new Supla::Sensor::DS18B20(13);
SuplaDevice.setName("Altana");
SuplaDevice.begin(GUID, // Global Unique Identifier
"svrXX.supla.org", // SUPLA server address
"xxxxxxxx@xx.pl", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key
server.begin();
WiFi.softAPdisconnect(true); // wyłączenie rozgłaszania sieci ESP
}
void loop() {
SuplaDevice.iterate();
delay(200);
if(digitalRead(12)==1){
WiFiClient client;
const int httpPort = 80;
if (!client.connect("192.168.0.6", httpPort)) {
Serial.println("connection failed");
return;
}
client.print(String("GET ") +"/Led"+" HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
}
}
viewtopic.php?t=7263
Dla zainteresowanych załączam wynikowy kod:
#include <SPI.h>
#include <SuplaDevice.h>
#include <ESP8266WiFi.h>
#define STORAGE_OFFSET 100
#include <supla/storage/eeprom.h>
Supla::Eeprom eeprom(STORAGE_OFFSET);
const char* host = "192.168.0.6";
#include <supla/control/relay.h>
#include <supla/sensor/DS18B20.h>
WiFiServer server(80);
auto r1 = new Supla::Control::Relay(5, false); // przekaźnik sterowany stanem niskim
auto r2 = new Supla::Control::Relay(4, false); // przekaźnik sterowany stanem niskim
auto r3 = new Supla::Control::Relay(2, false); // przekaźnik sterowany stanem niskim
auto r4 = new Supla::Control::Relay(0, false); // przekaźnik sterowany stanem niskim
auto r5 = new Supla::Control::Relay(14, false); // przekaźnik sterowany stanem niskim
//auto r6 = new Supla::Control::Relay(33, false); // przekaźnik sterowany stanem niskim
//auto r7 = new Supla::Control::Relay(25, false); // przekaźnik sterowany stanem niskim
//auto r8 = new Supla::Control::Relay(26, false); // przekaźnik sterowany stanem niskim
// ESP8266 based board:
#include <supla/network/esp_wifi.h>
Supla::ESPWifi wifi("XXXX", "XXXXXX"); //SSID i hasło do WiFi
void setup() {
Serial.begin(115200);
pinMode(15, OUTPUT);
pinMode(12, INPUT);
// Replace the falowing GUID with value that you can retrieve from https://www.supla.org/arduino/get-guid
char GUID[SUPLA_GUID_SIZE] = {0xXX,0xXX,0x02,0xXX,0x25,0xD5,0xD8,0xB4,0x19,0xXX,0xA9,0xXX,0x5E,0xCB,0x76,0xXX};
// Replace the following AUTHKEY with value that you can retrieve from: https://www.supla.org/arduino/get-authkey
char AUTHKEY[SUPLA_AUTHKEY_SIZE] = {0xXX,0xAB,0xC9,0xXX,0x0A,0xEC,0xXX,0x7C,0x02,0xXX,0x8E,0x8B,0xXX,0x62,0x46,0xXX};
new Supla::Sensor::DS18B20(13);
SuplaDevice.setName("Altana");
SuplaDevice.begin(GUID, // Global Unique Identifier
"svrXX.supla.org", // SUPLA server address
"xxxxxxxx@xx.pl", // Email address used to login to Supla Cloud
AUTHKEY); // Authorization key
server.begin();
WiFi.softAPdisconnect(true); // wyłączenie rozgłaszania sieci ESP
}
void loop() {
SuplaDevice.iterate();
delay(200);
if(digitalRead(12)==1){
WiFiClient client;
const int httpPort = 80;
if (!client.connect("192.168.0.6", httpPort)) {
Serial.println("connection failed");
return;
}
client.print(String("GET ") +"/Led"+" HTTP/1.1\r\n" +
"Host: " + host + "\r\n" +
"Connection: close\r\n\r\n");
}
}