Item Werte in Rules auslesen

Allgemeine Fragen rund um die "Smart Home" Hardware/Komponenten

Moderatoren: seppy, udo1toni

rqxrqx
Beiträge: 32
Registriert: 8. Jun 2020 22:11

Re: Item Werte in Rules auslesen

Beitrag von rqxrqx »

Vielen Dank!
Mir ist aber noch immer nicht klar wie die Syntax "as Number" da hinein passt?

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Item Werte in Rules auslesen

Beitrag von udo1toni »

.state as Number bedeutet: Nimm den Status und versuche, ihn als Number zu verwenden. (Number ist ein Datentyp, wie z.B. OnOffType, HSBType oder auch DecimalType) deshalb muss der Ausdruck auch geklammert werden.

Code: Alles auswählen

(MyItem.state as Number)
ist ein Objekt vom Typ Number. Für das Objekt stehen alle Methoden zur Verfügung, die für ein "gewöhnliches" Number Objekt auch zur Verfügung stehen, also z.B. .floatValue, .doubleValue oder auch .intValue.
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

Re: Item Werte in Rules auslesen

Beitrag von filmgucker2 »

Hallo mal wieder,

mein Problempasst irgendwie hierzu denke ich:

Mein Rollo soll runtergehen, wenn der Sonnenazimut mehr als 270 Grad und der Höhenwinkel
der Sonne geringer als 12 Grad ist.
Habe folgende Regel erstellt, wenn der Azimut sich verändert:

Code: Alles auswählen

configuration: {}
triggers:
  - id: "1"
    configuration:
      itemName: AstronomischeSonnendaten_Azimut
    type: core.ItemStateChangeTrigger
conditions:
  - inputs: {}
    id: "3"
    configuration:
      itemName: AstronomischeSonnendaten_Azimut
      state: "270"
      operator: ">"
    type: core.ItemStateCondition
  - inputs: {}
    id: "4"
    configuration:
      itemName: AstronomischeSonnendaten_Hohenwinkel
      state: "12"
      operator: <
    type: core.ItemStateCondition
actions:
  - inputs: {}
    id: "2"
    configuration:
      command: ON
      itemName: Terrassenrollo_TerrassenrolloRunter
    type: core.ItemCommandAction
Und wo bringe ich jetzt den floatvalue oder Number unter?

Vielen Dank!
Raspberry Pi 4, OH 4.0.3

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Item Werte in Rules auslesen

Beitrag von udo1toni »

Du hast eine Rule über die UI erstellt, da gelten andere Regeln :)

Vermutlich musst Du einfach nur statt einfach 270 zu schreiben, noch das Grad- Zeichen anhängen (ohne Gewähr), also 270 ° (ans Leerzeichen denken)
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

filmgucker2
Beiträge: 228
Registriert: 8. Apr 2020 20:59

Re: Item Werte in Rules auslesen

Beitrag von filmgucker2 »

Danke. Mal sehen, was er heute nachmittag macht...In jedem Fall habe ich schon mal eine neue
Taste auf der Tastatur entdeckt. Die links neben der 1 mit dem °- Zeichen ;) ...
Raspberry Pi 4, OH 4.0.3

Taifun2300
Beiträge: 18
Registriert: 27. Dez 2022 09:19

Re: Item Werte in Rules auslesen

Beitrag von Taifun2300 »

Hallo,

Ich krame diesen Fred hervor, da nichts passenderes gefunden, und falls mal jemand ein ähnliches Problem hat ...

Ich steuere meine PV Pufferlösung via Script. Die Aufgabenstellung, wenn die Stromentnahme einen gewissen Schwellenwert überschritten hat, dann soll die Einspeisung abgeschaltet werden. Script funktioniert seit einiger Zeit und erfüllt seinen Zweck. Jetzt bin ich einen Schritt weiter gegangen und habe den Schwellwert in ein numerisches Item gelegt, das ich ändern kann. Nur ist es anscheinend ein Unterschied ob ich den Wert im Script setze, oder von dem Item hole ...

Der Code:

var SchwellenStrom = -90.000;
var StromAktuell

SchwellenStrom = items.getItem('nPVGSchwellenStromverbrauch').numericState.toFixed(3);
StromAktuell = items.getItem('PV_Gartenhaus_Shunt_Verbauchter_Strom').numericState.toFixed(3);

if (StromAktuell < SchwellenStrom) {
........
NotificationAction.sendBroadcastNotification("Achtung, die Stromentnahme der Pufferbatterie ist " + StromAktuell + " Ah!" );
NotificationAction.sendBroadcastNotification("Grenzwert Stromverbrauch ist: " + SchwellenStrom );
}

Der Wert StromAktuell hat den Wert -71.285 und der Wert SchwellenStrom -95.000.
Nur geht dieser if immer auf. Also -71.285 ist kleiner als -95.000 ....... :shock:
In der Notifaction sehe ich beide Wert korrekt.

Wenn ich nun die Werteermittlung für den SchwellenStrom auskommentiere, also den Default benutze funktioniert es korrekt.

Was mache ich falsch ?

Für jeden Hinweis dankbar :)
openHAB 4.0.3 im Docker auf Debian 11, Anbindung an Raspmatic, Hue, FHEM, Fritzbox, Buderus KM200, Worx, Bilnk, Alexa

EmptySoft
Beiträge: 188
Registriert: 7. Jan 2020 14:45
Answers: 2
Kontaktdaten:

Re: Item Werte in Rules auslesen

Beitrag von EmptySoft »

Taifun2300 hat geschrieben: 2. Aug 2023 14:27 Bitte die Rule als code definieren, dann ist sie leichter zu lesen
Taifun2300 hat geschrieben: 2. Aug 2023 14:27 var SchwellenStrom = -90.000;
var StromAktuell

SchwellenStrom = items.getItem('nPVGSchwellenStromverbrauch').numericState.toFixed(3);
StromAktuell = items.getItem('PV_Gartenhaus_Shunt_Verbauchter_Strom').numericState.toFixed(3);

if (StromAktuell < SchwellenStrom) {
........
NotificationAction.sendBroadcastNotification("Achtung, die Stromentnahme der Pufferbatterie ist " + StromAktuell + " Ah!" );
NotificationAction.sendBroadcastNotification("Grenzwert Stromverbrauch ist: " + SchwellenStrom );
}
die Variable StromAktuell bekommt ja keinen Wert, oder verstehe ich das falsch?
Edit, Mumpits, wird eh zugewiesen, Sorry

Mach doch nach dem Auslesen der Werte eine Anzeige, was in den Variablen den nun wirklich drinnen steht

Code: Alles auswählen

logInfo("Rulename","StromAktuell: {}",StromAktuell)
BYe
Harald

Benutzeravatar
udo1toni
Beiträge: 13854
Registriert: 11. Apr 2018 18:05
Answers: 222
Wohnort: Darmstadt

Re: Item Werte in Rules auslesen

Beitrag von udo1toni »

Achtung, JavaScript, Achtung, Halbwissen!
Ist es nicht so, dass man unter JavaScript irgendwo vorne ein getLogger(blabliblub) unterbringen muss und dann mit logger.info(message) arbeitet?


Egal, wie (exakt) sind die Items denn definiert? Number? Number:Power? Number:ElectricCurrent?
Welche openHAB-Version setzt Du ein? Falls OH4, wie sind die units beider Items gesetzt (falls UoM Items)?
openHAB4.1.2 stable in einem Debian-Container (bookworm) (Proxmox 8.1.5, LXC), mit openHABian eingerichtet

Harka
Beiträge: 297
Registriert: 30. Apr 2021 13:13
Answers: 15

Re: Item Werte in Rules auslesen

Beitrag von Harka »

https://www.w3schools.com/jsref/jsref_tofixed.asp
toFixed gibt ein String zurück. Ich dachte erst es liegt am fehlendem ";" nach der 2. Variable und bin mit typeof darauf gekommen. Der Vergleich (>) geht daher nicht mehr auf.

@udo1toni - ja, das Nashorn wollte so umständlich geritten werden

Taifun2300
Beiträge: 18
Registriert: 27. Dez 2022 09:19

Re: Item Werte in Rules auslesen

Beitrag von Taifun2300 »

Vielen lieben Dank!

.toFixed(3) entfernen does the trick …

Wobei ich mir sicher war, es auch mit nur numericState ausprobiert zu haben … Aber wer weiß was ich da falsch hatte.

Das Semicolon bei der Variablendefinition hatte ich übersehen, auch danke dafür!

Die Versionsnummer Openhab hatte ich in meine Signatur aufgenommen gehabt .. wenn auch nicht ganz korrekt wäre ja jetzt 4.0.1 :roll:

PS: Und ich hatte ganz bewusst nur mit reinen numbers gearbeitet, von der MQTT Lieferung bis zur Verarbeitung. Lediglich bei der Aufbereitung im Model benutze ich das Literal „Ah“ … Nach dem Motto, keep it simple. Gibt ja genug Ecken um mich selbst auszutricksen :P :lol:

LG
Christoph
openHAB 4.0.3 im Docker auf Debian 11, Anbindung an Raspmatic, Hue, FHEM, Fritzbox, Buderus KM200, Worx, Bilnk, Alexa

Antworten