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=(.*?);.*"]
}
}```