Seite 1 von 1

Szenen Rule OH3 funktioniert nicht

Verfasst: 21. Dez 2020 15:35
von lons
Hallo

Vielleicht kann mir da jemand helfen...
Bei mir läuft OH3 und ich versuche nach dieser Anleitung: https://community.openhab.org/t/persist ... enes/37123 Szenen zu speichern bzw. abzurufen:

jdbc.persist

Code: Alles auswählen

   pGraph* : strategy = everyChange
   pSave : strategy = everyChange, restoreOnStartup

knx.items

Code: Alles auswählen

// Groups
Group gScene        "Scene"                  
Group pSave           "Persistence Save"                  // mapdb -> everyChange, restoreOnStartup
Group pGraph          "Persistence Graph"                 // influxdb -> everyChange                                    

// Scene items
Number vScene       "Scene [%d]"             (pSave)
Switch vScene_Save  "Scene save"             (gScene)
DateTime vScene_0   "Time 0 [%1$td.%1$tm.%1$tY %1$tT]"  (gScene, pSave)
DateTime vScene_1   "Time 1 [%1$td.%1$tm.%1$tY %1$tT]"  (gScene, pSave)
DateTime vScene_2   "Time 2 [%1$td.%1$tm.%1$tY %1$tT]"  (gScene, pSave)
DateTime vScene_3   "Time 3 [%1$td.%1$tm.%1$tY %1$tT]"  (gScene, pSave)
DateTime vScene_4   "Time 4 [%1$td.%1$tm.%1$tY %1$tT]"  (gScene, pSave)  // add as many scenes as you want to have

Switch Licht_EG_Kueche_Spuele	"Licht Küche Spüle"				(EG_Kueche, Lichter, Lichter_EG, pSave, pGraph)	[ "Lighting" ]	{ channel="knx:device:bridge:Schaltaktor_Kueche:licht_EG_Kueche_Spuele" }
Switch Licht_EG_Essen_Indirekt	        "Licht Esszimmer indirekt"	    (gLichter, Lichter_EG, EG_Essen, pSave, pGraph)	[ "Lighting" ]	{ channel="knx:device:bridge:Schaltaktor1:licht_Essen_indirekt" }
rule

Code: Alles auswählen

rule "SceneSave"
when
	Item vScene_Save received command ON
then
	val sceneItem = gScene.members.filter[i|i.name == "vScene_"+vScene.state].head as DateTimeItem
	sceneItem.postUpdate(new DateTimeType)
	logInfo("SZENEN","Save " + sceneItem)
	vScene_Save.postUpdate(OFF)
end

rule "SceneLoad"
when
	Item vScene received command
then
	val timestamp = (gScene.members.filter[i|i.name == "vScene_"+vScene.state].head as DateTimeItem).state.toString
	logInfo("SZENEN","Load " + timestamp)
	
	Licht_EG_Essen_Indirekt.sendCommand(Licht_EG_Essen_Indirekt.historicState(parse(timestamp)).state as OnOffType)
	Licht_EG_Kueche_Spuele.sendCommand(Licht_EG_Kueche_Spuele.historicState(parse(timestamp)).state as OnOffType)

end
Beim sceneItem speichert er: vScene_1 (Type=DateTimeItem, State=2020-12-20T17:48:29.561035+0100, Label=Time 1, Category=null, Groups=[gScene, pSave])

Beim Laden einer Szene bekomme immer folgende Fehlermeldung:

Code: Alles auswählen

2020-12-20 17:51:21.860 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'Szenen-2' failed: Text '2020-12-20T17:50:18.339731+0100' could not be parsed, unparsed text found at index 29 in Szenen
Danke, Lons

Re: Szenen Rule OH3 funktioniert nicht

Verfasst: 21. Dez 2020 22:05
von udo1toni
Erst mal fehlt da ein Stern. Da Du die Gruppe pSave nutzen willst, um die Persistence anzusprechen, musst Du in der jdbc.persist einen * an den Namen anhängen.

Das zweite Problem ist, dass es in openHAB3 kein JodaTime mehr gibt. Es wurde durch JavaTime ersetzt. Dadurch wird es wesentlich einfacher als mit openHAB2, aber die Aufrufe haben sich geändert. Schau mal hier: https://community.openhab.org/t/datetim ... 3-x/107197
Ist noch (sehr) unvollständig, aber vermutlich die beste Anlaufstelle.