Skip to content

Commit 6c9b79d

Browse files
committed
v50beta7nc2
1 parent ef68c24 commit 6c9b79d

16 files changed

+5867
-0
lines changed
Lines changed: 242 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,242 @@
1+
/*
2+
3+
*****************************************
4+
***** SmartHome v5.0 beta 7 nc2 *****
5+
*****************************************
6+
7+
Testato con:
8+
Arduino IDE : -> 1.8.9
9+
ESP8266 Core: ESP8266 Community versione -> 2.5.2
10+
Scheda : Generic ESP8266 Module, 115200, 80 MHz, 26 MHz, Flash Size (tabella sotto), Flash Mode (tabella sotto), 40MHz, nodemcu,
11+
Disabled, Nessuno, v2 Lower Memory, Flash, Disabled, 2, Only Sketch, nonos-sdk 2.2.1 (legacy), All SSL cipehers (most compatible)
12+
13+
Settaggi Flash Mode e Flash Size di Arduino IDE:
14+
Nodemcu -> Flash Mode:DIO Flash Size:4M
15+
ESP01 -> Flash Mode:DIO Flash Size:1M
16+
Electrodragon -> Flash Mode:DIO Flash Size:4M
17+
Hipposwitch -> Flash Mode:DIO Flash Size:4M
18+
GC -> Flash Mode:DIO Flash Size:2M
19+
SONOFFDUAL -> Flash Mode:QIO Flash Size:1M
20+
SONOFF 4CH PRO R2 -> Flash Mode:DOUT Flash Size:1M oppure Scheda: ESP8285
21+
Shelly1 -> Flash Mode:DIO Flash Size:2M
22+
Shelly2 -> Flash Mode:DIO Flash Size:2M
23+
BlitzWolf -> Flash Mode:DIO Flash Size:1M
24+
DE004 -> Flash Mode:DIO Flash Size:1M
25+
26+
Librerie core ESP8266:
27+
<ESP8266WiFi.h>
28+
<ESP8266WebServer.h>
29+
<EEPROM.h>
30+
<ArduinoOTA.h>
31+
<Ticker.h>
32+
<SPI.h>
33+
<time.h>
34+
<sys/time.h>
35+
<coredecls.h>
36+
37+
Librerie esterne:
38+
<AsyncMqttClient.h> https://github.com/marvinroger/async-mqtt-client + https://github.com/me-no-dev/ESPAsyncTCP
39+
<simpleDSTadjust.h> https://github.com/neptune2/simpleDSTadjust
40+
<TPush.h> https://github.com/TheTrigger/TPush
41+
"MFRC522.h" https://github.com/miguelbalboa/rfid (Impulso NFC)
42+
"DHT.h" https://github.com/adafruit/DHT-sensor-library + https://github.com/adafruit/Adafruit_Sensor (Termostato)
43+
"SSD1306.h" https://github.com/ThingPulse/esp8266-oled-ssd1306 (Display - Termostato)
44+
<PZEM004T.h> https://github.com/olehs/PZEM004T (Power)
45+
"HLW8012.h" https://github.com/xoseperez/hlw8012 (Power)
46+
47+
GPIO CONSIGLIATI:
48+
Nodemcu ESP01 Elctrodragon Hipposwitch Shelly1 Shelly2 SONOFFDUAL SONOFF4CHPROR2
49+
OUT1 12 0 12 12 4 4 14 12
50+
OUT2 13 2 13 14 - 5 15 5
51+
OUT3 - - - - - - - 4
52+
OUT4 - - - - - - - 15
53+
IN1 4 1 4 ? 5 12 4 0
54+
IN2 5 3 5 ? - 14 5 9
55+
IN3 - - - - - - - 10
56+
IN4 - - - - - - - 14
57+
GPIO Status_LED 16 4 16 15 16 16 13 13
58+
Inv. Status_LED 1 1 0 0 1 1 1 1
59+
Inv. RELE 1 1 0 0 0 0 0 0
60+
PullUp ? PullUp PullUp PullUp PullUp
61+
62+
PullUp -> resistenza verso vcc, GPIO che chiude verso gnd
63+
PullDown -> resistenza verso gnd, GPIO che chiude verso vcc
64+
65+
Comandi MQTT verso il topic nodo Tapparella:
66+
su - alza la Tapparella
67+
giu - abbassa la Tapparella
68+
stop - ferma la Tapparella
69+
+XX - alza la Tapparella in percentuale del tempo Tapparella (XX=percentuale)
70+
-XX - abbassa la Tapparella in percentuale del tempo Tapparella (XX=percentuale)
71+
t=XX - tempo Tapparella (XX=tempo massimo di eccitazione rele)
72+
l=XX - lock (XX=0 -> funzionamento normale (unlock) - XX=1 modo lock(i comandi MQTT ricevuti vengono ignorati))
73+
%=XX - porta la Tapparella alla percentuale XX
74+
stato - restituisce lo stato del nodo e dei relativi rele
75+
76+
Comandi MQTT verso il topic nodo Interruttore:
77+
on - eccita il relè
78+
off - diseccita il relè
79+
toggle - inverte lo stato del rele
80+
stato - restituisce lo stato del nodo e dei relativi rele
81+
82+
Comandi MQTT verso il topic nodo Impulso:
83+
on - eccita il relè (per un tempo impostato nel firmware)
84+
stato - restituisce lo stato del nodo e dei relativi rele
85+
86+
Comandi MQTT verso il topic nodo Temporizzatore:
87+
on - eccita il relè (per un tempo impostabile a piacimento)
88+
t=XX - tempo eccitazione rele (XX=tempo dopo il quale il relè viene diseccitato)
89+
stato - restituisce lo stato del nodo e dei relativi rele
90+
91+
Comandi MQTT verso il topic nodo Termostato:
92+
read - restituisce la Termostato
93+
on - eccita il relè del termostato
94+
off - diseccita il relè del termostato
95+
auto - setta modalità automatica
96+
man - setta modalità manuale
97+
t=XX - Termostato termostato (XX=Termostato)
98+
stato - restituisce lo stato del nodo e dei relativi rele
99+
100+
Comandi MQTT verso il topic nodo Sensore:
101+
stato - restituisce lo stato del nodo
102+
103+
Comandi MQTT verso il topic nodo Power:
104+
stato - restituisce lo stato del nodo
105+
CXX - Calibra dispositivo (XX=Watt di calibrazione)
106+
107+
Comandi MQTT verso il topic ACK
108+
ack - interroga tutti i nodi presenti
109+
info - tutti i nodi restituiscono alcune info
110+
111+
Comandi MQTT verso qualsiasi nodo
112+
reset - resetta nodo + cancella EEPROM nodo
113+
reboot - riavvia il nodo
114+
*/
115+
116+
#include <ESP8266WiFi.h>
117+
#include <AsyncMqttClient.h>
118+
#include <Ticker.h>
119+
#include <TPush.h>
120+
#include <EEPROM.h>
121+
122+
#include "SmartHome_config.h"
123+
124+
#define ACK_Topic "ack" // ACK_Topic (NON MODIFICARE!!!!!)
125+
#define MinFreeHeap 10000 // valire minimo di Heap
126+
#define TEMPO_CLICK_ON 150 // minimo 10
127+
#define TEMPO_CLICK_OFF 100 // minimo 5
128+
//#define RESET_GIORNALIERO
129+
#define Tempo_Reboot 0 // reset se nessuna connessione in secondi (0 = disattivato)
130+
131+
132+
String Versione = "5.0beta7nc2";
133+
uint8_t mac[6];
134+
int t = 0;
135+
unsigned long start_millis;
136+
137+
void setup() {
138+
#ifdef DEBUG
139+
Serial.begin(115200);
140+
// Serial.setDebugOutput(true);
141+
#endif
142+
#ifdef DEBUG1
143+
Serial1.begin(115200);
144+
// Serial1.setDebugOutput(true);
145+
#endif
146+
Show_vesione();
147+
Check_flash_chip_configuration();
148+
setup_EEPROM();
149+
setup_Status_LED();
150+
151+
#if Tapparella_nodi>0
152+
setup_Tapparella();
153+
#endif
154+
#if Termostato_nodi>0
155+
setup_Termostato();
156+
#endif
157+
#if Interruttore_nodi>0
158+
setup_Interruttore();
159+
#endif
160+
#if Impulso_nodi>0
161+
setup_Impulso();
162+
#endif
163+
#if Temporizzatore_nodi>0
164+
setup_Temporizzatore();
165+
#endif
166+
#if Sensore_nodi>0
167+
setup_Sensore();
168+
#endif
169+
#if Display_nodi>0
170+
setup_Display();
171+
#endif
172+
#if Power_nodi>0
173+
setup_Power();
174+
#endif
175+
setup_reti();
176+
}
177+
178+
void loop() {
179+
loop_Status_LED();
180+
loop_check_low_memory();
181+
#ifdef RESET_GIORNALIERO
182+
loop_reset_giornaliero();
183+
#endif
184+
#if Tapparella_nodi>0
185+
loop_Tapparella();
186+
#endif
187+
#if Termostato_nodi>0
188+
loop_Termostato();
189+
#endif
190+
#if Interruttore_nodi>0
191+
loop_Interruttore();
192+
#endif
193+
#if Impulso_nodi>0
194+
loop_Impulso();
195+
#endif
196+
#if Temporizzatore_nodi>0
197+
loop_Temporizzatore();
198+
#endif
199+
#if Sensore_nodi>0
200+
loop_Sensore();
201+
#endif
202+
#if Display_nodi>0
203+
loop_Display();
204+
#endif
205+
#if Power_nodi>0
206+
loop_Power();
207+
#endif
208+
209+
#ifdef ArduinoIDE_OTA
210+
loop_OTA();
211+
#endif
212+
#ifdef WEB_SERVER
213+
loop_web();
214+
#endif
215+
#ifdef TELNET_DEBUG
216+
loop_telnet();
217+
#endif
218+
}
219+
220+
#if (defined(PullUp) and defined(PullDown)) or (!defined(PullUp) and !defined(PullDown))
221+
#error In SmartHome_config.h definire correttamete PullUp o PullDown per i GPIO
222+
#endif
223+
224+
#if (defined(SONOFFDUAL) and defined(ESP01_SERIAL_RELE))
225+
#error In SmartHome_config.h definire solo un dispositivo con GPIO non standard (SONOFFDUAL o ESP01_SERIAL_RELE)
226+
#endif
227+
228+
#if (defined(SONOFFDUAL) or defined(ESP01_SERIAL_RELE))
229+
#undef DEBUG
230+
#endif
231+
232+
#if (Power_nodi>0 and Power1_device == 1 and (Power1_GPIO_RX == 3 or Power1_GPIO_TX == 1) and defined(DEBUG))
233+
#error PZEM-004 con RX=3 e TX=1 non può usare il serial DEBUG
234+
#endif
235+
236+
#if (Tapparella_nodi>5 or Interruttore_nodi>10 or Impulso_nodi>10 or Termostato_nodi>1 or Temporizzatore_nodi>10 or Sensore_nodi>10 or Display_nodi>1 or Power_nodi>1)
237+
#error Nodi definiti in numero errato
238+
#endif
239+
240+
#if Impulso_nodi<1
241+
#undef Impulso1_NFC
242+
#endif
Binary file not shown.

0 commit comments

Comments
 (0)