Seite 1 von 2

Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 16. Mär 2020 09:01
von TNT_Larsn
Guten Tag,
meinen ersten Post in diesem Forum möchte ich gleich mit einer Frage beginnen.

Ich habe ein "Dummy Item" erstellt mit dem ich einen Wert in Sekunden hinterlege.
Sekunden wird zwingend benötigt, für die Übergabe des Items an Homebridge-Openhab-Plugin (Bewässerung (durationItem))

Code: Alles auswählen

Number:Time	vLaufzeitPumpe  "Laufzeit Gartenpumpe [%.0f s]"  <time_clock>	(gSettings) 
In der zugehörigen rule kann ich dann mit diesem Wert (in Sekunden) arbeiten. Wenn über HomeKit Steuerung der Wert geändert wird funktioniert alles einwandfrei.

Problem:

Ich möchte den Wert auch über das Basic Ui mittels Setpoint einstellen.
Hier allerdings die Anzeige in Minuten darstellen.
Folgerndes habe ich versucht:

1. Anzeige ist in Sekunden - Wert des Item ist in Sekunden

Code: Alles auswählen

Setpoint item=vLaufzeitPumpe label="[%.0f %unit%]" minValue=1 maxValue=3600 step=60
2. Anzeige ist in Minuten - Wert des Item ist in Minuten

Code: Alles auswählen

Setpoint item=vLaufzeitPumpe label="[%.0f min]" minValue=1 maxValue=60 step=1
Kann mir jemand zeigen wie ich in der Sitemap
Anzeige in Minuten - Wert des Item in Sekunden

einstelle?

Vielen Dank

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 16. Mär 2020 09:40
von udo1toni
Eigentlich sollte es kein Problem sein, den Wert in Minuten einzugeben und in Sekunden auszulesen, dafür ist ja UoM da.
Intern sollte das Item den Wert dann immer in Sekunden verarbeiten, es sähe also so aus:

Code: Alles auswählen

Setpoint item=vLaufzeitPumpe label="[%.0f min]" minValue=0 maxValue=3600 step=60
Aber falls das alles nichts hilft, wäre die pragmatische Lösung, ein ungebundenes Item dafür anzulegen.

Code: Alles auswählen

Number:Time	vLaufzeitPumpe  "Laufzeit Gartenpumpe [%.0f s]"  <time_clock>	(gSettings) 
Number vLaufzeitPumpeMin  "Laufzeit Gartenpumpe [%.0f min]"  <time_clock>	(gSettings) 
In der Sitemap:

Code: Alles auswählen

Setpoint item=vLaufzeitPumpeMin minValue=0 maxValue=60 step=1
Eine Rule:

Code: Alles auswählen

rule "Zeit setzen"
when
    Item vLaufzeitPumpeMin changed
then
    if(!(vLaufzeitPumpeMin.state instanceof Number)) return;
    vLaufzeitPumpe.sendCommand(((vLaufzeitPumpeMin.state as Number) * 60)|s)
end
Bei der letzten Zeile bin ich mit nicht zu 100% sicher, aber so ähnlich sollte es gehen.

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 16. Mär 2020 10:11
von TNT_Larsn
Vielen Dank für die überaus schnelle Antwort.
Eigentlich sollte es kein Problem sein, den Wert in Minuten einzugeben und in Sekunden auszulesen, dafür ist ja UoM da.
m.E. funktioniert das nur, wenn ein entsprechendes Binding angebunden ist, was bei meinem "Dummy Item" nicht der Fall ist.

Die Lösung mit dem 2. eingebundenen Item hab ich auch schon versucht. Jedoch war es dann nötig die beiden Werte "synchron" zu halten.
Das heist ich brauchte 2 rules (je nachdem welches Item geändert wird)

Code: Alles auswählen


rule "Zeit setzen"
when
    Item vLaufzeitPumpeMin changed
then
    if(!(vLaufzeitPumpeMin.state instanceof Number)) return;
    vLaufzeitPumpe.sendCommand(((vLaufzeitPumpeMin.state as Number) * 60)|s)
end

rule "Zeit setzen 2"
when
    Item vLaufzeitPumpe changed
then
    if(!(vLaufzeitPumpe.state instanceof Number)) return;
    vLaufzeitPumpeMin.sendCommand(((vLaufzeitPumpe.state as Number) / 60)|min)
end

Dies führte jedoch dazu, dass sich die Werte nach Änderung gegenseitig "hochschaukelten".
Gibt es keine Möglichkeit die Anzeige des label in der Sitemap mit einer entsprechenden Syntax zu manipulieren?

Code: Alles auswählen

Setpoint item=vLaufzeitPumpe label="[%.0f s] / 60 " minValue=0 maxValue=3600 step=60
^ Das funktioniert leider nicht

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 16. Mär 2020 20:54
von udo1toni
Ah. Ich sehe Dein Problem.

Ist aber kein Problem :)

Code: Alles auswählen

rule "Zeit in UI gesetzt"
when
    Item vLaufzeitPumpeMin received command
then
    if(!(vLaufzeitPumpeMin.state instanceof Number)) return;
    vLaufzeitPumpe.sendCommand(((vLaufzeitPumpeMin.state as Number) * 60)|s)
end

rule "Zeit am Gerät gesetzt"
when
    Item vLaufzeitPumpe changed
then
    if(!(vLaufzeitPumpe.state instanceof Number)) return;
    vLaufzeitPumpeMin.postUpdate(((vLaufzeitPumpe.state as Number) / 60)|min)
end
Wenn Du über die UI den Wert anpasst, wird automatisch ein sendCommand ausgelöst. Entsprechende wird die erste Rule getriggert. Wenn die Zeit an der Pumpe geändert wird, triggert die zweite Rule. Da in der zweiten Rule aber nur ein postUpdate verwendet wird, löst die erste Rule nicht aus.

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 16. Mär 2020 22:25
von TNT_Larsn
keine Ahnung wieso, aber "nur" so funktioniert es, wie gewollt. Man beachte, dass bei einer Änderung aus dem UI eine Multiplikation mit 60 nicht erforderlich ist

Zeit im UI geändert:

Code: Alles auswählen

rule "Zeit in UI gesetzt"
when
    Item vLaufzeitPumpeMin received command
then
    if(!(vLaufzeitPumpeMin.state instanceof Number)) return;
    vLaufzeitPumpe.postUpdate(vLaufzeitPumpeMin.state as Number * 1)
end
LogFile:

Code: Alles auswählen

2020-03-16 22:14:31.038 [ome.event.ItemCommandEvent] - Item 'vLaufzeitPumpeMin' received command 28 min
2020-03-16 22:14:31.045 [vent.ItemStateChangedEvent] - vLaufzeitPumpeMin changed from 27.0 min to 28 min
2020-03-16 22:14:31.410 [vent.ItemStateChangedEvent] - vLaufzeitPumpe changed from 1620.0 s to 1680.0 s
Zeit in EVE-App geändert -> Homebridge -> Openhab

Code: Alles auswählen

rule "Zeit am Gerät gesetzt"
when
    Item vLaufzeitPumpe received command
then
    if(!(vLaufzeitPumpe.state instanceof Number)) return;
    vLaufzeitPumpeMin.postUpdate((vLaufzeitPumpe.state as Number) / 60)
end
LogFile:

Code: Alles auswählen

2020-03-16 22:23:41.266 [ome.event.ItemCommandEvent] - Item 'vLaufzeitPumpe' received command 600
2020-03-16 22:23:41.283 [vent.ItemStateChangedEvent] - vLaufzeitPumpe changed from 30.0 s to 600.0 s
2020-03-16 22:23:41.297 [vent.ItemStateChangedEvent] - vLaufzeitPumpeMin changed from 28 min to 10.0 min
Meine Items:

Code: Alles auswählen

Number:Time  vLaufzeitPumpe       "Laufzeit Gartenpumpe [%.0f s]"       <time_clock>	        (gSettings)
Number:Time  vLaufzeitPumpeMin  "Laufzeit Gartenpumpe [%.0f min]"   <time_clock>	(gSettings)
Sitemap:

Code: Alles auswählen

Setpoint item=vLaufzeitPumpeMin minValue=1 maxValue=60 step=1
Nochmals vielen Dank für die schnelle Hilfe

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 17. Mär 2020 07:52
von udo1toni
Das mit dem Multiplikator hängt sicher mit dem UoM zusammen. Die Logik dahinter erschließt sich mir jetzt auch nicht, aber sei's drum, Hauptsache ist ja, dass es für Dich funktioniert.

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 17. Mär 2020 14:29
von peter-pan
Udo hat schon Recht mit UoM. Eigentlich bräuchtest du gar keine Umrechnung per Regel. Das sollte OH-UoM allein machen. Hier ein Beispiel:

.items

Code: Alles auswählen

Number:Time           SonnenDatenCivilDawnDuration      "CivilDawnDuration    Dauer [%s s]"                                                                                   (gAstrotest) {channel="astro:sun:local:civilDawn#duration"}
Ich habe beim Item absichtlich "s" als Einheit gewählt, da im Astrobinding standartmässig "min" als %unit% hinterlegt ist. Aber das Ergebnis in der Sitemap sollte das gleiche sein unabhängig von der vorgegebenen Einheit im Item.
.sitemap

Code: Alles auswählen

    Setpoint item=SonnenDatenCivilDawnDuration label="Zeit Min [%s min]"
    Setpoint item=SonnenDatenCivilDawnDuration label="Zeit Sekunden [%s]"
    Default  item=SonnenDatenCivilDawnDuration label="Zeit - Default"
und das Ergebnis in der Sitemap:
zeit.jpg
Du kannst dir auch hier ein paar Tipps holen

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 17. Mär 2020 14:41
von TNT_Larsn
Es scheint das Problem zu sein, dass Werte aus OpenHab-Ui gesetzt, korrekt in Bezug auf UoM verarbeitet werden können, da sie die entsprechende Einheit mitliefern siehe log: (Wert in BasicUi geändert)

Code: Alles auswählen

Item 'vLaufzeitPumpeMin' received command 28 min
Sobald der Wert aber aus anderen Quellen geändert wird, fehlt die Einheit.

Code: Alles auswählen

Item 'vLaufzeitPumpe' received command 600
Folglich sind die Werte dann im Openhab-Plugin-Ui fehlerhaft, da z.B. aus "600" auf einmal 600min werden







Standarte vs. Standard

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 17. Mär 2020 15:26
von peter-pan
Sorry, :oops: hab dein Problem nicht genau gelesen, bzw. erkannt. Ich habe nur mal auf die Schnelle mit ein paar Einstellungen in der Sitemap getestet. Da bleibt dann doch nur der Weg über eine Regel übrig.

Re: Sitemap Setpoint mit abweichender "Unit Of Measurement"

Verfasst: 17. Mär 2020 18:20
von udo1toni
Eine andere Frage:

Wie kommen denn die Werte von openHAB nach homebridge? gewöhnlich würde ich erwarten, dass auch Fremdsoftware zumindest die Regeln einhält, wie openHAB2 anzubinden ist (das wäre, pro Gerät ein Thing zur Verfügung zu stellen und deren Channel mit passenden Items zu verlinken).

Einen Link zum homebridge kann ich aber nirgends sehen.