1+ #include < Arduino.h>
2+ #include < MAGELLAN_SIM7600E_MQTT.h>
3+ MAGELLAN_SIM7600E_MQTT magel;
4+
5+ void setup ()
6+ {
7+ Serial.begin (115200 );
8+ magel.OTA .autoUpdate (false ); // this function ENABLED by default unless you set FALSE
9+ setting.clientBufferSize = defaultOTABuffer; // set buffer size compatible for OTA
10+ magel.begin (setting);
11+
12+ magel.getServerConfig (" autoUpdate" , [](String resp){
13+ if (resp == " 1" )
14+ {
15+ magel.OTA .autoUpdate (true );
16+ }
17+ else {
18+ magel.OTA .autoUpdate (false );
19+ }
20+ // magel.OTA.getAutoUpdate() is return TRUE if set autoUpdate, FALSE if set manualUpdate
21+ magel.clientConfig .add (" autoUpdateMode" , ((magel.OTA .getAutoUpdate ())? " ENABLE" : " DISABLE" ));
22+ magel.clientConfig .save (); // update client config from device to thing optional
23+ });
24+
25+ magel.getControl ([](String key, String value){
26+ if (key == " executeUpdate" )
27+ {
28+ magel.control .ACK (" executeUpdate" , value);
29+ if (value == " 1" )
30+ {
31+ magel.OTA .executeUpdate (); // executeUpdate OTA
32+ }
33+ }
34+ else // acknowledge other control
35+ {
36+ magel.control .ACK (key, value);
37+ }
38+ });
39+
40+ // prepare sensor for add widget control
41+ magel.report .send (" executeUpdate" , " 0" );
42+ }
43+
44+ int checkStatusUpdate = UNKNOWN ;
45+ void loop ()
46+ {
47+ magel.loop ();
48+ magel.subscribes ([](){
49+ magel.subscribe .serverConfig (PLAINTEXT );
50+ magel.subscribe .control (PLAINTEXT );
51+ checkStatusUpdate = magel.OTA .checkUpdate (); // checkUpdate once time after connect and after reconnect
52+ // subscribe function here!
53+ });
54+ magel.interval (10 ,[](){ // time interval function inside every 10000 millis
55+ // doing function something every 10 sec here!
56+ switch (checkStatusUpdate)
57+ {
58+ case UP_TO_DATE :
59+ Serial.print (F (" checkStatusUpdate: " ));
60+ Serial.println (" # UP_TO_DATE" );
61+ break ;
62+ case OUT_OF_DATE :
63+ Serial.print (F (" checkStatusUpdate: " ));
64+ Serial.println (F (" # OUT_OF_DATE" ));
65+ break ;
66+ default :
67+ Serial.print (F (" checkStatusUpdate: " ));
68+ Serial.println (" # UNKNOWN" );
69+ break ;
70+ }
71+
72+ // you can use get information about OTA with this function too
73+ switch (magel.OTA .utility ().firmwareIsUpToDate )
74+ {
75+ case UP_TO_DATE :
76+ Serial.print (F (" checkStatusUpdate: " ));
77+ Serial.println (" # UP_TO_DATE" );
78+ break ;
79+ case OUT_OF_DATE :
80+ Serial.print (F (" checkStatusUpdate: " ));
81+ Serial.println (F (" # OUT_OF_DATE" ));
82+ break ;
83+ default :
84+ Serial.print (F (" checkStatusUpdate: " ));
85+ Serial.println (" # UNKNOWN" );
86+ break ;
87+ }
88+
89+ Serial.print (" # checksum: " );
90+ // boolean TRUE meaning information in magel.OTA.utility is already get data about OTA
91+ Serial.println (magel.OTA .utility ().isReadyOTA );
92+
93+ Serial.print (" # firmware name: " );
94+ Serial.println (magel.OTA .utility ().firmwareName );
95+
96+ Serial.print (" # firmware version: " );
97+ Serial.println (magel.OTA .utility ().firmwareVersion );
98+
99+ Serial.print (" # firmware size: " );
100+ Serial.println (magel.OTA .utility ().firmwareTotalSize );
101+
102+ Serial.print (" # checksumAlgorithm: " );
103+ Serial.println (magel.OTA .utility ().checksumAlgorithm );
104+
105+ Serial.print (" # checksum: " );
106+ Serial.println (magel.OTA .utility ().checksum );
107+
108+ Serial.print (" # Device information: " );
109+ // if get "null" in value because this device never OTA before
110+ Serial.println (magel.OTA .readDeviceInfo ());
111+ });
112+ }
0 commit comments