Seite 2 von 3

Re: Restart Switch für OpenHab

Verfasst: 31. Dez 2019 15:14
von djuscha
Hallo djuscha,
ich hab mich dem Thema wieder angenommen und mit Hilfe des Forum jetzt eine andere Lösung gefunden die jetzt läuft.
so hab ich mitlerweile bei mir drin inkl Systemdaten

system.rules

Code: Alles auswählen

 import java.lang.management.ManagementFactory
import java.time.ZonedDateTime
import java.time.Instant
import java.time.ZoneOffset



val formatDurationToText = [ Number millis |
	// http://stackoverflow.com/questions/13018550/time-since-ago-library-for-android-java
	val Number SECOND_MILLIS = 1000;
	val Number MINUTE_MILLIS = 60 * SECOND_MILLIS;
	val Number HOUR_MILLIS   = 60 * MINUTE_MILLIS;
	val Number DAY_MILLIS    = 24 * HOUR_MILLIS;

	var String tmp;
	if (millis < MINUTE_MILLIS) {
		tmp = "less than a minute";
	} else if (millis < 2 * MINUTE_MILLIS) {
		tmp = "couple of minutes";
	} else if (millis < 50 * MINUTE_MILLIS) {
		tmp = String::format("%.2f", millis / MINUTE_MILLIS) + " minutes";
	} else if (millis < 90 * MINUTE_MILLIS) {
		tmp = "an hour ago";
	} else if (millis < 24 * HOUR_MILLIS) {
		tmp = String::format("%.2f", millis / HOUR_MILLIS) + " hours";
	} else if (millis < 48 * HOUR_MILLIS) {
		tmp = "since yesterday";
	} else {
		tmp = String::format("%.1f", millis / DAY_MILLIS) + " Tage";
	}
	return tmp
]

rule "Openhab Uptime"
when
	Time cron "0/10 * * * * ?"
then
	val runtime = ManagementFactory::getRuntimeMXBean();
	val long startedMillis = runtime.getStartTime()
	if(Openhab_Started.state == NULL || Openhab_Started.state == UNDEF) {
		Openhab_Started.postUpdate(new DateTimeType(ZonedDateTime.ofInstant(Instant.ofEpochMilli(startedMillis), ZoneOffset.UTC)))
	}
	var uptimeAsText = formatDurationToText.apply(now.millis - startedMillis)
	postUpdate(Openhab_Uptime, uptimeAsText)
end



rule "CPU Uptime readable"
when
    Item CPU_Uptime changed or
	Time cron "0/10 * * * * ?"
then
	if(CPU_Uptime.state != NULL && CPU_Uptime.state != UNDEF) {
		// CPU_Uptime is in minutes, convert it to millis
		var cpuUptimeMillis = (CPU_Uptime.state as Number).longValue * 60 * 1000
		var uptimeAsText = formatDurationToText.apply(cpuUptimeMillis)
		postUpdate(CPU_Uptime_Text, uptimeAsText)
	} else {
		postUpdate(CPU_Uptime_Text, "-")
	}
end

systeminfo.items

Code: Alles auswählen

 String Network_IP                 "Netzwerk_IP"                              { channel="systeminfo:computer:openHABianPi:network#ip" }
String Network_Mac                "Netzwerk_MAC"                             { channel="systeminfo:computer:openHABianPi:network#mac" }
Number Network_DataSent           "Netzwerk_Daten_Gesendet"                  { channel="systeminfo:computer:openHABianPi:network#dataSent" }
Number Network_DataRecevied       "Netzwerk_Daten_Empfangen"                 { channel="systeminfo:computer:openHABianPi:network#dataReceived" }
Number Network_PacketsSent        "Netzwerk_Pakete_Gesendet"                 { channel="systeminfo:computer:openHABianPi:network#packetsSent" }
Number Network_PacketsRecevied    "Netzwerk_Pakete_Empfangen"                { channel="systeminfo:computer:openHABianPi:network#packetsReceived" }


/* CPU information*/
String CPU_Name                    "CPU_Name"                                { channel="systeminfo:computer:openHABianPi:cpu#name" }

Number CPU_Uptime                  "CPU_Betriebzeit"                         { channel="systeminfo:computer:openHABianPi:cpu#uptime" }


/* Drive information*/

String Drive_Model                  "Laufwerk_Modell"                        { channel="systeminfo:computer:openHABianPi:drive#model" }
String Drive_Serial                 "Laufwerk_Seriennummer"                  { channel="systeminfo:computer:openHABianPi:drive#serial" }

/* Storage information*/          
String Storage_Name                "Speicher_Name"                           { channel="systeminfo:computer:openHABianPi:storage#name" }
String Storage_Type                "Speicher_Typ"                            { channel="systeminfo:computer:openHABianPi:storage#type" }
String Storage_Description         "Speicher_Beschreibung"                   { channel="systeminfo:computer:openHABianPi:storage#description" }
Number Storage_Available           "Speicher_Verfuegbar"                     { channel="systeminfo:computer:openHABianPi:storage#available" }
Number Storage_Used                "Speicher_Verwendet"                      { channel="systeminfo:computer:openHABianPi:storage#used" }
Number Storage_Total               "Speicher_Total"                          { channel="systeminfo:computer:openHABianPi:storage#total" }
Number Storage_Available_Percent   "Speicher_Verfuegbar [%d %%]"             { channel="systeminfo:computer:openHABianPi:storage#availablePercent" }
Number Storage_Used_Percent        "Speicher_Verwendet[%d %%]"               { channel="systeminfo:computer:openHABianPi:storage#usedPercent" }

/* Memory information*/
Number Memory_Available            "RAM_Verfuegbar"                          { channel="systeminfo:computer:openHABianPi:memory#available" }
Number Memory_Used                 "RAM_Verwendet"                           { channel="systeminfo:computer:openHABianPi:memory#used" }
Number Memory_Total                "RAM_Total"                               { channel="systeminfo:computer:openHABianPi:memory#total" }
Number Memory_Available_Percent    "RAM_Verfuegbar [%d %%]"                  { channel="systeminfo:computer:openHABianPi:memory#availablePercent" }
Number Memory_Used_Percent         "RAM_Verwendet [%d %%]"                   { channel="systeminfo:computer:openHABianPi:memory#usedPercent" }

/* Swap memory information*/
Number Swap_Available              "Tauschspeicher_Verfuegbar"               { channel="systeminfo:computer:openHABianPi:swap#available" }
Number Swap_Used                   "Tauschspeicher_Verwendet"                { channel="systeminfo:computer:openHABianPi:swap#used" }
Number Swap_Total                  "Tauschspeicher_Total"                    { channel="systeminfo:computer:openHABianPi:swap#total" }
Number Swap_Available_Percent      "Tauschspeicher_Verfuegbar [%d %%]"       { channel="systeminfo:computer:openHABianPi:swap#availablePercent" }
Number Swap_Used_Percent           "Tauschspeicher_Verwendet [%d %%]"        { channel="systeminfo:computer:openHABianPi:swap#usedPercent" }


/* Sensors information*/
Number Sensor_CPUTemp             "CPU_Temperatur"                          { channel="systeminfo:computer:openHABianPi:sensors#cpuTemp" }
Number Sensor_CPUVoltage          "CPU_Spannung"                            { channel="systeminfo:computer:openHABianPi:sensors#cpuVoltage" }



DateTime Openhab_Started "openHAB started [%1$td.%1$tm.%1$tY %1$tH:%1$tM:%1$tS]" <status> 
String Openhab_Uptime "openHAB uptime [%s]"                                    <status> 

String CPU_Uptime_Text "Raspi uptime [%s]" <status>


sys.items

Code: Alles auswählen

  String OH2_Service  "OH2 Service"   { channel="exec:command:oh2service:input" }
String PI_Service   "PI Service"    { channel="exec:command:piservice:input" }
sitemap

Code: Alles auswählen

 Text label="SystemInfo" icon=status {
  
            Text label="Netzwerk Information" {
                
                Default item=Network_IP
                Default item=Network_Mac
                Default item=Network_DataSent
                Default item=Network_DataRecevied
                Default item=Network_PacketsSent
                Default item=Network_PacketsRecevied
            }
            
            Text label="CPU information" {
                 
                Default item=CPU_Load
                 
                Default item=CPU_Uptime
            }
            
            Text label="Laufwerk information" {
                 
                Default item=Drive_Model
                Default item=Drive_Serial
            }
            
            Text label="Speicher Information" {
                Default item=Storage_Name
                Default item=Storage_Type
                Default item=Storage_Description
                Default item=Storage_Available
                Default item=Storage_Used
                Default item=Storage_Total
                Default item=Storage_Available_Percent
                Default item=Storage_Used_Percent
            }
            
            Text label="RAM Information" {
                Default item=Memory_Available
                Default item=Memory_Used
                Default item=Memory_Total
                Default item=Memory_Available_Percent
                Default item=Memory_Used_Percent
            }
            
            Text label="Tauschspeicher Information" {
                Default item=Swap_Available
                Default item=Swap_Used
                Default item=Swap_Total
                Default item=Swap_Available_Percent
                Default item=Swap_Used_Percent
            }


                Default item=Sensor_CPUTemp
                Default item=CPU_Uptime
                //Default item=CPU_Load

                Default item=Openhab_Started
                Default item=Openhab_Uptime
                Default item=CPU_Uptime_Text
                
                Switch item=OH2_Service mappings=[restart="Restart" ]
                Switch item=PI_Service  mappings=[reboot="Reboot", shutdown="Shutdown"]
das mit Backupvon dir muss ich mir noch mal anschauen :)

Re: Restart Switch für OpenHab

Verfasst: 26. Mär 2020 14:50
von hsdneo
Hi,

ich muss den alten Thread einmal rauskramen. Bei mir läuft OpenHab mittlerweile unter Windows als Service und nicht mehr unter Linux. Ich suche nun die Möglichkeit per Schalter den Service neu zu starten.

Ich habe es schon so konfiguriert, dass mein OH nachts einmal rebootet wird, hätte aber kein per Item ebenfalls die Möglichkeit. Leider gelingt mir das noch nicht. Habt ihr eine Idee, wie ich das bewerkstelligen könnte?

Re: Restart Switch für OpenHab

Verfasst: 28. Mär 2020 12:47
von int5749
Hallo zusammen,

klingt nach einer interessanten Lösung! Wäre dies auch für Windows umsetzbar? Leider kenne ich dort die Befehle nicht :-/

VG
int5749

Re: Restart Switch für OpenHab

Verfasst: 28. Mär 2020 13:06
von PeterA
Schaut doch mal hier:

viewtopic.php?f=15&t=3073&p=15626#p15626

Logging Ein und Ausschaltbar über die UI.
Hier könnte man auch ein Script über die UI Starten welches den OpenHab Restart Befehl enthält.

Sehe auch hier:

https://smarthome-training.com/de/openh ... usfuehren/

Re: Restart Switch für OpenHab

Verfasst: 28. Mär 2020 13:13
von int5749
Hallo Peter,

besten Dank, aber dies ist ja auch für Linux, oder ist es dem exec Binding "egal" über welches OS es die Befehle erhält und die Ausführung ist unabhängig vom OS? Bevor ich damit "rumspiele" und meine Konfig verbasle, frage ich lieber zum verstehen ;-)

VG
int5749

Re: Restart Switch für OpenHab

Verfasst: 29. Mär 2020 22:44
von udo1toni
Das Exec Binding führt Befehle des OS aus, auf dem Java läuft. Wenn Du ein Linux laufen hast, kannst Du die dort verfügbaren Programme ausführen, unter Windows sind es die unter Windows verfügbaren Programme (incl. korrekter Pfadangaben).
Allerdings sollte openHAB (wenn Du nicht gerade etwas umkonfiguriert hast) eigentlich monate- oder gar jahrelang durchlaufen, ohne einen Neustart zu benötigen. Es gibt Installationen mit tausenden Items, ide sich so verhalten. Wenn das bei Dir anders ist, solltest Du lieber versuchen, die Fehler zu finden, statt an den Symptomen herumzudoktern.

Re: Restart Switch für OpenHab

Verfasst: 25. Sep 2020 23:16
von Tobii
Irgendwie funktioniert bei mir die Sitemap Datei nicht, leider finde ich den Fehler nicht. Klammern habe ich schon versucht.

Re: Restart Switch für OpenHab

Verfasst: 26. Sep 2020 06:31
von udo1toni
Tobii hat geschrieben: 25. Sep 2020 23:16 Irgendwie funktioniert bei mir die Sitemap Datei nicht, leider finde ich den Fehler nicht. Klammern habe ich schon versucht.
Irgendwie hat Dein Posting nichts mit dem Thread zu tun ;) Da aber ohnehin ohne komplette sitemap keine Hilfe möglich ist ... ;) erstelle doch bitte einen eigenen Thread für Dein Problem.

Re: Restart Switch für OpenHab

Verfasst: 28. Dez 2020 22:08
von Galadriel13
Hallo zusammen,

ich möchte dieses Thema noch einmal aufgreifen.

In OH2 lief das problemlos.

Nun habe ich auf einem zweiten System testweise OH3 (openhabian) installiert und versuche diese Funktionen zu übertragen.
Dazu habe ich die entspr. Rule bzw. die Pfade angepasst.

Trotzdem tut sich nichts.
Habe ich etwas übersehen, oder kann das in OH3 nicht mehr funktionieren?

- EXEC-Binding installiert und konfiguriert (ONLINE)
- beide Things ohservice & piservice sind ONLINE

openhabschalter.items

Code: Alles auswählen

// Schalter für den openHab und PI Restart   
Number OH_Service         "openHAB "  
Number PI_Service          "Pi"

openhabschalter.rules

Code: Alles auswählen

//System Neustarten und Bakup
//--------------
rule "Init Service"
when
    System started                                     // Wenn System startet                          
then
    OH_Service.postUpdate(0)                         
    PI_Service.postUpdate(0)
end 

//-------------------------------------
rule "Service_OH"
when
    Item OH_Service changed
then
if(OH_Service.state == 1)
{
logInfo("OH", "Restart")
executeCommandLine ("sudo /etc/systemd/system/multi-user.target.wants/openhab.service")
}
if(OH_Service.state == 2)
{
logInfo("OH", "Backup")
executeCommandLine ("sudo /usr/share/openhab/runtime/bin/backup")
OH_Service.postUpdate(0)
}
end

//-------------------------------------
rule "Service_Pi"
when
    Item PI_Service changed
then
if(PI_Service.state == 1)
{
logInfo("Pi", "wird heruntergefahren")
executeCommandLine ("sudo shutdown")
}
end



sitemap

Code: Alles auswählen

Frame label="openHAB System-Optionen" {
        Switch item=OH_Service  mappings=[1="Neustart",2="Backup"] icon="openhab"
        Switch item=PI_Service   mappings=[1="Herunterfahren"] icon="pi"
        }

Es wäre super, wenn ihr mal drüber schauen könntet.
Danke und einen schönen Abend.

Re: Restart Switch für OpenHab

Verfasst: 28. Dez 2020 23:50
von itsego1990
Hallo Galadriel13,

Hast du dein Exec befehl auch in die "exec.whitelist" eingetrage ?