Arduino sensors reading over serial USB

Hi.
I run openHAB 3.0.1 on RP4 with latest Openhabian 3.0.1 - Release Build.
I start with Arduino also, I connected few sensors to Arduino like PIR, temperature, humidity, light and two push buttons. Like I checked all working fine on Arduino. Now I would like to add readings to my sitemap on OH3. Managed to add thing & item via OH main page creator and get readings on my sitemap but under one item he display all readings one by one as string. And here occurs my problem - I would like to display separate readings under different items for example as temperatur/humidity/light.
I try to follow original manual for the serial binding but I can not figure out how to name data, how to find patternMatch for my sensors??

Below Arduino code :

//int val1 = A5;   //This is where our Output data goes
int val2 = A1;    // A1 Light sensor światła
int czujnik = 4;   //pin 4 połączony z sygnałem z czujnika
int czujnik2 = 5;   //pin 5 połączony z sygnałem z czujnika

int button2Pin = 2;
int button1Pin = 3;
int button1State = 0;
int button2State = 0;

#include <DHT.h>
#define DHTPIN 6     // what pin we're connected to
#define DHTTYPE DHT22   // DHT22
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino

//Variables
float hum;  //Stores humidity value
float temp; //Stores temperature value

void setup() {
  Serial.begin(9600); 
pinMode(czujnik, INPUT);   //ustawienie pinu Arduino jako wejście
pinMode(czujnik2, INPUT);
dht.begin();            //Initialize the DHT sensor
  
      
}
void loop() {
//   int val3;
//      val3=analogRead(val1);   //connect grayscale sensor to Analog 0
//      Serial.println(val3,DEC);//print the value to serial
//      delay(2000);

button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
  
  if (button1State == HIGH) {
    // turn LED on:
    Serial.println("clockwise");
  }
  if (button2State == HIGH) {
    // turn LED on:
    Serial.println("counterclockwise");
  }

int ruch = digitalRead(czujnik);      //odczytanie wartości z czujnika
  if(ruch == HIGH)                      //wyświetlenie informacji na monitorze szeregowym
  {                                     //stan wysoki oznacza wykrycie ruchu, stan niski - brak ruchu
    Serial.println("czujka duża 1 RUCH WYKRYTY!");
  }
  else  {Serial.println("brak ruchu czujka 1");}
  
  delay(1000);                         //opóźnienie między kolejnymi odczytami

int ruch2 = digitalRead(czujnik2);      //odczytanie wartości z czujnika
  if(ruch2 == HIGH)                      //wyświetlenie informacji na monitorze szeregowym
  {                                     //stan wysoki oznacza wykrycie ruchu, stan niski - brak ruchu
    Serial.println("czujka mała 2 RUCH WYKRYTY!");
  }
  else  {Serial.println("brak ruchu czujka 2");}
  
  delay(1000);                         //opóźnienie między kolejnymi odczytami  

int val4;
      val4=analogRead(val2);   //connect light sensor to Analog 1
      Serial.print("Naświetlenie = ");
      Serial.println(val4,DEC);//print the value to serial
      delay(1000);
float converted = 0.00;
    
    //Read data and store it to variables hum and temp
    hum = dht.readHumidity();
    temp= dht.readTemperature();

    Serial.println();
    Serial.print("Temperatura DHT22 = ");
    Serial.print(temp); 
    Serial.println("*C");

    Serial.print("Wilgotność = ");
    Serial.print(hum);
    Serial.print(" %");
    Serial.println();
    
    delay(2000);
  
}

Below .thing code I try to figure out, this “20;05;Cresta;ID=2801;.*” is from manual - I don’t know what to write under this location and also which parameter belong under REGEX fro my light sensor reading - val4??:

Bridge serial:serialBridge:sensors [serialPort="/dev/ttyACM0", baudRate=9600] {
    Thing serialDevice lightSensor [patternMatch="20;05;Cresta;ID=2801;.*"] {
        Channels:
            Type number : light [transform="REGEX:.*?val4=(.*?);.*"]
            
    }
    
}```

Perhaps you would show a example message that you are trying to analyze?

Have you considered changing your Arduino code to send JSON format, and make it easier to work with for yourself?

That’s the reading on Arduino port monitor :

This is what I get on SITEMAP



Like for now all this created with main page creator but I would like to work on txt files like .item or .things





Also I changed a little bit Arduino code to be more clear:

int val2 = A1;    // A1 light sensor
int czujnik = 4;   //pin 4 connected to PIR sensor
int czujnik2 = 5;   //pin 5 connected to PIR sensor

int button2Pin = 2; //pin 2 connected to push button
int button1Pin = 3; //pin 3 connected to push button
int button1State = 0;
int button2State = 0;

#include <DHT.h>
#define DHTPIN 6     // DHT22 sensor pin connected
#define DHTTYPE DHT22   // DHT22
DHT dht(DHTPIN, DHTTYPE); // Initialize DHT sensor for normal 16mhz Arduino

//Variables
float hum;  //Stores humidity value
float temp; //Stores temperature value

void setup() {
Serial.begin(9600); 
pinMode(czujnik, INPUT);   
pinMode(czujnik2, INPUT);
dht.begin();            //Initialize the DHT sensor
  
      
}
void loop() {

button1State = digitalRead(button1Pin);
button2State = digitalRead(button2Pin);
  
  if (button1State == HIGH) {
    // turn LED on:
    Serial.println("clockwise");
  }
  if (button2State == HIGH) {
    // turn LED on:
    Serial.println("counterclockwise");
  }

int ruch = digitalRead(czujnik);        
  if(ruch == HIGH)                      
  {                                     
    Serial.println("czujka duża 1 RUCH WYKRYTY!");
  }
  else  {Serial.println("brak ruchu czujka 1");}
  
  delay(1000);                         

int ruch2 = digitalRead(czujnik2);      
  if(ruch2 == HIGH)                      
  {                                     
    Serial.println("czujka mała 2 RUCH WYKRYTY!");
  }
  else  {Serial.println("brak ruchu czujka 2");}
  
  delay(1000);                          

int val4;
      val4=analogRead(val2);   //connect grayscale sensor to Analog pin 1
      Serial.print("Light = ");
      Serial.println(val4,DEC);//print the value to serial
      delay(1000);
float converted = 0.00;
    
    //Read data and store it to variables hum and temp
    hum = dht.readHumidity();
    temp= dht.readTemperature();

    Serial.println();
    Serial.print("Temperatura DHT22 = ");
    Serial.print(temp); 
    Serial.println("*C");
     Serial.println();


    Serial.print("Humidity = ");
    Serial.print(hum);
    Serial.print(" %");
    Serial.println();
    
    delay(2000);
  
}

From the LOG:

2021-04-10 05:34:43.757 [INFO ] [openhab.event.ChannelTriggeredEvent ] - serial:serialBridge:b1e2eab3a0:data triggered PRESSED
2021-04-10 05:34:43.761 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Serial_data' changed from brak ruchu czujka 2
 to Light = 996
2021-04-10 05:34:44.765 [INFO ] [openhab.event.ChannelTriggeredEvent ] - serial:serialBridge:b1e2eab3a0:data triggered PRESSED
2021-04-10 05:34:44.769 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Serial_data' changed from Light = 996
 to 
Temperatura DHT22 = 21.60*C
Humidity = 43.70 %
2021-04-10 05:34:46.768 [INFO ] [openhab.event.ChannelTriggeredEvent ] - serial:serialBridge:b1e2eab3a0:data triggered PRESSED
2021-04-10 05:34:46.772 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Serial_data' changed from 
Temperatura DHT22 = 21.60*C
Humidity = 43.70 %
 to brak ruchu czujka 1
2021-04-10 05:34:47.767 [INFO ] [openhab.event.ChannelTriggeredEvent ] - serial:serialBridge:b1e2eab3a0:data triggered PRESSED
2021-04-10 05:34:47.771 [INFO ] [openhab.event.ItemStateChangedEvent ] - Item 'Serial_data' changed from brak ruchu czujka 1
 to brak ruchu czujka 2

Now I’m gonna read a little about this JSON because it’s magic for me like for now :slight_smile: I need to find out how to convert my Arduino code to Arduino JSON.

ekran