Seite 2 von 3

Re: Item Werte in Rules auslesen

Verfasst: 8. Apr 2022 13:32
von rqxrqx
Vielen Dank!
Mir ist aber noch immer nicht klar wie die Syntax "as Number" da hinein passt?

Re: Item Werte in Rules auslesen

Verfasst: 8. Apr 2022 16:35
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.

Re: Item Werte in Rules auslesen

Verfasst: 29. Mai 2022 16:08
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!

Re: Item Werte in Rules auslesen

Verfasst: 29. Mai 2022 16:56
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)

Re: Item Werte in Rules auslesen

Verfasst: 30. Mai 2022 08:05
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 ;) ...

Re: Item Werte in Rules auslesen

Verfasst: 2. Aug 2023 14:27
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 :)

Re: Item Werte in Rules auslesen

Verfasst: 2. Aug 2023 14:50
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)

Re: Item Werte in Rules auslesen

Verfasst: 2. Aug 2023 16:23
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)?

Re: Item Werte in Rules auslesen

Verfasst: 2. Aug 2023 17:18
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

Re: Item Werte in Rules auslesen

Verfasst: 2. Aug 2023 18:45
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