Setpoint Wert als sendCommand übergeben

Alle Infos und Tipps speziell zu openHAB 2

Moderatoren: seppy, udo1toni

Benutzeravatar
Joe
Beiträge: 143
Registriert: 10. Okt 2018 12:22
Wohnort: bei Mannheim

Re: Setpoint Wert als sendCommand übergeben

Beitrag von Joe » 14. Jun 2019 19:47

Hi Udo,
da wird doch der Hund in der Pfanne verrückt... habe gerade mal einen Blick auf meine 5 Charts geworfen und was sehe ich nur noch Striche von Links nach rechts.
Habe ich jetzt ein Problem da ich mapDB Persistence und rrd4j Persistence aktiv habe?

Benutzeravatar
udo1toni
Beiträge: 1673
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Setpoint Wert als sendCommand übergeben

Beitrag von udo1toni » 14. Jun 2019 22:32

Ich weiß ja nicht, was Du alles geändert hast...

Hast Du die Persistence mit beim Chart Widget stehen? Oder hast Du rrd4j als default Persistence gesetzt?

Bist Du sicher, dass die Sensoren gültige Werte liefern?

Benutzeravatar
Joe
Beiträge: 143
Registriert: 10. Okt 2018 12:22
Wohnort: bei Mannheim

Re: Setpoint Wert als sendCommand übergeben

Beitrag von Joe » 16. Jun 2019 10:36

Hi Udo,
wo genau stelle ich die rrd4j default Persistence ein?
Habe jetzt nicht nur eine Presistence am laufen:

Ich kann in paperUi doch immer nur eine als Standard einstellen oder?
Wenn ich hier auf rrd4j stelle gehen die Charts wieder aber die Speicherung der anderen Werte geht nicht mehr.

für die Chats benötige ich die rrd4j:

Code: Alles auswählen

Strategies {
// for rrd charts, we need a cron strategy Yohoo Binding
 everyMinute     : "0 * * * * ?"
   everyHour     : "0 0 * * * ?"
    everyDay     : "0 0 0 * * ?"
     everyWeek   : "0 0 0 0 * ?"
      everyMonth : "0 0 0 0 0 ?"

default = everyChange
}

Items {
    Temp_Chart0*, Temp_Chart1*, Temp_Chart2*, Temp_Chart3*, Temp_Chart4* : strategy = everyMinute, everyChange, restoreOnStartup //: strategy = everyChange, everyMinute    
    //Temperature : strategy = everyUpdate, everyMinute
    //Temperature : strategy = everyMinute, everyUpdate, restoreOnStartup
    //Temperature_yo: strategy = everyChange, everyMinute
    //ein Item wird jede Minute persistiert:
    //Test_Leistung : strategy = everyMinute //jede Minute wird der Wert gespeichert
    //Alternative: die Gruppe wird bei jeder Veränderung gespeichert
    //TChart_Temp* : strategy = restoreOnStartup, everyChange //bei jeder Änderung des Wertes wird dieser gespeichert 
}
für die Speicherung der anderen Werte benötige ich die mapdb.persist:

Code: Alles auswählen

Strategies {
    default = everyUpdate
}

Items {
    //*** Ab hier Rollosteuerung *******
    Bewoelkung : strategy = everyChange, restoreOnStartup
    Soll_Setpoint_1 : strategy = everyChange, restoreOnStartup
    Rollo_auf_1 : strategy = everyChange, restoreOnStartup
    Soll_Setpoint_2 : strategy = everyChange, restoreOnStartup
    Rollo_auf_2 : strategy = everyChange, restoreOnStartup
    Soll_Setpoint_3 : strategy = everyChange, restoreOnStartup
    Rollo_auf_3 : strategy = everyChange, restoreOnStartup
    Soll_Setpoint_4 : strategy = everyChange, restoreOnStartup
    Rollo_auf_4 : strategy = everyChange, restoreOnStartup
    Soll_Setpoint_5 : strategy = everyChange, restoreOnStartup
    Rollo_auf_5 : strategy = everyChange, restoreOnStartup
}
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.

Benutzeravatar
udo1toni
Beiträge: 1673
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Setpoint Wert als sendCommand übergeben

Beitrag von udo1toni » 16. Jun 2019 16:55

Nein, die default Persistence spielt nur beim Zugriff auf die persistierten Daten eine Rolle, also wenn Du in der Sitemap ein Chart Widget verwendest oder innerhalb einer Rule auf historische Daten zugreifen willst. Du kannst bei jedem dieser Befehle explizit angeben, welcher Persistence Service verwendet werden soll. Wenn es die default Persistence ist, kannst Du den Parameter weg lassen.

Für das Speichern der Daten spielt es keine Rolle, welche default Persistence definiert ist, hier zählt einzig die Information in den *.persist Dateien.

Aber nochmal der Hinweis: Deine Strategies sind fehlerhaft. Abgesehen davon, dass es keinen Tag 0 im Monat gibt und everyWeek, also einmal pro Woche, an einem bestimmten Wochentag persistieren müsste (z.B. immer Montags), sind all diese Strategies sinnfrei. rrd4j muss zwingend everyMinute als Strategy gesetzt haben, wahlweise kann man das noch mit everyChange und/oder restoreOnStartup ergänzen.
In mapdb ist alles außer everyChange und restoreOnStartup auch sinnfrei, allenfalls könnte man statt everyChange noch everyUpdate setzen, aber da mapdb nur den letzten bekannten Wert zurück liefert, ist auch der Speicherzeitpunkt eher nicht so wichtig.
Bei Datenbanken wie MySQL sieht die Sache eventuell etwas anders aus, aber selbst da müssten die Strategies anders definiert sein, um dem Namen entsprechend korrekt zu funktionieren.

Code: Alles auswählen

Strategies {
   everyMinute : "0 * * * * ?" // zur vollen Minute
   everyHour   : "1 0 * * * ?" // eine Sekunde nach der vollen Stunde
   everyDay    : "2 0 0 * * ?" // zwei Sekunden nach Mitternacht
   everyWeek   : "3 0 0 ? * 1" // drei Sekunden nach Mitternacht am Montag
   everyMonth  : "4 0 0 1 * ?" // vier Sekunden nach Mitternacht am Monatsersten
   everyYear   : "5 0 0 1 1 ?" // fünf Sekunden nach Mitternacht an Neujahr

default = everyChange
}
Wichtig ist auch, wie oben zu sehen, die Strategies aufzuteilen, so dass unterschiedliche Strategien möglichst nicht zum selben Zeitpunkt feuern.

Benutzeravatar
Joe
Beiträge: 143
Registriert: 10. Okt 2018 12:22
Wohnort: bei Mannheim

Re: Setpoint Wert als sendCommand übergeben

Beitrag von Joe » 17. Jun 2019 17:17

Hi Udo,
Danke für Deine schnelle Antwort, könntest Du mir bitte ein Beispiel geben, an welcher Stelle ich das Befehl zur Zuordnung des Charts zur jeweiligen Persistence einsetze?
Wo genau in der Sitemap muss welcher Befehl hin?

Benutzeravatar
udo1toni
Beiträge: 1673
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Setpoint Wert als sendCommand übergeben

Beitrag von udo1toni » 18. Jun 2019 13:48


Benutzeravatar
Joe
Beiträge: 143
Registriert: 10. Okt 2018 12:22
Wohnort: bei Mannheim

Re: Setpoint Wert als sendCommand übergeben

Beitrag von Joe » 20. Jun 2019 11:11

Hi Udo,
so bin mal wieder vor der Kiste. Hat funktioniert Dank.
Sag mal kann ich den Service nur bei einem Chart angeben oder auch bei ITEMS für die ich jetzt die mapdb.presist nutze?

Code: Alles auswählen

Items {
    //*** Ab hier Rollosteuerung *******
    Bewoelkung : strategy = everyChange, restoreOnStartup
    Soll_Setpoint_1 : strategy = everyChange, restoreOnStartup

Benutzeravatar
udo1toni
Beiträge: 1673
Registriert: 11. Apr 2018 18:05
Wohnort: Darmstadt

Re: Setpoint Wert als sendCommand übergeben

Beitrag von udo1toni » 20. Jun 2019 16:45

Ich verstehe jetzt nicht so ganz, was Du meinst. Die Angabe des Service bezieht sich immer auf das Item. Wenn Du ein Chart Widget in der Sitemap angibst, übergibst Du den Service, damit das Chart Widget weiß, von welchem Persistence Service es die Daten des Items (oder auch einer Gruppe von Items) holen soll. In einer Sitemap ist das Chart Widget das einzige, welches auf historische Daten zugreift.

Wenn Du in Rules auf historische Daten zugreifst (z.B. mittels myItem.previousState().state oder mittels myItem.averageSince()), kannst Du den zu verwendenden Service genauso angeben, dabei wird der Service dann einfach als zweiter Parameter angegeben:

Code: Alles auswählen

var Number nMax = myItem.maximumSince(now.minusMinutes(45),"rrd4j") as Number
Da sich die *.persist Dateien immer auf exakt einen Persistence Service beziehen, gibt es dort keine Möglichkeit, den Service mit anzugeben.

Antworten

Wer ist online?

Mitglieder in diesem Forum: Bing [Bot] und 7 Gäste