Seite 1 von 1

Mal wieder Restart Binding

Verfasst: 8. Feb 2023 20:53
von guinnes
Moin
Ich habe seit 4 Wochen auf OH3.4.1 umgestellt und versuche jetzt, mein Binding-Restart zum laufen zu bringen :

Code: Alles auswählen

rule "eBus Restart Binding"
when
    Item VAR_Innogy_CPU_Fehler received command ON
then
    if(tEBusRestart !== null) return;
    
    tEBusRestart = createTimer(now.plusSeconds(1),[|
        if(bEBusRestart) {
            var String  Restart = executeCommandLine(Duration.ofSeconds(10),"sudo /usr/bin/ssh -p 8101 -i /home/openhab/openhab.id_rsa openhabian@localhost bundle:start org.openhab.binding.livisismarthome")
            logInfo("LivisiSmarthome", "LivisiSmarthome Restart {}",Restart)
            tEBusRestart = null
            bEBusRestart = false
        } else {
            var String Restart = executeCommandLine(Duration.ofSeconds(10),"sudo /usr/bin/ssh -p 8101 -i /home/openhab/openhab.id_rsa openhabian@localhost bundle:stop org.openhab.binding.livisismarthome")
            logInfo("LivisiSmarthome", "LivisiSmarthome Stop {}",Restart)
            tEBusRestart.reschedule(now.plusSeconds(25))
            bEBusRestart = true
        }
    ])
end
Ich kriege folgende Log-File einträge :

Code: Alles auswählen

2023-02-08 20:46:05.303 [WARN ] [rg.openhab.core.io.net.exec.ExecUtil] - Failed to execute commandLine '[sudo /usr/bin/ssh -p 8101 -i /home/openhab/openhab.id_rsa openhabian@localhost bundle:stop org.openhab.binding.livisismarthome]'
2023-02-08 20:46:05.306 [INFO ] [ab.core.model.script.LivisiSmarthome] - LivisiSmarthome Stop null
und

Code: Alles auswählen

2023-02-08 20:46:30.318 [WARN ] [rg.openhab.core.io.net.exec.ExecUtil] - Failed to execute commandLine '[sudo /usr/bin/ssh -p 8101 -i /home/openhab/openhab.id_rsa openhabian@localhost bundle:start org.openhab.binding.livisismarthome]'
2023-02-08 20:46:30.322 [INFO ] [ab.core.model.script.LivisiSmarthome] - LivisiSmarthome Restart null
Hat jemand eine Idee ?
Danke schon mal

Re: Mal wieder Restart Binding

Verfasst: 9. Feb 2023 01:24
von udo1toni
Hattest Du das vor der Umstellung schon mal so laufen? Ich denke eher nicht...

Der zu verwendende User heißt openhab, nicht openhabian. Es geht um den User für die Karaf Konsole, nicht um den User für den GNU/Linux Shell Login.
Weiterhin ist das home-Verzeichnis vom User openhab (der gewöhnlich das Programm openHAB ausführt) normalerweise $OPENHAB_HOME, was bei einem per apt installierten openHAB auf /usr/share/openhab/ verweist.

Wenn Du also nicht gerade intensive Verrenkungen unternommen hast, wäre der korrekte Weg, ein Verzeichnis /usr/share/openhab/.ssh/ zu erstellen und die Datei openhab.id_rsa in dieses Verzeichnis zu packen.
Dann lautet der korrekte Aufruf so:

Code: Alles auswählen

var String Restart = executeCommandLine(Duration.ofSeconds(10),"/usr/bin/ssh","-p8101","-i","openhab.id_rsa","localhost","bundle:start","org.openhab.binding.livisismarthome")
Statt eines Leerzeichens wird also der String mit der Kommandozeile jeweils unterbrochen und nachfolgend der nächste Teil als neuer String übergeben (das ist seit OH3.0 so).

Re: Mal wieder Restart Binding

Verfasst: 9. Feb 2023 11:33
von guinnes
udo1toni hat geschrieben: 9. Feb 2023 01:24 Hattest Du das vor der Umstellung schon mal so laufen? Ich denke eher nicht...
Nicht genauso, sondern mit openhab@localhost. openhabian war ein Versuch, weil es eben nicht ging. Ansonsten ist die Rule von dir und hat unter OH2.5.12 getan. Ich werd mal weiter versuchen

Re: Mal wieder Restart Binding

Verfasst: 9. Feb 2023 16:02
von udo1toni
Ah. Ja, wie erwähnt, executeCommandLine wird nun anders verwendet, also die Leerzeichen betreffend.

Re: Mal wieder Restart Binding

Verfasst: 10. Feb 2023 17:07
von guinnes
Moin
So, nun tuts ( fast ) :

Code: Alles auswählen

var Timer tEBusRestart = null
var Boolean bEBusRestart = false

rule "Livisi Restart Binding"
when
    Item VAR_Innogy_CPU_Fehler received command ON
then
    if(tEBusRestart !== null) return;
    
    tEBusRestart = createTimer(now.plusSeconds(1),[|
        if(bEBusRestart) {
            var String  Restart = executeCommandLine(Duration.ofSeconds(10),"/usr/bin/ssh","-p8101","-i","/home/openhab/openhab.id_rsa","localhost","bundle:start","org.openhab.binding.livisismarthome")
            logInfo("LivisiSmarthome", "LivisiSmarthome Restart {}",Restart)
            tEBusRestart = null
            bEBusRestart = false
        } else {
            var String Restart = executeCommandLine(Duration.ofSeconds(10),"/usr/bin/ssh","-p8101","-i","/home/openhab/openhab.id_rsa","localhost","bundle:stop","org.openhab.binding.livisismarthome")
            logInfo("LivisiSmarthome", "LivisiSmarthome Stop {}",Restart)
            tEBusRestart.reschedule(now.plusSeconds(25))
            bEBusRestart = true
        }
    ])
end
Das einzige, was nicht geht, sind die LogInfos nach den Executecommandlines, die kommen nicht, aber damit kann ich leben
Vielen Dank für die Hilfe

Re: Mal wieder Restart Binding

Verfasst: 10. Feb 2023 18:58
von udo1toni
Kommt gar nichts (also keine Logzeile) oder kommt "nur" keine "interessante" Ausgabe?
executeCommandLine sollte den Rückgabewert liefern, das wäre 0.

Re: Mal wieder Restart Binding

Verfasst: 11. Feb 2023 10:38
von guinnes
udo1toni hat geschrieben: 10. Feb 2023 18:58 Kommt gar nichts (also keine Logzeile) oder kommt "nur" keine "interessante" Ausgabe?
Es kommt gar nichts :

Code: Alles auswählen

2023-02-10 11:06:10.709 [INFO ] [ab.core.model.script.LivisiSmarthome] - LivisiSmarthome Stop 
2023-02-10 11:06:36.067 [INFO ] [ab.core.model.script.LivisiSmarthome] - LivisiSmarthome Restart 

Re: Mal wieder Restart Binding

Verfasst: 11. Feb 2023 14:48
von udo1toni
FALSCH! Es kommt die Logzeile! Es wird nur keinerlei Wert geliefert. Die Variable Restart enthält also eine leere Zeichenkette. Das kann ja durchaus sein.

Re: Mal wieder Restart Binding

Verfasst: 12. Feb 2023 17:23
von guinnes
udo1toni hat geschrieben: 11. Feb 2023 14:48 FALSCH! Es kommt die Logzeile! Es wird nur keinerlei Wert geliefert. Die Variable Restart enthält also eine leere Zeichenkette. Das kann ja durchaus sein.
Stimmt, du hast recht. Ich ahtte gedacht, ich hätte vor dem executecommandline noch eine Log-Ausgabe
Danke