DELETE nalang po kung bawal Admin,
SANA DI MAKATAY un code,
generates 4 digit user name with blank password according to the amount put in and adds the user to mikrotik default hotspot,
di po ako programmer dahil lang po ito sa ECQ kaya nakagawa,
FEEDBACK narin kng umandar sa inyo
salamat
SANA DI MAKATAY un code,
generates 4 digit user name with blank password according to the amount put in and adds the user to mikrotik default hotspot,
di po ako programmer dahil lang po ito sa ECQ kaya nakagawa,
sana makatulong sa inyo,UPDATED v1
#include <SPI.h>
#include <Wire.h>
#include <Entropy.h>
#include <Ethernet.h>
#include <TelnetClient.h>
#include <LiquidCrystal_I2C.h>
#define randomSeed(s) srandom(s)
unsigned int mins = 0;
unsigned int hours = 0;
unsigned int days = 0;
unsigned int newmins = 0;
unsigned int newhours = 0;
int buttonPress = 0;
int ledState = LOW;
int gate = 0;
int interval = 0;
int start = 0;
const int ledpin = 5;
const int coinpin = 2;
const int buttonpin = 3;
const int disablepin = 4;
volatile int coins = 0;
unsigned long startMillis = 0;
unsigned long currentMillis = 0;
unsigned long previousMillis = 0;
String script;
uint32_t seed_value;
char letters[36] = {'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '1', '2', '3', '4', '5', '6', '7', '8', '9', '0'};
LiquidCrystal_I2C lcd(0x27, 20, 4);
EthernetClient client;
telnetClient tc(client);
byte clientMAC[] = { 0xAB, 0xBC, 0xCD, 0xDE, 0xEF, 0xFA };
IPAddress clientIp (192, 168, 88, 2);
//put here your router's ip address
IPAddress mikrotikRouterIp (192, 168, 88, 1);
void setup() {
pinMode(buttonpin, INPUT);
pinMode(ledpin, OUTPUT);
pinMode(disablepin, OUTPUT);
lcd.begin();
lcd.backlight();
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("initializing....");
lcd.setCursor(0, 2);
lcd.print(" by asantos1");
delay(3000);
digitalWrite(disablepin, HIGH);
Serial.begin(9600);
while (!Serial) {
;
}
Entropy.initialize();
pinMode(buttonpin, INPUT);
pinMode(ledpin, OUTPUT);
pinMode(disablepin, OUTPUT);
lcd.clear();
attachInterrupt(digitalPinToInterrupt(coinpin), coinInterrupt, RISING);
}
void coinInterrupt() {
coins ++;
startMillis = millis();
}
void blinker() {
unsigned long currentMillis = millis();
if (currentMillis - previousMillis >= interval) {
previousMillis = currentMillis;
if (ledState == LOW) {
ledState = HIGH;
} else {
ledState = LOW;
}
digitalWrite(ledpin, ledState);
}
}
void loop() {
if (gate == 0) {
digitalWrite(disablepin, LOW);
lcd.setCursor(0, 1);
lcd.print(" Press Button ");
lcd.setCursor(0, 2);
lcd.print(" to Start ");
while (digitalRead(buttonpin) == LOW) {
interval = 1000;
blinker();
}
gate = 1;
coins = 0;
}
if ((gate == 1) && (start == 0)) {
digitalWrite(disablepin, HIGH);
digitalWrite(ledpin, LOW);
lcd.setCursor(0, 1);
lcd.print(" Insert Coin ");
lcd.setCursor(0, 2);
lcd.print(" ");
start = 1;
startMillis = millis();
}
currentMillis = millis();
if ((start == 1) && (coins < 1) && (currentMillis - startMillis >= 15000)) {
gate = 0;
start = 0;
}
if ((start == 1) && (coins > 0) && (currentMillis - startMillis >= 100)) {
// ADJUST RATES HERE
if (coins < 5) {
mins = coins * 10; // 15min/peso
}
if (coins >= 5 && coins < 10) {
mins = coins * 20; // 20min/peso
}
if (coins >= 10 && coins < 15) {
mins = coins * 30; // 30min/peso
}
if (coins >= 15) {
mins = coins * 45; // 45min/peso
}
hours = floor(mins / 60);
days = floor(hours / 24);
newhours = hours - (days * 24);
newmins = mins - (hours * 60);
Serial.println(coins);
Serial.println(days);
Serial.println(newhours);
Serial.println(newmins);
lcd.setCursor(0, 0);
lcd.print(" Credit: ");
lcd.print(coins, 0);
lcd.print(".00 ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(days);
lcd.print(" day ");
lcd.print(newhours);
lcd.print(" hr ");
lcd.print(newmins);
lcd.print(" min");
}
currentMillis = millis();
if ((coins > 0) && (currentMillis - startMillis >= 10000)) {
lcd.setCursor(0, 2);
lcd.print(" Press Button to");
lcd.setCursor(0, 3);
lcd.print(" Generate Code");
}
currentMillis = millis();
if ((coins > 0) && (currentMillis - startMillis >= 11000)) {
digitalWrite(disablepin, LOW);
while (digitalRead(buttonpin) == LOW) {
interval = 150;
blinker();
}
digitalWrite(ledpin, LOW);
seed_value = Entropy.random();
randomSeed(seed_value);
char c[2] = {letters[random(36)]};
char o[2] = {letters[random(36)]};
char d[2] = {letters[random(36)]};
char e[2] = {letters[random(36)]};
lcd.setCursor(0, 0);
lcd.print(" CODE GENERATED ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.print(c);
lcd.print(" ");
lcd.print(o);
lcd.print(" ");
lcd.print(d);
lcd.print(" ");
lcd.print(e);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" ");
script = "/ip hotspot user add name=";
script += c;
script += o;
script += d;
script += e;
script += " limit-uptime=";
script += mins;
script += "m profile=hotspot";
int script_len = script.length() + 1;
char mscript[script_len];
script.toCharArray(mscript, script_len);
Ethernet.begin (clientMAC);
//want to use dhcp?
if (!Ethernet.begin (clientMAC)) {
lcd.clear();
lcd.setCursor(0, 0);
lcd.print("DCHP error ");
lcd.setCursor(0, 1);
lcd.print(coins);
while (1);
}
tc.setPromptChar('>');
//CHANGE HERE YOUR USERNAME/PASSWORD
if (tc.login(mikrotikRouterIp, "admin", "asantos1")) {
delay(1000);
tc.sendCommand(mscript);
delay(5000);
tc.disconnect();
lcd.setCursor(0, 0);
lcd.print(" ");
lcd.setCursor(0, 1);
lcd.print(" ");
lcd.print(c);
lcd.print(" ");
lcd.print(o);
lcd.print(" ");
lcd.print(d);
lcd.print(" ");
lcd.print(e);
lcd.print(" ");
lcd.setCursor(0, 2);
lcd.print(" ");
lcd.setCursor(0, 3);
lcd.print(" THANK YOU ");
delay(10000);
lcd.clear();
coins = 0;
gate = 0;
start = 0;
}
}
}
FEEDBACK narin kng umandar sa inyo
salamat
Last edited: