'Inteligenty' dom ze sterownikiem PLC
Główna => Sterowanie i Wizualizacje => Wątek zaczęty przez: Champ w Kwietnia 19, 2015, 02:18:02 pm
-
Witam,
chciałbym dodać do sterownika WAGO wizualizacje.
Przeczytałem następujące wątki :
http://www.edom-plc.pl/index.php/pl/wiecej-o-plc/funkcje/186-jeszcze-jeden-sposob-komunikacji-z-plc
http://www.edom-plc.pl/index.php/pl/wiecej-o-plc/sterowanie/191-panel-administracyjny-wszystko-w-jednym
Zastanawiam się jak można napisać skrypt pod linuxa (raspberryPi), który odczytuje i wpisuje dane.
Czy autor mógłby podzielić się z nami tymi skryptami?
Myślę, że umieszczenie na serwerze w sterowniku dostępu np. do bramy garażowej nie jest zbyt bezpieczne, dlatego chciałbym to zrobić na zewnętrznym komputerze (RaspbberyPi) i odpowiednio to zaszyfrować.
Z góry bardzo dziękuję za odpowiedź i za całą pracę jaką Pan wykonuje pomagając nam w tworzeniu własnej automatyki domowej.
Pozdrawiam
-
Cześć,
mój skrypt do odczytywania wygląda, jak poniżej. Przyjmuje adresy, które ma odczytać w postaci:
ADRs:2|80|0|0,2|81|0|0,2|82|0|0,2|83|0|0,2|84|0|0,2|85|0|0,2|86|0|0,2|86|0|0,2|92|0|0,2|93|0|0,2|94|0|0,2|156|0|0,2|143|0|0,2|108|0|0,2|109|0|0,2|110|0|0,2|138|0|0,2|112|0|0
czyli adresy opisane tu:
http://www.edom-plc.pl/index.php/pl/wiecej-o-plc/funkcje/186-jeszcze-jeden-sposob-komunikacji-z-plc
oddzielone przecinkami.
odpowiedź, czyli wartości odpytywanych adresów zwracane są jako JSON, czyli np. [0,0,0,0,0,0,0,0,0,0,0,1,0,0,0]. Taką tablicę obrabiam już na poziomie przeglądarki.
<?php
if(isset($_POST['ADRs'])) {
$addresses = explode(",", $_POST['ADRs']);
$req = "|0|".strval(count($addresses));
foreach($addresses as $key => $address) {
$req.= "|".strval($key)."|".$address;
}
$req.= "|";
$url = 'http://XXX.XXX.XXX.XXX/PLC/webvisu.htm';
$options = array(
'http' => array(
'header' => "Content-type: application/x-www-form-urlencoded\r\n",
'method' => 'POST',
'content' => $req,
),
);
$context = stream_context_create($options);
$result = trim(file_get_contents($url, false, $context), "|");
$reply = array_map('intval',explode("|", $result));
echo json_encode($reply);
}
?>
Pozdrawiam,
-
Bardzo dziękuję, jeszcze jedno pytanie, bo nie wiem czy dobrze zrozumiałem.
Plik webvisu.html znajduje się na sterowniku, a pliki php są na serwerze raspberryPi?
Wtedy następuje wymiana danych i dzięki temu na raspberryPi można postawić stronę internetową, która zczytuje wszystkie informacje ?
Mógłby Pan jeszcze opisać jak wygląda zapisywanie zmiennych z przeglądarki?
-
Witam,
Oba pliki są na RPi. Tak jest szybciej odczytać i zapisać. De facto to mogą być 2 pliki php: 1. do generowania strony, 2. do wymiany danych.
Gdyby html był na PLC, nie byłoby sensu robić pośrednika w postaci RPI i skryptuy PHP, bo strona uruchomiona z PLC może się odpytywać bezpośrednio w PLC o stany adresów.
Jednakże jako że taka strona odpalona z PLC działa powoli, dzieją się cuda z kodowaniem i, co najważniejsze, nie da się ograniczyć do niej dostępu (co jest krytyczne przy wystawianiu takiej storny na dostęp z internetu), lepiej jest umieścić ją na innym serwerze, wymusić jakieś logowanie, ciasteczka, https itd i pozwolić jej, przez skrypt php, odczytywać dane z PLC.
Zo do zapisu - skrypt bardzo podobny... idea jest ta sama, co przy odczycie, protokół opisany w jednym z moich artykułów wskazanych wcześniej. Odczytywanie zmiennej ADR i VAL, tworzenie wiadomości typu |1|......, wysyłanie i tyle.
Pozdrawiam,