простите, а кто вы такой, чтобы что-то "упорядочить"? Глава муниципалитета?упорядочить немного этот вид деятельности
И что там особо упорядочивать
простите, а кто вы такой, чтобы что-то "упорядочить"? Глава муниципалитета?упорядочить немного этот вид деятельности
Социальный проект это так, к слову, и он совсем другого направления, о нем я не буду…простите, а кто вы такой, чтобы что-то "упорядочить"? Глава муниципалитета?
И что там особо упорядочивать, когда дубликатор может собрать любой школьник? Какой нафик "социальный проект"?
Изучал количество точек изготовления во многих крупных городах, таких как Казань, Челябинск, Самара, Омск, Ростов-на-Дону, Ярославль, Белгород от 2255 до 3000 квартир на одну мастерскую, т.е. цифры охвата такие же как и в нашем городе. Кроме Москвы и Санкт-Петербурга там охват в 2 раза больше, но это наверно потому что там больше всего дубликаторов и производят.Бизнес этот и так на нуле, копию можно сделать на любом углу, какой стартап вы тут надеетесь поднять? смешно
вы бы к этим цифрам прикинули потребность в услуге -стало бы понятно, что 3 тыс квартир на точку - это совсем не много.от 2255 до 3000 квартир на одну мастерскую
Просить можно хоть 500Уже дерут по 200 р за ключ..
ни вапрос, код записи на 1990 на каждом углу лежитВот я то же думаю надо будет самому сделать, пошли они ву попу с таким социальными ключами...
С четвертой частью домофонных мастерских нашего города разговаривал с глазу на глаз, все сказали в основном 5-10 максимум 12, хотя бывают случаи и меньше 5 ключей за деньДелают аж по 3-4 ключа в день- просто офигенная загрузка
#include <LiquidCrystal.h>
#include <SoftwareSerial.h>
#include <SIM800L.h>
#include <EEPROM.h>
#include <Wire.h>
// Initialize the LCD
LiquidCrystal lcd(7, 8, 9, 10, 11, 12);
// Initialize the SIM800L module
SoftwareSerial sim800l(2, 3);
SIM800L gsm(sim800l);
// Initialize variables
int contact_tm_count = 0; // number of copied TouchMemory contacts
int rfid_count = 0; // number of copied RFID keys
int max_records = 100; // maximum number of records to store
int records_stored = 0; // number of records currently stored
String records[max_records][4]; // 2D array to store records: {ID, type, location, timestamp}
void setup() {
// Initialize the LCD
lcd.begin(16, 2);
lcd.print("Device Manager");
lcd.setCursor(0, 1);
lcd.print("Initializing...");
// Initialize the SIM800L module
sim800l.begin(9600);
gsm.init();
// Initialize the EEPROM
EEPROM.begin(512);
// Load stored records from EEPROM
for (int i = 0; i < max_records; i++) {
for (int j = 0; j < 4; j++) {
records[j] = String(EEPROM.read(i * 4 + j));
}
if (records[0] != "") {
records_stored++;
}
}
}
void loop() {
// Check for new records
String id = ""; // ID of the new record
String type = ""; // Type of the new record (TouchMemory or RFID)
String location = ""; // Location of the new record
String timestamp = ""; // Timestamp of the new record
if (/* check for new TouchMemory contact */) {
// Copy the TouchMemory contact
contact_tm_count++;
id = "TM" + String(contact_tm_count);
type = "TouchMemory";
location = /* get location */;
timestamp = /* get timestamp */;
} else if (/* check for new RFID key */) {
// Copy the RFID key
rfid_count++;
id = "RFID" + String(rfid_count);
type = "RFID";
location = /* get location */;
timestamp = /* get timestamp */;
}
// Store the new record if there is space
if (records_stored < max_records) {
records[records_stored][0] = id;
records[records_stored][1] = type;
records[records_stored][2] = location;
records[records_stored][3] = timestamp;
records_stored++;
// Save the new record to EEPROM
for (int i = 0; i < 4; i++) {
EEPROM.write((records_stored - 1) * 4 + i, records[records_stored - 1].charAt(0));
}
EEPROM.commit();
}
// Send the new record to the Android app
String message = id + "," + type + "," + location + "," + timestamp;
if (/* check for internet connection */) {
/* send the message via internet */
} else {
/* send the message via SMS */
}
// Display the latest record on the LCD
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("Latest Record:");
lcd.setCursor(0, 1);
lcd.print(id + " " + type);
// Check for notifications to send
int notifications_sent = 0;
for (int i = 0; i < max_records; i++) {
if (records[0] != "") {
if (/* check if the record is close to max_records */) {
if (/* check if the user should be notified */) {
/* send notification */
notifications_sent++;
}
}
}
}
}
// Android app functions
/* function to connect to the device manager via internet or Wi-Fi */
/* function to retrieve the latest records */
/* function to retrieve reports */
/* function to set notification settings */
/* function to set location of devices on Google Maps */
/* function to search devices by location or name */
/* function to set access levels */