Arduino serieport till websida

Berätta om dina pågående projekt.
persika
EF Sponsor
Inlägg: 1349
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Arduino serieport till websida

Inlägg av persika »

Jag har gjort en pannkontroller, som jag kommunicerar seriellt med.
Använder då ett terminalprogram.
Se: viewtopic.php?t=107294
Jag har så att jag kan ansluta till serieledningen via bluetooth, det är smidigt att kunna se och ställa in med telefonen.

Nu funderar jag på att jag skulle vilja göra samma sak via internet, läsa och skriva i en serieport och data syns i ett terminalfönster i en webläsare, ett fönster med rullande text på samma sätt som i ett terminalprogram.

Skulle vilja göra det med saker jag har hemma,Arduino Mega och modulen W5100.
Vill slippa att ha en PC-dator ståendes till hela tiden bara för denna uppgift.

Jag har kört exempel med Arduinon som webserver, med användarnamn och lösenord för websidan, fixat med portforward i routern, och skapat en "fast" webadress med Noip.
Läsa och skriva till serieporten kan jag.
Så så långt är allt bra.

Men, hur gör man för att få i webläsaren ett rullande textfönster, så som i ett terminalprogram ?
Skulle behöva lite vägledning...
Användarvisningsbild
Synesthesia
Inlägg: 585
Blev medlem: 22 januari 2010, 19:14:10
Ort: Mellan Göteborg och Kungsbacka

Re: Arduino serieport till websida

Inlägg av Synesthesia »

Du kan t.ex uppdatera en text (som placeholder eller kankse en textruta) med javascript som hämtar data/text (t.ex som json-filer) från servern med jämna mellanrum.
Lämpliga google-ord: javascript json ajax. Gjorde något liknande men riktigt hur det fungerar lärde jag mig aldrig då jag lät chatgpt göra scriptet åt mig...

Fast om du skall visa flera olika värden som uppdateras hela tiden skulle jag hellre göra en placeholder för varje värde så de olika värdena får sin bestämda plats.
MiaM
Inlägg: 9990
Blev medlem: 6 maj 2009, 22:19:19

Re: Arduino serieport till websida

Inlägg av MiaM »

Jag minns tyvärr inte detaljerna, men det finns ett sätt för att via HTTP säga att "det kommer komma mer data sakta men säkert" så att man kan trycka in mer och mer data utan att behöva återansluta hela tiden.

Annars så är det väl vettigt om du kör nån burk med ett "riktigt" operativsystem, t.ex. en Raspberry Pi eller liknande, som kan ge ett bättre webbinterface med grafer över data och liknande. Typ trycka in mätvärden i nån databas och göra grafer med t.ex. rrdtool (eller vad den kallas).

Som bonus så kan du passa på att samla in diverse bra-att-ha-data. Jag körde sånt för ett gäng år sen och samlade in data över ADSL-länken från mitt ADSL-modem, vilket var mycket bra för att övertyga leverantören om att det fanns ett fel som visade sig omkring nollgradig utomhustemperatur. Jag la upp skärmdumpar över graferna på nån publik site och länkade till dessa i min skriftliga felanmälan, och strax efteråt var problemet löst. Detta problem hade kommit till och från under flera år.

I ditt fall kan kanske väderdata vara vettigt att samla in. Utomhustermometer på varje vädersträck på huset, kanske nån ljussensor för att logga sol/moln, möjligtvis en "humanklimatometer" fast husvariant (alltså en liten metallkropp som värms upp till i detta fall +20 och energin som går åt mäts för att få en bra siffra på hur mycket avkylning utomhusklimatet utövar på huset. Idén kommer från Elektronik för Alla där de istället värmer den till ca 35 grader, hudtemperatur på en människa, för att få en visning på "hur kallt känns det" för att veta hur tjocka kläder man bör ha på sig.

Om du inte är sugen på att rigga upp en massa givare så kan du hämta väderdata från nån publik tjänst, för att ha historiska data att korrelera mot uppvärmningsdata.

Om du vill så kan du också logga elförbrukning för hela huset, för att korrelera hur uppvärmningsbehovet minskar beroende på att t.ex. spis/ugn används.
Användarvisningsbild
psynoise
EF Sponsor
Inlägg: 7158
Blev medlem: 26 juni 2003, 19:23:36
Ort: Landvetter

Re: Arduino serieport till websida

Inlägg av psynoise »

utan att behöva återansluta hela tiden.
keep-alive tror jag det heter. Dock undrar jag själv hur länge man kan hålla en anslutning med keep-alive. Handlar det om minuter, timmar eller är det obegränsat?
davidi
Inlägg: 577
Blev medlem: 13 oktober 2011, 16:45:38
Ort: Ekerö

Re: Arduino serieport till websida

Inlägg av davidi »

Keep-alive behandlar fortfarande varje fråga i sin helhet, men nätverkssessionen kopplas inte ner mellan frågorna. Vad som efterfrågas är snarare Chunked Transfer Encoding. Då behöver inte längden av datat vara känt när överföringen börjar, utan det skickas en liten bit i taget. När det är slut på data talar servern om att nu är det 0 bytes kvar, och frågan avslutas.
persika
EF Sponsor
Inlägg: 1349
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Arduino serieport till websida

Inlägg av persika »

Kom lite saker mellan, därför tyst i denna tråd, men nu ett steg till i projektet.

Jag hade problem med Arduinon inte var tillförlitlig, rätt som det var hängde den upp sig.
Kom på att jag hade ett minneskort i SD-läsaren på W5100 modulen och att jag drev det hela med bara USB-kabeln från datorn.
När jag anslutit en yttre spänningskälla funkar det bra.

Så här ser den ut, Arduino Mega 2560 med W5100, har lagt till klockmodulen DS3231 också.
Du har inte behörighet att öppna de filer som bifogats till detta inlägg.
persika
EF Sponsor
Inlägg: 1349
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Arduino serieport till websida

Inlägg av persika »

Jag är inte alls van vid programmering av webbsidor och HTML och sånt, så det blir mycket googlande för minsta sak.

Jag vill som första steg i projektet kunna skriva en sträng på webbsidan och skicka till webbservern (Arduinon).

Har läst att man kan antingen gör det med metoderna GET eller POST.

Här gjorde jag ett försök med GET:

Kod: Markera allt

client.println("HTTP/1.1 200 OK");
client.println("Content-Type: text/html");
client.println("Connnection: close");
client.println();
client.println("<!DOCTYPE HTML>");
client.println("<html>");

client.println("<form action=""/action_page.php"">");
client.println("  <label for=""textrad"">Saend rad:</label>");
client.println("  <input type=""text"" id=""textrad"" name=""textrad"">");
//client.println("  <input type=""submit"" value=""Enter"">");       
// kommenterade bort denna rad, behövs ingen särskild knapp, går lika bra att verkställa och skicka med enter på tangentbordet.
client.println("</form>");

client.println("</html>");
Jag har testat att skriva in och skicka "abcdefg !"#¤" och då sänd bl.a. denna sträng till servern :

Kod: Markera allt

GET /action_page.php?textrad=abcdefg+%21%22%23%A4 HTTP/1.1
Mellanslag och specialtecken har blivit kodade, mellanslag har blivit "+" och de andra enligt HTML (?).

Har inte kunnat hitta nåt till Arduino som översätter till klartext igen, så då åker jag på att göra en egen funktion för det.
Jag har testat metoden POST också, men där kan jag inte finna hur man får ut sin sträng av det som sänds till servern.

Eller finns det nån annan väg att gå?
Användarvisningsbild
LittleFish
Inlägg: 77
Blev medlem: 17 juni 2010, 03:44:14

Re: Arduino serieport till websida

Inlägg av LittleFish »

Iochförsig för esp8266 men kanske fungerar ändå? Eller kan ge ideer. https://github.com/ayushsharma82/WebSerial
(Obs, ingen egen erfarenhet utan hittade den när jag sökte)
Användarvisningsbild
Jan Almqvist
Inlägg: 1581
Blev medlem: 1 oktober 2013, 20:48:26
Ort: Orust

Re: Arduino serieport till websida

Inlägg av Jan Almqvist »

Törs man föreslå att du släpper det är med web-läsare och provar en HMI app som t.ex. HMI Droid istället?
Det är relativt enkelt att knåpa ihop detta, vad som behövs är ett Modbus-bibliotek i din Arduino och att du mappar dina variabler i Arduinon på Modbus-variabler.
Sedan kan du läsa och skriva variablerna från sidor du skapar för HMI appen som du kan köra på telefon, surfplatta, Chromebook eller dator.
Sidorna skapas med utvecklingsverktyget HMI Droid Studio (som är gratis) och som har en testkörningsfunktion.
För att också testa appen laddar du ner en beta version för Android eller iOS.
persika
EF Sponsor
Inlägg: 1349
Blev medlem: 31 juli 2006, 22:14:37
Ort: Österlen, Skåne

Re: Arduino serieport till websida

Inlägg av persika »

>Törs man föreslå att du släpper det är med web-läsare och provar en HMI app som t.ex. HMI Droid istället?

Öppen för förslag. HMI Droid känner jag inte alls till om.
Det jag önskar är rullande textfönster och att man kan skriva in och sända textsträngar, och det ska komma in och ut på en serieport, ska kunna göra detta från dator och/eller telefon.
Wihelm
Inlägg: 600
Blev medlem: 18 juni 2019, 17:30:19
Ort: Nybro

Re: Arduino serieport till websida

Inlägg av Wihelm »

Skriv svar