Rules bitte einmal überprüfen.

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Rules bitte einmal überprüfen.

Beitrag von Boxana »

Hallo,
ich komme nicht weiter.
Habe da ein Script gefunden um Szenen zu speicher.
Wahrscheinlich gibt es viele Lösungen und auch bessere, aber ich würde dennoch gerne verstehen wo ich was falsch mache.
Ich nenne aus Respekt auch mal die quelle.
https://community.openhab.org/t/persist ... enes/37123

Code: Alles auswählen

rule "WzSceneSave"
when
	Item vWzScene_Save received command ON
then
	val sceneItem = gWzScene.members.filter[i|i.name == "vWzScene_"+vWzScene.state].head as DateTimeItem
	sceneItem.sendCommand(new DateTimeType(now.toString()))
	vWzScene_Save.postUpdate(OFF)
end

rule "WzSceneLoad"
when
	Item vWzScene received command
then
	val timestamp = (gWzScene.members.filter[i|i.name == "vWzScene_"+vWzScene.state].head as DateTimeItem).state.toString
	HUE_Bogenlampe_Dimer.sendCommand(HUE_Bogenlampe_Dimer.historicState(parse(timestamp),"mysql").state as PercentType)
	//aWzRgb.sendCommand(aWzRgb.historicState(parse(timestamp),"mysql").state as HSBType)
	HUE_Bogenlampe_On.sendCommand(HUE_Bogenlampe_On.historicState(parse(timestamp),"mysql").state as OnOffType)
end
Ich habe in der mapdb.persist die ich unter anderem für "restoreOnStartup nutze" stehen:

Code: Alles auswählen

Strategies {
    default = everyUpdate
}

Items {
        *               : strategy = everyChange,restoreOnStartup
        // pSave           : strategy = everyChange,restoreOnStartup
}   
ich habe "pSave" auskommentiert da es ja meiner Meinung nach schon im Joker enthalten ist.

In der Mysql Datenbank wird folgendes gespeichert:

Code: Alles auswählen

pGraph*						: strategy = everyChange
auch das kann ich in der Datenbank finden un es wird somit geschrieben.

Wo ich nicht sicher bin ist der Eintrag msql den ich ja dort eingetragen habe.

Code: Alles auswählen

HUE_Bogenlampe_Dimer.sendCommand(HUE_Bogenlampe_Dimer.historicState(parse(timestamp),[b]"mysql"[/b]).state as PercentType)
original steht dort "influxdb" aber ich benutze ja mysql.

Warum steht "vWzScene_" in gärtnerischen?
In VSC kann ich die zugeordneten werte immer sehen wenn ich mit der Maus drüber gehe. Aber "val sceneItem" und "val timestamp" zeigen keine werte an.
Ich hoffe ich habe alles Rüber gebracht.
Openhab auf einem Qnap NAS
Gruß
Christian

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: Rules bitte einmal überprüfen.

Beitrag von Boxana »

Hallo,

ich habe jetzt den parameter"mysql" ganz herausgenommen.
Da es meine standart Datenbank ist sollte es auch ohne gehen.
Aber ich habe ein anderes Problem erkannt. Denke wenigstens das es eins sein könnte. :o

Der generierte Zeitstempel bezieht sich auf die Serverzeit. (QNAP System)
Die MYSQL zeit ist aber unsere Zeit also +1 im Moment.

Wie gehe ich das Problem jetzt an. Ich habe im Netzt schon so viel gelesen und probiert aber ich bekomme die zeit nicht vorgestellt. Warum die Zeiten nicht synchron sind ist mir ein rätsel.
Kann ich in der rul irgendwie eine Stunde abziehen?
Openhab auf einem Qnap NAS
Gruß
Christian

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: Rules bitte einmal überprüfen.

Beitrag von Boxana »

Ich muss es korrigieren.
Die zeit ist gleich aber die zeit in der Rule ist um eine zurück.
Ich habe es im System von openhab aber richtig eingestellt.
wie kann das?


Update:
Habe die zeit in openhab mal auf + 2 gestellt und es ändert sich nichts .
In der Rule ist es immer UTC
also wie kann ich in der rule eine Stunde abziehen :-)
Openhab auf einem Qnap NAS
Gruß
Christian

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

Re: Rules bitte einmal überprüfen.

Beitrag von udo1toni »

Ich versuche mal, zu erklären, was die beiden Rules machen.
Du hast eine Liste DateTime Items, deren Name mit vWzScene_ anfängt. In Diesen Items wird ein Zeitstempel gespeichert, wenn Du die Szene speicherst.
Wenn Du die Szene aufrufst, wird der Zustand des Items zum Zeitpunkt des gespeicherten Zeitstempels geladen.
Dazu ist Voraussetzung, dass alle Items, die so geladen werden sollen persistiert werden, und zwar auf eine Weise, dass die Daten über den Zeitstempel wieder geladen werden können. dafür kommen verschiedene Persistence Services infrage. Es muss natürlich beim Laden der passende Persistence Service ausgewählt sein.

Was Dein Zeitproblem betrifft:
1. Dein QNAP sollte sich die Zeit per ntp holen (kann man sicher über die Web-UI konfigurieren.)
2. Die Systemzeit von QNAP muss natürlich auch auf die lokale Zeitzone eingestellt sein (siehe Punkt 1)
3. Falls nun (nach Neustart openHAB) im Log eine Zeitverschiebung zu sehen ist, musst Du den Aufruf für openHAB mit einer Java-Option für die Zeitzone versehen.

NTP innerhalb openHAB hat nur Einfluss auf den openHAB Bus, nicht auf Logs oder die Rules.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: Rules bitte einmal überprüfen.

Beitrag von Boxana »

Hallo Udo,
alle Zeiten auf dem Server sind richtig. Ruls haben immer UTC also eine Stunde zu früh.
Cron ...

Ich habe gegoogeld und gelesen das man in java die zeitzone setzen soll.
-Duser.timezone="Europe/Berlin"
aber wo ?
kanst du mir da bitte helfen?
Openhab auf einem Qnap NAS
Gruß
Christian

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: Rules bitte einmal überprüfen.

Beitrag von Boxana »

muss das hier eingetragen werden ?

Code: Alles auswählen

#!/bin/sh
CONF=/etc/config/qpkg.conf
QPKG_NAME="OpenHab"
QPKG_ROOT=`/sbin/getcfg $QPKG_NAME Install_Path -f ${CONF}`
export QNAP_QPKG=$QPKG_NAME

export QPKG_NAME QPKG_ROOT

export SHELL=/bin/sh
export LC_ALL=en_US.UTF-8
export USER=admin
export LANG=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8
export TERM=xterm

export OPENHAB_HOME=$QPKG_ROOT


# also modified ub runtime/bin/setenv

export OPENHAB_HTTP_PORT=58288
export OPENHAB_HTTPS_PORT=58243
export OPENHAB_STARTMODE=daemon

export DESC=OpenHab

export JAVA_HOME=/opt/QJDK8
export JAVA=$JAVA_HOME/bin/java

export LANG=en_US.UTF-8
export LC_ALL=en_US.UTF-8
export LC_CTYPE=en_US.UTF-8

export PIDF=/opt/OpenHab/userdata/tmp/karaf.pid

case "$1" in
  start)
    ENABLED=$(/sbin/getcfg $QPKG_NAME Enable -u -d FALSE -f $CONF)
    if [ "$ENABLED" != "TRUE" ]; then
        echo "$QPKG_NAME is disabled."
        exit 1
    fi

/bin/ln -sf $QPKG_ROOT /opt/$QPKG_NAME
cd $QPKG_ROOT

sh -x $QPKG_ROOT/start.sh &



    ;;

  stop)


cd $QPKG_ROOT
sh -x $QPKG_ROOT/start.sh stop &
sleep 10
ID=$(more /opt/OpenHab/userdata/tmp/karaf.pid)

        if [ -e $PIDF ]; then
            kill -9 $ID
            rm -f $PIDF
#          rm -rf /opt/OpenHab/userdata/tmp/*
#            rm -rf /opt/OpenHab/runtime/instances/instance.properties
            rm -rf /opt/OpenHab/userdata/tmp/instances/instance.properties
        fi



rm -rf /opt/$QPKG_NAME



    ;;

  restart)
    $0 stop
    $0 start
    ;;

  *)
    echo "Usage: $0 {start|stop|restart}"
    exit 1
esac

exit 0


Openhab auf einem Qnap NAS
Gruß
Christian

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

Re: Rules bitte einmal überprüfen.

Beitrag von udo1toni »

Ich habe leider keine Ahnung über den openHAB Startprozess auf dem QNAP. Normalerweise gibt es in GNU/Linux ein Verzeichnis /etc/default/ in dem es dann eine Datei openhab2 geben sollte, dort wiederum wären zusätzliche Java Optionen anzugeben. Keine Ahnung, ob bzw. wo das auf dem QNAP ist.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

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

Re: Rules bitte einmal überprüfen.

Beitrag von udo1toni »

Lösung im eigenen Thread: viewtopic.php?f=15&t=3240


Sehr gut! Danke für die Links, die Anderen sicher hilfreich sein werden.
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Benutzeravatar
Boxana
Beiträge: 125
Registriert: 19. Feb 2020 16:24
Answers: 0

Re: Rules bitte einmal überprüfen.

Beitrag von Boxana »

ch habe da eine Fehlermeldung die ich ich nicht beheben kann.
Ambiguous feature call.
The extension methods
sendCommand(Item, Command) in BusEvent and
sendCommand(Item, Number) in BusEvent
both match.
I
eigentlich funktioniert die rule meiner Meinung nach :-(

Code: Alles auswählen

then
	val timestamp = (gWzScene.members.filter[i|i.name == "vWzScene_"+vWzScene.state].head as DateTimeItem).state.toString
	HUE_Bogenlampe_Color.sendCommand(HUE_Bogenlampe_Color.historicState(parse(timestamp)).state as HSBType)

Openhab auf einem Qnap NAS
Gruß
Christian

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

Re: Rules bitte einmal überprüfen.

Beitrag von udo1toni »

Vermutlich musst Du es als String übergaben:

Code: Alles auswählen

HUE_Bogenlampe_Color.sendCommand((HUE_Bogenlampe_Color.historicState(parse(timestamp)).state as HSBType).toString)
openHAB4.3.6 stable in einem Debian-Container (bookworm) (Proxmox 8.4.1, LXC), mit openHABian eingerichtet

Antworten