Restart Switch für OpenHab

Einrichtung der openHAB Umgebung und allgemeine Konfigurationsthemen.

Moderatoren: seppy, udo1toni

Benutzeravatar
djuscha
Beiträge: 130
Registriert: 14. Mai 2016 00:12
Answers: 0

Re: Restart Switch für OpenHab

Beitrag 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 :)

hsdneo
Beiträge: 52
Registriert: 26. Mär 2020 14:48
Answers: 0

Re: Restart Switch für OpenHab

Beitrag 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?

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

Re: Restart Switch für OpenHab

Beitrag 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
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

Benutzeravatar
PeterA
Beiträge: 1106
Registriert: 8. Feb 2019 12:12
Answers: 13

Re: Restart Switch für OpenHab

Beitrag 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/
- OpenHab 2.4
#PWRUP

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

Re: Restart Switch für OpenHab

Beitrag 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
openHAB 4.1.0 Release mit openHABian in einem Debian Bookworm (LXC) unter Proxmox 8.1.3

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

Re: Restart Switch für OpenHab

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Tobii
Beiträge: 64
Registriert: 18. Sep 2020 19:43
Answers: 0

Re: Restart Switch für OpenHab

Beitrag von Tobii »

Irgendwie funktioniert bei mir die Sitemap Datei nicht, leider finde ich den Fehler nicht. Klammern habe ich schon versucht.

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

Re: Restart Switch für OpenHab

Beitrag 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.
openHAB4.3.3 stable in einem Debian-Container (bookworm) (Proxmox 8.3.5, LXC), mit openHABian eingerichtet

Galadriel13
Beiträge: 222
Registriert: 30. Dez 2019 20:29
Answers: 0

Re: Restart Switch für OpenHab

Beitrag 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.
Hausautomation zu 95% mit Siemens Logo! (5x 0BA8).
Gartenbewässerung, Rollosteuerung, Lichtsteuerung, etc.
Abfrage von Temperaturen, Helligkeit, Füllstand Zisterne Leistung Photovoltaik.

openHAB 4.1.3 mit folgenden Bindings:

- Bosch Indego Binding
- Tankerkönig Binding
- iCalendar Binding
- iCloud Binding
- Anwesenheit via iCloud
- ComfoAir Binding (Zehnder AirComfort A350)
- SolarEdge Binding (PV)
- OpenWeatherMap Binding
- DWD Pollenflug Binding
- DWD Unwetter Binding
- FritzBox TR064 Binding
- PLCLogo Binding
- WIFI LED Binding
- Luxtronikheatpump (Novelan-WP)
- BEOK Raumthermostate
- myenergi

Benutzeravatar
itsego1990
Beiträge: 14
Registriert: 21. Nov 2017 23:27
Answers: 1
Wohnort: BW

Re: Restart Switch für OpenHab

Beitrag von itsego1990 »

Hallo Galadriel13,

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

Antworten