Temperatursensor: HM-WDS30-T-O und openhab

Hi,

Vielleicht kann mir hier noch mal jemand einen Tipp geben. :scream:

Ich habe Openhab am laufen und möchte einen Temperatursensor in der GUI anzeigen (und später in der Datenbank mit aufzeichnen). Ich konnte bereits eine Funksteckdose erfolgreich einbinden. Ich schaffe es aber nicht mit dem Temperatursensor (HM-WDS30-T-O) ins System einzubinden.
Das anlernen wurde bereits erledigt und hat funktioniert (denke ich halt):

Die Schaltsteckdose konnte ich folgend einbinden:
.items:

.sitemap:

Meine Frage nun: Kann mir jemand verraten was ich für den obigen Temperatursensor bei Items & Sitemap rein schreiben muss, um den Wert auf der GUI mal anzuzeigen

Danke für jeden Hinweis!

PS.: aus der Log Datei: 2016-11-12 20:15:29.708 [WARN ] [.b.h.i.c.HomematicCommunicator] - Can’t find DatapointConfig[address=MEQ0281274,channel=0,parameter=RSSI_DEVICE], value is not published to openHAB!

Mach mal in der homegear Konsole folgendes:

fs 0
ps 2
config print

family select 0 zum auswählen von Homematic, peer select 2 zur Auswahl deines Geräte, config print um alle verfügbaren Datenpunkte anzuzeigen.

Ich kenne zwar den Temperaturfühler nicht, vermute aber, dass du in openhab einen Datenpunkt/Kanal anspricht, wo der Wert nicht ist.

Wenn die die device-defintion (https://github.com/Homegear/Homegear-HomeMaticBidCoS/blob/master/misc/Device%20Description%20Files/rf_wds30_ot2.xml) richtig lese, ist die Temperatur in Kanal 1 und heißt TEMPERATURE.

Sas sagt übrigens nur aus, dass openhab den Datenpunkt nicht finden kann weil er nicht bekannt ist.

Du hastest den richtige Vermutung: bzw. kennst die Zusammenhänge :slight_smile:

Der Eintrag ist falsch (stammt von einer Zeile aus Google… wohl aus einen anderen Zusammenhang)

homematic=“address=MEQ0281274, channel=1, parameter=Actual_TEMPERATURE

Deine Befehle haben mir nun ein wenig Licht ins dunkle gebracht: Temperatur

Somit folgendes in .items:

Number Temperatur “Temperatur [%.1f °C]” (gHeaters, rBad) { homematic=“address=MEQ0281274, channel=1, parameter=TEMPERATURE”}

wobei ich das nicht verstehe:
(gHeaters, rBad)

PS.: Kann man via command line auch die aktuellen Werte auslesen (nicht nur die config?)

Hi @kohle,

00 e0 ist der aktuelle Temperaturwert. Allerdings kann ich nicht sagen, wie man daraus den eigentlichen Wert berechnet.

In Klammern () werden in openhab die Gruppen zugewiesen in denen dieses Item sein soll:


00 e0 ist der aktuelle Temperaturwert.

Ist der aktuelle Temperaturwert im Hexadezimal Format. (division durch 10 um die Dezimalstelle rein zu rücken)

somit: 00E0 ==> 22,4°C

Ok, das war dann zu einfach :wink: :thumbsup:
Hex war klar, nur das /10 hatte ich ohne den ersten Kaffe noch nicht hinbekommen… :smiley:

Ja, kann man. Und zwar mit Inline-PHP-Skripts:

rc print($hg->getValue(2, 1, "TEMPERATURE"));

rc steht für “run command”, danach folgt dann der PHP-Befehl. “$hg” ist das bereits vorinstanziierte Homegear-Objekt.

Viele Grüße

Sathya

1 Like

Hi Sathya,

der Befehl funktioniert von Homegear command aus.
1.) homegear -r
2.) rc print($hg->getValue(2, 1, “TEMPERATURE”));

Gibt es auch eine Möglichkeit direkt von der Linux command line aus den Wert auszulesen?

Ziel ist es per (Shell) Script den Wert auszulesen.

Ich dachte an:

homegear -r | rc print($hg->getValue(2, 1, “TEMPERATURE”));

Vielen Dank

A post was split to a new topic: Aktualität der Werte in OH

Du suchst homegear -e :slight_smile:
Oder du kannst einfach ein kleines PHP-Script schreiben und das über homegear ausführen: https://homegear.eu/index.php/Homegear_Reference#Homegear_Scripts

root@homegearpi:/home/pi# homegear -h
Usage: homegear [OPTIONS]

Option              Meaning
-h                  Show this help
-u                  Run as user
-g                  Run as group
-c <path>           Specify path to config file
-d                  Run as daemon
-p <pid path>       Specify path to process id file
-s <user> <group>   Set GPIO settings and necessary permissions for all defined physical devices
-r                  Connect to Homegear on this machine
-e <command>        Execute CLI command
-o <input> <output> Convert old device description file into new format.
-l                  Checks the lifeticks of all components. Exit code "0" means everything is ok.
-v                  Print program version

Vielen Dank!
So etwas habe ich gesucht.

Nun mein letztes Problem (hoffentlich): :innocent:
Ich zeichne den Sensor auf und stelle die Temperatur dann in einem Chart dar. Leider gibt es Unregelmäßigkeiten im HomeGear die ich mir nicht erklären kann. Das Aufzeichnungen funktioniert mal und dann wieder nicht. “Die Werte frieren ein”

zusätzliche Information:

Ist das eine Limitierung von HM/HG ?

Kannst du sicher stellen, dass dein Sensor zur Zeit wo nicht gemeldet wird nicht UNREACH ist? Weil steht in deinem Screenshot beides auf 1…

Es gibt keine Limitierung der Werthäufigkeit in Homegear. Und wie du auch an deinem Graph siehst, gibt homegear immer einen Wert zurück. Der ändert sich nur eben nicht weil homegear keinen Wert mehr vom Gerät seit LAST_PACKET_RECEIVED erhalten hat. Was meine These mit dem UNREACH stützt :wink:

Ich sage du hast ein Empfangsproblem auf Homematicseite.

Ok - Ich werde den Sensor zur Einheit (2m) dazuschieben und wieder berichten

Update:

Ich habe in der Aufzeichnung noch “gefrorene” Werte. Leider bin ich mir nicht sicher ob das ein Problem von HG ist.

Besser wäre es (meiner Meinung) wenn Homegear bei nicht gültigen Werten einen Error rein schreiben würde. Somit kann ein fehlerhaftes Lesen erkannt werden.

Naja, es gilt ja immer der “letzte” Wert. Wenn nichts gesendet wird, kann ja das nicht als Fehler erkannt werden.

Was sagt config print (UNREACH) zu der Zeit wo keine Werte aktualisiert werden?

Was sagt config print (UNREACH) zu der Zeit wo keine Werte aktualisiert werden?

Leider kann ich dir diese Frage nicht beantworten, da ich immer erst Stunden/Tage danach drauf komme.
Ich muss mir da ein Script überlegen das diesen Parameter abfragt und in die DB mitschreibt.

:thumbsup:

Vielleicht kann @sathya was dazu sagen. Aber wenn es nicht UNREACH ist, würde ich sagen “works as designed”.

It works as designed :slight_smile:
… nur das sollte man im Design überlegen.

Für Temperaturen sollte man sich über einen Wert in klaren sein ob der Wert “echt” oder schon Stunde alt ist.
Meist hängen davon weitere (wichtige) Aktionen ab.

Vorschlag an @sathya:
Sollte der Wert nicht aktuell sein, könnte der Error Code in die bestehende Spalte hinzugefügt werden.
Somit würde im Fehlerfall eindeutig erkennbar sein ob es sich um einen Wert in der Vergangenheit handelt