Member of Grupp und last seen /Last update

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
boing86
Beiträge: 10
Registriert: 20. Nov 2020 09:19
Answers: 0

Member of Grupp und last seen /Last update

Beitrag von boing86 »

Hallo Zusammen

Ich habe vor viele Rules die das selbe machen, in eine Rule zu verwandeln mit variablen, anstelle itemname mit variablen.
Ein teil habe ich schon geschafft aber der letzte teil möchte nicht gehen. Das Lastupdate beschäftigt mich noch.

Idee:

Irgendein Schalter in der Gruppe Spricht an
--> log info Welcher Schalter (danach telegram aber loginfo ist besser zum debugen)
--> Setzt XX_LastUpdate die Aktuelle zeit
--> setzt XX_LastUpdateHB auf on

Im Prinzip geht es, aber die Vielen If möchte ich auch noch eliminieren. Da die Regel so auch noch angepasst werden muss wenn weitere Schalter hinzugefügt werden.

Wo ich noch an stehe ist:
Der zusammen gebaute String (ich vermute es ist ein String da postUpdate(LastUpdateHB,"ON") die "" benötigt ) akzeptiert die aktuelle Zeit nicht.
Ich vermute es ist ein Konvertierung Problem. Da stehe ich aktuell auf dem Schlauch.

Die Seiten https://community.openhab.org/t/datetim ... 3-x/107197 und https://community.openhab.org/t/datetim ... -2-x/54266 und diverse suchmaschinen stunden haben mich noch nicht auf die richtige variante gemacht.

Vielleicht weiss jemand von euch wie das optimal geht.


System / Version:
Als Tests System benutze ich
  • Windows 10
  • Openhab 3.0.2
  • docker für openhablog files



sitemap

Code: Alles auswählen

sitemap default label="Test" {
	Frame label="TestGruppe" 
    {
        Switch item=TestGruppe
        Switch item=Bli1
        Switch item=Bli2
        Switch item=Bli3
    }
	Frame label="Letztes update" 
    {
        Text item=Bli1_LastUpdate valuecolor=[>30="red",>10="orange",<=10="green"]
        Switch item=Bli1_LastUpdateHB
        Text item=Bli2_LastUpdate valuecolor=[>30="red",>10="orange",<=10="green"]
        Switch item=Bli2_LastUpdateHB
        Text item=Bli3_LastUpdate valuecolor=[>30="red",>10="orange",<=10="green"]
        Switch item=Bli3_LastUpdateHB
    }
	Frame label="Info" 
    {
        Text item=info_text
    }
}

items

Code: Alles auswählen

Group:Switch    TestGruppe           "Gruppe Bli "
Group:Switch    LastUpdateHB         "Last Update HB"

// Schalter 
Switch          Bli1                 "Bli 1 "                                                       (TestGruppe)
Switch          Bli2                 "Bli 2 "                                                       (TestGruppe)
Switch          Bli3                 "Bli 3 "                                                       (TestGruppe)

String          info_text            "[%S]"

//Letztes Mal updatet
DateTime        Bli1_LastUpdate      "Bli1 Last seen [%1$tY-%1$tm %1$tH:%1$tM:%1$tS]"    <time>
DateTime        Bli2_LastUpdate      "Bli2 Last seen [%1$tY-%1$tm %1$tH:%1$tM:%1$tS]"    <time>
DateTime        Bli3_LastUpdate      "Bli3 Last seen [%1$tY-%1$tm %1$tH:%1$tM:%1$tS]"    <time>

//wenn expire Zeit abgelaufen ist aktion ausführen
Switch          Bli1_LastUpdateHB    "Bli1 LastUpdateHB [%s]"                                       (LastUpdateHB)    {expire="5s,command=OFF"}
Switch          Bli2_LastUpdateHB    "Bli2 LastUpdateHB [%s]"                                       (LastUpdateHB)    {expire="5s,command=OFF"}
Switch          Bli3_LastUpdateHB    "Bli3 LastUpdateHB [%s]"                                       (LastUpdateHB)    {expire="5s,command=OFF"}

rules
Zeile 30 und 31

Code: Alles auswählen

//https://community.openhab.org/t/group-rules-trigger/38512
rule "Member pressed"
  when
   //https://www.openhab.org/docs/configuration/rules-dsl.html#member-of-triggers
    Member of TestGruppe received update
  then
    // give persistence time to catch up
    Thread::sleep(500)

    // persistence MapDB installieren
    val status = TestGruppe.members.filter[s|s.lastUpdate("mapdb") !==null].sortBy[lastUpdate("mapdb")].last as SwitchItem
    val Werwares   = status.name.toString

    //Antelle loginfo Telegram  
    logInfo("GroupTest", "Item "+ Werwares +" wechsel auf " + status.state )
    
    info_text.sendCommand( Werwares +"  wechsel auf " + status.state)
    

    //Zu letzt gesehen

    if (Werwares=="Bli1") { postUpdate(Bli1_LastUpdate, new DateTimeType()) postUpdate(Bli1_LastUpdateHB,ON) }
    if (Werwares=="Bli2") { postUpdate(Bli2_LastUpdate, new DateTimeType()) postUpdate(Bli2_LastUpdateHB,ON) }
    if (Werwares=="Bli3") { postUpdate(Bli3_LastUpdate, new DateTimeType()) postUpdate(Bli3_LastUpdateHB,ON) }

    // vereinfachung Versuche Item Name zu generienren
    val LastUpdate = triggeringItem.name +"_LastUpdate" 
    val LastUpdateHB = triggeringItem.name +"_LastUpdateHB" 
    logInfo("GroupTest", LastUpdate + " / " + LastUpdateHB )
    //postUpdate(LastUpdate, new DateTimeType()) 
    postUpdate(LastUpdateHB,"ON")

    //oder
    val LastUpdate1 = Werwares +"_LastUpdate" 
    val LastUpdateHB1 = Werwares +"_LastUpdateHB" 
    logInfo("GroupTest", LastUpdate1 + " / " + LastUpdateHB1 )
    //postUpdate(LastUpdate1, new DateTimeType()) 
    //postUpdate(LastUpdateHB1,"ON")    



    
end


rule "Zeitvergleich"
  when
    Member of LastUpdateHB received update
  then
    // give persistence time to catch up
    Thread::sleep(500)

    // persistence MapDB Persistence
    val zeitstatus = LastUpdateHB.members.filter[s|s.lastUpdate("mapdb") !==null].sortBy[lastUpdate("mapdb")].last as SwitchItem
    val zeitWerwares   = zeitstatus.name.toString
    //ein ein HB heartbeat kanal auf Off geht kam keine update mehr
    if (zeitstatus.state==OFF)
    {
      //Info Logfile das update nicht mehr kommt
      logInfo("GroupTest", "Letztes Update von "+ zeitWerwares +" ist älter als LastUpdateHB definirt ")
    }

end
openHAB 4.2.2 Ubuntu Server VM (Live System)
openHAB 3 (übersprungen)
openHAB 2.5.12 unraid Docker (nicht mehr in betriebt )
openHAB 1.8 / 2 synology spk (nicht mehr in betrieb)

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

Re: Member of Grupp und last seen /Last update

Beitrag von udo1toni »

Welche Version von openHAB nutzt Du?

In openHAB3 gibt es für solche Zeitstempel eine eingebaute Funktion, die findest Du in den Metadaten. Bei jedem Schreibzugriff auf den Channel wird das verlinkte DateTime Item automatisch mit dem aktuellen Zeitstempel befüllt. Geht komplett ohne Rule.


Gesendet von iPad mit Tapatalk
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
boing86
Beiträge: 10
Registriert: 20. Nov 2020 09:19
Answers: 0

Re: Member of Grupp und last seen /Last update

Beitrag von boing86 »

Aktuell verwende ich noch 2.5.12

Bin aber daran nach 3.0.2 zu migrieren, aber das dauert ein wenig da ich die Übersicht über meine chaotische Namens Vergebung verloren habe (zum teil Altlasten von 1.8 ).

Das mit den Metadaten schaue ich mir noch an, ich hoffe das geht auch noch via die .items dateien. :)
openHAB 4.2.2 Ubuntu Server VM (Live System)
openHAB 3 (übersprungen)
openHAB 2.5.12 unraid Docker (nicht mehr in betriebt )
openHAB 1.8 / 2 synology spk (nicht mehr in betrieb)

Benutzeravatar
boing86
Beiträge: 10
Registriert: 20. Nov 2020 09:19
Answers: 0

Re: Member of Grupp und last seen /Last update

Beitrag von boing86 »

Der Hinweis mit den Metadaten brachte mich auf die richtigen Suchwörter bei den Suchmaschinen.

Ich wollte das ganze openHAB 2.5 und openHAB 3 tauglich machen.
Aber das habe ich nicht geschaft, das man die Dateien 1 zu 1 rüber kopieren kann.

Ein erste Stolperstein war. Nur Items mit Things können Metadaten haben.
Ohne eine Thing Verknüpfung habe ich es nicht hingekriegt.

In der Rule Datei muss ich Jetzt nur noch hin und herschalten je nach openHAB Version.
Gibt es dafür evtl. noch eine bessere Lösung?

Getestet habe ich es auf
  • Windows 10 21H1 /openHAB 2.5.12
  • Windows 10 21H1 /openHAB 3.0.2
sitemap

Code: Alles auswählen

sitemap default label="Test" {
		
    Frame label="MQTT"
    {	
        Text item=Bewesserung_Temp	valuecolor=[>30="red",>25="orange",>18="green",>10="orange",<5="red"]
        Text item=Bewesserung_Temp_Timestamp  valuecolor=[>240="red",>120="orange",<=120="green"]
        Text item=Bewesserung_feuchte  valuecolor=[>240="red",>120="orange",<=120="green"]
        Text item=Bewesserung_feuchte_Timestamp valuecolor=[>60="red",>30="orange",<=30="green"]
        Text item=Bewesserung_GET
        Text item=Bewesserung_GET_Timestamp valuecolor=[>240="red",>120="orange",<=120="green"]
        Switch item=Bewesserung_SET
    }

    Frame label="Shelly"
    {
        Switch item=Bewesserung
        Text item=Bewesserung_Timestamp  valuecolor=[>240="red",>120="orange",<=120="green"]
    }
    Frame label="Zigbee"
    {
        Default item=Multi01Temp    valuecolor=[>30="red",>25="orange",>14="green",<14="orange",<=8="red"]
        Text item=Multi01Temp_Timestamp  valuecolor=[>240="red",>120="orange",<=120="green"]
        Default item=Multi01feuchte valuecolor=[>60="red",>30="orange",<=30="green"]
        Text item=Multi01feuchte_Timestamp  valuecolor=[>240="red",>120="orange",<=120="green"]
        Default item=Multi01druck
        Text item=Multi01druck_Timestamp  valuecolor=[>240="red",>120="orange",<=120="green"]
        Default item=Multi01batt    valuecolor=[>25="green",<20="orange",<15="red"]
        Text item=Multi01batt_Timestamp  valuecolor=[>240="red",>120="orange",<=120="green"]
    } 
}

items

Code: Alles auswählen


//*** Gruppen ***  
Group                   LastUpdateHB

//*** MQTT ***  
Number                  Bewesserung_Temp                 "DHT22 Temperatur [%.1f °C]"                                           <temperature>                      {channel="mqtt:topic:Local:Bewesserung:Temperatur5"}
DateTime                Bewesserung_Temp_Timestamp       "DHT22 Temperatur Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                      (LastUpdateHB)    {channel="mqtt:topic:Local:Bewesserung:Temperatur5" [profile="timestamp-update"]}
Number                  Bewesserung_feuchte              "DHT22 Luftfeuchte [%.0f %%]"                                          <humidity>                         {channel="mqtt:topic:Local:Bewesserung:feuchte5"}
DateTime                Bewesserung_feuchte_Timestamp    "DHT22 Luftfeuchte Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                     (LastUpdateHB)    {channel="mqtt:topic:Local:Bewesserung:feuchte5" [profile="timestamp-update"]}
Switch                  Bewesserung_GET                  "Relais "                                                                                                 {channel="mqtt:topic:Local:Bewesserung:GPIOGet"}
DateTime                Bewesserung_GET_Timestamp        "GET Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                                   (LastUpdateHB)    {channel="mqtt:topic:Local:Bewesserung:GPIOGet" [profile="timestamp-update"]}
Switch                  Bewesserung_SET                  "Ein Aus "
//--------------------------------------------


//*** Shelly  ***  
Switch                  Bewesserung                      "Bewässerung"                                                          <water>                            {channel="shelly:shelly1:181:relay#output"}
DateTime                Bewesserung_Timestamp            "Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                                       (LastUpdateHB)    {channel="shelly:shelly1:181:relay#output" [profile="timestamp-update"]}
//--------------------------------------------


//*** Zigbee  *** 
Number:Temperature      Multi01Temp                      "MS Temp [%.1f °C]"                                                    <temperature>                      {channel="deconz:temperaturesensor:teflatron:Multisensor01temp:temperature"}
DateTime                Multi01Temp_Timestamp            "Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                                       (LastUpdateHB)    {channel="deconz:temperaturesensor:teflatron:Multisensor01temp:temperature" [profile="timestamp-update"]}
Number:Dimensionless    Multi01feuchte                   "MS Luftfeuchte [%.0f %%]"                                             <humidity>                         {channel="deconz:humiditysensor:teflatron:Multisensor01humi:humidity"}
DateTime                Multi01feuchte_Timestamp         "Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                                       (LastUpdateHB)    {channel="deconz:humiditysensor:teflatron:Multisensor01humi:humidity" [profile="timestamp-update"]}
Number:Pressure         Multi01druck                     "MS Luftdruck [%s shPa]"                                               <pressure>                         {channel="deconz:pressuresensor:teflatron:Multisensor01press:pressure"}
DateTime                Multi01druck_Timestamp           "Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                                       (LastUpdateHB)    {channel="deconz:pressuresensor:teflatron:Multisensor01press:pressure" [profile="timestamp-update"]}
Number                  Multi01batt                      "MS Batterie [%s %%]"                                                  <battery>                          {channel="deconz:temperaturesensor:teflatron:Multisensor01temp:battery_level"}
DateTime                Multi01batt_Timestamp            "Timestamp [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"                                       (LastUpdateHB)    {channel="deconz:temperaturesensor:teflatron:Multisensor01temp:battery_level" [profile="timestamp-update"]}
//--------------------------------------------


rules

Code: Alles auswählen



rule "Zeitvergleich"
when 
	Time cron "0 0/1 * * * ?" // nur zum debugen alle Minuten
then
	LastUpdateHB.members.forEach [ 
      item | 
        val Date1 = new DateTime(( item.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
        
        //OH2.5
        var double diff = (now.millis - Date1.millis)
        //logInfo("Debug", "Letztes Update von " + item.name + " / " + Date1.millis  + " / " + now.millis + " / " + diff+" ms") 
       
        //OH3
        //var double diff = (now.toInstant().toEpochMilli() - Date1)
        //logInfo("Debug", "Letztes Update von " + item.name + " / " + Date1  + " / " + now.toInstant().toEpochMilli() + " / " + diff +" ms" ) 
        
        if (diff > 180000 ) // Differenz in millisekunden
          {
            var diffmin = ( diff / 60000).intValue
            //Info Log das update nicht mehr kommt oder Telegram / Mail .....
            logError("GroupTest", "Letztes Update von "+ item.name + " war am " + Date1 + " / "+ diffmin +" min" )
          }
      ]
end	
openHAB 4.2.2 Ubuntu Server VM (Live System)
openHAB 3 (übersprungen)
openHAB 2.5.12 unraid Docker (nicht mehr in betriebt )
openHAB 1.8 / 2 synology spk (nicht mehr in betrieb)

Benutzeravatar
boing86
Beiträge: 10
Registriert: 20. Nov 2020 09:19
Answers: 0

Re: Member of Grupp und last seen /Last update

Beitrag von boing86 »

Hallo

Ich bin am Migrieren auf openHAB 4.0.1 und bleibe aktuell an dieser Thematik hängen.

Der Fehler im Log bringt mich leider nicht weiter.

Code: Alles auswählen

==> /var/log/openhab/openhab.log <==

2023-08-08 20:51:35.197 [ERROR] [internal.handler.ScriptActionHandler] - Script execution of rule with UID 'lastupdate-1' failed: null in lastupdate
Wenn ich die Gruppe anschaue hat jedes Mitglied dieser Gruppe einen Wert. (Gruppe im sitemap dargestellt oder via VS code hover)
im VS code hover sehe ich nur das Gruppen Item den Wert NULL hat.
Lastupdate.jpg
Ich habe versucht die Gruppe anders zu definieren aber das hat nicht auch nicht weiter gebracht.

Code: Alles auswählen

Group:DateTime:EARLIEST       LastUpdateHB_schalter"Latest Update [%1$tY.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"
Group:DateTime:LATEST         LastUpdateHB_schalter"Last Seen [%1$tY.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]"
-->https://www.openhab.org/docs/configurat ... tml#groups
Diese zwei varianten ergeben zwar das Grppen Item nicht mehr den Wert NULL hat, aber die Log Meldung ist immer noch dieselbe.


Soweit verstehe ich die log Meldung in der Rule datei lastupdate hat die Regel 1 den Fehler.

Die Rule datei sieht aktuell so aus.

Code: Alles auswählen

rule "Zeitvergleich Schalter"
when 
	  Item TEST_schalter changed // nur zum debugen  
  	//Time cron "0 0 18 * * ?" //um 18:00
then

	LastUpdateHB_schalter.members.forEach [ item | 
        val Date1 = new DateTime(( item.state as DateTimeType).zonedDateTime.toInstant.toEpochMilli)
        

        var double diff = (now.toInstant().toEpochMilli() - Date1)
        logInfo("Debug", "Letztes Update von " + item.name + " / " + Date1  + " / " + now.toInstant().toEpochMilli() + " / " + diff +" ms" ) 
        
        if (diff > 172800000 ) // (48h) Differenz in millisekunden
          {
            var diffmin = ( diff / 60000).intValue
            //Info Log das update nicht mehr kommt 
            logError("GroupTest", "Letztes Update von "+ item.name + " war am " + Date1 + " / "+ diffmin +" min" )
          }
      ]
end  
Es ist bestimmt wieder nur was kleines.

Gruss Stefan
Du hast keine ausreichende Berechtigung, um die Dateianhänge dieses Beitrags anzusehen.
openHAB 4.2.2 Ubuntu Server VM (Live System)
openHAB 3 (übersprungen)
openHAB 2.5.12 unraid Docker (nicht mehr in betriebt )
openHAB 1.8 / 2 synology spk (nicht mehr in betrieb)

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

Re: Member of Grupp und last seen /Last update

Beitrag von udo1toni »

Grundsätzlich ist das Rechnen mit Datumswerten immer etwas aufwändiger und im Zweifel muss man höllisch auf die verwendeten Datentypen achten.

Z.B. in Deiner Rule: double -> das ist ein Primitive. Extrem gefährlich, weil es keinerlei automatisch Konvertierung gibt.
Date1 ist vom Typ DateTime, ob man das einfach so mit einem Long Wert verrechnen kann (.toEpochMill ist vom Typ Long) vermag ich nicht zu sagen, aber schon an dieser Stelle kann es gehörig schief gehen.

Der "bessere" Weg für das Problem ist die Persistence. Du vergisst Deine Items mit den Zeitstempeln :) und nutzt folgende Rule:

Code: Alles auswählen

rule "Zeitvergleich Schalter"
when
    Item TEST_schalter changed                // nur zum debugen  
  //Time cron "0 0 18 * * ?"                  // um 18:00
then
    gMonitored.members.filter[i|!i.updatedSince(now.minusDays(2))].forEach[j |
        logWarn("timecheck","Item {} seit {} ohne Update!",j.name, j.lastUpdate)
    ]
end
Voraussetzungen: alle Items, die überwacht werden sollen, müssen Member der Gruppe gMonitored sein.Alle Member der Gruppe gMonitored werden über die Default Persistence mit everyUpdate persistiert.

Wahlweise könnte man auch von der Default Persistence abweichen und gezielt eine andere Persistence nutzen, evtl. geht sogar mapDB (das wäre die schlankste Variante). Müsste man halt ausprobieren.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
boing86
Beiträge: 10
Registriert: 20. Nov 2020 09:19
Answers: 0

Re: Member of Grupp und last seen /Last update

Beitrag von boing86 »

Danke für die Erklärung.

Ich dachte ich könnte das einfach von Openhab 2.5 oder 3 nach 4 mit nehmen.

Diese Last update Rule und das ganze Persistence ist die letzten Baustellen danach kann ich Openhab 2.5 abschalten.
Aktuell ist noch nichts definiert(nichts installiert) da es bei der mysql neue Namen hat und die führende 0 wurde um eins erhöht.

Aber das mysql Problem weiss ich noch nicht wie angehen.
openHAB 4.2.2 Ubuntu Server VM (Live System)
openHAB 3 (übersprungen)
openHAB 2.5.12 unraid Docker (nicht mehr in betriebt )
openHAB 1.8 / 2 synology spk (nicht mehr in betrieb)

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

Re: Member of Grupp und last seen /Last update

Beitrag von udo1toni »

boing86 hat geschrieben: 16. Okt 2023 20:58 Ich dachte ich könnte das einfach von Openhab 2.5 oder 3 nach 4 mit nehmen.
Ja, aber nein. openHAB wird sehr intensiv weiterentwickelt, und gerade was Datum/Zeit betrifft, ist seit openHAB1 halt so einiges passiert,
denn:
openHAB1 lief unter Java6,
openHAB2 unter Java8,
openHAB3 unter Java11 und nun
openHAB4 unter Java17.
Sämtliche Java Versionen sind übrigens LongTerm, dennoch gab es die Versionssprünge, die auch leider nicht vermeidbar sind.
Unter Java6 gab es so etwas wie rechnen mit Datum/Zeit noch nicht, deshalb wurde eine externe Bibliothek für diesen Zweck eingebunden (Joda Time)
Mit Java8 wurde JavaTime eingeführt, womit Joda Time obsolet wurde. Der Übergang verlief dann aber "weich", weshalb man unter openHAB2 noch Joda Time benutzt hat. Aber selbst die Programmierer hinter Joda Time haben erklärt, dass man zukünftig die Standard Bibliothek von Oracle verwenden solle.

Welches Problem hast Du konkret mit MySQL?
Falls es um die Datenübernahme mit neuen Tabellennamen geht, ist es vermutlich der einfachste Weg, die Daten per Anfügeabfrage aus der alten Datenbank zu übernehmen. So habe ich das immer gemacht :) Ich nutze als Frontend HeidiSQL, geht aber genauso gut auch mit phpMyAdmin oder einem anderen Frontend, notfalls sogar über die MySQL CLI (wobei das halt schon arg spartanisch erscheint).
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Benutzeravatar
boing86
Beiträge: 10
Registriert: 20. Nov 2020 09:19
Answers: 0

Re: Member of Grupp und last seen /Last update

Beitrag von boing86 »

udo1toni hat geschrieben: 9. Aug 2023 10:25

Code: Alles auswählen

rule "Zeitvergleich Schalter"
when
    Item TEST_schalter changed                // nur zum debugen  
  //Time cron "0 0 18 * * ?"                  // um 18:00
then
    gMonitored.members.filter[i|!i.updatedSince(now.minusDays(2))].forEach[j |
        logWarn("timecheck","Item {} seit {} ohne Update!",j.name, j.lastUpdate)
    ]
end
Das hat Tipp Topp Funktioniert, wenn ich mapDB richtig verstanden habe speichert das nur einen Wert pro Item. Das wäre ja optimal.

Code: Alles auswählen

rule "Zeitvergleich Schalter"
when 
	 // Item TEST_schalter changed or// nur zum debugen  
    	Time cron "0 0 18 * * ?" //um 18:00
then

    LastUpdateHB_schalter.members.filter[i|!i.updatedSince(now.minusDays(2),"mapdb")].forEach[j |
        logWarn("timecheck","Item {} seit {} ohne Update!",j.name, j.lastUpdate)
        telegramAction.sendTelegram("***************************************\n" 
                        +"OH4 Timecheck Schalter\n"+j.name+" seit " +j.lastUpdate+" ohne Update!"
                        +"\n***************************************" 
               )
    ]

end 
openHAB 4.2.2 Ubuntu Server VM (Live System)
openHAB 3 (übersprungen)
openHAB 2.5.12 unraid Docker (nicht mehr in betriebt )
openHAB 1.8 / 2 synology spk (nicht mehr in betrieb)

Benutzeravatar
boing86
Beiträge: 10
Registriert: 20. Nov 2020 09:19
Answers: 0

Re: Member of Grupp und last seen /Last update

Beitrag von boing86 »

udo1toni hat geschrieben: 17. Okt 2023 00:18

Welches Problem hast Du konkret mit MySQL?
Falls es um die Datenübernahme mit neuen Tabellennamen geht, ist es vermutlich der einfachste Weg, die Daten per Anfügeabfrage aus der alten Datenbank zu übernehmen. So habe ich das immer gemacht :) Ich nutze als Frontend HeidiSQL, geht aber genauso gut auch mit phpMyAdmin oder einem anderen Frontend, notfalls sogar über die MySQL CLI (wobei das halt schon arg spartanisch erscheint).
Uff, so einige.
  • Die Synology ist langsam zu träge
  • Es sind zu viele alte Test Daten vorhanden
  • Viele Doppelte Items sind vorhanden
  • Die exportierte Datei ist zu gross um wieder zu importieren, konnte aber schon um 50% reduziert werden
Aber seit dem die lastupdate.rule funktioniert bin ich wieder motivierter das mit der DB zu untersuchen.
Es braucht nur Zeit und Konzentration.
openHAB 4.2.2 Ubuntu Server VM (Live System)
openHAB 3 (übersprungen)
openHAB 2.5.12 unraid Docker (nicht mehr in betriebt )
openHAB 1.8 / 2 synology spk (nicht mehr in betrieb)

Antworten