Go Down

Topic: Trouble with loading variables into my webserver. (Read 599 times) previous topic - next topic

yungYB7

Hello guys,

I'm currently working on a project thats called the Smart Window. The purpose of this project is to show the window status (so if it is open or closed). For this purpose i have used a mesh protocol.

To make this data visible i decided to use an Arduino Yùn to upload it to the internet. I have connected one of my mesh modules to the Arduino Yùn via the serial port of the Yùn. The problem tho is that i can't really load variables onto my html page.

The data i receive from the mesh nodes like like this:
XXXX: 00999  (were XXXX is the node number of the mesh module).
 the last 3 digits tell me the value of the to the mesh module connected sensor.

Here is my Arduino code:



#include <Bridge.h>
#include <Console.h>
#include <YunServer.h>
#include <YunClient.h>
#include <SoftwareSerial.h>

#define rxPin = 0
#define txPin = 1

                                                                        // Listen on default port 5555, the webserver on the Yún
                                                                        // will forward there all the HTTP requests for us.
YunServer server;
SoftwareSerial mySerial (20,21);
int x;
String temperature;

void setup() {
  SerialUSB.begin(9600);
  pinMode(13, OUTPUT);
  digitalWrite(13, LOW);
  Console.begin();
  Console.println("Ready");
  Bridge.begin();
  mySerial.begin (9600);
  mySerial.println ("Connection with virtual Serial port accomplished");
  Serial.begin (9600);
  Serial.println("Connection with Serial Port established");
  digitalWrite(13, HIGH);
  server.listenOnLocalhost();
  server.begin();
}


void SW1188();
void SW11DL();
void SW11D2();
void SW117R();


void loop()
{
  // Get clients coming from server
  YunClient client = server.accept();

  if (client)
  {
    String command = client.readString();
    command.trim();

    if (command == "SW1188")
    {
       
        SW1188(); 
       
    }
    if (command == "SW11DL")
    {
       
        SW11DL(); 
       
    }
    if (command == "SW11D2")
    {
       
        SW11D2(); 
         
    }
    if (command == "SW117R")
    {
       
        SW117R(); 
         
    }
   
    else {
      Console.println ("There is no such device connected to our network, we're sorry for the inconvenience");
    }
  }                                                                     
    client.stop();
 
 
  delay(150); // Poll every 50ms
}

void SW1188()
{
 YunClient client = server.accept();
 bool same=0;
char nodeid[]="1188";
   while(same == 0){
        int positie = 0;
        int data[11];
        char str[11];
        for(int i = 0; i <11; i++){
            data = 0;
            str = 0;
        }
        while(mySerial.available()){
            data[positie] = mySerial.read();
            positie++;
        }

        if(data[0]){
            for(int i = 0; i<11; i++){
                str = data;
            }
            for(int i =0; i<4; i++){
                if(str != nodeid){
                    break;
                }else if(i == 3){                                   // aantal nodes
                    same = 1;
                }
            }
        }
        if(same=1){
            for(int i = 5; i<11; i++){
            client.print( "<html><body>str)</body></html>");
       
            }
           
        }
    }
}

void SW11DL()
{
 YunClient client = server.accept();
 bool same=0;
 char nodeid[]="11DL";
   while(same == 0){
        int positie = 0;
        int data[11];
        char str[11];
        for(int i = 0; i <11; i++){
            data = 0;
            str = 0;
        }
        while(mySerial.available()){
            data[positie] = mySerial.read();
            positie++;
        }

        if(data[0]){
            for(int i = 0; i<11; i++){
                str = data;
            }
            for(int i =0; i<4; i++){
                if(str != nodeid){
                    break;
                }else if(i == 3){
                    same = 1;
                }
            }
        }
        if(same){
            for(int i = 5; i<11; i++){
              client.println( "<html><body>str)</body></html>");
             
            }
           
        }
    }

}
    void SW11D2()
{
 YunClient client = server.accept();
 bool same=0;
  char nodeid[]="11D2";
   while(same == 0){
        int positie = 0;
        int data[11];
        char str[11];
        for(int i = 0; i <11; i++){
            data = 0;
            str = 0;
        }
        while(mySerial.available()){
            data[positie] = mySerial.read();
            positie++;
        }

        if(data[0]){
            for(int i = 0; i<11; i++){
                str = data;
            }
            for(int i =0; i<4; i++){
                if(str != nodeid){
                    break;
                }else if(i == 3){
                    same = 1;
                }
            }
        }
        if(same){
            for(int i = 5; i<11; i++){
               client.println( "<html><body>str)</body></html>");
            }
           
        }
    }

}
    void SW117R()
{
 YunClient client = server.accept();
 bool same=0;

 char nodeid[]="117R";
   while(same == 0){
        int positie = 0;
        int data[11];
        char str[11];
        for(int i = 0; i <11; i++){
            data = 0;
            str = 0;
        }
        while(mySerial.available()){
            data[positie] = mySerial.read();
            positie++;
        }

        if(data[0]){
            for(int i = 0; i<11; i++){
                str = data;
            }
            for(int i =0; i<4; i++){
                if(str != nodeid){
                    break;
                }else if(i == 3){
                    same = 1;
                }
            }
        }
        if(same){
            for(int i = 5; i<11; i++){
               client.println( "<html><body>str)</body></html>");
            }
        }

   }
 
 }


Since I'm new to HTML and Javascript i don't really know how to solve this problem. My current HTML page looks like this:

<!DOCTYPE html>
<head>
    <script type="text/javascript" src="zepto.min.js"></script>
    <script type="text/javascript">
        function raam1() {
            $('#content').load('/arduino/SW1188');
        }
 
       function raam2() {
            $('#content').load('/arduino/SW11DL');
        }
      
      function raam3() {
            $('#content').load('/arduino/SW11D2');
        }
      function raam4() {
            $('#content').load('/arduino/SW117R');
        }
      
 </script>
</head>
<body onload="setInterval(refresh, 1000);">
<H1> Welcome To The Smart Window!</H1>
 
   Node 1188  : <span id="content">0</span>
   <br>
   Node 11DL  : <span id="content">0</span>
   <br>
   Node 11D2  : <span id="content">0</span>
   <br>
   Node 117R  : <span id="content">0</span>
    </script>
   
</body>

The thing i want to achieve is that my html page loads the current sensor values and displays these.
If anyone could point me in the right direction that would be amazing.

Regards,

Yorick

chriissis

#1
May 24, 2016, 10:08 am Last Edit: May 24, 2016, 02:31 pm by chriissis
you have a error in your code


Code: [Select]
if(same=1)
 will be always true (it should be == 1 or just if(same))

setinterval will execute the refresh function every second, but you have no refresh function defined

Add it to your script tag
Code: [Select]
function refresh()
{
  raam1();
  raam2();
  raam3();
  raam4();
}


IDs should be unique, you have them all called "content". Use unique IDs (i changed the names to match the function names, but it can be anything you want, as long as it's unique).

Code: [Select]
<!DOCTYPE html>
<head>
    <script type="text/javascript" src="zepto.min.js"></script>
 
    <script type="text/javascript">
        function raam1() {
            $('#raam1').load('/arduino/SW1188');
        }
 
       function raam2() {
            $('#raam2').load('/arduino/SW11DL');
        }
     
      function raam3() {
            $('#raam3').load('/arduino/SW11D2');
        }
      function raam4() {
            $('#raam4').load('/arduino/SW117R');
        }

function refresh()
{
raam1();
raam2();
raam3();
raam4();
}
     
 </script>
</head>
<body onload="setInterval(refresh, 1000);">
<H1> Welcome To The Smart Window!</H1>
 
   Node 1188  : <span id="raam1">0</span>
   <br>
   Node 11DL  : <span id="raam2">0</span>
   <br>
   Node 11D2  : <span id="raam3">0</span>
   <br>
   Node 117R  : <span id="raam4">0</span>
    </script>
   
</body>

Go Up