oraz 20 zdefiniowanych przycisków memset(btn,19, sizeof(btn));
po wgraniu obcina mi liczbę kanałów na serwerze do liczby zdefiniowanych przycisków, nie pomaga ustawienie termometrów na końcu, wcześcniej działało wszystko ok.
Podejrzewam, że winna leży po stronie zmiany biblioteki, w której linijce i co należy edytować, żeby zwiększyć przypisaną liczbę kanałów ?
Kod: Zaznacz cały
#include <SPI.h>
#include <Ethernet.h>
#include <SuplaDevice.h>
#include <OneWire.h>
#include <DallasTemperature.h>
#define BTN_COUNT 20
#define TEMPERATURE_PRECISION 9
#define SUPLADEVICE_CPP
OneWire oneWire(41);
DallasTemperature sensors(&oneWire);
DeviceAddress DS18B20_1 = { 0x28, 0xFF, 0xE6, 0x45, 0x60, 0x17, 0x4, 0x29 }; // termometr szafa ok
DeviceAddress DS18B20_2 = {0x28, 0x2, 0x0, 0x7, 0x5E, 0x6B, 0x1, 0x5E}; // termometr kotłownia ok
DeviceAddress DS18B20_3 = { 0x28, 0xAA, 0xB2, 0xAE, 0x11, 0x13, 0x2, 0x19 }; // termometr garaż
DeviceAddress DS18B20_4 = { 0x28, 0x28, 0xA9, 0x79, 0x97, 0x19, 0x3, 0x1C }; // termometr korytarz
DeviceAddress DS18B20_5 = { 0x28, 0xFF, 0xB3, 0x27, 0xB4, 0x16, 0x5, 0xE4 }; // termometr Front ok
DeviceAddress DS18B20_6 = { 0x28, 0xFF, 0xEB, 0xA8, 0xB4, 0x16, 0x3, 0xD1 }; // termometr TARAS ok
DeviceAddress DS18B20_7 = { 0x28, 0x5F, 0xCA, 0x79, 0x97, 0x18, 0x3, 0x9A }; // termometr salon
// 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.getTempCByIndex(DS18B20_1);
t = sensors.getTempC(DS18B20_1);
break;
case 1:
t = sensors.getTempC(DS18B20_2);
break;
case 2:
t = sensors.getTempC(DS18B20_3);
break;
case 3:
t = sensors.getTempC(DS18B20_4);
break;
case 4:
t = sensors.getTempC(DS18B20_5);
break;
case 5:
t = sensors.getTempC(DS18B20_6);
break;
case 6:
t = sensors.getTempC(DS18B20_7);
break;
};
};
return t;
}
typedef struct {
int pin;
int relay_pin;
int channel;
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 ( digitalRead(btn[a].relay_pin) > 0 ) {
SuplaDevice.relayOff(btn[a].channel);
} else {
SuplaDevice.relayOn(btn[a].channel, 0);
}
}
}
}
}
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();
}
}
void setup() {
Serial.begin(9600);
// Init DS18B20 library
sensors.begin();
// Set temperature callback
SuplaDevice.setTemperatureCallback(&get_temperature);
// Replace the falowing GUID
char GUID[SUPLA_GUID_SIZE] = {xxxxxxxx};
// 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};
SuplaDevice.addRelay(2); // kanal 7 lampa front k12
SuplaDevice.addRelay(3); // kanal 8 lampa taras k11
SuplaDevice.addRelay(4); // kanal 9 lampa kotłownia k14
SuplaDevice.addRelay(5); // kanal 10 kinkiety salon k15
SuplaDevice.addRelay(6); // kanal 11 lampa piwnica k16
SuplaDevice.addRelay(7,true); // kanal 12 lampa płot k01
SuplaDevice.addRelay(8); // kanal 13 kuchnia Led k17
SuplaDevice.addRelay(21); // kanal 14 salon led k21
SuplaDevice.addRelay(11,true); // kanal 15 girlanda k02
SuplaDevice.addRelay(12); // kanal 16 brama wjazd otworz kdc11
SuplaDevice.addRelay(13); // kanal 17 brama wjazd zamknij kdc12
SuplaDevice.addRelay(14); // kanal 18 akwarium k22
SuplaDevice.addRelay(15); // kanal 19 brama wjazd 2 otworz
SuplaDevice.addRelay(16); // kanal 20 brama wjazd 2 zamknij kdc14
SuplaDevice.addRelay(17); // kanal 21 gniazdo salon 1 (lampa)
SuplaDevice.addRelay(18); // kanal 22 gniazdo salon 2 (choinka ) k24
SuplaDevice.addRelay(42); // kanal 23 taras led k25
SuplaDevice.addRelay(28); // kanal 24 brama garaz kdc22
SuplaDevice.addRelay(39); // kanal 25 furtka kdc21
SuplaDevice.addRelay(40,true); // kanal 26 lampy zewnetrzne k03
SuplaDevice.addDS18B20Thermometer(); // kanał 0 termometr
SuplaDevice.addDS18B20Thermometer(); // kanał 1 termometr
SuplaDevice.addDS18B20Thermometer(); // kanał 2 termometr
SuplaDevice.addDS18B20Thermometer(); // kanał 3 termometr
SuplaDevice.addDS18B20Thermometer(); // kanał 4 termometr
SuplaDevice.addDS18B20Thermometer(); // kanał 5 termometr
SuplaDevice.addDS18B20Thermometer(); // kanał 6 termometr
SuplaDevice.begin(GUID, // Global Unique Identifier
mac, // Ethernet MAC address
"svr10.supla.org", // SUPLA server address
xxxx, // Location ID
"xxxx"); // Location Password
memset(btn,19, sizeof(btn));
btn[0].pin = 20; // przycisk front s2
btn[0].relay_pin = 2; // przekaznik front k12
btn[0].channel = 8; // numer kanału
// btn[0].ms =0; // if = 0 Bistable -- if > 0 Monostable for X ms
// btn[0].mem =0;
btn[1].pin = 19; // przycisk lampa taras s1
btn[1].relay_pin = 3; // przekaznik lampa taras k11
btn[1].channel = 9; // numer kanału
btn[2].pin = 43 ; // przycisk lampa kotłownia s18
btn[2].relay_pin = 4; // przekaznik lampa kotłownia k14
btn[2].channel = 10; // numer kanału
btn[3].pin = 22 ; // przycisk kinkiety salon s7
btn[3].relay_pin = 5; // przekaznik kinkiety salon k15
btn[3].channel = 11; // numer kanału
btn[4].pin = 44 ; // przycisk piwnica s17
btn[4].relay_pin = 6; // przekaznik lampa piwnica k16
btn[4].channel = 12; // numer kanału
btn[5].pin =9 ; // przycisk lampa płot s4
btn[5].relay_pin = 7; // przekaznik lampa plot k01
btn[5].channel = 13; // numer kanału
btn[6].pin =23 ; // przycisk kuchnia led s8
btn[6].relay_pin = 8; // przekaznik kuchnia led k17
btn[6].channel = 14; // numer kanału
btn[7].pin =24 ; // przycisk salon led s9
btn[7].relay_pin = 21; // przekaznik salon led k21
btn[7].channel = 15; // numer kanału
btn[8].pin =46 ; // przycisk girlanda s6
btn[8].relay_pin = 11; // przekaznik girlanda k02
btn[8].channel = 16; // numer kanału
btn[9].pin =0 ; // przycisk brama
btn[9].relay_pin = 0; // przekaznik brama wirtualny
btn[9].channel =17 ; // numer kanału
btn[10].pin =0 ; // przycisk brama
btn[10].relay_pin = 0; // przekaznik brama wirtualny
btn[10].channel = 18; // numer kanału
btn[11].pin =29 ; // przycisk akwarium s11
btn[11].relay_pin =14 ; // przekaznik akwarium k22
btn[11].channel = 19; // numer kanału
btn[12].pin =0 ; // przycisk brama
btn[12].relay_pin = 0; // przekaznik brama wirtualny
btn[12].channel =20 ; // numer kanału
btn[13].pin =0 ; // przycisk brama
btn[13].relay_pin = 0; // przekaznik brama wirtualny
btn[13].channel = 21; // numer kanału
btn[14].pin =48 ; // przycisk gniazdo salon 1 (lampa)s12
btn[14].relay_pin = 17; // przekaznik gniazdo salon 1(lampa) k23
btn[14].channel = 22; // numer kanału
btn[15].pin =47 ; // przycisk gniazdo salon 2 (choinka )s13
btn[15].relay_pin = 18; // przekaznik gniazdo salon 2( choinka) k24
btn[15].channel = 23; // numer kanału
btn[16].pin =49 ; // przycisk taras led s14
btn[16].relay_pin = 42; // przekaznik taras led k25
btn[16].channel = 24; // numer kanału
btn[17].pin =0 ; // przycisk brama garaz wirtualny
btn[17].relay_pin = 0; // przekaznik brama garaz wirtualny
btn[17].channel = 25; // numer kanału
btn[18].pin =45 ; // przycisk furtki
btn[18].relay_pin = 39; // przekaznik furtka kdc21
btn[18].channel = 26; // numer kanału
btn[19].pin =25 ; // przycisk lampy zewnatrz s10
btn[19].relay_pin = 40; // przekaznik lampy zewnetrzne k03
btn[19].channel = 27; // numer kanału
SuplaDevice.setTimerFuncImpl(&supla_timer);
supla_btn_init();
}
void loop() {
SuplaDevice.iterate();
}