Ocena wątku:
  • 0 głosów - średnia: 0
  • 1
  • 2
  • 3
  • 4
  • 5
Własny interfejs dla LAN kontrolera
#1
Witam,

Chciałbym stworzyć stronę www do sterowania domem, którą umieściłbym na serwerze z własną domeną itd.
Byłyby tam przyciski, schemat sieci CO i odczyty temperatur.
Do przycisków chciałbym przyporządkować obsługę onclick z wysłaniem odwołania CGI pod adres LAN kontrolera a do odczytów ładować plik xml, odpowiednio obrabiać dane i td, tak jak to robi oryginalne GUI

Problem jest tylko taki że odwołania ze strony wychodzą z przeglądarki mając Origin z domeny tej strony. Ze względów bezpieczeństwa, takie odwołania są zablokowane i daje to błąd "Origin http:// is not allowed by Access-Control-Allow-Origin". Próbowałem CORS ale LAN Kontroler tego nie obsługuje.

Czy znacie inną sprytniejszą metodę by to zrobić, jestem początkujący jeśli chodzi o html/AJAX ale myślę że dałbym radę po naprowadzeniu Wink

Z góry wielkie dzięki!

Piotrek
<t></t>
Odpowiedz
#2
Może po SNMP się uda.
Odpowiedz
#3
hmm.
SNMP. raczej do odczytu,
czy twoja strona może wysyłac polecenia np (nie dokladnie) : jak klikniesz w ikone zmień stan przekaźnika to jest wykonywany link w postaci : ("Http://admin:admin@" & IpLankontrolera & "/outs.cgi?out=0"
zmieni stan przekaźnika na przeciwny

np procedura zmiany stanu przekaxnika w Visual Basic (2012) :

Private Sub btnOut0_Click(sender As Object, e As EventArgs) Handles btnOut0.Click
Dim request As WebRequest = WebRequest.Create("Http://admin:admin@" & IpLankontrolera & "/outs.cgi?out=0")
request.Method = "POST"
Dim dataStream As Stream = request.GetRequestStream()
dataStream.Close()
Dim response As WebResponse = request.GetResponse()
Console.WriteLine(CType(response, HttpWebResponse).StatusDescription)
dataStream = response.GetResponseStream()
Dim reader As New StreamReader(dataStream)
Dim responseFromServer As String = reader.ReadToEnd()
' Display the content.
Console.WriteLine(responseFromServer)

If responseFromServer = "1" Then
btnOut0.BackColor = Color.Red / btnOut0 - to button/
lblOut0.Text = " Wyłączony" / lbl osnaczam zawsze jako przedrostek do label/
Else
btnOut0.BackColor = Color.Green
lblOut0.Text = " Załączony"
End If
' Clean up the streams.
reader.Close()
dataStream.Close()
response.Close()

End Sub
Odpowiedz
#4
Ten problem juz rozwiazalem. Napisalem proste proxy w php. Cale GUI jest po prostu strona www na serwerze a komendy sa wysylane poprzez wywolanie pliku php z parametrem. Dziala to calkiem niezle Smile

Teraz walcze z inna rzecza, tj jak za pomoca php wyslac HTTP POST ze stringiem ustawiajacym eventy. Chodzi o to by LAN Kontroler przeksztalcic w termostat z ustawiana przez internet temperatura. sprawa niby jest prosta, ale mam problem z takim uszyciem HTTP POST by LAN Kontroler wpisal sobie dane tak, by byly potem zmienione w s.xml.

Jakies sugestie? Wink

Pozdrawiam

Piotrek
<t></t>
Odpowiedz
#5
według naszej wiedzy ( mojej) raczej nie realne.
okienka sa w ajaxie, i pobieraja dane z okienka . html nie ma nic do tego.
( chyba że sie mylę> ale na spotkaniach grupy padały rtakie pyrtanie i taka była odpowiedz.
Odpowiedz
#6
Dzięki za odpowiedź!
Stąd sugestia by np wystawić progi zadziałania eventów tak, by można było je zmieniać wywołując CGI albo ustawiając obiekt w SNMP. W ten sposób można byłoby prosto implementować funkcje takie jak różne termostaty i inne i ustawiać je zdalnie.
<t></t>
Odpowiedz


Skocz do:


Użytkownicy przeglądający ten wątek: 2 gości