Mal wieder virtuelle Geräte - jetzt aber richtig!

Moin,

Weil meine Hue Fernbedienungen in homee sporadisch immer mal weider ausfallen und zuletzt auch ein kurzzeitiges abheben und aufsetzten des Zigbee Würfels keine Verbesserung mehr brachte habe ich in der Richtung ein kleines experiment gewagt.
Ich habe zu Testzwecken jetzt mal eine Hue Dimmer von homee abgelernt und in einer Hue Bridge die ich eh noch rumliegen hatte und die bis dahin im auslieferungszustand war angelernt. Dann habe ich in Node Red eine virtuelle Hue Fernbedienung angelegt -die Profileinstellungen habe ich mir einfach von der kopiert, die ich dann ausgelernt habe. Dann zusätzlich in Node Red über den HueMagic Node diesen Taster über einen Switch node in vier unterschiedliche Pfade aufgeteilt, damit die unterschiedlichen Tasten erkannt werden können. Bei normaler Nutztung erhalte ich vom Huemagic node (außer beim gedrückt halten ) nur eine short released Nachricht. Das habe ich dann so gelöst, das ich einmal direkt nach dem Ereignis in homee die jeweilige Taste auf I setzte und über einen delay node 400 ms dann verzögert den wert wieder auf 0 setze ( in den Parametern is das dann 1 und 2).

Jetzt zu dem eigentlichen Problem, das ich eigentlich gerade feststelle:
Gefühlt kommen die Nachrichten vom HueMagic Node stark verzögert an. Wenn ich mich aber an meine reine Hue Zeit zurückerinnere gab es da eigentlich nie eine Verzögerung und auch wenn ich die Taster direkt mit homee verbunden habe gab es eigentlich nie eine Verzögerung. Würde die Verzögerung auf dem Weg Node Red -> homee auftreten hätte ich da ja noch Verständnis für, aber es kommt halt schon irgendwie spät in NodeRed an… oder liegt das nur an der Tatsache, das erst das loslassen des Tasters als „short released“ übermittelt wird und nicht das drücken selbst? Hat evtl. jemand ähnliche Erfahrungen?

Im Konfigurationsnode von hue magic kann man das „poll intervall“ verändern, soweit ich mich recht erinnere. Hast du das schon mal probiert?

Ich denke nicht das es an dem polling Intervall liegt, da das ja keine Info ist die erst gepollt wird, sondern als trigger in NodeRed eingeschleust wird. sonst würde es SEHR viel länger dauern (bis zu 30 Sekunden bei der Standardeinstellung) ich meine jetzt eher 1 Sekunde Verzögerung.

Moin Micha,

Du hattest uns alle mit Deinem coolen Kamera Flow den Mund wässerig gemacht…

image
…und gesagt, wenn er 100% funktioniert würdest Du ihn posten…

ja das kann ich machen , aber erst wenn es zu 100% funzt , mir fehlt noch der Zugriff von extern auf den stream.

Da ich auch so einige Kameras in Betrieb habe, würde ich mich über den Flow (auch gerne nicht 100% fertig…) freuen.

Vielen Dank!

Gruß

Doc Leisure

1 „Gefällt mir“

Gut dann bekommst du Ihn leider unfertig.:see_no_evil:

Mir fehlt die proxy bzw. Vpn Verbindung.
Daher geht das alles nur lokal im Augenblick.

@Micha
Kann man damit alle Kameras anbinden? Also z. B. Instar?

Moin Micha,

SUPER - und dann stelle ich 1.000 doofe Fragen :wink:

Gruß

Doc Leisure

Eigentlich kannst du jede Kamera da einbinden.

1 „Gefällt mir“

Perfekt. Super Sache.
Dann kann ich ja bald mit dem Projekt node red starten :+1:

Die Standardeinstellung ist 3000ms, also 3s. In der Regel wartet man also 1,5s, was ziemlich gut zu der beschriebenen Verzögerung passt.

1 „Gefällt mir“

Oh, dann habe ich da ein 0 mehr gelesen. ich probiere nachher mal mit Extremwerten ob es Auswirkungen hat. Ich war aber davon ausgegangen, das solche Sachen von dem Huemagic nicht gepollt werden sondern durch die bridge an alle Benutzer gepushed werden. Melde mich nachher wenn ich testen konnte dazu nochmal.

Tatsache… Der wert wird nicht gepushed… Dann ist der huemagic node an der Stelle nicht für diesen Zweck geeignet…

Die Verzögerung hat mich damals auch gestört. Ich hab’s dann über eine ha-bridge gelöst. Hier kannst du deine Geräte, wie an einer normale hue-bridge anlernen, hast aber zum Beispiel die Möglichkeit bei Tastendruck einen webhook auszulösen. Dieser kann dann in homee verarbeitet werden. Die entstehende Verzögerung ist kaum spürbar.

Gibt auch super zigbee Stick und schon kannst du alles direkt auswerten ohne eine zusätzliche Bridge.

Habe alle drei sticks zwave, zigbee und enocean. So kann jedes Gerät was homee nicht kennt angesprochen werden.

VG

1 „Gefällt mir“

Bin auch daran interessiert. Hab am Wochenende wenigstens geschafft meine Instar in HomeKit einzubinden :metal:
Im Homee fehlt mir jetzt noch.

Hat jemand eigentlich schon eine Alarmanlage in homee integriert? Falls ja, wie sehen dann die Schalter für scharf und unscharf schalten aus?

was meinst du mit alarmanlage integriert? ein „echtes“ System oder mit homee zusammengebaut?

  1. Hab ich bei mir umgesetzt:

verschiedene Alarmstufen…

  1. komplett und 2. äußere Hülle.

aktiviert wird per Abwesenheits Modus:

Schlafend = 2. äußere Hülle (Fenster und Tür Sensoren aktiv)
Abwesend/Urlaub = 1. komplett ( Fenster und Tür Sensoren aktiv, BWM innen aktiv)

Alarm über Sirene,Push und Licht

als physischen Schalter FT55 von homee. Beim Tür öffnen, kurze Zeitspanne zur deaktivierung. Später soll noch eine dezente LED signalisierung dazu kommen.

Meinte eher die Integration einer vorhandenen Alarmanlage. Ich habe eine Lupusec und will die über iobroker in Homee Integrieren.

So hier mein Weg um eine beliebige RTSP Kamera in homee einzubinden.
System ist hier der Raspberry 4 mit 4 GB Ram.
Grundlage ist ein Buster Image von Iobroker…
Hier wurde dann ein Apache Webserver eingerichtet.

sudo apt-get install apache2

Danach die IP deines Raspberry aufrufen um zu testen ob es läuft ( 123.456.789.00:80)
Wenn das gut durchgelaufen ist dann kommt ffmpeg dran.

sudo apt-get install ffmpeg

Die Installation von ffmpeg dauert eine Weile. ( Kaffee oder was anderes geht da immer )

Zum testen könnt Ihr jetzt mal ein Video eurer RTSP Cam streamen,

ffmpeg -rtsp_transport tcp -i rtsp://xxx.xxx.xxx.xx:554/onif1  -vcodec copy -hls_time 4 -hls_list_size 2 -hls_wrap 2 -start_number 1 -y /home/pi/test.m3u8

dann sollte der Bildschirm wie folgt aussehen.

Soweit so gut.
Jetzt haben wir also einen Stream der mit einem VLC player oder mit homee oder jedem mobilen Gerät abgerufen werden kann.
Da meine Kamera keinen Snapshot hat musste ich aus dem Livestream einen anlegen,
das ganze kommt jetzt in den Ordner /var/www/html/ des PI.
für den Snapshot habe ich eine /home/pi/test.sh Datei mit einem einfachen Aufruf des ffmpeg angelegt.

ffmpeg -loglevel fatal -i rtsp:xxx.xxx.xxx.xx:554/onif1 -vframes 1 -y -r 1 /var/www/html/test.png

Hierzu muss man dem Ordner vorher die passenden Rechte vergeben.

sudo chmod 777 -R /var/www/html

Nun könnt Ihr über einen beliebigen Browser das Bild öffnen. (ip:80/test.png)
Das ganze wird dann noch schön in ein Cronetab gepackt damit das Bild auch aktuell ist.
Dazu wird die Datei /etc/crontab geöffnet und folgende Zeile eingefügt.

*/5 *   * * *   root    /home/pi/test.sh

Sehr schön soweit.
Jetzt geht es an das vhih Gerät Netatmo Kamera,
dazu habe ich euch mal den Flow von mir exportiert.

[
    {
        "id": "565879f8.8bbd18",
        "type": "homeeDevice",
        "z": "ed531f2.24960e",
        "virtual-homee": "",
        "name": "Eingang",
        "nodeId": "1002",
        "profile": "3027",
        "icon": "",
        "attributes": "[{\"id\":2235,\"node_id\":1002,\"instance\":0,\"minimum\":0,\"maximum\":1,\"current_value\":1,\"target_value\":1,\"last_value\":0,\"unit\":\"n%2Fa\",\"step_value\":1,\"editable\":1,\"type\":179,\"state\":1,\"last_changed\":1571855493,\"changed_by\":1,\"changed_by_id\":0,\"based_on\":1,\"data\":\"{\\\"baseUrlOnline\\\":\\\"http://IPdesPI:80\\\",\\\"baseUrlLocal\\\":\\\"http://IPdesPI:80\\\",\\\"commands\\\":{\\\"image\\\":\\\"/test.png\\\",\\\"ping\\\":\\\"/command/ping\\\",\\\"video\\\":\\\"/test.m3u8\\\"}}\"}]",
        "x": 100,
        "y": 500,
        "wires": [
            [
                "14471ac1.de5305",
                "8582db99.009558"
            ]
        ]
    },
    {
        "id": "debc0b71.7ae098",
        "type": "exec",
        "z": "ed531f2.24960e",
        "command": "ffmpeg -rtsp_transport tcp -i rtsp://xxx.xxx.xxx.xx:554/onif1  -vcodec copy -hls_time 4 -hls_list_size 3 -hls_wrap 3 -start_number 1 -y /var/www/html/test.m3u8",
        "addpay": false,
        "append": "",
        "useSpawn": "true",
        "timer": "",
        "oldrc": false,
        "name": "Eingang Stream",
        "x": 860,
        "y": 480,
        "wires": [
            [],
            [],
            []
        ]
    },
    {
        "id": "f4a889f0.80bc58",
        "type": "change",
        "z": "ed531f2.24960e",
        "name": "",
        "rules": [
            {
                "t": "move",
                "p": "payload",
                "pt": "msg",
                "to": "kill",
                "tot": "msg"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 640,
        "y": 520,
        "wires": [
            [
                "debc0b71.7ae098"
            ]
        ]
    },
    {
        "id": "14471ac1.de5305",
        "type": "switch",
        "z": "ed531f2.24960e",
        "name": "Anschalten",
        "property": "payload.targetValue",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "1",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 250,
        "y": 480,
        "wires": [
            [
                "debc0b71.7ae098"
            ]
        ]
    },
    {
        "id": "8582db99.009558",
        "type": "switch",
        "z": "ed531f2.24960e",
        "name": "ausschalten",
        "property": "payload.targetValue",
        "propertyType": "msg",
        "rules": [
            {
                "t": "eq",
                "v": "0",
                "vt": "num"
            }
        ],
        "checkall": "true",
        "repair": false,
        "outputs": 1,
        "x": 250,
        "y": 520,
        "wires": [
            [
                "45a245fe.a5f87c"
            ]
        ]
    },
    {
        "id": "45a245fe.a5f87c",
        "type": "change",
        "z": "ed531f2.24960e",
        "name": "",
        "rules": [
            {
                "t": "set",
                "p": "payload",
                "pt": "msg",
                "to": "SIGTERM",
                "tot": "str"
            }
        ],
        "action": "",
        "property": "",
        "from": "",
        "to": "",
        "reg": false,
        "x": 430,
        "y": 520,
        "wires": [
            [
                "f4a889f0.80bc58"
            ]
        ]
    }
]

Das war eigentlich schon alles um die Kamera in den homee zu bringen.
Leider wie gesagt aktuell nur lokal da mir keine Idee für den externen Zugang eingefallen ist und ich das auch nicht wirklich weiter verfolgt habe.
Bei dem ffmpeg könnt Ihr noch ein wenig mit der Zeitdauer und der Segmente arbeiten um das beste Ergebnis für euch raus zu holen.
Ich hoffe das ich nichts vergessen habe.
Wenn noch Fragen sind nur zu und ich schaue ob mir was einfällt dazu.
VG Micha

Edit:

Der Flow ist so aufgebaut das beim aktivieren der Kamera in homee erst der Stream angelegt wird, somit muss der Pi nicht die ganze Zeit die Daten umwandeln.

17 „Gefällt mir“

Wie immer tolle Beschreibung und tolles Projekt, danke @Micha! :+1:t2::pray:

Das Problem mit dem externen Zugang, müsstest du eigentlich ganz gut mit VPN-on-demand lösen können. So mache ich es auch mit einigen Dingen.

Du hast doch auch eine FRITZ!Box und iOS Geräte, oder?
Kann dir gerne morgen den Link zu einer gut verständlichen Anleitung schicken.