Hello @scratch_book !
Answering to your question, there is no any limit about the number of sensors or controls of one device in thinger.io, you can create every resources you want but, I’m afraid that your code have a little mistake. The resources definitions shoud be placed on setup() routine, not in loop(). Now your code is creating the resources on each loop execution, and it shouldn’t works fine… may be with 4 o 5 elements it’s possible but, with more resources the RAM breaks
try with this:
#include <Arduino.h>
#include <Wire.h>
#include <SoftwareSerial.h>
#include <SPI.h>
#include <Ethernet.h>
#include <ThingerEthernet.h>
double angle_rad = PI/180.0;
double angle_deg = 180.0/PI;
void ON_alarm_centr();
void OFF_alarm_centr();
void ON_floodlight();
void OFF_floodlight();
void OFF_pump();
void ON_pump();
void ON_alarm_stern();
void OFF_alarm_stern();
void ON_alarm_bow();
void OFF_alarm_bow();
void ON_heating();
void OFF_heating();
void ON_lighting();
void OFF_lighting();
double Water;
double Light;
double Gaz;
double Temperature;
double Movement;
double Distance;
double Fire;
float getDistance(int trig,int echo){
pinMode(trig,OUTPUT);
digitalWrite(trig,LOW);
delayMicroseconds(2);
digitalWrite(trig,HIGH);
delayMicroseconds(10);
pinMode(echo, INPUT);
return pulseIn(echo,HIGH,30000)/58.0;
}
byte mac[] = { 0xDE, 0xAD, 0xBE, 0xEF, 0xFE, 0xED }; // Мак адрес платы W5100
byte ip[] = { 192, 168, 0, 121 }; // IP адрес платы W5100
ThingerEthernet thing("scratch_book", "W5100", "12345678");
void setup(){
pinMode(6,OUTPUT);
pinMode(4,OUTPUT);
pinMode(13,OUTPUT);
pinMode(8,OUTPUT);
pinMode(10,OUTPUT);
pinMode(11,OUTPUT);
pinMode(3,OUTPUT);
pinMode(A0+0,INPUT);
pinMode(A0+1,INPUT);
pinMode(A0+2,INPUT);
pinMode(A0+3,INPUT);
pinMode(2,INPUT);
pinMode(12,INPUT);
Ethernet.begin(mac, ip);
thing["Water"] >> [](pson& out){
out = Water; // Отправляем значение переменной Water на сайт thinger.io
};
thing["Light"] >> [](pson& out){
out = Light; // Отправляем значение переменной Light на сайт thinger.io
};
thing["Gaz"] >> [](pson& out){
out = Gaz; // Отправляем значение переменной Gaz на сайт thinger.io
};
thing["Temperature"] >> [](pson& out){
out = Temperature; // Отправляем значение Temperature на сайт thinger.io
};
thing["Movement"] >> [](pson& out){
out = Movement; // Отправляем значение Movement на сайт thinger.io
};
thing["Distance"] >> [](pson& out){
out = Distance; // Отправляем значение Distance на сайт thinger.io
};
thing["Fire"] >> [](pson& out){
out = Fire; // Отправляем значение переменной Fire на сайт thinger.io
};
thing["Alarm_centr"] << [](pson& in){ //Управление тревогой в центре
if(in.is_empty()){
in = (bool) digitalRead(6);
}
else{
digitalWrite(6, in ? HIGH : LOW);
}
};
thing["floodlight"] << [](pson& in){ //Управление прожектором
if(in.is_empty()){
in = (bool) digitalRead(4);
}
else{
digitalWrite(4, in ? HIGH : LOW);
}
};
thing["pump"] << [](pson& in){ //Управление насосом
if(in.is_empty()){
in = (bool) digitalRead(13);
}
else{
digitalWrite(13, in ? HIGH : LOW);
}
};
thing["alarm_stern"] << [](pson& in){ //Управление тревогой на корме
if(in.is_empty()){
in = (bool) digitalRead(8);
}
else{
digitalWrite(8, in ? HIGH : LOW);
}
};
thing["alarm_bow"] << [](pson& in){ //Управление тревогой на носу
if(in.is_empty()){
in = (bool) digitalRead(10);
}
else{
digitalWrite(10, in ? HIGH : LOW);
}
};
thing["heating"] << [](pson& in){ //Управление обогревом
if(in.is_empty()){
in = (bool) digitalRead(11);
}
else{
digitalWrite(11, in ? HIGH : LOW);
}
};
thing["lighting"] << [](pson& in){ //Управление освещением в отсеках
if(in.is_empty()){
in = (bool) digitalRead(3);
}
else{
digitalWrite(3, in ? HIGH : LOW);
}
};
}
void loop(){
thing.handle();
Water = analogRead(A0+0);
Light = analogRead(A0+1);
Gaz = analogRead(A0+2);
Temperature = analogRead(A0+3);
Movement = digitalRead(2);
Distance = getDistance(7,5);
Fire = digitalRead(12);
}