Homeegram durch Geräte Verfügbarkeit auslösen

Gerade über die hier beschriebene Problemstellung zuhause gestolpert. EIn Aussensensor , der nur per Batterie betrieben werden kann, fällt aus da die Batterien völlig leer gegangen sind. Basierend auf den Messwerten werden sensible Aktionen gesteuert.

EIne Sonderbehandlung muss erfolgen, sobald der Aussensensor nicht mehr sendet. Zur Zeit habe ich es so gelöst, dass wenn sich der Wert innerhalb 2 Stunden nicht ändert, ist der Sensor „ausgefallen“ … ist aber irgendwie unschön…

Machst Du das pro Gerät mit einem HG?

@Micha
Könntest Du da etwas mit node-red hinfummeln, wie mit den (nicht)erreichbaren Geräten. Mir fehlt da das know-how, habe nicht mal das Script für mich anpassen können :frowning:
Also, schon bevor homee erkennt das sie nicht erreichbar sind, wenn sie beispielsweise für 2h keine Daten senden…

Ziemlich unschön: Sobald sich die Temperatur ändert, schalte ich ein 2-Stunden laufendes homegramm. Wenn dieses ausläuft , dann schaltet es ein Platzhalter homegramm auf „Deaktiviert“ , somit weiss ich, dass der Aussensensor ausser betrieb ist. Und in die homegramm, die wissen müssen, ob der aussensensor funktionsfähig ist, kann man das Platzhalter homeegramm einbinden „Wenn deaktivert…“ etc

1 „Gefällt mir“

Naja, leider lassen sich einige Dinge bei homee nur „unschön“ lösen, aber immer noch besser als gar nicht… Eine Lösung für dutzende Geräte ist das aber glaube ich nicht…
Differenzieren was wichtig ist und was nicht, kann ich nicht… Es sind bei mir alle Sensoren wichtig, sonst hätte ich sie ja nicht :smiley:

Ja klar, aber hier gehts ja um eine Bedingung, falls ein gerät nicht verfügbar ist. Da muss man ganz anders mit einem homeegramm reagieren. Daher wäre es wünschenswert diesen Status auch verfügbar zu haben, ohne den „unschönen“ Umweg.

Wichtig und Kritisch, ist bei meinen Use-Cases ein großer Unterschied.

Wichtig ist , dass abends eine Lampe nicht unnötig früh durch falsche Werte Angeht oder den ganzen Tag unnötig brennt.

Kritisch ist, dass durch falsche/nicht gesendete Werte meine Palmenheizung nicht angeht und die Palme erfriert, ohne dass ich es mitbekomme.

Kritisch: Jetzt kommen noch die Raffstores dazu. Wenn es draussen friert, dürfen die Raffstores nicht gefahren werden. Wenn der Aussensensor aber nicht die korrekte Temperatur sendet, dann fahren sie trotzdem, weil der letzte Wert bei +2 Grad lag … → Kaputte Raffstores.

1 „Gefällt mir“

Muss ich mir mal anschauen die Sache.
Problem wird sein das hier dann wahrscheinlich für jedes Gerät eine Funktion geschrieben werden muss.

Hier muss ja dann aktiv kontrolliert werden in einem bestimmten Rhythmus.
So nach dem Motto, alle 10 Minuten checken ob der lastchange älter als 2 h Stunden ist.
Und es müsste auf die entsprechende Type ID gefiltert werden.
Sollte also machbar sein.

Edit: nein eine Funktion sollte reichen.

1 „Gefällt mir“

Ich bin ja total weit weg vom geschehen. :crazy_face:
Aber den Status Gerät ist nicht verfügbar, gibt es doch, oder nicht?
Wäre ein Filter, zeige alle nicht verfügbare Geräte an, nicht schon enorm hilfreich?!

Der kommt aber in der Regel viel zu spät, teilweise erst nach 1-2 Tagen nachdem keine Werte mehr geliefert werden…

Gibt es auch schon, einfach „nicht verfügbar“ in der Suchleiste eingeben.
Will man das aber auf irgendeine Art automatisieren, geht das nicht…

[
    {
        "id": "698d2faa.f6be2",
        "type": "inject",
        "z": "54ed691d.6adf68",
        "name": "",
        "props": [
            {
                "p": "payload"
            },
            {
                "p": "topic",
                "vt": "str"
            }
        ],
        "repeat": "",
        "crontab": "",
        "once": false,
        "onceDelay": 0.1,
        "topic": "",
        "payload": "",
        "payloadType": "date",
        "x": 450,
        "y": 180,
        "wires": [
            [
                "bbd8f90d.b56928"
            ]
        ]
    },
    {
        "id": "bbd8f90d.b56928",
        "type": "function",
        "z": "54ed691d.6adf68",
        "name": "",
        "func": "const attributes = global.get(\"homee.attributes\");\nconst name = global.get(\"homee.nodes\");\nvar type = 5\nvar date  = Date.now();\nattributes.forEach(function(test){\n    if(test.type == type){ \n        var name2 = name.find(name2 => name2.id == test.node_id);\n        var zeit = Math.round((Math.round((date/1000)-test.last_changed))/60);\n        if( zeit > 120){\n            node.send({\n                payload: zeit  + \" Min seit letzte Änderung   \" + decodeURIComponent(name2.name)\n            })\n        }\n    }\n});\n",
        "outputs": 1,
        "noerr": 0,
        "initialize": "",
        "finalize": "",
        "x": 750,
        "y": 180,
        "wires": [
            [
                "a4cccf2b.7f1e4"
            ]
        ]
    },
    {
        "id": "a4cccf2b.7f1e4",
        "type": "debug",
        "z": "54ed691d.6adf68",
        "name": "",
        "active": true,
        "tosidebar": true,
        "console": false,
        "tostatus": false,
        "complete": "false",
        "statusVal": "",
        "statusType": "auto",
        "x": 960,
        "y": 180,
        "wires": []
    }
]

Hier ist die Funktion mit der du die Geräte Filtern kannst die seit 120 Minuten keinen Wert gesendet haben.
Beim Type musst du die Type ID einsetzen auf die du filtern magst( im Beispiel ist es die 5 = Temperatur ).
musst nur schauen was du damit dann wie anfangen magst.
Wichtig ist das der API Node alle Werte in der globalen speichert.

Viel Spaß und Erfolg damit.

2 „Gefällt mir“

Wow… Danke, werde ich, wenn ich zu Hause bin gleich mal ausprobieren…

1 „Gefällt mir“

Moin @Micha,

klasse Script, funktioniert schon sehr gut, ich habe glatt Sensoren finden können, die die Temperatur nicht aktualisieren obwohl andere Werte aktualisiert werden.

Kann ich das auch für alle Type ID ausführen oder muss ich für jede Type ID eine eigene Instanz anlegen?

1000 Dank
JayJayX

1 „Gefällt mir“

Das script lässt sich auch erweitern, so das du verschiedene Typen kontrollieren kannst.
Es muss natürlich auch alles einen Sinn ergeben beim Testen.
Auch muss berücksichtigt werden das hier nur die Werte im globalen Kontext kontrolliert werden. Die Daten kann man natürlich auch auftischen mit einem Abruf get:all .

3 „Gefällt mir“

Das ist auf jeden Fall ein Top-Werkzeug um viele Geräte in einem großen Smarthome zu checken. Habe mir für die wichtigsten Type IDs jeweils eine Instanz gemacht und so 2 Geräte identifiziert die keine Daten mehr übertragen haben… Da diese auch nie ausgegraut wären, wäre ich da frühestens in Tagen/Wochen drauf gestoßen, wenn etwas nicht funktioniert.
Wie ich das nun sinnvoll in eine Automatik quetsche muss ich mir noch überlegen.
Auf jeden Fall Danke für das tolle Script ::

Ich musste ein Gerät auch neu anlernen um die Werte wieder zu aktualisieren und 17 HG umschreiben. Da schau ich mir jetzt mal dein anderes Werkzeug an :smiley:

1 „Gefällt mir“

Ich „Otto-Normal-Benutzer“ könnte die ursprünglich genannte Funktion trotzdem noch gebrauchen :kissing_smiling_eyes:

Bzw. würde es mir reichen, wenn mir Homee eine Push sendet ala „Gerät xy nicht mehr verfügbar“

2 „Gefällt mir“

Du meinst also als nicht node red Nutzer?

Da gebe ich dir Recht das dieses durchaus möglich sein sollte.

5 „Gefällt mir“

Zu den Nicht-Node-Red-Usern zähle ich mich auch und auch ich warte immer noch auf das „Gerät ist verfügbar“-Event. IMHO müsste das sogar leichter umsetzbar sein wie „nicht verfügbar“. Wenn das Gerät eingeschaltet wird, meldet es sich in seinem Netzwerk an. Das erkennt, zumindest bei Zigebee, homee schon heute. Schließlich kann man einstellen „letzten Wert wiederherstellen“. Also warum sollte ich nicht auch gezieht auf das „Wiedererwachen“ eines Gerätes reagieren können.

Irgenwie wäre es auch toll, wenn sich mal jemand von den Homee-Entwicklern zu dem Thema äußern würde :expressionless:

4 „Gefällt mir“