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

Użytkownik
  

Hasło
  





Szukaj na forum

(Zaawansowane szukanie)

Statystyki
» Użytkownicy: 3,585
» Najnowszy użytkownik: cz147069
» Wątków na forum: 1,261
» Postów na forum: 9,012

Pełne statystyki

Użytkownicy online
Aktualnie jest 298 użytkowników online.
» 0 Użytkownik(ów) | 295 Gość(i)
Applebot, Bing, Google

Ostatnie wątki
LK3.9 SMTP password only ...
Forum: LanKontroler V3.5
Ostatni post: cz147069
Wczoraj, 10:04 AM
» Odpowiedzi: 0
» Wyświetleń: 19
Sofar ME3000SP Modbus
Forum: MODBUS Urzadzenia Custom
Ostatni post: 5641bronze
12-29-2025, 11:58 AM
» Odpowiedzi: 5
» Wyświetleń: 7,760
MODBUS ADRESSES
Forum: MODBUS Urzadzenia Custom
Ostatni post: AlvinCorbitt
12-11-2025, 05:42 AM
» Odpowiedzi: 3
» Wyświetleń: 932
Czujnik Pt1000
Forum: LanKontroler V3
Ostatni post: weerty
12-11-2025, 12:53 AM
» Odpowiedzi: 4
» Wyświetleń: 6,143
Scheduler
Forum: LanKontroler V3
Ostatni post: weerty
12-11-2025, 12:51 AM
» Odpowiedzi: 6
» Wyświetleń: 7,345
FC-22 gas sensor
Forum: LanKontroler V3
Ostatni post: weerty
12-11-2025, 12:49 AM
» Odpowiedzi: 6
» Wyświetleń: 8,520
Jak szybko tłumaczyć poje...
Forum: LanKontroler V3
Ostatni post: weerty
12-11-2025, 12:47 AM
» Odpowiedzi: 2
» Wyświetleń: 226
LK3 Moc Energia błędne ws...
Forum: LanKontroler V3
Ostatni post: Dioneya
12-11-2025, 12:45 AM
» Odpowiedzi: 6
» Wyświetleń: 9,334
Czujnik CO2 MH-Z16 -czy t...
Forum: LanKontroler V3
Ostatni post: Dioneya
12-11-2025, 12:43 AM
» Odpowiedzi: 5
» Wyświetleń: 8,331
Wgrywanie firmware do LK ...
Forum: LanKontroler - wersje oprogramowania
Ostatni post: Layla Keller
12-06-2025, 11:54 AM
» Odpowiedzi: 5
» Wyświetleń: 6,152

 
  LK3.9 SMTP password only 31 characters
Napisane przez: cz147069 - Wczoraj, 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 (3)

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ść

  mqtt brak banych po aktualizacji 1.24
Napisane przez: sl500 - 06-11-2025, 10:30 AM - Forum: LanKontroler V4 - Odpowiedzi (4)

Po aktualizacji do wersji 1.24 połączenie z mqtt zgasło. Nie pomogła próba dodania nowego urządzenia na serwerze i ponowna konfiguracja po stronie lk. Po stronie lk cały czas jest: MQTT DISCONNECTED.

Wróciłem do wersji 1.18a

Wydrukuj tę wiadomość

Bug LK4 błędy w pomiarze energii
Napisane przez: lodomir - 06-01-2025, 10:24 PM - Forum: LanKontroler V4 - Odpowiedzi (3)

Zauważyłem niepoprawne działanie pomiarów energii w LK4 wersja oprogramowania 1.24 (w poprzedniej 1,18a było podobnie).
Błąd polega na tym, że urządzenie zwiększa wskazania liczników nieadekwatnie do przypisanych im wyzwalaczy.

Na przykład jeśli P/E1 jest sterowane przez INPD4 (impulsator gazomierza), P/E5 przez INPD1 a P/E6 przez INPD2, to przy kolejnych impulsach na wejściu INPD1 lub INPD2 zwiększają się adekwatnie wartości P/E5 i P/E6, ale również wartość P/E1. Wygląda na to tak, jakby algorytm mylił wyzwalacze.


   

Wydrukuj tę wiadomość

  Lk 3.8
Napisane przez: syky95 - 04-28-2025, 06:59 PM - Forum: LanKontroler V3.5 - Brak odpowiedzi

Hello, is there any way to factory reset the LK 3.8? After holding the reset button, nothing happens and the relay doesn't click like it used to. Thank you for any advice.

Wydrukuj tę wiadomość

  Wirtualny OLED
Napisane przez: krzychor - 04-26-2025, 08:21 AM - Forum: LanKontroler V3.5 - Brak odpowiedzi

witam,
w funkcjonalności Wirtualny OLED nie działa "obcinacz" dla Power, Energy, Diff co powoduje że wartości sa wyświetlane z dużą ilością cyfr po przecinku
czy da się to jakoś ustawić?
sądzę że to błąd softu, czy twórcy mogli by to poprawić?
pozdrawiam

Wydrukuj tę wiadomość