Astro binding aktualisiert thing offset nicht automatisch

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

soulid
Beiträge: 73
Registriert: 24. Feb 2020 20:32
Answers: 0

Astro binding aktualisiert thing offset nicht automatisch

Beitrag von soulid »

Hallo,
ich habe das Astro binding installiert und möchte gerne einige Offsets zu den Sunsets and Sunrises tunen.
Wenn ich nun die Offsets veränder und das Thing speicher, sehe ich im Log das Openhab die Speicherung der things "sieht", aber nicht die Veränderung des Offsets. Das geschieht erst wenn ich die .things in .thing umbenenne und dann zurück auf .things.
Ist das richtig so?

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

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von udo1toni »

Du musst die Datei nicht umbenennen :) aber wenn Du über Textdateien konfigurierst, musst Du leider damit leben, dass Änderungen zwar von openHAB eingelesen werden, aber trotzdem nicht beim Addon ankommen. Das hängt damit zusammen, dass die *.things Datei erst später angedockt wurde, im Gegensatz zu den .items. Der Lademechanismus berücksichtigt diese Änderungen leider nicht so, wie man es erwarten würde.

Gewöhnlich sollte es ausreichen, das betreffende Bundle neu zu starten, in diesem Fall also org.openhab.binding.astro. Es kann dann aber immer noch sein, dass der Wert nicht sauber eingelesen wird. Im Zweifel ist ein Neustart von openHAB wahrscheinlich die beste Option.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

soulid
Beiträge: 73
Registriert: 24. Feb 2020 20:32
Answers: 0

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von soulid »

Aha- Verstanden.
Vielleicht ist es ja in einer der nächsten Varianten mögliche die von der Änderung betroffenen Addon immer neu zu starten. Das würde beim Programmieren helfen, oder?

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

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von udo1toni »

Die nächste Version wird die Textkonfiguration in der bisherigen Art gar nicht mehr unterstützen. mit OH3 werden die Zöpfe der OH1 Kompatibilität abgeschnitten.
Und bevor jetzt ein lauter Aufschrei ertönt ;) sei darauf hingewiesen, dass OH3 über den Nachfolger von Paper UI sowohl grafische als auch Textkonfiguration gestatten wird, und anders als bisher kann man dann zwischen beiden Varianten hin und her schalten. Es wird also besser, nicht schlechter. Der kleine Wermutstropfen: Die Textversion sieht dann komplett anders aus.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

soulid
Beiträge: 73
Registriert: 24. Feb 2020 20:32
Answers: 0

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von soulid »

Moin,
nun habe Openhab soweit das die Gartenlichter aufgrund vom Astro binding angehen...leider aber ohne Berücksichtigung der Offsets im der sunmoon.things. Die durch offsets eingestellt/gewünschte Uhrzeit wird mit im PaperUI von 04:53-06:57 angezeigt. Die tatsächliche Schaltzeit ist aber von 05:51-05:55.

Wie empfohlen habe ich gestern nach dem erstellen der thing openhab komplett neu gestartet. Habe ich im thing oder rule was falsch gemacht? :?

.log Auszug

Code: Alles auswählen

2020-05-09 21:33:46.805 [vent.ItemStateChangedEvent] - Sunrise_Time_start changed from NULL to 2020-05-09T04:53:00.000+0200
2020-05-09 21:33:46.808 [hingStatusInfoChangedEvent] - 'mqtt:topic:WLS19:Vorgartenbewaesserung' changed from INITIALIZING to ONLINE
2020-05-09 21:33:46.809 [hingStatusInfoChangedEvent] - 'mqtt:topic:WLS19:Floklima' changed from UNINITIALIZED to INITIALIZING
2020-05-09 21:33:46.811 [vent.ItemStateChangedEvent] - Sunrise_Time_end changed from NULL to 2020-05-09T06:57:00.000+0200
2020-05-09 21:33:46.813 [vent.ItemStateChangedEvent] - Sunset_Time_start changed from NULL to 2020-05-09T20:05:00.000+0200
2020-05-09 21:33:46.815 [vent.ItemStateChangedEvent] - Sunset_Time_end changed from NULL to 2020-05-09T22:09:00.000+0200
2020-05-10 05:51:00.004 [vent.ChannelTriggeredEvent] - astro:sun:home:rise#event triggered START
2020-05-10 05:51:00.013 [vent.ChannelTriggeredEvent] - astro:sun:home:civilDawn#event triggered END
2020-05-10 05:51:00.706 [ome.event.ItemCommandEvent] - Item 'Terrassendach' received command ON
2020-05-10 05:51:00.721 [ome.event.ItemCommandEvent] - Item 'Gartenlicht' received command ON
2020-05-10 05:51:00.723 [nt.ItemStatePredictedEvent] - Terrassendach predicted to become ON
2020-05-10 05:51:00.737 [ome.event.ItemCommandEvent] - Item 'SteckdoseVorgarten' received command ON
2020-05-10 05:51:00.748 [nt.ItemStatePredictedEvent] - Gartenlicht predicted to become ON
2020-05-10 05:51:00.756 [nt.ItemStatePredictedEvent] - SteckdoseVorgarten predicted to become ON
2020-05-10 05:51:00.765 [vent.ItemStateChangedEvent] - Terrassendach changed from OFF to ON
2020-05-10 05:51:00.767 [vent.ItemStateChangedEvent] - Gartenlicht changed from OFF to ON
2020-05-10 05:51:00.769 [vent.ItemStateChangedEvent] - SteckdoseVorgarten changed from NULL to ON
2020-05-10 05:55:00.005 [vent.ChannelTriggeredEvent] - astro:sun:home:rise#event triggered END
2020-05-10 05:55:00.008 [vent.ChannelTriggeredEvent] - astro:sun:home:daylight#event triggered START
2020-05-10 05:55:00.030 [ome.event.ItemCommandEvent] - Item 'Terrassendach' received command OFF
2020-05-10 05:55:00.045 [ome.event.ItemCommandEvent] - Item 'Gartenlicht' received command OFF
2020-05-10 05:55:00.050 [nt.ItemStatePredictedEvent] - Terrassendach predicted to become OFF
2020-05-10 05:55:00.066 [ome.event.ItemCommandEvent] - Item 'SteckdoseVorgarten' received command OFF
2020-05-10 05:55:00.081 [nt.ItemStatePredictedEvent] - Gartenlicht predicted to become OFF
2020-05-10 05:55:00.094 [nt.ItemStatePredictedEvent] - SteckdoseVorgarten predicted to become OFF
2020-05-10 05:55:00.106 [vent.ItemStateChangedEvent] - Terrassendach changed from ON to OFF
2020-05-10 05:55:00.109 [vent.ItemStateChangedEvent] - Gartenlicht changed from ON to OFF
2020-05-10 05:55:00.112 [vent.ItemStateChangedEvent] - SteckdoseVorgarten changed from ON to OFF
sunmoon.things

Code: Alles auswählen

astro:sun:home [ geolocation="51.2041968,6.6879511,100", interval=10 ] 
{
Channels:
        Type start :        rise#start    [offset=-60]
        Type end :          rise#end      [offset=60]
        Type start :        set#start     [offset=-60]
        Type end :          set#end       [offset=60]
        Type rangeEvent :   rise#event    []
        Type rangeEvent :   set#event     []
}
sunmoon.rules

Code: Alles auswählen

rule "Gartenlicht abends an"
when
    Channel 'astro:sun:home:set#event' triggered START
then
Terrassendach.sendCommand(ON)
Gartenlicht.sendCommand(ON)
SteckdoseVorgarten.sendCommand(ON)
end

rule "Gartenlicht abends aus"
when
    Channel 'astro:sun:home:set#event' triggered END
then
Terrassendach.sendCommand(OFF)
Gartenlicht.sendCommand(OFF)
SteckdoseVorgarten.sendCommand(OFF)
end

rule "Gartenlicht morgens an"
when
    Channel 'astro:sun:home:rise#event' triggered START
then
Terrassendach.sendCommand(ON)
Gartenlicht.sendCommand(ON)
SteckdoseVorgarten.sendCommand(ON)
end

rule "Gartenlicht abends aus"
when
    Channel 'astro:sun:home:rise#event' triggered END
then
Terrassendach.sendCommand(OFF)
Gartenlicht.sendCommand(OFF)
SteckdoseVorgarten.sendCommand(OFF)
end

int5749
Beiträge: 1173
Registriert: 4. Nov 2019 22:08
Answers: 9

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von int5749 »

udo1toni hat geschrieben: 9. Mai 2020 15:05 Der kleine Wermutstropfen: Die Textversion sieht dann komplett anders aus.
Jetzt machst Du mir Angst, wo ich mich so bemühe alles über Text-Dateien zu konfigrieren. Wird denn ein BAckup der wichtigsten Dateien möglich sein, ohne direkt den ganzen Ordner zu sichern? Und so konnte man wenigstens mal eben eine Rule etc. teilen. Da bin ich mal gespannt, wie der Upgrade Pfad funktionieren wird. Alles neu, oder kann ich meine OH2 migrieren?
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von udo1toni »

soulid hat geschrieben: 10. Mai 2020 06:41 Moin,
nun habe Openhab soweit das die Gartenlichter aufgrund vom Astro binding angehen...leider aber ohne Berücksichtigung der Offsets im der sunmoon.things.
Welcher offset? Du musst den Offset schon im rangeEvent Channel definieren, denn auf diesen triggerst Du ja.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

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

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von udo1toni »

int5749 hat geschrieben: 10. Mai 2020 10:23 Jetzt machst Du mir Angst, wo ich mich so bemühe alles über Text-Dateien zu konfigrieren.
Hihi...
Wird denn ein BAckup der wichtigsten Dateien möglich sein, ohne direkt den ganzen Ordner zu sichern?
Du musst Stand heute auch ganze Ordner sichern, um alle wichtigen Einstellungen zu sichern. openHAB übernimmt das gerne für Dich (openhab-cli backup)
Und so konnte man wenigstens mal eben eine Rule etc. teilen. Da bin ich mal gespannt, wie der Upgrade Pfad funktionieren wird. Alles neu, oder kann ich meine OH2 migrieren?
Tja, das ist die spannende Frage, zumal die Textdateien momentan auch immer beim Start eingelesen werden und nicht in der JSON-Datenbank im Dateisystem gespeichert werden. Was aber sicher geht, ist ein Konvertieren nach JSON: openHAB starten, über REST-API den betreffenden Zweig auslesen und in eine Datei speichern, openHAB beenden und *.things sowie *.items entfernen, openHAB wieder starten und über REST API den Zweig aus der Datei einlesen, fertig (an dieser Stelle speichert openHAB dann nämlich ins Dateisystem, weil der Zweig ja nicht als *.things oder *.items vorliegt).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

soulid
Beiträge: 73
Registriert: 24. Feb 2020 20:32
Answers: 0

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von soulid »

udo1toni hat geschrieben: 10. Mai 2020 12:59
soulid hat geschrieben: 10. Mai 2020 06:41 Moin,
nun habe Openhab soweit das die Gartenlichter aufgrund vom Astro binding angehen...leider aber ohne Berücksichtigung der Offsets im der sunmoon.things.
Welcher offset? Du musst den Offset schon im rangeEvent Channel definieren, denn auf diesen triggerst Du ja.
Öhem- dann hab ich hier was grundsätzlich nicht verstanden:
1) Die zeitliche Definition wird im channel rise#start definiert- inklusive Offset. Das steht so zumindest in der Doku...
2) Der Event übernimmt diese START bzw END Werte mit den Offstes und macht daraus einen triggerbaren Event- denn kann ich zwar auch mit einem Offset versehen. Das hilft mir aber nicht bei der Dauer. Deswegen ja die zeitliche Offset definition im channel #start bzw #end
3) Wenn ich jetzt einen Event Offset mache...wie bekomme ich dann die längere Dauer hin?

Benutzeravatar
peter-pan
Beiträge: 2758
Registriert: 28. Nov 2018 12:03
Answers: 30
Wohnort: Schwäbisch Gmünd

Re: Astro binding aktualisiert thing offset nicht automatisch

Beitrag von peter-pan »

soulid hat geschrieben: 10. Mai 2020 15:36 Öhem- dann hab ich hier was grundsätzlich nicht verstanden:
Das denke ich auch. Das Astro-Binding hat grundsätzlich zwei verschiedene Channel-Typen,

Der erste Typ (ich nenn ihn mal Anzeige-Typ) ist dazu da um dir bestimmte Ereignisse anzuzeigen/abzufragen. (Sonnuntergang, Mondentfernung, etc).
Der zweite Typ(Event-Channel) ist dazu da um bei einem bestimmten Ereignis eine Rule zu triggern bzw. aufzurufen.

Das heisst, du musst den Event mit dem Offset explizit definieren. Es genügt also nicht, das Ereignis abzufragen, du musst auch den dazugehörigen Event-Trigger setzen. Ein weiterer Unterschied, der Anzeige-Channel braucht ein Item um es anzuzeigen. Der Event-Channel braucht kein Item.
Hier mal als Beispiel, meine astro.things-Datei

Code: Alles auswählen

Thing astro:sun:local     "Sonnen Daten"    [geolocation="12.34567,1.23456,502", interval=300]
Thing astro:moon:local    "Mond Daten"      [geolocation="12.34567,1.23456,502", interval=300]
                                        

Thing astro:sun:minus90   "Offset -90"      [geolocation="12.34567,1.23456,502", interval=300]{
  Channels:
    Type rangeEvent : set#event [
      offset=-90
    ]
    Type start : set#start [
      offset=-90
    ]
    Type end : set#end [
      offset=-90
    ]
  }

Thing astro:sun:stowing   "Offset -Test"     [geolocation="12.34567,1.23456,502", interval=300]{
  Channels:
    Type rangeEvent : set#event [
      offset=-180,
      earliest="19:40"
    ]
    Type rangeEvent : night#event [
      offset=-180
    ]
  }
Thing astro:sun:stowing1   "Offset 20"     [geolocation="12.34567,1.23456,502", interval=300]{
  Channels:
    Type rangeEvent : noon#event [
      offset=230
    ]
    Type start : noon#start [
      offset=230
    ]
    Type rangeEvent : set#event [
      offset=20,
      earliest="20:10"
    ]
    Type rangeEvent : night#event [
      offset=20
    ]
    Type start : rise#start [
      offset=20,
     earliest="09:00"
    ]
    Type end : rise#end [
      offset=20
    ]
    Type start : set#start [
      offset=20,
      earliest="21:10"
    ]
    Type end : set#end [
      offset=10,
      latest="21:50"
    ]
      Type rangeEvent : civilDusk#event [
      offset=-180
    ]
    Type start : civilDusk#start [
      offset=-180
    ]
}
  Thing astro:sun:stowing2   "Offset -90"     [geolocation="12.34567,1.23456,502", interval=300]{
  Channels:
    Type rangeEvent : set#event [
      offset=-90
    ]
    Type start : set#start [
      offset=-90
    ]
    Type end : set#end [
      offset=-90
    ]
    Type rangeEvent : night#event [
      offset=-90
    ]
    Type rangeEvent : noon#event [
      offset=-90
    ]
    Type start : noon#start [
      offset=-90
    ]
}
  Thing astro:sun:stowing3   "Offset -30"     [geolocation="12.34567,1.23456,502", interval=300]{
  Channels:
    Type rangeEvent : set#event [
      offset=-30
    ]
      Type rangeEvent : astroDusk#event [
      offset=30
    ]
    Type start : set#start [
      offset=-30
    ]
    Type end : set#end [
      offset=-30
    ]
    Type rangeEvent : night#event [
      offset=-30
    ]
    Type rangeEvent : noon#event [
      offset=32
    ]
    Type start : noon#start [
      offset=30
    ]
      Type rangeEvent : rise#event [
      offset=80
    ]
    Type start : rise#start [
      offset=80
    ]
}

und die dazugehörigen Rules:

Code: Alles auswählen

/*===============================================================================
|                           Begin Astro Rules                                   |
=================================================================================*/
//===============================================================================

rule "Moonrise Start"
    when
        Channel 'astro:moon:local:rise#event' triggered START
    then
        logInfo("astro-rules" + '_01'," Der Mond geht auf. START ")
        //Sonoff_Basic_03.sendCommand(ON)
end
//===============================================================================
rule "Moonset Ende"
    when
        Channel 'astro:moon:local:set#event' triggered END
    then
        logInfo("astro-rules" + '_02'," Der Mond geht unter. END")
        //Sonoff_Basic_03.sendCommand(ON)
end
//===============================================================================
rule "Sunset_180 Start"
    when
            Channel 'astro:sun:stowing:set#event' triggered START
    then
        logInfo("astro-rules" + '_03', " Sunset_180 Start. START")
        //EG_EG_Kind2_Licht.sendCommand(ON)
end
//===============================================================================
rule "Sunset_180 Ende"
    when
            Channel 'astro:sun:stowing:set#event' triggered END
    then
        logInfo("astro-rules" + '_04', " Sunset_180 Ende. END")
        //EG_EG_Kind2_Licht.sendCommand(ON)
end

//===============================================================================
rule "Sunrise Start"
    when
            Channel 'astro:sun:local:rise#event' triggered START
    then
        logInfo("astro-rules" + '_05', " Sunrise START ")
        //EG_EG_Kind2_Licht.sendCommand(ON)
end

//===============================================================================
rule "Mittag Start"
    when
        Channel 'astro:sun:local:noon#event' triggered START
    then
        logInfo("astro-rules" + '_06', " Mittag - noon. START")
        //Sonoff_Basic_03.sendCommand(ON)
end
//===============================================================================
rule "Civil Dusk Start"
    when
        Channel 'astro:sun:local:civilDusk#event' triggered START
    then
        logInfo("astro-rules" + '_07', " Civil Dusk START")
        //EG_EG_Kind2_Licht.sendCommand(ON)
        
end
//===============================================================================
rule "Civil Dusk Ende"
    when
        Channel 'astro:sun:local:civilDusk#event' triggered END
    then
        logInfo("astro-rules" + '_08'," Civil Dusk END")
        //Sonoff_Basic_03.sendCommand(ON)
end
//===============================================================================
rule "Nautik Dusk Start"
    when
        Channel 'astro:sun:local:nauticDusk#event' triggered START
    then
        logInfo("astro-rules" + '_09'," Nautik Dusk Start. START")
        //Sonoff_Basic_03.sendCommand(ON)
end

//===============================================================================
rule "Nautik Dusk Ende"
    when
        Channel 'astro:sun:local:nauticDusk#event' triggered END
    then
        logInfo("astro-rules" + '_10'," Nautik Dusk Ende. END")
        //Sonoff_Basic_03.sendCommand(ON)
end
//===============================================================================
rule "Morning Night Start"
when
        Channel 'astro:sun:local:morningNight#event' triggered START
    then
        logInfo("astro-rules" + '_11'," Morning Night Start. START")
        //Sonoff_Basic_03.sendCommand(ON)
end
//===============================================================================
rule "Morning Night Ende"
    when
        Channel 'astro:sun:local:morningNight#event' triggered END
    then
        logInfo("astro-rules" + '_12'," MorningNight END")
        //EG_EG_Kind2_Licht.sendCommand(ON)
end
//===============================================================================
rule "Sunset Start"
    when
        Channel 'astro:sun:local:set#event' triggered START
    then
        logInfo("astro-rules" + '_13'," Sunset Start. START")
        //Sonoff_Basic_03.sendCommand(ON)
end

//===============================================================================
rule "Sunset Ende"
    when
        Channel 'astro:sun:local:set#event' triggered END
    then
        logInfo("astro-rules" + '_14'," Sunset Ende. END")
        //Sonoff_Basic_03.sendCommand(ON)
end

//===============================================================================
rule "Tagesphase"
    when
        Item Day_Phase changed
    then
        logInfo("astro-rules" + '_30'," Tagesphase " + Day_Phase)
        //Sonoff_Basic_03.sendCommand(ON)
end
//===============================================================================
rule "Stowing1_Noon20_Event Test"
    when
            Channel 'astro:sun:stowing1:noon#event' triggered START
    then
        logInfo("astro-rules" + '_Test', " Noon_20 Event. START")
        //EG_EG_Kind2_Licht.sendCommand(ON)
end
//===============================================================================
rule "Stowing1_Set20_Start Test"
    when
            Channel 'astro:sun:stowing1:set#event' triggered START
    then
        logInfo("astro-rules" + '_Test', " Set_20 Event. START")
        //EG_EG_Kind2_Licht.sendCommand(ON)
end
/*===============================================================================
|                           End Astro Rules                                 |
=================================================================================*/
Ich nutze die zwar nicht alle, bzw. so gut wie keine mehr, aber ich habe damit viel rum experimentiert.

Du siehst in der .things-Datei, dass hier mehrere Things für Sonne und Mond definiert sind. Die ersten beiden sind die ganz normalen (ohne Offset)
Die anderen Things sind dann wieder speziell mit Offsets zur Verschiebung eines Trigger-Events.

Viel Spass beim Testen. ;)
Pi5/8GB(PiOS Lite 64-bit(bookworm)/SSD 120GB - OH4.3.5 openhabian

Antworten