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)
Sobald der Wert aber aus anderen Quellen geändert wird, fehlt die Einheit.
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,
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.