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

Użytkownik
  

Hasło
  





Szukaj na forum

(Zaawansowane szukanie)

Statystyki
» Użytkownicy: 3,682
» Najnowszy użytkownik: MarikuWower
» Wątków na forum: 1,277
» Postów na forum: 9,039

Pełne statystyki

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

Ostatnie wątki
Mastering Word Puzzle Fun...
Forum: MODBUS Urzadzenia Custom
Ostatni post: GregikuEunter
Wczoraj, 06:29 AM
» Odpowiedzi: 0
» Wyświetleń: 22
Granny: Can You Survive t...
Forum: MODBUS Urzadzenia Custom
Ostatni post: Rachel Hart
03-28-2026, 04:48 AM
» Odpowiedzi: 0
» Wyświetleń: 58
Sofar ME3000SP Modbus
Forum: MODBUS Urzadzenia Custom
Ostatni post: Rachel Hart
03-28-2026, 04:46 AM
» Odpowiedzi: 6
» Wyświetleń: 10,213
tcpdu - problem z wyswiet...
Forum: tcPDU
Ostatni post: emzete
03-24-2026, 05:45 PM
» Odpowiedzi: 0
» Wyświetleń: 75
MODBUS ADRESSES
Forum: MODBUS Urzadzenia Custom
Ostatni post: Warrensa
03-17-2026, 05:03 AM
» Odpowiedzi: 4
» Wyświetleń: 2,260
gps 6mv2
Forum: LanKontroler V3.5
Ostatni post: Jarkem
03-16-2026, 03:58 PM
» Odpowiedzi: 0
» Wyświetleń: 172
Czujnik Pt1000
Forum: LanKontroler V3
Ostatni post: mark09
03-13-2026, 12:24 PM
» Odpowiedzi: 5
» Wyświetleń: 7,234
Diving into Store Managem...
Forum: LanKontroler - wersje oprogramowania
Ostatni post: Abdulmogel
03-12-2026, 11:48 AM
» Odpowiedzi: 0
» Wyświetleń: 221
LK3 - http api - schedule...
Forum: LanKontroler V3.5
Ostatni post: davidk
03-07-2026, 10:27 PM
» Odpowiedzi: 1
» Wyświetleń: 258
A Journey of Survival in ...
Forum: LanKontroler - wersje oprogramowania
Ostatni post: Maryolanco
03-03-2026, 09:35 AM
» Odpowiedzi: 0
» Wyświetleń: 198

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

  tMPC-04 - Licznik impulsów
Napisane przez: rpce - 04-25-2025, 03:13 PM - Forum: LanKontroler V3.5 - Brak odpowiedzi

Czemu w liczniku nie zrobiono jak w tiny ESP podtrzymywania akumulatorkiem. Byłoby super a tak trzeba zawsze coś dłubać.

Wydrukuj tę wiadomość

  MODBUS - niepoprawna obsługa
Napisane przez: xerxes7 - 04-07-2025, 11:43 PM - Forum: LanKontroler V4 - Odpowiedzi (1)

Witam,
Sekcje "Custom" w obsłudze MODBUS zawiera bład.
Próbując czytać R4DCB08 znalazłem problem polegający na nieprawidłowym odczycie temperatury z DS18B20.
Konfiguracja:
{"name":"8xDS_0x0C","bitrate":0,"parityBit":0,"stopBit":1,"delayBetweenReads":1,"readings":[{"index":1,"active":true,"name":"DS1","unit":"C","divisor":10,"address":0,"functionCode":3,"variableType":0,"endian":0},{"index":2,"active":true,"name":"DS2","unit":"C","divisor":10,"address":1,"functionCode":3,"variableType":0,"endian":0},{"index":3,"active":true,"name":"DS3","unit":"C","divisor":10,"address":2,"functionCode":3,"variableType":0,"endian":0},{"index":4,"active":true,"name":"DS4","unit":"C","divisor":10,"address":3,"functionCode":3,"variableType":0,"endian":0},{"index":5,"active":true,"name":"DS5","unit":"C","divisor":10,"address":4,"functionCode":3,"variableType":0,"endian":0},{"index":6,"active":true,"name":"DS6","unit":"C","divisor":10,"address":5,"functionCode":3,"variableType":0,"endian":0},{"index":7,"active":true,"name":"DS7","unit":"C","divisor":10,"address":6,"functionCode":3,"variableType":0,"endian":0},{"index":8,"active":true,"name":"DS8","unit":"C","divisor":10,"address":7,"functionCode":3,"variableType":0,"endian":0}]}

Pomimo dzielnika przez 10 LK4 czyta tylko całkowitą część z pomiaru:
   

Szczęśliwie nie ma już problemów z ujemnymi wartościami, które były problem w LK3.8 i powodem rezygnacji z użytkowania urządzenia.
Dlatego bardzo proszę o poprawę tego błędu albo zaprzestanie mówienia o możliwości konfigurowania "custom modules", bo wygląda to na naciąganie ludzi na wydatki.

Pozdrawiam, licząc na szybką korektę błędu.
J.J.

Wydrukuj tę wiadomość

  LK sterowanie sauną
Napisane przez: marcinb - 02-28-2025, 09:03 AM - Forum: LanKontroler V3.5 - Odpowiedzi (1)

Witajcie,
W najbliższym czasie stanę przed dylematem sterowania sauną.
Czy kupować gotowy produkt czy zaprząc do tego LK3.

Jak Wy to widzicie ??

Wydrukuj tę wiadomość

  DS12B20 1wire interference?
Napisane przez: midnight_man - 02-22-2025, 04:04 PM - Forum: LanKontroler V3.5 - Brak odpowiedzi

Anybody faced interference when using DS12B20?

I am using LK3.8 with RJ11 splitter and 4 DS18B20 sensors...but sometimes, randomly, some sensor or sensors dont show value!.....for 1 second, there is "-" ...and no value.

Anybody?

thanks

Wydrukuj tę wiadomość