Witaj, Gość
Musisz się zarejestrować przed napisaniem posta.

Użytkownik
  

Hasło
  





Szukaj na forum

(Zaawansowane szukanie)

Statystyki
» Użytkownicy: 3,674
» Najnowszy użytkownik: jun88nos
» Wątków na forum: 1,275
» Postów na forum: 9,036

Pełne statystyki

Użytkownicy online
Aktualnie jest 422 użytkowników online.
» 0 Użytkownik(ów) | 418 Gość(i)
Applebot, Baidu, Bing, Yandex

Ostatnie wątki
tcpdu - problem z wyswiet...
Forum: tcPDU
Ostatni post: emzete
03-24-2026, 05:45 PM
» Odpowiedzi: 0
» Wyświetleń: 33
MODBUS ADRESSES
Forum: MODBUS Urzadzenia Custom
Ostatni post: Warrensa
03-17-2026, 05:03 AM
» Odpowiedzi: 4
» Wyświetleń: 2,206
gps 6mv2
Forum: LanKontroler V3.5
Ostatni post: Jarkem
03-16-2026, 03:58 PM
» Odpowiedzi: 0
» Wyświetleń: 123
Czujnik Pt1000
Forum: LanKontroler V3
Ostatni post: mark09
03-13-2026, 12:24 PM
» Odpowiedzi: 5
» Wyświetleń: 7,146
Diving into Store Managem...
Forum: LanKontroler - wersje oprogramowania
Ostatni post: Abdulmogel
03-12-2026, 11:48 AM
» Odpowiedzi: 0
» Wyświetleń: 169
LK3 - http api - schedule...
Forum: LanKontroler V3.5
Ostatni post: davidk
03-07-2026, 10:27 PM
» Odpowiedzi: 1
» Wyświetleń: 227
A Journey of Survival in ...
Forum: LanKontroler - wersje oprogramowania
Ostatni post: Maryolanco
03-03-2026, 09:35 AM
» Odpowiedzi: 0
» Wyświetleń: 170
Get Ready to Roll! Dive i...
Forum: LanKontroler - wersje oprogramowania
Ostatni post: Aidan Reed
03-03-2026, 06:49 AM
» Odpowiedzi: 0
» Wyświetleń: 125
Download Free Sample Casi...
Forum: Programy i Serwery
Ostatni post: XiaoMei
02-26-2026, 07:28 PM
» Odpowiedzi: 0
» Wyświetleń: 254
Germany Phone Number Data...
Forum: LanKontroler V3.5
Ostatni post: XiaoMei
02-26-2026, 07:24 PM
» Odpowiedzi: 0
» Wyświetleń: 203

 
  MQTT and CPU on 100%
Napisane przez: cz147069 - 01-29-2026, 12:13 PM - Forum: Problemy z oprogramowaniem i sprzętem - Brak odpowiedzi

Hello,
when I turn on sending to MQTT server, CPU go to 100% usage. Where is problem?

Wydrukuj tę wiadomość

  Ilość czujników
Napisane przez: JSzmanda - 01-17-2026, 02:43 PM - Forum: LanKontroler V3.5 - Odpowiedzi (1)

Cześć,

Mam wersje 3.8

Ile czujników temperatury i wilgotności maksymalnie mogę podłączyć?

Wydrukuj tę wiadomość

  INA740 for LK3.8>
Napisane przez: borgmcz - 01-09-2026, 05:52 PM - Forum: LanKontroler V3.5 - Brak odpowiedzi

Hello, are you planning to support the "INA740 digital power monitor" for LK3.8 controllers and newer versions?
https://sklep.tinycontrol.pl/INA740-digi...rsion-p181

Ideally, support for "0-60V DC Voltage isolation" would also be welcome.
https://sklep.tinycontrol.pl/0-60V-DC-Vo...lation-p97

THX.

Wydrukuj tę wiadomość

  Aktualizacja do 1.38
Napisane przez: maly_tomi - 01-09-2026, 01:59 PM - Forum: LanKontroler V4 - Odpowiedzi (4)

Dzień dobry

Zaktualizowałem swojego LK4 z 1.24 do 1.38 i po aktualizacji zamiast panelu wyświetla się informacja "Failed to read existing file".
Twardy reset urządzenia nic nie daje. Czy spotkał się już ktoś z czymś takim? Da się jeszcze uratować tego LK4?

Wydrukuj tę wiadomość

  LK3.9 SMTP password only 31 characters
Napisane przez: cz147069 - 01-07-2026, 10:04 AM - Forum: LanKontroler V3.5 - Brak odpowiedzi

Hello,
is possible change lenght password for SMTP? I use key which have 32 characters, but when I save configuration, everything over 31 is deleted. 

Cześć,
czy można zmienić długość hasła dla SMTP? Używam klucza, który ma 32 znaki, ale po zapisaniu konfiguracji wszystko powyżej 31 znaków zostaje usunięte.

Wydrukuj tę wiadomość

  Jak szybko tłumaczyć pojedyncze słowa?
Napisane przez: weerty - 12-10-2025, 02:31 PM - Forum: LanKontroler V3 - Odpowiedzi (2)

Ciągle natrafiam na pojedyncze słowa w języku angielskim w korespondencji i za każdym razem korzystanie z dużego tłumacza staje się uciążliwe. Poszukuję czegoś maksymalnie prostego i szybkiego, co byłoby pod ręką, bez zbędnych czynności. Przypadkowo natrafiłem na tluma.pl jako translator online, może ktoś również korzysta z podobnej opcji?

Wydrukuj tę wiadomość

  Konwersja Modbus TCP na RTU, izolacja RS485, zakres VCC
Napisane przez: marekm - 11-15-2025, 08:01 PM - Forum: LanKontroler V4 - Odpowiedzi (1)

Czy byłaby możliwość dodania (chyba że już jest - w dokumentacji na pierwszy rzut oka nie widzę) do LK4 możliwości konwersji Modbus TCP na RTU?  Dla dowolnych urządzeń, po prostu serwer TCP odbiera zapytanie i przekazuje je jako ramkę RTU na RS485, po czym przekazuje odpowiedź z powrotem (lub zwraca kod błędu jeśli brak odpowiedzi).  Podobną funkcję ma np. MikroTik KNOT.  LK4 sam też odpowiada na zapytania Modbus TCP, więc trzeba by mu dodać konfigurowalny Unit ID (jego własny na który ma odpowiadać zamiast przekazywać dalej jako RTU).

Przy okazji pytania, czy RS485 jest izolowany i do jakiego max napięcia?  Oraz czy 58V to absolute max VCC - bo pasowałoby mi zasilać LK4 i jednocześnie mierzyć napięcie z magazynu energii (16S LFP), 16*3,65 = 58,4V to dopuszczalne maksimum, rzadko kiedy tyle będzie i powyżej 58V nie muszę mieć dokładnego pomiaru ale czy tak powiedzmy do 60V przez ograniczony czas wytrzyma i nie uleci "magiczny dym"?  Szeregowo o zasilaniem oczywiście będzie bezpiecznik, czy wskazane byłoby dodać szeregowo diodę Zenera by zgubić kilka V (wtedy przydałoby się móc przesunąć pomiar VCC o tyle samo w górę, by poprawnie liczyć moc i energię)?

Wydrukuj tę wiadomość

  MODBUS ADRESSES
Napisane przez: Pipounz - 09-16-2025, 12:02 PM - Forum: MODBUS Urzadzenia Custom - Odpowiedzi (4)

Hi,

Is it possible to modify addresses in LK4 MODBUS SERVER ? I need to integrate it into a hypervisor that has fixed addresses and cannot map.

THX

Wydrukuj tę wiadomość

  Firmware do LK 3.5
Napisane przez: marcinb - 08-07-2025, 12:46 PM - Forum: LanKontroler V3.5 - Brak odpowiedzi

Cześć,
Przez przypadek wrzuciłem firmware z LK 3.9 do LK 3.5 Sad

Da się go jakoś uratować ??

Wydrukuj tę wiadomość

  Backup automat php
Napisane przez: stAch - 07-28-2025, 01:00 PM - Forum: LanKontroler - wersje oprogramowania - Brak odpowiedzi

jeden klik i zapisane nawet 100 backupów z LK3 w różnych lokalizacjach - nic prostszego.

Kod PHP:
<?php
error_reporting
(E_ALL);
parse_str($_SERVER['QUERY_STRING']);

if (isset(
$_GET['cron'])) {
    $_POST['backups'] = 1;
    $_SERVER['REQUEST_METHOD'] = 'POST';
}

$folder "backups";
$pattern '/_(\d{4}-\d{2}-\d{2})_setting\.bin$/';
// Usuwanie plików (na podstawie daty z POST)
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['date'])) {
    $dateToDelete $_POST['date'];
    foreach (scandir($folder) as $file) {
        if (preg_match($pattern$file$matches) && $matches[1] === $dateToDelete) {
            unlink($folder DIRECTORY_SEPARATOR $file);
        }
    }
    echo json_encode(['success' => true]);
    exit;
}
// Backup i lista
if ($_SERVER['REQUEST_METHOD'] === 'POST' && isset($_POST['backups'])) {
    $messages "";
    // ? Dane logowania globalne
    $globalUser 'admin';
    $globalPass 'xxxxxxx';
    // ? Lista hostów
    $sources = [
        ['ip' => '192.168.1.20''port' => 97,  'name' => 'SOL'],
        ['ip' => '192.168.1.20''port' => 98,  'name' => 'CWU''user' => 'admin''pass' => 'xxxxxx'],
        ['ip' => '192.168.1.20''port' => 99,  'name' => 'GSM'],
        ['ip' => '192.168.1.20''port' => 100'name' => 'PCO'],
    ];
    $remotePath "/lk3_settings.bin";
    $backupDir __DIR__ '/backups';
    if (!is_dir($backupDir)) {
        mkdir($backupDir0777true);
    }
    $date date("_Y-m-d");
    foreach ($sources as $source) {
        $ip   $source['ip'];
        $port $source['port'];
        $name $source['name'];
        $user $source['user'] ?? $globalUser;
        $pass $source['pass'] ?? $globalPass;
        $url "http://$ip:$port$remotePath";
        $auth base64_encode("$user:$pass");
        $opts = [
            "http" => [
                "method" => "GET",
                "header" => "Authorization: Basic $auth\r\n"
            ]
        ];
        $context stream_context_create($opts);
        $content = @file_get_contents($urlfalse$context);
        if ($content === false) {
            $messages .= "<div>? Błąd pobierania: $url</div>";
            continue;
        }
        $filename "{$name}{$date}_setting.bin";
        $filepath $backupDir '/' $filename;
        if (file_put_contents($filepath$content) !== false) {
            $messages .= "<div>✔ Zapisano: $filename</div>";
        } else {
            $messages .= "<div>? Błąd zapisu: $filename</div>";
        }
    }
    // ? Lista backupów
    ob_start();
    $groups = [];
    foreach (scandir($folder) as $file) {
        if (preg_match($pattern$file$matches)) {
            $date $matches[1];
            $groups[$date][] = $file;
        }
    }
    if (empty($groups)) {
        echo "<p>Brak plików.</p>";
    } else {
        foreach ($groups as $date => $files) {
            echo "<div class='group' data-date='" htmlspecialchars($date) . "'>";
            echo "<button class='delete-btn' onclick='deleteGroup(\"$date\")'>Usuń grupę</button>";
            echo "<h3>" htmlspecialchars($date) . "</h3>";
            foreach ($files as $file) {
                $fileEnc rawurlencode($file);
                echo "<div class='file'>";
                echo htmlspecialchars($file);
                echo " <a class='download' href='backups/$fileEnc' download>Pobierz</a>";
                echo "</div>";
            }
            echo "</div>";
        }
    }
    $html ob_get_clean();
    echo json_encode([
        'success' => true,
        'html' => $html,
        'messages' => $messages
    
]);
    exit;
}
// Pierwsze wczytanie listy
$groups = [];
foreach (
scandir($folder) as $file) {
    if (preg_match($pattern$file$matches)) {
        $date $matches[1];
        $groups[$date][] = $file;
    }
}
?>
<!DOCTYPE html>
<html lang="pl">
<head>
    <meta charset="UTF-8">
    <title>LK3 Backups</title>
    <style>
        body { font-family: Arial; padding: 20px; }
        .group { border: 1px solid #ccc; padding: 10px; margin-bottom: 20px; border-radius: 5px; }
        .group h3 { margin: 0 0 10px 0; }
        .file { margin-left: 20px; }
        .delete-btn {
            background: #d00;
            color: white;
            border: none;
            padding: 5px 10px;
            float: right;
            cursor: pointer;
        }
        .download {
            background: #4CAF50;
            color: white;
            padding: 3px 8px;
            margin-left: 10px;
            text-decoration: none;
            border-radius: 3px;
        }
        .download:hover {
            background: #45a049;
        }
        .info {
            margin-top: 20px;
            padding: 10px;
            background: #f9f9f9;
            border: 1px dashed #aaa;
            white-space: pre-wrap;
        }
        button.refresh {
            background: #007bff;
            color: white;
            border: none;
            padding: 6px 12px;
            cursor: pointer;
        }
    </style>
</head>
<body>
<h1>Kopie zapasowe LK3 wg. daty</h1>
<div id="backup-list">
<?php if (empty($groups)): ?>
    <p>Brak plików.</p>
<?php else: ?>
    <?php foreach ($groups as $date => $files): ?>
        <div class="group" data-date="<?= htmlspecialchars($date?>">
            <button class="delete-btn" onclick="deleteGroup('<?= $date ?>')">Usuń grupę</button>
            <h3><?= htmlspecialchars($date?></h3>
            <?php foreach ($files as $file): ?>
                <div class="file">
                    <?= htmlspecialchars($file?>
                    <a class="download" href="backups/<?= rawurlencode($file?>" download>Pobierz</a>
                </div>
            <?php endforeach; ?>
        </div>
    <?php endforeach; ?>
<?php 
endif; ?>
</div>
<div class="info">
    <button class="refresh" onclick="getBackups()">? Aktualizuj (pobierz backupy)</button>
</div>
<script>
function deleteGroup(date) {
    if (!confirm(`Czy na pewno chcesz usunąć wszystkie pliki z datą ${date}?`)) return;
    fetch('', {
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        body: 'date=' + encodeURIComponent(date)
    })
    .then(res => res.json())
    .then(data => {
        if (data.success) {
            document.querySelector(`.group[data-date="${date}"]`).remove();
        } else {
            alert('Błąd przy usuwaniu.');
        }
    });
}
function getBackups() {
    document.querySelector('.info').innerHTML = '⏳ Trwa pobieranie...';
    fetch('', {
        method: 'POST',
        headers: {'Content-Type': 'application/x-www-form-urlencoded'},
        body: 'backups=1'
    })
    .then(res => res.json())
    .then(data => {
        if (data.success) {
            if (data.html) {
                document.querySelector('#backup-list').innerHTML = data.html;
            }
            if (data.messages) {
                document.querySelector('.info').innerHTML = data.messages;
            } else {
                document.querySelector('.info').innerHTML = '✅ Gotowe.';
            }
        } else {
            document.querySelector('.info').innerHTML = '❌ Błąd przy pobieraniu.';
        }
    })
    .catch(err => {
        console.error('Fetch error:', err);
        document.querySelector('.info').innerHTML = '❌ Wystąpił błąd sieci.';
    });
}
</script>
</body>
</html> 
zapisać na serwerze ...edytować ip i porty do pobrania plików backups oraz globalne hasło i usera czyli fragment kodu poniżej.
Kod:
    // ? Dane logowania globalne
    $globalUser = 'admin';    //globalny user
    $globalPass = 'pass';     //globalne haslo

    // ? Lista hostów
    $sources = [
        ['ip' => '192.168.1.100', 'port' => 80,  'name' => 'SOL'],
        ['ip' => '132.138.3.220', 'port' => 98,  'name' => 'CWU', 'user' => 'user', 'pass' => '1234'],
        ['ip' => '132.138.3.220', 'port' => 99,  'name' => 'GSM'],
        ['ip' => '132.138.3.220', 'port' => 100, 'name' => 'PCO'],
    ];
jeśli wszystkie maja takie samo to nie musicie go podawać dla każdego z osobna wystarczy je podać jako globalne 
skrypt pobiera zarówno z lokal ip:80 jak i po external ip:port można dodać go do crona by sam cyklicznie robił kopie na serwerze.
Kod:
0 2 * * * curl -s "http://twojadomena.pl/backup.php?cron=1" > /dev/null 2>&1


pytania lub problemy chętnie p/odpowiem...

Wydrukuj tę wiadomość