Symbol ob FHEM läuft

Begonnen von choetzu, 30 März 2017, 12:39:22

Vorheriges Thema - Nächstes Thema

choetzu

Hallo,

ich möchte gerne als Button darstellen, ob FHEM überhaupt läuft oder nicht. Per Terminal macht man dies ja mittels "service fhem status". Und auf FHEM unter global und im sysmon steht nichts dergleichen (ausser uptime). Wie resp. wo kann ich also abfragen, ob der FHEM-service läuft? Ich will es dann als Widget darstellen..

danke für die Hilfe.

Lg C
Raspi3, EnOcean, Zwave, Homematic

justme1968

wie soll denn das gehen? wenn fhem nicht läuft geht ftui nicht und kann auch nichts anzeigen.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

choetzu

ou shit, wenn ich dies lese, merke ich selber, wie dumm die Frage war.... drum findet man logischerweise auch im Forum nix.. keiner war so blöd wie ich ;)

Peinlich, peinlich.. ich muss mir einen neuen Forum Namen zulegen.. :)
Raspi3, EnOcean, Zwave, Homematic

nesges

Bei mir wird der Hintergrund rot, wenn Fhem länger als 1 Minute nicht erreichbar war. Auszug:

<head>
    <script type="text/javascript">
        // sende alle 60s einen heartbeat an Fhem (Device TUI, Reading IP)
        $(function(){
            var ts = Math.floor(new Date().getTime() / 1000);
            $.get('http://wopr/fhem?cmd=setreading TUI 192.168.178.25 ' + ts);
           
            var heartbeat = window.setInterval(function(){
                var ts = Math.floor(new Date().getTime() / 1000);
                $.get('http://wopr/fhem?cmd=setreading TUI 192.168.178.25 ' + ts);
                console.log('heartbeat');
            }, 60*1000);
        });
    </script>
</head>

<ul>
    <div id="heartbeat"
            data-type="label"
            data-device="TUI"
            data-get="192.168.178.25"
            style="display:none"></div>
</ul>

<script>
    // prüfe alle 3s den Timestamp in #heartbeat ob älter als 65s
    window.setInterval(function(){
        var hb = $("#heartbeat").text() * 1;
        var now = Math.floor(new Date().getTime() / 1000);
        if(now > hb+65) {
            $("body").css('background-color', '#800000');
        } else {
            $("body").css('background-color', 'black');
        }
    }, 3*1000);
</script>


Ist noch FTUI Version 1.5.1, sollte aber auch mit der aktuellen Version funktionieren, da's mit FTUI wenig zu tun hat

Kuzl

Zitat von: justme1968 am 30 März 2017, 12:52:41
wie soll denn das gehen? wenn fhem nicht läuft geht ftui nicht und kann auch nichts anzeigen.

Nicht zwangsläufig. Wenn die Seite bereits geladen ist und FHEM dann abschmiert bekommt man das erstmal dadurch mit, dass die Longpoll-Verbindung abgebrochen ist und eine entsprechende Meldung erscheint. Wenn die Meldung wieder weg ist merkt man eigentlich nichts davon.

justme1968

ja. das hat aber nichts damit zu tun das man den service abfragt oder irgendwo ein 'normales' icon konfiguriert.

das ist eine du funktionalität die komplett auf js seite ohne verbindung zu fhem oder betriebssystem umgesetzt werden muss. und auch nichts darüber sagt ob fhem läuft sondern nur ob die longpoll verbindung weg ist. und auch das nur wenn sie nach dem start von ftui unterbrochen wird. ohne fhem lässt sich ftui nicht starten.
hue, tradfri, alexa-fhem, homebridge-fhem, LightScene, readingsGroup, ...

https://github.com/sponsors/justme-1968

klausw

Zitat von: justme1968 am 30 März 2017, 14:16:23
... ohne fhem lässt sich ftui nicht starten.

Jein, bei mir läuft es auf einem Apache. Das lässt sich auch ohne FHEM laden.
Allerdings gibt es genug Fehlermeldungen um mitzubekommen, das mit der Verbindung was nicht stimmt  8)
RasPi B v2 mit FHEM 18B20 über 1Wire, LED PWM Treiber über I2C, Luchtdruck-, Feuchtesensor und ein paar Schalter/LED\'s zum testen
Module: RPI_GPIO, RPII2C, I2C_EEPROM, I2C_MCP23008, I2C_MCP23017, I2C_MCP342x, I2C_PCA9532, I2C_PCF8574, I2C_SHT21, I2C_BME280

choetzu

Zitat von: nesges am 30 März 2017, 14:10:13
Bei mir wird der Hintergrund rot, wenn Fhem länger als 1 Minute nicht erreichbar war. Auszug:

<head>
    <script type="text/javascript">
        // sende alle 60s einen heartbeat an Fhem (Device TUI, Reading IP)
        $(function(){
            var ts = Math.floor(new Date().getTime() / 1000);
            $.get('http://wopr/fhem?cmd=setreading TUI 192.168.178.25 ' + ts);
           
            var heartbeat = window.setInterval(function(){
                var ts = Math.floor(new Date().getTime() / 1000);
                $.get('http://wopr/fhem?cmd=setreading TUI 192.168.178.25 ' + ts);
                console.log('heartbeat');
            }, 60*1000);
        });
    </script>
</head>

<ul>
    <div id="heartbeat"
            data-type="label"
            data-device="TUI"
            data-get="192.168.178.25"
            style="display:none"></div>
</ul>

<script>
    // prüfe alle 3s den Timestamp in #heartbeat ob älter als 65s
    window.setInterval(function(){
        var hb = $("#heartbeat").text() * 1;
        var now = Math.floor(new Date().getTime() / 1000);
        if(now > hb+65) {
            $("body").css('background-color', '#800000');
        } else {
            $("body").css('background-color', 'black');
        }
    }, 3*1000);
</script>


Ist noch FTUI Version 1.5.1, sollte aber auch mit der aktuellen Version funktionieren, da's mit FTUI wenig zu tun hat

Super Sache! Ich hab das bei mir auch implementiert. Wenn ich aber die Seite auf dem iPhone öffne, dann wird der Hintergrund ohne Aktivität nach ca 1 Minute rot obschon Fhem läuft. Muss ich bei longpill oder so was spezielles eingeben?
Raspi3, EnOcean, Zwave, Homematic

nesges

Zitat von: choetzu am 01 April 2017, 13:23:41
Super Sache! Ich hab das bei mir auch implementiert. Wenn ich aber die Seite auf dem iPhone öffne, dann wird der Hintergrund ohne Aktivität nach ca 1 Minute rot obschon Fhem läuft. Muss ich bei longpill oder so was spezielles eingeben?

Du kannst mal versuchen die Zeile if(now > hb+65) { anzupassen. Die 65 ist die Zeit in Sekunden, nach der die Verbindung für tot gehalten wird (heartbeat alle 60s + 5s Toleranz).  Evtl. hilft's größere Werte zu nutzen. Kann aber auch was iPhone spezifisches sein, da kenne ich mich nicht aus.