Seite 1 von 1

Verständnisfrage

Verfasst: 11. Feb 2020 23:04
von Asus
Irgendwie steh ich im Moment am Schlauch.

Ich verwende OpenHAB openhab2 2.4.0-1, habe über USB einen Arduino angeschlossen.
Der Datenaustausch von Arduino zu RPi funktioniert.
items

Code: Alles auswählen

String arduino1 "SW_99" { serial="/dev/ttyUSB-arduino1@9600"}
sitemap

Code: Alles auswählen

sitemap default label="Arduino via USB" {
	Frame label="Solar" {
		//Text item=Sol_Vorl label="test [%s]" icon="light-20"
		Text item=arduino1 label="test [%s]" icon="temperature"
    }   
}
Funktioniert soweit gut, wenn auch nur ein dummes Beispiel.

Mein Verständnisproblem:
In Items hole ich den Datenstrom der seriellen Schnittstelle ab, wird in arduino1 abgelegt.
In RULES könnte ich dann den String zerlegen und auf einzelne Teile reagieren, bzw. Werte extrahieren und in Variablen ablegen.
Diese Variablen kann ich dann in Sitemap verwenden.
Müssen diese Variablen wo definiert werden? Oder können die in Rules "on the fly" definiert werden?

Ist mein Verständnis soweit richtig?
Ich habe viele Seiten mit Einzelbeschreibungen über ITEMS,RULES...., gelesen. Aber ein einfaches Einsteiger Tuto, das den großen Zusammenhang darlegt, habe ich noch nicht gefunden. Gibt es da was Empfehlenswertes?

Danke im Vorraus!

Re: Verständnisfrage

Verfasst: 11. Feb 2020 23:29
von udo1toni
In Sitemaps kannst Du nicht auf Variablen zugreifen. Sitemaps können ausschließlich auf Items zugreifen.

Das bedeutet, Du musst für jeden Wert ein ungebundenes Item anlegen. Die Rule verwendest Du dann, um die ungebundenen Items zu füllen.

Re: Verständnisfrage

Verfasst: 12. Feb 2020 07:50
von Asus
Danke für die schnelle Antwort.

Das ist eine wichtige Antwort fürs Verständnis.
Gesetz den Fall, ich bekomme einen String,als Beispiel, alle Sekunden "Pump1:0" und "Pump1:1" im Wechsel.

Das würde bedeuten:
items

Code: Alles auswählen

String arduino1 "SW_99" { serial="/dev/ttyUSB-arduino1@9600"}
String Pumpe1
rule

Code: Alles auswählen

rule "Pumpentest" 
	when  
		Item arduino1 received update  
	then
		Pumpe1.sendCommand("nnnnnnnnnnnnnnn")
		if(arduino1.state.toString=="Pump1:0"){
			Pumpe1.sendCommand("oooooooo")
          	}else{
			Pumpe1.sendCommand("rtzuio")
		}
	end


sitemap

Code: Alles auswählen

sitemap default label="Arduino via USB" {
	Frame label="Solar" {
		Text item=Pumpe1 label="test [%s]" icon="light-20"
    }   
}
Dann müsste ja eigentlich die Rule auf den hereinkommenden String achten und Pumpe1 mit dem(sinnlosen) Text belegen. Dieser Text wird dann im Label angezeigt?

Und wärend ich das schreibe und gleichzeitig anwende funktioniert es - interessant.
Hatte jetzt lange gespielt und nur Fehler produziert.

Danke für den Gedankenanstoß.