Für diese Projekt setzen wir voraus, dass eine aufgebaut RED Brick Wetterstation vorhanden ist, dass der RED Brick mit mindesten Image Version 1.6 läuft und dass mindestens Brick Viewer 2.2.3 installiert ist.
Die in diesem Projekt verwendete openHAB Konfiguration basiert auf einem Beispiel von einem der openHAB Entwickler. Das originale Beispiel ist auf GitHub abrufbar.
Wir setzen uns folgende Ziele für dieses Projekt:
Zusätzlich, wenn der RED Brick Netzwerkverbindung hat:
Im Folgenden werden wir Schritt für Schritt zeigen wie openHAB konfiguriert werden muss um diese Ziele zu erreichen.
Der openHAB Service ist auf dem RED Brick standardmäßig deaktiviert, da er etwas länger zum Starten benötigt und so den Bootprozess etwas verlangsamt. Daher müssen wir zuerst openHAB aktivieren. Die RED Brick Services Dokumentation erklärt wie das geht.
Bricks und Bricklets werden in openHAB durch Items repräsentiert.
Diese Items werden in .items
Konfigurationsdateien definiert die auf dem
RED Brick gespeichert werden. Der Brick Viewer ermöglicht es diese Dateien zu
bearbeiten. Die RED Brick openHAB Dokumentation enthält mehr Details dazu.
weather-station.items
als Name ein und klicke auf Create..items
Template in das leere Textfeld.<HUMIDITY_UID>
) durch die
entsprechenden UIDs deiner Bricklets.Dies ist das .items
Template
(download),
das in Schritt 3 verwendet wird:
Number TF_Humidity "Humidity [%.1f %%]" { tinkerforge="uid=<HUMIDITY_UID>" }
Number TF_Barometer "Pressure [%.0f hPa]" { tinkerforge="uid=<BAROMETER_UID>" }
Number TF_Barometer_Temperature "Temperature [%.1f °C]" { tinkerforge="uid=<BAROMETER_UID>, subid=temperature" }
Number TF_AmbientLight "Luminance [%.0f lx]" { tinkerforge="uid=<AMBIENT_LIGHT_UID>" }
String TF_LCD "LCD" { tinkerforge="uid=<LCD_20X4_UID>"}
Switch TF_LCD_Backlight "LCD Backlight" { tinkerforge="uid=<LCD_20X4_UID>, subid=backlight"}
Switch TF_Button0 "Button0" { tinkerforge="uid=<LCD_20X4_UID>, subid=button0"}
Rules ermögliches es Ereignisse und Aktionen in Wenn-Dann artiger Weise zu verbinden. Wir nutzen dies um die gemessenen Werte auf dem LCD 20x4 Bricklet anzuzeigen, wenn sie sich ändern.
Erzeuge eine neue Config Datei (wie in Schritt 1 beschrieben) namens
weather-station.rules
mit folgendem Inhalt
(download):
import org.openhab.core.library.types.*
var Integer initialSleepTime = 10
rule "Weather Station LCD Init From Backlight"
when
Item TF_LCD_Backlight changed or System started
then
createTimer(now.plusSeconds(initialSleepTime)) [|
sendCommand(TF_LCD, "TFNUM<00>Temperature:")
sendCommand(TF_LCD, "TFNUM<019>C")
sendCommand(TF_LCD, "TFNUM<10>Humidity :")
sendCommand(TF_LCD, "TFNUM<119>%")
sendCommand(TF_LCD, "TFNUM<20>Pressure :")
sendCommand(TF_LCD, "TFNUM<217>hPa")
sendCommand(TF_LCD, "TFNUM<30>Luminance :")
sendCommand(TF_LCD, "TFNUM<318>lx")
sendCommand(TF_LCD, String::format("TFNUM<013>%4s", TF_Barometer_Temperature.state.format("%.1f")))
sendCommand(TF_LCD, String::format("TFNUM<113>%4s", TF_Humidity.state.format("%.1f")))
sendCommand(TF_LCD, String::format("TFNUM<213>%4s", TF_Barometer.state.format("%.0f")))
sendCommand(TF_LCD, String::format("TFNUM<313>%4s", TF_AmbientLight.state.format("%.0f")))
]
end
rule "Goodbye"
when
System shuts down
then
sendCommand(TF_LCD_Backlight, OFF)
end
rule "Weather Station LCD Backlight"
when
Item TF_Button0 changed
then
if (TF_LCD_Backlight.state == ON)
sendCommand(TF_LCD_Backlight, OFF)
else
sendCommand(TF_LCD_Backlight, ON)
end
rule "Weather Station LCD Update Temperature"
when
Item TF_Barometer_Temperature received update
then
sendCommand(TF_LCD, String::format("TFNUM<013>%4s", TF_Barometer_Temperature.state.format("%.1f")))
end
rule "Weather Station LCD Update Humidity"
when
Item TF_Humidity received update
then
sendCommand(TF_LCD, String::format("TFNUM<113>%4s", TF_Humidity.state.format("%.1f")))
end
rule "Weather Station LCD Update Air Pressure"
when
Item TF_Barometer received update
then
sendCommand(TF_LCD, String::format("TFNUM<213>%4s", TF_Barometer.state.format("%.0f")))
end
rule "Weather Station LCD Update Ambient Light"
when
Item TF_AmbientLight received update
then
sendCommand(TF_LCD, String::format("TFNUM<313>%4s", TF_AmbientLight.state.format("%.0f")))
end
Eine Sitemap definiert die Elemente des openHAB User Interfaces. Wir nutzen dies, um die Messwerte im RED Brick Web Interface anzuzeigen.
Erzeuge eine neue Config Datei (wie in Schritt 1 beschrieben) namens
weather-station.sitemap
mit folgendem Inhalt
(download):
sitemap tf_weather_station label="Starter Kit: Weather Station"
{
Frame
{
Text item=TF_Humidity
Text item=TF_Barometer
Text item=TF_Barometer_Temperature
Text item=TF_AmbientLight
Switch item=TF_LCD_Backlight
}
}
Jetzt ist das Web Interface dieser Sitemap erreichbar unter:
http://<RED_BRICK_IP_ADDRESS>:8080/openhab.app?sitemap=weather-station
Alternativ kann auch die Sitemap auch über das RED Brick Web Interface aufgerufen werden, da sort alle Sitemaps verlinkt sind:
http://<RED_BRICK_IP_ADDRESS>