Seite 1 von 2

Satreceiver Startup Check

Verfasst: 26. Okt 2020 21:46
von PeterA
Hallo zusammen.

Für geplante Aufnahmen lasse ich meinen Satreceiver über einen ShellyPlugS einige Minuten vor der Aufnahme einschalten.
Leider fährt der Satreceiver (Coolstream Tank) manchmal nicht komplett hoch.

Könnte ich das mittels OpenHab abfangen und bei nicht Erfolgreichem Startup nochmal vom Netz trennen und nach z.b. 30sek wieder Einschalten?

Es gibt schon zwei Shell Scripte welche mir die Aktuelle Uhrzeit und Sendung in OpenHab übertragen.

Damit könnte doch so etwas möglich sein ?

Im Prinzip so:

Shelly Schaltet ON (ist als Status verfügbar)
Nach 1min sollte die Coolstream Uhrzeit verfügbar sein (ist auch in OH verfügbar)
Falls nicht. Schalte den Shelly wieder ab und nach 30sek wieder ein.

Gruß Peter

edit:
Das Shell Script gibt "offline" zurück wenn der Satreceiver nicht erreichbar ist.
Damit lässt sich doch etwas anfangen...

Re: Satreceiver Startup Check

Verfasst: 27. Okt 2020 13:07
von udo1toni
Ja, sicher geht da was. Allerdings ist es nicht so schön, der Kiste den Strom unterm Hintern wegzuziehen. Computer mögen es allgemein nicht, hart ausgeschaltet zu werden...


Gesendet von iPad mit Tapatalk

Re: Satreceiver Startup Check

Verfasst: 27. Okt 2020 13:14
von PeterA
Ja... das ist ja niemals gut.
Nörgel: Es ist ja kein Computer sondern ein Satreceiver. Nagut das sind ja mittlerweile auch kleine Computer :)
Aber alles andere als die Kiste vom Netz zu trennen hilft in diesem Fall nicht.
Ich hab schon gesehen das man in einer Rule bei einem Item auf einen String prüfen kann:

Code: Alles auswählen

CoolstreamTime.state.toString.contains ("offline")
Das wäre jetzt mein Entwurf:

Code: Alles auswählen

rule "Satreceiver Startup Check"
var Timer tCheck = null                            // globale Variablen zu Beginn der Datei definieren

rule "Satreceiver Startup Check"                                          
when
   Item ShellyPlugS_Sat changed to ON                   // SAT eingeschaltet
then
   tCheck?.cancel 				     // eventuell laufenden Timer stoppen
   createTimer(now.plusSeconds(120), [| // lege Timer an
        if ((CoolstreamTime.state.toString.contains ("offline") && ShellyPlugS_Denon.state==(ON)) // offline = Satreceiver ist nicht hochgefahren //am Denon hängt noch der Switch
        ShellyPlugS_Sat.sendCommand(OFF)             // schalte ab wenn CoolstreamTime "offline" behinhaltet
    ])
        tCheck?.cancel
            tCheck = createTimer(now.plusSeconds(15), [|    // lege Timer an
            ShellyPlugS_Sat.sendCommand(ON)                   // schalte nochmal ein     
        ])
end 

Re: Satreceiver Startup Check

Verfasst: 27. Okt 2020 22:15
von PeterA
Also jetzt bin ich wieder mit meinem Latein am Ende..

Die Rule Tiggert, wartet 30 Sek. und Schaltet dann ab weil der Satreceiver noch offline ist.
Aber das wieder Einschalten 15sek Nach dem Abschalten bekomme ich nicht hin.

Code: Alles auswählen

var Timer tCheck = null                                    // globale Variablen zu Beginn der Datei definieren

rule "Satreceiver Startup Check"
when
   Item ShellyPlugS_06 changed to ON                      // SAT eingeschaltet
then
   logInfo("Coolstream Startup Check","Coolstream eingeschaltet, warte auf hochfahren.")
   tCheck?.cancel 				                          // eventuell laufenden Timer stoppen
   createTimer(now.plusSeconds(30), [|                    // lege Timer an
   if (CoolstreamTime.toString.contains ("offline") && ShellyPlugS_05_Proxy.state==ON)// offline = Satreceiver ist nicht hochgefahren //am Denon hängt noch der Switch
        ShellyPlugS_06.sendCommand(OFF)                    // schalte ab wenn CoolstreamTime "offline" behinhaltet
        logInfo("Coolstream Startup Check","Coolstream offline, schalte noch mal ab.")
    ])
    tCheck?.cancel
    if (ShellyPlugS_06.state==OFF)
        tCheck = createTimer(now.plusSeconds(15), [|    // lege Timer an
        ShellyPlugS_06.sendCommand(ON)                  // schalte nochmal ein
        logInfo("Coolstream Startup Check","Coolstream offline, schalte wieder ein.")
    ])
end

Re: Satreceiver Startup Check

Verfasst: 27. Okt 2020 23:13
von PeterA
So neuer Versuch und diese Version funktioniert.

Code: Alles auswählen

var Timer tCheck = null                                    // globale Variablen zu Beginn der Datei definieren

rule "Satreceiver Startup Check"
when
   Item ShellyPlugS_06 changed to ON                      // SAT eingeschaltet
then
   logInfo("Coolstream Startup Check","Coolstream eingeschaltet, warte auf hochfahren.")
   tCheck?.cancel 				                          // eventuell laufenden Timer stoppen
   createTimer(now.plusSeconds(180), [|                   // lege Timer an
   if (CoolstreamTime.toString.contains ("offline") && ShellyPlugS_05_Proxy.state==ON) { // offline = Satreceiver ist nicht hochgefahren //am Denon hängt noch der Switch
        ShellyPlugS_06.sendCommand(OFF)                    // schalte ab wenn CoolstreamTime "offline" behinhaltet
        logInfo("Coolstream Startup Check","Coolstream offline, schalte noch mal ab.")
        Thread::sleep(10000)
        ShellyPlugS_06.sendCommand(ON)
        logInfo("Coolstream Startup Check","Coolstream offline, schalte noch mal ein.")
        }
    ])

end
Satreceiver wird eingeschaltet.
Danach startet ein 180 sek. Timer. Jetzt hat der Satreceiver genug Zeit um sauber hoch zu Fahren.
Wenn das passiert ist hat das Item "CoolstreamTime" nicht mehr den Inhalt "offline" und es passiert nichts mehr weiter.
Fallls aber nach ablauf der 180 sek. der Satreceiver nicht sauber hoch gefahren ist wird er wieder abgeschaltet und nach 10 Sek wieder eingeschaltet.
Meistens fährt die Kiste dann beim zweiten Anlauf sauber hoch.

Re: Satreceiver Startup Check

Verfasst: 28. Okt 2020 12:04
von udo1toni
Jedoch ist die „Lösung“ mit dem Thread::sleep() sehr unschön.

Am iPad macht das jetzt keinen Spaß, den Code zu schreiben...


Gesendet von iPad mit Tapatalk

Re: Satreceiver Startup Check

Verfasst: 28. Okt 2020 12:05
von PeterA
Ja das Thread Sleep gefällt mir auch nicht.
Leider habe ich es nicht hinbekommen einen zweiten Timer zu schreiben

Re: Satreceiver Startup Check

Verfasst: 28. Okt 2020 14:20
von udo1toni
Du brauchst keinen zweiten Timer. Stattdessen schaust Du im Timer nach, ob die Steckdose an ist. Ist das der Fall, bist Du im „Ausschalttimer“ und schaltest die Steckdose aus. Anschließend planst Du denselben (!) Timer mittels theTimer.reschedule(now.plusSeconds(10)) neu.
Ist die Steckdose hingegen aus, so musst Du Dich im „Einschalttimer“ befinden und schaltest entsprechend die Steckdose ein.


Gesendet von iPad mit Tapatalk

Re: Satreceiver Startup Check

Verfasst: 28. Okt 2020 16:16
von PeterA
Ah ok, das mit dem reschedule hatte ich schon versucht.
Ging aber irgendwie nicht, war auch schon spät :)

Zwischenzeitlich ist mir aber noch ein gravierender Nachteil dieser Rule eingefallen:

Das kann ja zu einer Dauerschleife werden falls der Receiver überhaupt nicht Startet
bzw. die Netzwerkverbindung nicht funktioniert usw.

Eigentlich wäre es besser das ganze nach z.B. max. 3 Versuchen abzubrechen und dann z.B. ne Push Nachricht zu versenden.

Geht so was ?

Re: Satreceiver Startup Check

Verfasst: 28. Okt 2020 18:31
von udo1toni
Selbstverständlich :)


Gesendet von iPad mit Tapatalk