Šta je novo?

[A1] Kucni net

Svaka cast Tilek na resenosti, mada mislim da na ovo kao korisnici ne mozemo da uticemo i da su oni problem.

Dole su rezultati sa druge bazne stanice, signal je daleko bolji nego sto mi je kod kuce, ali dzaba kada je bazna stanica preopterecena. I nesto mi se cini da "heavy use" dodatno smanjuje prioritet na baznoj stanici.
 

Prilozi

  • 2025-05-03_13-01-25.jpg
    2025-05-03_13-01-25.jpg
    43.1 KB · Pregleda: 38
  • 0-02-05-c327e6f0c1af6d3e81dc4d1debdea039ed1be85dc94fe7059f446e92c0e8b480_23c7bc910a6d9f55.jpg
    0-02-05-c327e6f0c1af6d3e81dc4d1debdea039ed1be85dc94fe7059f446e92c0e8b480_23c7bc910a6d9f55.jpg
    82.6 KB · Pregleda: 36
Pozdrav svima, novi sam korisnik kućnog neta, i do sada nisam imao iskustva sa ovim tipom neta. Uzeo sam paket 100/10, ali dosad mi je negde najviše izvukao 60 mbps, a češće je dosta manje. Rečeno mi je iz A1 da je na mojoj adresi jak signal (znam da to ni bog otac ne može zasigurno da tvrdi). Dali su mi jedan od onih ZTE rutera. Možda je glupo pitanje, ali da li postoji neki uređaj koji mogu kupiti da mi pojača brzinu iznad ovih 60 mbps?
 
Izguglaš u specifikacijama modela koje je kategorije taj ruter, verovatno Cat6 (dl nominalno do 300 Mbps) i onda na oglasima kupiš Cat12 (dl nominalno do 600 Mbps).

Najjeftinije što može da se nađe na Kupujem-prodajem je polovan donesen iz Nemačke za 5000.

Naravno, nema garancije da će raditi puno bolje, ali te ne košta puno da probaš, pošto uvek možeš da ga prodaš i vratiš najveći deo para.

Imaš detaljnije o tim kategorijama LTE rutera ovde:
 
Sto se tice skripte, mora racunar da ti radi non-stop. :D

Ma kod sestre radi IPTV nekad po ceo dan, tako da nije "neaktivnost".
Cak i kad se pusti speedtest i slicno koji bi trebalo da aktivira agregaciju, on i dalje ostaje zakucan.

Mislim da dosta zavisi i od signala, neki ruteri su osetljiviji pa kao da odbace agregaciju ako dodju trenuci kada signal "oslabi". Mada ponavljam, agregacija zavisi od bazne, ona odredjuje to. Razmisljao i da ulozim u antenu, ali batalio. Generalno ljudi koji su duboko u ovome kazu da je signal "majka".

Meni pala ideja na pamet (mada nemam hardware), neka skripta koja ce da menja band lock, sa auto na 1+3 i obrnuto npr.)
Posto bukvalno to radimo u browseru kada se povezemo na ruter.

Ali sto kazes, na B3@20Mhz izvlaci i 70+ Mbpsa kada nema opterecenja (a i kada ima, sigurno nekih 30-40), tako da sestri zavrsava posao.

PS: @Tilek kakav je signal kod tebe?

Da, mora da radi računar, ali u principu net i koristim uglavnom preko računara, tako da to meni nije problem.

Signal mi je dobar, oko -80 dBm RSRP konstantno, tako da isključujem mogućnost da je zbog toga. B3@Mhz bez agregacije čak i pri najvećem opterećenju ne ide ispod 50-60 Mbps.

Da, bukvalno treba neka skripta koja će da menja band lock, jer se konekcija ne prekida prilikom promene, ali se reaktivira agregacija. Možda i tu ChatGPT može da pomogne.
 
Poslednja izmena:
Okej RSRP a ostali parametri?
SINR me zanima.
 
Izguglaš u specifikacijama modela koje je kategorije taj ruter, verovatno Cat6 (dl nominalno do 300 Mbps) i onda na oglasima kupiš Cat12 (dl nominalno do 600 Mbps).

Najjeftinije što može da se nađe na Kupujem-prodajem je polovan donesen iz Nemačke za 5000.

Naravno, nema garancije da će raditi puno bolje, ali te ne košta puno da probaš, pošto uvek možeš da ga prodaš i vratiš najveći deo para.

Imaš detaljnije o tim kategorijama LTE rutera ovde:
Pozdrav, hvala na savetu. Da li bi se taj Cat 12 povezao na postojeći ZTE ruter, ili bih u taj novi ruter stavio SIM karticu direktno? Ako se ne da zaključiti iz mojih pitanja, prilično sam noob za ovu tehnologiju :)
 
Proveri ponovo (posto se menjaju vrednosti), nema sanse toliko nizak SINR (moze na momenat da padne, ali vidi "prosek).

Pozdrav, hvala na savetu. Da li bi se taj Cat 12 povezao na postojeći ZTE ruter, ili bih u taj novi ruter stavio SIM karticu direktno? Ako se ne da zaključiti iz mojih pitanja, prilično sam noob za ovu tehnologiju
Direktno SIM u novi ruter. ZTE od A1 mozes da bacis ako hoces. :D
 
Proveri ponovo (posto se menjaju vrednosti), nema sanse toliko nizak SINR (moze na momenat da padne, ali vidi "prosek).

Sad je:
  • RSRP:-79dBm
  • RSRQ:-17.0dB
  • RSSI:51dBm
  • SINR:7.4dB
Oko ponoći se on popne na 15-20 ako se ne varam. Tokom dana, tokom opterećenja, eto računaj prosek ova dva.
 
Slabo. :D
Ima dosta suma.
 
Izguglaš u specifikacijama modela koje je kategorije taj ruter, verovatno Cat6 (dl nominalno do 300 Mbps) i onda na oglasima kupiš Cat12 (dl nominalno do 600 Mbps).

Najjeftinije što može da se nađe na Kupujem-prodajem je polovan donesen iz Nemačke za 5000.

Naravno, nema garancije da će raditi puno bolje, ali te ne košta puno da probaš, pošto uvek možeš da ga prodaš i vratiš najveći deo para.

Imaš detaljnije o tim kategorijama LTE rutera ovde:
[/URL]
Pa i taj cat6 je do 300mbps, a njemu ne moze 60 da izvuce :D Sta ce mu taj do 600? Kapiram da mu treba verovatno bolji ruter (mozda), ali cat sa tim nema nikakve veze. Moze da bude cat 1000.
 
Slabo. :D
Ima dosta suma.

Pa da, imam drugu baznu stanicu koja ima gotovo istu jačinu signala i nešto manje brzine. I verovatno tu postoji mešanje signala koji prouzrokuje nizak SINR.

Evo, ChatGPT mi je napravio skriptu za Lock to Band 1 + Band 3 Every Hour. Samo ne znam da li će to da radi uopšte ono što mi treba ili moram da stavim recimo da na jedan minut bude AUTO i onda se opet vrati na 1+3 na jedan sat. ChatGPT kaže "Yes, this script will reset the internet connection every time it sends the band lock command, as it effectively changes the LTE band configuration." Mada, treba da vidim hoće li uopšte da ruter primi komandu.

import requests
import time

# Configuration
ROUTER_IP = "192.168.0.1"
PASSWORD = "your_admin_password" # Replace with your router's password
INTERVAL_SECONDS = 3600 # 1 hour

def login(session):
"""Log in to the ZTE router using admin credentials."""
login_url = f"http://{ROUTER_IP}/goform/goform_set_cmd_process"
payload = {
"isTest": "false",
"goformId": "LOGIN",
"password": PASSWORD
}
headers = {
"Referer": f"http://{ROUTER_IP}/index.html"
}
response = session.post(login_url, data=payload, headers=headers)
return response.status_code == 200

def set_band_lock(session, band_mask):
"""Send band locking command to ZTE router."""
lock_url = f"http://{ROUTER_IP}/goform/goform_set_cmd_process"
payload = {
"isTest": "false",
"goformId": "SET_NETWORK_BAND_LOCK",
"lte_band_lock": band_mask
}
response = session.post(lock_url, data=payload)
return response.status_code == 200

def main():
while True:
session = requests.Session()
print("Logging in to router...")
if login(session):
print("Login successful.")
print("Setting band lock to Band 1 + Band 3 (mask: 0x5)...")

success = set_band_lock(session, "0x5")
if success:
print("Band lock applied successfully.")
else:
print("Failed to apply band lock.")
else:
print("Login failed. Please check your password and IP.")

print(f"Waiting {INTERVAL_SECONDS / 60:.0f} minutes before next attempt...\n")
time.sleep(INTERVAL_SECONDS)

if name == "main":
main()
 
Pa i taj cat6 je do 300mbps, a njemu ne moze 60 da izvuce :D Sta ce mu taj do 600? Kapiram da mu treba verovatno bolji ruter (mozda), ali cat sa tim nema nikakve veze. Moze da bude cat 1000.

U velikoj većini slučajeva ruter čija kategorija podržava veću maksimalnu brzinu je istovremeno i bolji jer mora da zadovolji strože specifikacije.

When choosing a Modem Router, a higher LTE category (e.g. CAT-12) means better performance. A CAT-6 will usually perform twice as fast as a CAT-4 in the same location, and a CAT-12 will usually perform at least twice as fast as a CAT-6 at the same location. Choosing a higher category modem also means you can get better speeds than a lower category modem in areas with poor signal which really makes a difference to the quality of the service. But there's more - with a CAT-12 or CAT-6 modem it is possible get service in areas where the signal so low that it's unusable on a CAT-4.

Naravno, čovek može i da malo prelista teme o mobilnim net paketima i vidi kojim su ruterima ljudi bili zadovoljni u smislu da su izvlačili veće brzine od onih koje daju operateri.
 
Poslednja izmena:
Svakako neću ništa uzimati od novih rutera dok malo ne prečešljam ovu temu
 
Ne samo ovu:

 
Ne samo ovu:

Hvala puno!
 
Meni pala ideja na pamet (mada nemam hardware), neka skripta koja ce da menja band lock, sa auto na 1+3 i obrnuto npr.

Uspeo sam uz pomoć ChatGPT preko Pythona i Seleniuma da napravim skriptu da na svaka 2 sata resetuje band lock na 1+3. Ustvari simulira login preko browsera i uključivanje javascripta sa sajta MioNonno preko koga skripta aktivira band lock. Morao sam malo više da se "tučem" sa ChatGPT da bi na kraju skripta radila. Naravno, ovo je za moj model MF289F. MioNonno ima i skriptu za B818-263 @team1, pa možda možeš da probaš sa ChatGPT uz podatke iz moje skripe i MioNonnove browser skripte za B818-263 da preradiš za taj ruter. Možda bi ovo znanje moglo i za operatorski MF296R da se primeni da bi se dobio band lock, uz još malo "tuče" sa ChatGPT, ali nisam siguran, jer MioNonno nema skriptu za njega. Kod se čuva sa .py ekstenzijom.
Kod:
import time
import logging
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from webdriver_manager.chrome import ChromeDriverManager

# === Configuration ===
ROUTER_IP = '192.168.0.1'
PASSWORD = 'password'  # Replace with your actual router password
RECONNECT_INTERVAL_SECONDS = 2 * 60 * 60  # 2 hours

# === Logging Setup ===
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s',
    handlers=[
        logging.FileHandler("router_reconnect.log"),
        logging.StreamHandler()
    ]
)

# === Selenium Setup ===
options = Options()
options.add_argument('--headless')  # Comment this out if you want to see the browser
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

def login():
    """Logs into the router using only a password."""
    logging.info("Attempting login...")
    driver.get(f"http://{ROUTER_IP}")
    time.sleep(2)

    try:
        # Enter password
        password_input = driver.find_element(By.ID, 'txtPwd')
        password_input.clear()
        password_input.send_keys(PASSWORD)
        logging.info("Entered password.")

        # Click login
        login_button = driver.find_element(By.ID, 'btnLogin')
        login_button.click()
        logging.info("Clicked login button.")
        time.sleep(5)  # Allow time for the page to fully load

        # Inject the UI JavaScript manually to enable the band lock controls
        driver.execute_script("""
            function ftb() {
                $(".color_background_blue").css("background-color","#456");
                $(".headcontainer").hide();
                $("body").prepend('<a style="font-weight:bolder;background-color: #448;color:white;padding: 10px;border-radius:10px;" onclick="ltebandselection()">SET</a>');
            }
            ftb();
        """)
        logging.info("Injected ftb() UI to display 'SET' button.")

        # Wait for the "SET" button to appear
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "//a[text()='SET']"))
        )
        logging.info("Login complete. Band lock UI is ready.")

        # Trigger the band lock selection UI
        set_button = driver.find_element(By.XPATH, "//a[text()='SET']")
        set_button.click()
        logging.info("Band lock function triggered.")

    except NoSuchElementException as e:
        logging.error(f"Login failed: {e}")
    except TimeoutException as e:
        logging.error(f"Timeout while waiting for the UI element: {e}")

def execute_band_lock_script():
    """Executes the band lock JavaScript to lock to bands 1 and 3."""
    logging.info("Executing automatic band lock for bands 1+3...")
    try:
        driver.execute_script("""
            function err(e, a, n) {
                console.log("Band lock error:", e, a, n);
            }
            var selectedBands = "1+3";
            var a = selectedBands.split("+"), n = 0;
            for (var l = 0; l < a.length; l++) {
                n += Math.pow(2, parseInt(a[l]) - 1);
            }
            var hexBand = "0x" + n.toString(16);
            $.ajax({
                type: "GET",
                url: "/goform/goform_get_cmd_process",
                data: { cmd: "wa_inner_version,cr_version,RD", multi_data: "1" },
                dataType: "json",
                success: function(e) {
                    var ad = hex_md5(hex_md5(e.wa_inner_version + e.cr_version) + e.RD);
                    $.ajax({
                        type: "POST",
                        url: "/goform/goform_set_cmd_process",
                        data: {
                            isTest: "false",
                            goformId: "SET_LTE_BAND_LOCK",
                            lte_band_lock: hexBand,
                            AD: ad
                        },
                        success: function() {
                            console.log("Band lock applied.");
                        },
                        error: err
                    });
                }
            });
        """)
        logging.info("Band lock JavaScript for 1+3 executed successfully.")
    except Exception as e:
        logging.error(f"Error executing band lock script: {e}")

def main():
    try:
        login()
        execute_band_lock_script()
        logging.info("Band lock action complete. Waiting 2 hours before repeating.")
    except Exception as e:
        logging.exception(f"Unexpected error: {e}")

if __name__ == "__main__":
    while True:
        main()
        time.sleep(RECONNECT_INTERVAL_SECONDS)
 
Uspeo sam uz pomoć ChatGPT preko Pythona i Seleniuma da napravim skriptu da na svaka 2 sata resetuje band lock na 1+3. Ustvari simulira login preko browsera i uključivanje javascripta sa sajta MioNonno preko koga skripta aktivira band lock. Morao sam malo više da se "tučem" sa ChatGPT da bi na kraju skripta radila. Naravno, ovo je za moj model MF289F. MioNonno ima i skriptu za B818-263 @team1, pa možda možeš da probaš sa ChatGPT uz podatke iz moje skripe i MioNonnove browser skripte za B818-263 da preradiš za taj ruter. Možda bi ovo znanje moglo i za operatorski MF296R da se primeni da bi se dobio band lock, uz još malo "tuče" sa ChatGPT, ali nisam siguran, jer MioNonno nema skriptu za njega. Kod se čuva sa .py ekstenzijom.
Kod:
import time
import logging
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from webdriver_manager.chrome import ChromeDriverManager

# === Configuration ===
ROUTER_IP = '192.168.0.1'
PASSWORD = 'password'  # Replace with your actual router password
RECONNECT_INTERVAL_SECONDS = 2 * 60 * 60  # 2 hours

# === Logging Setup ===
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s',
    handlers=[
        logging.FileHandler("router_reconnect.log"),
        logging.StreamHandler()
    ]
)

# === Selenium Setup ===
options = Options()
options.add_argument('--headless')  # Comment this out if you want to see the browser
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

def login():
    """Logs into the router using only a password."""
    logging.info("Attempting login...")
    driver.get(f"http://{ROUTER_IP}")
    time.sleep(2)

    try:
        # Enter password
        password_input = driver.find_element(By.ID, 'txtPwd')
        password_input.clear()
        password_input.send_keys(PASSWORD)
        logging.info("Entered password.")

        # Click login
        login_button = driver.find_element(By.ID, 'btnLogin')
        login_button.click()
        logging.info("Clicked login button.")
        time.sleep(5)  # Allow time for the page to fully load

        # Inject the UI JavaScript manually to enable the band lock controls
        driver.execute_script("""
            function ftb() {
                $(".color_background_blue").css("background-color","#456");
                $(".headcontainer").hide();
                $("body").prepend('<a style="font-weight:bolder;background-color: #448;color:white;padding: 10px;border-radius:10px;" onclick="ltebandselection()">SET</a>');
            }
            ftb();
        """)
        logging.info("Injected ftb() UI to display 'SET' button.")

        # Wait for the "SET" button to appear
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "//a[text()='SET']"))
        )
        logging.info("Login complete. Band lock UI is ready.")

        # Trigger the band lock selection UI
        set_button = driver.find_element(By.XPATH, "//a[text()='SET']")
        set_button.click()
        logging.info("Band lock function triggered.")

    except NoSuchElementException as e:
        logging.error(f"Login failed: {e}")
    except TimeoutException as e:
        logging.error(f"Timeout while waiting for the UI element: {e}")

def execute_band_lock_script():
    """Executes the band lock JavaScript to lock to bands 1 and 3."""
    logging.info("Executing automatic band lock for bands 1+3...")
    try:
        driver.execute_script("""
            function err(e, a, n) {
                console.log("Band lock error:", e, a, n);
            }
            var selectedBands = "1+3";
            var a = selectedBands.split("+"), n = 0;
            for (var l = 0; l < a.length; l++) {
                n += Math.pow(2, parseInt(a[l]) - 1);
            }
            var hexBand = "0x" + n.toString(16);
            $.ajax({
                type: "GET",
                url: "/goform/goform_get_cmd_process",
                data: { cmd: "wa_inner_version,cr_version,RD", multi_data: "1" },
                dataType: "json",
                success: function(e) {
                    var ad = hex_md5(hex_md5(e.wa_inner_version + e.cr_version) + e.RD);
                    $.ajax({
                        type: "POST",
                        url: "/goform/goform_set_cmd_process",
                        data: {
                            isTest: "false",
                            goformId: "SET_LTE_BAND_LOCK",
                            lte_band_lock: hexBand,
                            AD: ad
                        },
                        success: function() {
                            console.log("Band lock applied.");
                        },
                        error: err
                    });
                }
            });
        """)
        logging.info("Band lock JavaScript for 1+3 executed successfully.")
    except Exception as e:
        logging.error(f"Error executing band lock script: {e}")

def main():
    try:
        login()
        execute_band_lock_script()
        logging.info("Band lock action complete. Waiting 2 hours before repeating.")
    except Exception as e:
        logging.exception(f"Unexpected error: {e}")

if __name__ == "__main__":
    while True:
        main()
        time.sleep(RECONNECT_INTERVAL_SECONDS)
A u brate da moras selenium da koristis radi interneta. Nadam se da ga teras headless. Da ti ne iskače prozor non stop
 
A u brate da moras selenium da koristis radi interneta. Nadam se da ga teras headless. Da ti ne iskače prozor non stop

Sve mi ChatGPT napravio uz moju malu pomoć, nisam ni znao šta je Selenium do juče. :cool:

Da, da, headless + pythonw, tako da je nevidljiva. Čak i da nije nevidljiva, na svaka 2 sata sam podesio da radi band lock, tako da nije non stop. Stavio sam da se skripta aktivira na startup-u, tako da mogu i da zaboravim da postoji.
 
Razmišljam se dal da komentarišem... Ali ovaj internet je namenjen da ga samo uštekaš u zid i surfuješ..... Al ti si ga baš zakomplikovao @Tilek
 
Ako je nekome potreban kućni net, ustupam ugovor potpisan 15.04, jer na lokaciji gde sam planirao da ga koristim signal je užasno loš, samim tim i brzina. Ruter je nov neotpakovan.
12m po dinar, nakon toga 1499 din.
 
Kako funkcioniše to ustupanje, ako bi hteo da mi pojasniš? Je l' se ugovor prebacuje na moje ime (da li je to uopšte moguće) ili sve ostaje na tebe, a ja koristim i plaćam?
 
Da, sve se završi u A1 poslovnici, moguće je naravno da se ugovor prebaci na drugog korisnika, tj ime, i onda taj korisnik plaća i sve je na njegovo ime. Odemo zajedno do A1 poslovnice, i za par minuta bude gotovo ustupanje ugovora, i on se nastavlja za onoliki period na koji je potpisan, tj ne produžava se na novih 24m.
Hvala @jason13 na dodatnim informacijama.
 
Uspeo sam uz pomoć ChatGPT preko Pythona i Seleniuma da napravim skriptu da na svaka 2 sata resetuje band lock na 1+3. Ustvari simulira login preko browsera i uključivanje javascripta sa sajta MioNonno preko koga skripta aktivira band lock. Morao sam malo više da se "tučem" sa ChatGPT da bi na kraju skripta radila. Naravno, ovo je za moj model MF289F. MioNonno ima i skriptu za B818-263 @team1, pa možda možeš da probaš sa ChatGPT uz podatke iz moje skripe i MioNonnove browser skripte za B818-263 da preradiš za taj ruter. Možda bi ovo znanje moglo i za operatorski MF296R da se primeni da bi se dobio band lock, uz još malo "tuče" sa ChatGPT, ali nisam siguran, jer MioNonno nema skriptu za njega. Kod se čuva sa .py ekstenzijom.
Kod:
import time
import logging
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from webdriver_manager.chrome import ChromeDriverManager

# === Configuration ===
ROUTER_IP = '192.168.0.1'
PASSWORD = 'password'  # Replace with your actual router password
RECONNECT_INTERVAL_SECONDS = 2 * 60 * 60  # 2 hours

# === Logging Setup ===
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s',
    handlers=[
        logging.FileHandler("router_reconnect.log"),
        logging.StreamHandler()
    ]
)

# === Selenium Setup ===
options = Options()
options.add_argument('--headless')  # Comment this out if you want to see the browser
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

def login():
    """Logs into the router using only a password."""
    logging.info("Attempting login...")
    driver.get(f"http://{ROUTER_IP}")
    time.sleep(2)

    try:
        # Enter password
        password_input = driver.find_element(By.ID, 'txtPwd')
        password_input.clear()
        password_input.send_keys(PASSWORD)
        logging.info("Entered password.")

        # Click login
        login_button = driver.find_element(By.ID, 'btnLogin')
        login_button.click()
        logging.info("Clicked login button.")
        time.sleep(5)  # Allow time for the page to fully load

        # Inject the UI JavaScript manually to enable the band lock controls
        driver.execute_script("""
            function ftb() {
                $(".color_background_blue").css("background-color","#456");
                $(".headcontainer").hide();
                $("body").prepend('<a style="font-weight:bolder;background-color: #448;color:white;padding: 10px;border-radius:10px;" onclick="ltebandselection()">SET</a>');
            }
            ftb();
        """)
        logging.info("Injected ftb() UI to display 'SET' button.")

        # Wait for the "SET" button to appear
        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "//a[text()='SET']"))
        )
        logging.info("Login complete. Band lock UI is ready.")

        # Trigger the band lock selection UI
        set_button = driver.find_element(By.XPATH, "//a[text()='SET']")
        set_button.click()
        logging.info("Band lock function triggered.")

    except NoSuchElementException as e:
        logging.error(f"Login failed: {e}")
    except TimeoutException as e:
        logging.error(f"Timeout while waiting for the UI element: {e}")

def execute_band_lock_script():
    """Executes the band lock JavaScript to lock to bands 1 and 3."""
    logging.info("Executing automatic band lock for bands 1+3...")
    try:
        driver.execute_script("""
            function err(e, a, n) {
                console.log("Band lock error:", e, a, n);
            }
            var selectedBands = "1+3";
            var a = selectedBands.split("+"), n = 0;
            for (var l = 0; l < a.length; l++) {
                n += Math.pow(2, parseInt(a[l]) - 1);
            }
            var hexBand = "0x" + n.toString(16);
            $.ajax({
                type: "GET",
                url: "/goform/goform_get_cmd_process",
                data: { cmd: "wa_inner_version,cr_version,RD", multi_data: "1" },
                dataType: "json",
                success: function(e) {
                    var ad = hex_md5(hex_md5(e.wa_inner_version + e.cr_version) + e.RD);
                    $.ajax({
                        type: "POST",
                        url: "/goform/goform_set_cmd_process",
                        data: {
                            isTest: "false",
                            goformId: "SET_LTE_BAND_LOCK",
                            lte_band_lock: hexBand,
                            AD: ad
                        },
                        success: function() {
                            console.log("Band lock applied.");
                        },
                        error: err
                    });
                }
            });
        """)
        logging.info("Band lock JavaScript for 1+3 executed successfully.")
    except Exception as e:
        logging.error(f"Error executing band lock script: {e}")

def main():
    try:
        login()
        execute_band_lock_script()
        logging.info("Band lock action complete. Waiting 2 hours before repeating.")
    except Exception as e:
        logging.exception(f"Unexpected error: {e}")

if __name__ == "__main__":
    while True:
        main()
        time.sleep(RECONNECT_INTERVAL_SECONDS)
Cekam jos koji dan da vidim kakvi su ti rezultati pa cu se baciti na posao.

Da li možda neko ima kontakt akvizitera za Valjevo?
Popuni kontakt formu na sajtu i pozvace te uskoro, ako se niko nije javio u PP.
 
Cekam jos koji dan da vidim kakvi su ti rezultati pa cu se baciti na posao.

Zaključio sam da je opterećenje mreže glavni uzročnik gubitka agregacije, barem u mom primeru. U nedelju kad nije bila opterećena mreža sa skriptom koja je na svaka dva sata ponavljala agregaciju B1+B3 sve je radilo savršeno, ali cvrc, jutros opet, prvo pređe sa 3CC na 2CC, bude na 2CC neko vreme i onda se izgubi skroz. Ni speedtest ne pomaže. Dakle, skripta koja ponavlja istu agregaciju faktički ne radi ništa (na mom modelu rutera). Isto je kao da se trajno postavi B1+B3 band lock. Verovatno ruter zaključi da je taj band lock već postavljen i ništa ne uradi. Dakle, kada mreža nije opterećena, na mojoj lokaciji CA radi savršeno, međutim kod većeg opterećenja, prvo se smanjuje sa 3CC na 2CC, a zatim i gubi

Posle toga sam preradio skriptu da radi sledeće - 5 sekundi bandlock na B3 zatim 895 sekundi bandlock na B1+B3 i onda da ponavlja u ciklusima od 15 minuta (900 sekundi) i voila, to je to, radi! 3CC ceo dan. Tačnije, prvo sam stavio ciklus od 30 minuta, ali se već na prvom desilo da posle 20ak minutapređe na 2CC i da ni speed test neće da aktivira 3CC, tako da sam spustio na 15 minuta.

Evo skripte koja radi na MF289F. Dakle, u principu mora da se zaključi log in logika rutera i logika setovanja band locka (preuzeo od browser skripte sa MioNonno) i sve to ubaci u skriptu da bi radilo. Sad, da li je za Huawei to dosta slično ili dosta drugačije od ZTE, ne bih znao.

Kod:
import time
import logging
from selenium import webdriver
from selenium.webdriver.common.by import By
from selenium.webdriver.chrome.service import Service
from selenium.webdriver.chrome.options import Options
from selenium.webdriver.support.ui import WebDriverWait
from selenium.webdriver.support import expected_conditions as EC
from selenium.common.exceptions import NoSuchElementException, TimeoutException
from webdriver_manager.chrome import ChromeDriverManager

# === Configuration ===
ROUTER_IP = '192.168.0.1'
PASSWORD = '********'
CYCLE_INTERVAL_SECONDS = 15 * 60  # 15 minutes

# === Logging Setup ===
logging.basicConfig(
    level=logging.INFO,
    format='%(asctime)s [%(levelname)s] %(message)s',
    handlers=[
        logging.FileHandler("router_reconnect.log"),
        logging.StreamHandler()
    ]
)

# === Selenium Setup ===
options = Options()
options.add_argument('--headless')  # Comment this out to see the browser
options.add_argument('--disable-gpu')
driver = webdriver.Chrome(service=Service(ChromeDriverManager().install()), options=options)

def login():
    logging.info("Attempting login...")
    driver.get(f"http://{ROUTER_IP}")
    time.sleep(2)

    try:
        password_input = driver.find_element(By.ID, 'txtPwd')
        password_input.clear()
        password_input.send_keys(PASSWORD)
        logging.info("Entered password.")

        login_button = driver.find_element(By.ID, 'btnLogin')
        login_button.click()
        logging.info("Clicked login button.")
        time.sleep(5)

        driver.execute_script("""
            function ftb() {
                $(".color_background_blue").css("background-color","#456");
                $(".headcontainer").hide();
                $("body").prepend('<a style="font-weight:bolder;background-color: #448;color:white;padding: 10px;border-radius:10px;" onclick="ltebandselection()">SET</a>');
            }
            ftb();
        """)

        WebDriverWait(driver, 10).until(
            EC.presence_of_element_located((By.XPATH, "//a[text()='SET']"))
        )
        logging.info("Login complete. Band lock UI is ready.")

        set_button = driver.find_element(By.XPATH, "//a[text()='SET']")
        set_button.click()
        logging.info("Band lock function triggered.")

    except (NoSuchElementException, TimeoutException) as e:
        logging.error(f"Login error: {e}")

def execute_band_lock(bands):
    logging.info(f"Executing band lock for bands: {bands}")
    try:
        driver.execute_script(f"""
            function err(e, a, n) {{
                console.log("Band lock error:", e, a, n);
            }}
            var selectedBands = "{bands}";
            var a = selectedBands.split("+"), n = 0;
            for (var l = 0; l < a.length; l++) {{
                n += Math.pow(2, parseInt(a[l]) - 1);
            }}
            var hexBand = "0x" + n.toString(16);
            $.ajax({{
                type: "GET",
                url: "/goform/goform_get_cmd_process",
                data: {{ cmd: "wa_inner_version,cr_version,RD", multi_data: "1" }},
                dataType: "json",
                success: function(e) {{
                    var ad = hex_md5(hex_md5(e.wa_inner_version + e.cr_version) + e.RD);
                    $.ajax({{
                        type: "POST",
                        url: "/goform/goform_set_cmd_process",
                        data: {{
                            isTest: "false",
                            goformId: "SET_LTE_BAND_LOCK",
                            lte_band_lock: hexBand,
                            AD: ad
                        }},
                        success: function() {{
                            console.log("Band lock applied.");
                        }},
                        error: err
                    }});
                }}
            }});
        """)
        logging.info(f"Band lock for {bands} applied.")
    except Exception as e:
        logging.error(f"Error applying band lock for {bands}: {e}")

def main():
    try:
        login()
        execute_band_lock("3")
        logging.info("Band 3 lock applied. Holding for 5 seconds...")
        time.sleep(5)

        execute_band_lock("1+3")
        logging.info("Band 1+3 lock applied. Holding for 895 seconds...")
        time.sleep(895)

    except Exception as e:
        logging.exception(f"Unexpected error in main: {e}")

if __name__ == "__main__":
    while True:
        main()
        logging.info("Cycle complete...")
 
Kod mene se B535 "opametio" jer nocu gase B1 pa se prebaci na B3 i napravi kombinaciju B3+B1 kad upale B1, samo sto se sad se sam presalta na B1+B3 pa vise ne moram da se rucno zavitlavam s tim sa huaCtrl.
 
Nazad
Vrh Dno