Skip to content

Commit d784b11

Browse files
committed
v50beta9
1 parent 1eeb409 commit d784b11

17 files changed

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

0 commit comments

Comments
 (0)