Re: [PORADNIK] Arduino IDE
: wt wrz 25, 2018 5:48 am
Wstaw swój program. Na jakiej płytce chcesz uruchomić termometry?
Ja ten temat już przerabiałem ( viewtopic.php?f=6&t=2350 ) i NIE ZADZIAŁA.
Kod: Zaznacz cały
#include <ESP8266WiFi.h>
#define SUPLADEVICE_CPP
#include <SuplaDevice.h>
WiFiClient client;
const char* ssid = "xxx";
const char* password = "xxx";
int measurePin = A0;
float voMeasured = 0;
float calcVoltage = 0;
float dustDensity = 0;
// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val) {
voMeasured = analogRead(measurePin); // read the dust value
calcVoltage = (5000.0 / 1024.0) * voMeasured; // Przeliczamy na mV.
if (voMeasured>3.0)
dustDensity = 0.010165 * calcVoltage - 0.1; // V
Serial.print("Raw Signal Value (0-1023): ");
Serial.print(voMeasured);
Serial.print(" - Voltage: ");
Serial.print(calcVoltage);
Serial.print(" - Dust Density [V]: ");
Serial.println(dustDensity);
double t = dustDensity;
last_val = t;
return t;
}
void setup() {
pinMode(5, OUTPUT);
Serial.begin(115200);
WiFi.softAPdisconnect(true); // wyłączenie rozgłaszania sieci ESP
//sensors.begin();
// Set temperature callback
char GUID[SUPLA_GUID_SIZE] = {0x69,0x74,0x43,0x20,0xAC,0xF0,0x0D,0x9D,0x42,0x35,0xDD,0xA2,0x74,0x1C,0x3E,0x04}; // with GUID that you can retrieve from https://www.supla.org/arduino/get-guid
uint8_t mac[6] = {0x00, 0x02, 0x01, 0x03, 0x04, 0x05};
SuplaDevice.addRelay(12, true);
SuplaDevice.addRelay(13, true);
SuplaDevice.addRelay(14, true);
SuplaDevice.addRelay(15, true);
SuplaDevice.addDS18B20Thermometer();
// CHANNEL7,8 - Opening sensor (Normal Open)
SuplaDevice.addSensorNO(4); // A0 - Pin number where the sensor is connected
SuplaDevice.addSensorNO(16); // Call SuplaDevice.addSensorNO(A0, true) with an extra "true" parameter
// to enable the internal pull-up resistor
SuplaDevice.begin(GUID, // Global Unique Identifier
mac, // Ethernet MAC address
"svr8.supla.org", // SUPLA server address
xxxx, // Location ID
"xxxx"); // Location Password
}
void loop() {
if (WiFi.status() != WL_CONNECTED) // Jeżeli sieć WiFi nie jest podłączona, wywołaj procedurę łączenia
{
WiFi_up();
}
SuplaDevice.iterate();
SuplaDevice.setTemperatureCallback(&get_temperature);
}
// Supla.org ethernet layer
int supla_arduino_tcp_read(void *buf, int count) {
_supla_int_t size = client.available();
if ( size > 0 ) {
if ( size > count ) size = count;
return client.read((uint8_t *)buf, size);
};
return -1;
};
int supla_arduino_tcp_write(void *buf, int count) {
return client.write((const uint8_t *)buf, count);
};
bool supla_arduino_svr_connect(const char *server, int port) {
return client.connect(server, 2015);
}
bool supla_arduino_svr_connected(void) {
return client.connected();
}
void supla_arduino_svr_disconnect(void) {
client.stop();
}
void supla_arduino_eth_setup(uint8_t mac[6], IPAddress *ip) {
WiFi_up();
}
SuplaDeviceCallbacks supla_arduino_get_callbacks(void) {
SuplaDeviceCallbacks cb;
cb.tcp_read = &supla_arduino_tcp_read;
cb.tcp_write = &supla_arduino_tcp_write;
cb.eth_setup = &supla_arduino_eth_setup;
cb.svr_connected = &supla_arduino_svr_connected;
cb.svr_connect = &supla_arduino_svr_connect;
cb.svr_disconnect = &supla_arduino_svr_disconnect;
cb.get_temperature = &get_temperature;
cb.get_temperature_and_humidity = NULL;
cb.get_rgbw_value = NULL;
cb.set_rgbw_value = NULL;
return cb;
}
void WiFi_up() // Procedura podłączenia do sieci WiFi
{
Serial.print("Proba podlaczenia do sieci ");
Serial.println(ssid);
WiFi.begin(ssid, password); // Próba podłączenia do sieci
for (int x = 60; x > 0; x--) // Powtarzaj pętlę maksymanie maksymalnie 30 sekund (ponieważ przy każdym elsie jest 0,5 sekundy zwłoki)
{
if (WiFi.status() == WL_CONNECTED) // Jezeli WiFi jest podłączone
{
break; // to zatrzymaj pętlę
}
else // w przeciwnym wypadku
{
Serial.print("."); // wystaw na serial .
delay(500); // i czekaj 0,5 sekundy
}
}
if (WiFi.status() == WL_CONNECTED) // Jeżeli połączenie z siecią zostało nawiązane, wyślij na serial jego parametry
{
Serial.println("");
Serial.println("Polaczenie nawiazane");
Serial.println("Adres IP: ");
Serial.print(WiFi.localIP());
Serial.print(" / ");
Serial.println(WiFi.subnetMask());
Serial.print("Brama: ");
Serial.println(WiFi.gatewayIP());
long rssi = WiFi.RSSI();
Serial.print("Sila sygnalu (RSSI): ");
Serial.print(rssi);
Serial.println(" dBm");
}
else // w przeciwnym wypadku poinformuj przez serial o nieudanej próbie
{
Serial.println("");
Serial.println("Polaczenia nie udalo sie nawiazac");
}
}
Próbuję odpalić 8 DS-ów na jednej płytce i tak naprawdę działa jeden - ten pierwszy.
Kod: Zaznacz cały
/* Przygotowane przez kolegę elmaya na poniższych bibliotekach
Działa z bibliotekami: FS.h w wersji: 1.0.3
WiFiManager.h w wersji: 0.12.0
ArduinoJson.h w wersji: 5.13.2
zmodyfikowany przez wotas567 dodane kilka praktycznych dodatków :) */
#include <FS.h>
#include <ESP8266WiFi.h>
#define SUPLADEVICE_CPP
#include <SuplaDevice.h>
#include <ESP8266WebServer.h>
#include <DNSServer.h>
#include <WiFiManager.h>
#include <ArduinoJson.h>
#include <ESP8266mDNS.h>
#include <ESP8266HTTPUpdateServer.h>
extern "C" {
#include "user_interface.h"
}
#include <DHT.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define DHTPIN 3 // GPIO 3-RX
#define DHTTYPE DHT22
// Setup a DHT instance
DHT dht(DHTPIN, DHTTYPE);
// Setup a oneWire instance
OneWire oneWire(2); // GPIO 02
// Pass oneWire reference to Dallas Temperature
DallasTemperature sensors(&oneWire);
DeviceAddress jeden = { 0x28, 0xEE, 0x39, 0x65, 0x1F, 0x16, 0x2, 0xAD };
DeviceAddress dwa = { 0x28, 0xEE, 0xE7, 0xD6, 0x22, 0x16, 0x1, 0x64};
DeviceAddress trzy = { 0x28, 0x17, 0x14, 0x43, 0x98, 0x22, 0x0, 0x96 };
DeviceAddress cztery = { 0x28, 0xFF, 0xF8, 0x49, 0x80, 0x14, 0x2, 0xAA };
DeviceAddress piec = { 0x28, 0xFF, 0x66, 0xCA, 0x51, 0x17, 0x4, 0xD4 };
DeviceAddress szesc = { 0x28, 0xFF, 0xBE, 0xC5, 0x51, 0x17, 0x4, 0x2E };
DeviceAddress siedem = { 0x28, 0xFF, 0xE3, 0xE5, 0x51, 0x17, 0x4, 0x27 };
DeviceAddress osiem = { 0x28, 0xFF, 0xE7, 0x44, 0x80, 0x14, 0x2, 0x24 };
// Obsługa czujnika DS18B20 i odczyt parametrów modułu ESP
double get_temperature(int channelNumber, double last_val) {
double t = -275;
if ( sensors.getDeviceCount() > 0 )
{
sensors.requestTemperatures();
switch (channelNumber)
{
case 1:
t = sensors.getTempC(jeden);
break;
case 2:
t = sensors.getTempC(dwa);
break;
case 3:
t = sensors.getTempC(trzy);
break;
case 4:
t = sensors.getTempC(cztery);
break;
case 5:
t = sensors.getTempC(piec);
break;
case 6:
t = sensors.getTempC(szesc);
break;
case 7:
t = sensors.getTempC(siedem);
break;
case 8:
t = sensors.getTempC(osiem);
break;
};
};
return t;
}
//ADC_MODE(ADC_VCC);
//#define BTN_COUNT 2
WiFiClient client;
const char* host = "supla";
const char* update_path = "/nowy";
const char* update_username = "admin";
const char* update_password = "supla";
ESP8266WebServer httpServer(81);
ESP8266HTTPUpdateServer httpUpdater;
//define your default values here, if there are different values in config.json, they are overwritten.
//length should be max size + 1
char Supla_server[40];
char Location_id[15];
char Location_Pass[20];
byte mac[6];
//flag for saving data
bool shouldSaveConfig = false;
bool initialConfig = false;
#define TRIGGER_PIN 0
int timeout = 120; // seconds to run for
//callback notifying us of the need to save config
void saveConfigCallback () {
Serial.println("Powinien zapisać konfigurację");
shouldSaveConfig = true;
}
void ondemandwifiCallback () {
// The extra parameters to be configured (can be either global or just in the setup)
// After connecting, parameter.getValue() will get you the configured value
// id/name placeholder/prompt default length
WiFiManagerParameter custom_Supla_server("server", "supla server", Supla_server, 40);
WiFiManagerParameter custom_Location_id("ID", "Location_id", Location_id, 15);
WiFiManagerParameter custom_Location_Pass("Password", "Location_Pass", Location_Pass, 20);
//WiFiManager
//Local intialization. Once its business is done, there is no need to keep it around
WiFiManager wifiManager;
//set config save notify callback
wifiManager.setSaveConfigCallback(saveConfigCallback);
//add all your parameters here
wifiManager.addParameter(&custom_Supla_server);
wifiManager.addParameter(&custom_Location_id);
wifiManager.addParameter(&custom_Location_Pass);
//set minimu quality of signal so it ignores AP's under that quality
//defaults to 8%
wifiManager.setMinimumSignalQuality();
// set configportal timeout
wifiManager.setConfigPortalTimeout(timeout);
if (!wifiManager.startConfigPortal("SUPLA-IDE")) {
Serial.println("nie udało się połączyć w osiągniętym limicie czasu");
delay(3000);
//reset and try again, or maybe put it to deep sleep
ESP.restart();
delay(5000);
}
//if you get here you have connected to the WiFi
Serial.println("połaczono... :)");
//read updated parameters
strcpy(Supla_server, custom_Supla_server.getValue());
strcpy(Location_id, custom_Location_id.getValue());
strcpy(Location_Pass, custom_Location_Pass.getValue());
}
/*
// obsługa przycisków
typedef struct {
int pin;
int relay_pin;
int channel;
int ms;
char last_val;
unsigned long last_time;
} _btn_t;
_btn_t btn[BTN_COUNT];
void supla_timer() {
char v;
unsigned long now = millis();
for(int a=0;a<BTN_COUNT;a++)
if (btn[a].pin > 0) {
v = digitalRead(btn[a].pin);
if (v != btn[a].last_val && now - btn[a].last_time ) {
btn[a].last_val = v;
btn[a].last_time = now;
if (v==0)
{
if ( btn[a].ms > 0 ) {
SuplaDevice.relayOn(btn[a].channel, btn[a].ms);
} else {
if ( digitalRead(btn[a].relay_pin) == 0 ) {
SuplaDevice.relayOff(btn[a].channel);
Serial.print("BTN Switsh off relay ");
Serial.println(btn[a].relay_pin);
} else {
SuplaDevice.relayOn(btn[a].channel, 0);
Serial.print("BTN Switsh on relay ");
Serial.println(btn[a].relay_pin);
}
}
}
}
}
}
void supla_btn_init() {
for(int a=0;a<BTN_COUNT;a++)
if (btn[a].pin > 0) {
pinMode(btn[a].pin, INPUT_PULLUP);
btn[a].last_val = digitalRead(btn[a].pin);
btn[a].last_time = millis();
}
}*/
// Obsługa czujnika DHT22 lub BME280 itp
void get_temperature_and_humidity(int channelNumber, double *temp, double *humidity) {
*temp = dht.readTemperature();
*humidity = dht.readHumidity();
if ( isnan(*temp) || isnan(*humidity) ) {
*temp = -275;
*humidity = -1;
}
}
void setup() {
Serial.begin(115200);
delay(10);
wifi_station_set_hostname("SUPLA-IDE"); //nazwa w sieci lokalnej
pinMode(TRIGGER_PIN, INPUT);
if (WiFi.SSID() == "") {
//Serial.println("We haven't got any access point credentials, so get them now");
initialConfig = true;
}
//read configuration from FS json
Serial.println("adaptacja FS...");
if (SPIFFS.begin()) {
Serial.println("ładowanie plików systemu");
if (SPIFFS.exists("/config.json")) {
//file exists, reading and loading
Serial.println("odczyt pliku konfiguracyjnego");
File configFile = SPIFFS.open("/config.json", "r");
if (configFile) {
Serial.println("otwarty plik konfiguracji");
size_t size = configFile.size();
// Allocate a buffer to store contents of the file.
std::unique_ptr<char[]> buf(new char[size]);
configFile.readBytes(buf.get(), size);
DynamicJsonBuffer jsonBuffer;
JsonObject& json = jsonBuffer.parseObject(buf.get());
Serial.println(jsonBuffer.size());
json.printTo(Serial);
if (json.success()) {
Serial.println("\njson przeanalizowany");
strcpy(Supla_server, json["Supla_server"]);
strcpy(Location_id, json["Location_id"]);
strcpy(Location_Pass, json["Location_Pass"]);
} else {
Serial.println("nie udało się załadować konfiguracji json");
}
}
}
WiFi.softAPdisconnect(true); // wyłączenie rozgłaszania sieci ESP
} else {
Serial.println("nie udało się zaadaptować FS");
}
WiFi.mode(WIFI_STA); // Force to station mode because if device was switched off while in access point mode it will start up next time in access point mode.
// Inicjalizacja DHT
dht.begin();
SuplaDevice.setTemperatureHumidityCallback(&get_temperature_and_humidity);
// Inicjalizacja DS18B20
sensors.begin();
SuplaDevice.setTemperatureCallback(&get_temperature);
// Replace the falowing GUID
uint8_t mac[WL_MAC_ADDR_LENGTH];
WiFi.macAddress(mac);
char GUID[SUPLA_GUID_SIZE] = {mac[WL_MAC_ADDR_LENGTH - 6],
mac[WL_MAC_ADDR_LENGTH - 5],
mac[WL_MAC_ADDR_LENGTH - 4],
mac[WL_MAC_ADDR_LENGTH - 3],
mac[WL_MAC_ADDR_LENGTH - 2],
mac[WL_MAC_ADDR_LENGTH - 1]
};
// CHANNEL0 - DHT22
SuplaDevice.addDHT22(); // na GPIO3
// CHANNEL1,2,3... - DS, wifi, zasilanie
SuplaDevice.addDS18B20Thermometer(); // DS na GPIO02
SuplaDevice.addDS18B20Thermometer();
SuplaDevice.addDS18B20Thermometer();
SuplaDevice.addDS18B20Thermometer();
SuplaDevice.addDS18B20Thermometer();
SuplaDevice.addDS18B20Thermometer();
SuplaDevice.addDS18B20Thermometer();
SuplaDevice.addDS18B20Thermometer();
// CHANNEL9,10 - RELAY
SuplaDevice.addRelay(4, false);
SuplaDevice.addRelay(5, false);
SuplaDevice.addRelay(12, false);
SuplaDevice.addRelay(13, false);
SuplaDevice.addRelay(14, false);
SuplaDevice.addRelay(16, false);
// CHANNEL5,6 - TWO RELAYS (Roller shutter operation)
//SuplaDevice.addRollerShutterRelays(5, // 46 - Pin number where the 1st relay is connected
// 13, true); // 47 - Pin number where the 2nd relay is connected
// CHANNEL6,7 - Opening sensor (Normal Open)
// SuplaDevice.addSensorNO(14); // A0 - Pin number where the sensor is connected
// SuplaDevice.addSensorNO(12); // Call SuplaDevice.addSensorNO(A0, true) with an extra "true" parameter
// to enable the internal pull-up resistor
/* memset(btn, 0, sizeof(btn));
btn[0].pin =14; // pin gpio button D5
btn[0].relay_pin =4; // pin gpio on which is relay D1
btn[0].channel =4; // supla channel
btn[0].ms =0; // if = 0 Bistable -- if > 0 Monostable for X ms
btn[1].pin =12; // pin gpio button D6
btn[1].relay_pin =13; // pin gpio on which is relay D2
btn[1].channel =5; // supla channel
btn[1].ms =2000; // if = 0 Bistable -- if > 0 Monostable for X ms
supla_btn_init();
SuplaDevice.setTimerFuncImpl(&supla_timer);*/
SuplaDevice.setName("UNI-TEMP by@slawek");
int LocationID = atoi(Location_id);
SuplaDevice.begin(GUID, // Global Unique Identifier
mac, // Ethernet MAC address
Supla_server, // SUPLA server address
LocationID, // Location ID
Location_Pass); // Location Password
Serial.println();
Serial.println("Uruchamianie serwera aktualizacji...");
WiFi.mode(WIFI_STA);
MDNS.begin(host);
httpUpdater.setup(&httpServer, update_path, update_username, update_password);
httpServer.begin();
MDNS.addService("http", "tcp", 81);
Serial.printf("HTTPUpdateServer ready! Open http://%s.local%s in your browser and login with username '%s' and password '%s'\n", host, update_path, update_username, update_password);
}
void loop() {
// is configuration portal requested?
if ( digitalRead(TRIGGER_PIN) == LOW || (initialConfig)) {
ondemandwifiCallback () ;
initialConfig = false;
}
//save the custom parameters to FS
if (shouldSaveConfig) {
Serial.println("zapisywanie konfiguracji");
DynamicJsonBuffer jsonBuffer;
JsonObject& json = jsonBuffer.createObject();
json["Supla_server"] = Supla_server;
json["Location_id"] = Location_id;
json["Location_Pass"] = Location_Pass;
File configFile = SPIFFS.open("/config.json", "w");
if (!configFile) {
Serial.println("nie udało się otworzyć pliku konfiguracyjnego do zapisu");
}
json.prettyPrintTo(Serial);
json.printTo(configFile);
configFile.close();
Serial.println("konfiguracia zapisana");
shouldSaveConfig = false;
//end save
}
if (WiFi.status() != WL_CONNECTED)
{
WiFi_up();
}
SuplaDevice.iterate();
SuplaDevice.setTemperatureHumidityCallback(&get_temperature_and_humidity);
SuplaDevice.setTemperatureCallback(&get_temperature);
httpServer.handleClient();
}
// Supla.org ethernet layer
int supla_arduino_tcp_read(void *buf, int count) {
_supla_int_t size = client.available();
if ( size > 0 ) {
if ( size > count ) size = count;
return client.read((uint8_t *)buf, size);
};
return -1;
};
int supla_arduino_tcp_write(void *buf, int count) {
return client.write((const uint8_t *)buf, count);
};
bool supla_arduino_svr_connect(const char *server, int port) {
return client.connect(server, 2015);
}
bool supla_arduino_svr_connected(void) {
return client.connected();
}
void supla_arduino_svr_disconnect(void) {
client.stop();
}
void supla_arduino_eth_setup(uint8_t mac[6], IPAddress *ip) {
WiFi_up();
}
SuplaDeviceCallbacks supla_arduino_get_callbacks(void) {
SuplaDeviceCallbacks cb;
cb.tcp_read = &supla_arduino_tcp_read;
cb.tcp_write = &supla_arduino_tcp_write;
cb.eth_setup = &supla_arduino_eth_setup;
cb.svr_connected = &supla_arduino_svr_connected;
cb.svr_connect = &supla_arduino_svr_connect;
cb.svr_disconnect = &supla_arduino_svr_disconnect;
cb.get_temperature = &get_temperature;
cb.get_temperature_and_humidity = get_temperature_and_humidity;
return cb;
}
void WiFi_up() // Procedimiento de conexión para redes WiFi
{
Serial.print("Łączenie z siecią ");
WiFi.begin(); // Intentar conectarse a la red
for (int x = 60; x > 0; x--)
{
if (WiFi.status() == WL_CONNECTED)
{
break;
}
else
{
Serial.print(".");
delay(500);
}
}
if (WiFi.status() == WL_CONNECTED)
{
Serial.println("");
Serial.println("Połączono z");
Serial.println("Adres IP: ");
Serial.print(WiFi.localIP());
Serial.print(" / ");
Serial.println(WiFi.subnetMask());
Serial.print("geteway: ");
Serial.println(WiFi.gatewayIP());
long rssi = WiFi.RSSI();
Serial.print("siła sygnału (RSSI): ");
Serial.print(rssi);
Serial.println(" dBm");
}
else
{
Serial.println("");
Serial.println("brak połączenia");
}
}
Kod: Zaznacz cały
#include <DHTesp.h>
#include <SPI.h>
#include <Ethernet.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#include <DHT.h>
#include <SuplaDevice.h>
/*
* This example requires DHT sensor library installed.
* https://github.com/adafruit/DHT-sensor-library
*/
#define DHTPIN 5
#define DHTTYPE DHT22
// Setup a DHT instance
DHT dht(DHTPIN, DHTTYPE);
OneWire oneWire(4);
DallasTemperature sensors(&oneWire);
DeviceAddress DS18B20_1 = { 0x28, 0xFF, 0x2E, 0xFB, 0xC1, 0x17, 0x1, 0xD3 }; // odczytany adres 28FF2EFBC11701D3
DeviceAddress DS18B20_2 = { 0x28, 0xFF, 0xEC, 0xFE, 0xC1, 0x17, 0x1, 0xF3 }; //Odczytany adres 28FFECFEC11701F3
// DS18B20 Sensor read implementation
double get_temperature(int channelNumber, double last_val) {
double t = -275;
if ( sensors.getDeviceCount() > 0 )
{
sensors.requestTemperatures();
switch(channelNumber)
{
case 0:
t = sensors.getTempC(DS18B20_1);
break;
case 1:
t = sensors.getTempC(DS18B20_2);
break;
};
};
return t;
}
void get_temperature_and_humidity(int channelNumber, double *temp, double *humidity) {
*temp = dht.readTemperature();
*humidity = dht.readHumidity();
if ( isnan(*temp) || isnan(*humidity) ) {
*temp = -275;
*humidity = -1;
}
}
void setup() {
Serial.begin(9600);
// Init DS18B20 library
sensors.begin();
// Init DHT library
dht.begin();
// Set temperature/humidity callback
SuplaDevice.setTemperatureHumidityCallback(&get_temperature_and_humidity);
// Set temperature callback
SuplaDevice.setTemperatureCallback(&get_temperature);
// Replace the falowing GUID
char GUID[SUPLA_GUID_SIZE] = {ESP.getChipId()};
// with GUID that you can retrieve from https://www.supla.org/arduino/get-guid
// Ethernet MAC address
uint8_t mac[6] = {0x00, 0x01, 0x02, 0x03, 0x04, 0x05};
/*
* Having your device already registered at cloud.supla.org,
* you want to change CHANNEL sequence or remove any of them,
* then you must also remove the device itself from cloud.supla.org.
* Otherwise you will get "Channel conflict!" error.
*/
// CHANNEL0 - RELAY
// SuplaDevice.addRelay(D5, true); //definiujemy co chcemy widzieć pod danym kanałem. Tu mamy przekaźnik. true oznacza, ze
//aktywujemy go masą. D5 to GPIO14. mozna wpisywać naprzemiennie
// CHANNEL1 - TWO RELAYS (Roller shutter operation)
SuplaDevice.addRollerShutterRelays(0, 2, true);
setRollerShutterButtons(int channel_number 1, int btnUpPin 10 , int btnDownPin 102 ); // Piny dla przycisków sterujących
SuplaDevice.setDigitalReadFuncImpl(&supla_DigitalRead); 102
SuplaDevice.setDigitalWriteFuncImpl(&suplaDigitalWrite); 102
int supla_DigitalRead(int channelNumber, 1 uint8_t pin) {
if (pin > 100) {
return 0;
};
return digitalRead(pin);
}
void suplaDigitalWrite(int channelNumber, 1 uint8_t pin, uint8_t val) {
if (pin > 100) {
return;
}
digitalWrite(pin, val);
}
// CHANNEL2 - TWO RELAYS (Roller shutter operation)
SuplaDevice.addRollerShutterRelays(14, // D1 - Pin number where the 1st relay is connected
12, true); // D3 - Pin number where the 2nd relay is connected
setRollerShutterButtons(int channel_number 2, int btnUpPin 9 , int btnDownPin 101 );
// CHANNEL3 - RELAY
// SuplaDevice.addRelay(D8, true);
// CHANNEL4 - Thermometer DS18B20
SuplaDevice.addDS18B20Thermometer(5); //kanał 4 to temomemetr
// CHANNEL - Opening sensor (Normal Open)
SuplaDevice.addSensorNO(13); // A0 - sensor otwarcia drzwi. na razie go nie używam. podłączamy go przez rezystor 10k
// jezeli nie wiesz o czym mowa to zajrzyj tu https://forbot.pl/blog/microswitche-proste-czujniki-przeszkod-id1870
// CHANNEL5 - Opening sensor (Normal Open)
SuplaDevice.addSensorNO(15); // A1 - Pin number where the sensor is connected
// CHANNEL6 - DHT22 Sensor // pozostałe możliwe czujniki do wykorzystania
// SuplaDevice.addDHT11();
// SuplaDevice.addAM2302();
SuplaDevice.addDHT22(5);
SuplaDevice.begin(GUID, // Global Unique Identifier
mac, // Ethernet MAC address
"svrxxxxx", // SUPLA server address // w miejsca xxxx wprowadzamy dane z clouda
xxxx, // Location ID
"xxxx"); // Location Password
}
void loop() {
SuplaDevice.iterate();
// ponizej kod umozliwiający włączać i wyłączać przekaźnik 1 z dodatkowego fizycznego przycisku dzwonkowego. W moim przypadku
// otwieranie/zamykanie bramy
// TSD_SuplaChannelNewValue przycisk1; //ustaw nazwe dla przycisku
// przycisk1.SenderID = 0; // Powiadom clouda, że załączasz recznie. W przypadku siłowników ma być 0
// przycisk1.ChannelNumber = 1; // nr kanału przekaźnika
// przycisk1.DurationMS = 0; //czas wlaczenia
//button1 = digitalRead(16);
//if(digitalRead(16)==LOW){ // tu dodajemy jeszcze raz zeby nie pstrykalo samo czyli przerwa i ponowne zapytanie
// delay(100);
//if(digitalRead(16)==LOW){ //sprawdzam 2 razy stan na PINie 16 w odstępach 100ms . bez tego było dużo zakłuceń
//przycisk1.value[0] = !przycisk1.value[0];
//SuplaDevice.channelSetValue(&przycisk1);
//while(digitalRead(16)==LOW);
//delay(20);
}
}}
// Supla.org ethernet layer
int supla_arduino_tcp_read(void *buf, int count) {
_supla_int_t size = client.available();
if ( size > 0 ) {
if ( size > count ) size = count;
return client.read((uint8_t *)buf, size);
};
return -1;
};
int supla_arduino_tcp_write(void *buf, int count) {
return client.write((const uint8_t *)buf, count);
};
bool supla_arduino_svr_connect(const char *server, int port) {
return client.connect(server, 2015);
}
bool supla_arduino_svr_connected(void) {
return client.connected();
}
void supla_arduino_svr_disconnect(void) {
client.stop();
}
void supla_arduino_eth_setup(uint8_t mac[6], IPAddress *ip) {
// Serial.println("WiFi init");
WiFi.begin(ssid, password);
while (WiFi.status() != WL_CONNECTED) {
delay(500);
// Serial.print(".");
}
//Serial.print("\nlocalIP: ");
//Serial.println(WiFi.localIP());
//Serial.print("subnetMask: ");
//Serial.println(WiFi.subnetMask());
//Serial.print("gatewayIP: ");
//Serial.println(WiFi.gatewayIP());
}
SuplaDeviceCallbacks supla_arduino_get_callbacks(void) {
SuplaDeviceCallbacks cb;
cb.tcp_read = &supla_arduino_tcp_read;
cb.tcp_write = &supla_arduino_tcp_write;
cb.eth_setup = &supla_arduino_eth_setup;
cb.svr_connected = &supla_arduino_svr_connected;
cb.svr_connect = &supla_arduino_svr_connect;
cb.svr_disconnect = &supla_arduino_svr_disconnect;
cb.get_temperature = NULL; //&get_temperature;
cb.get_temperature_and_humidity = NULL;
cb.get_rgbw_value = NULL;
cb.set_rgbw_value = NULL;
return cb;
}
Kod: Zaznacz cały
Arduino:1.8.7 (Windows Store 1.8.15.0) (Windows 10), Płytka:"NodeMCU 1.0 (ESP-12E Module), 80 MHz, 4M (1M SPIFFS), v2 Prebuilt (MSS=536), Disabled, None, 115200"
UWAGA: biblioteka SuplaDevice działa na architekturze(/architekturach) (avr) i może nie być kompatybilna z obecną płytką która działa na architekturze(/architekturach) (esp8266).
In file included from C:\Users\Sibinski\Documents\Arduino\libraries\SuplaDevice/SuplaDevice.h:299:0,
from C:\Users\Sibinski\Desktop\Nowy folder1\Programy\sketch_oct15b\sketch_oct15b.ino:8:
C:\Users\Sibinski\Documents\Arduino\libraries\SuplaDevice/supla_main_helper._cpp_: In function 'SuplaDeviceCallbacks supla_arduino_get_callbacks()':
C:\Users\Sibinski\Documents\Arduino\libraries\SuplaDevice/supla_main_helper._cpp_:77:21: error: invalid conversion from 'long int (*)(void*, int)' to '_cb_arduino_rw {aka int (*)(void*, int)}' [-fpermissive]
cb.tcp_read = &supla_arduino_tcp_read;
^
C:\Users\Sibinski\Documents\Arduino\libraries\SuplaDevice/supla_main_helper._cpp_:81:24: error: invalid conversion from 'bool (*)(const char*, long int)' to '_cb_arduino_connect {aka bool (*)(const char*, int)}' [-fpermissive]
cb.svr_connect = &supla_arduino_svr_connect;
^
C:\Users\Sibinski\Desktop\Nowy folder1\Programy\sketch_oct15b\sketch_oct15b.ino: In function 'void setup()':
sketch_oct15b:110:25: error: expected primary-expression before 'int'
setRollerShutterButtons(int channel_number 1, int btnUpPin 10 , int btnDownPin 102 ); // Piny dla przyciskĂłw sterujÄ…cych
^
sketch_oct15b:110:47: error: expected primary-expression before 'int'
setRollerShutterButtons(int channel_number 1, int btnUpPin 10 , int btnDownPin 102 ); // Piny dla przyciskĂłw sterujÄ…cych
^
sketch_oct15b:110:65: error: expected primary-expression before 'int'
setRollerShutterButtons(int channel_number 1, int btnUpPin 10 , int btnDownPin 102 ); // Piny dla przyciskĂłw sterujÄ…cych
^
sketch_oct15b:110:84: error: 'setRollerShutterButtons' was not declared in this scope
setRollerShutterButtons(int channel_number 1, int btnUpPin 10 , int btnDownPin 102 ); // Piny dla przyciskĂłw sterujÄ…cych
^
sketch_oct15b:112:37: error: 'supla_DigitalRead' was not declared in this scope
SuplaDevice.setDigitalReadFuncImpl(&supla_DigitalRead); 102
^
sketch_oct15b:113:1: error: expected ';' before 'SuplaDevice'
SuplaDevice.setDigitalWriteFuncImpl(&suplaDigitalWrite); 102
^
sketch_oct15b:115:1: error: expected ';' before 'int'
int supla_DigitalRead(int channelNumber, 1 uint8_t pin) {
^
sketch_oct15b:250:1: error: expected '}' at end of input
}
^
Znaleziono wiele bibliotek w "Ethernet.h"
Wykorzystane: C:\Users\Sibinski\Documents\ArduinoData\packages\esp8266\hardware\esp8266\2.4.0\libraries\Ethernet
Niewykorzystane: C:\Program Files\WindowsApps\ArduinoLLC.ArduinoIDE_1.8.15.0_x86__mdqgnx93n4wtt\libraries\Ethernet
exit status 1
expected primary-expression before 'int'
Ten raport powinien zawierać więcej informacji jeśli w
File -> Preferencje zostanie włączona opcja "Pokaż
szczegółowe informacje podczas kompilacji"
Kod: Zaznacz cały
long supla_arduino_tcp_read(void *buf, _supla_int_t count)
Kod: Zaznacz cały
int supla_arduino_tcp_read(void *buf, int count)