Elektroda.de
Elektroda.de
X

Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.

xury 22083 27
This content has been translated flag-pl » flag-de View the original version here.
  • #1
    xury
    Spezialist Hausautomatisierung
    Ich dachte, es wäre gut, nützliche Skripte für Domoticz zu teilen, also werde ich meine Skripte hier einfügen. Ich ermutige auch andere, ihre Skripte hier zu teilen.
    Hier ist mein erstes Skript. Dies ist das DzVents-Skript, das die Lampe in meinem Zimmer steuert.
    Die Lampe ist an Sonoff Basic angeschlossen und wird vom Integra PIR-Sensor gesteuert.
    Die Lampe leuchtet nur auf, wenn sie eine Bewegung in der Nacht erkennt und arbeitet bis zu zwei Minuten, nachdem die letzte Bewegung erkannt wurde. Tagsüber wird die Lampe nicht über PIR, sondern manuell über die Domoticz-Schalttafel gesteuert.
    Natürlich müssen Namen an Ihre Bedürfnisse angepasst werden.
    Code: lua
    Melde dich an, um den Code zu sehen


    Das nächste Skript sendet Informationen zum Betriebsstatus des Gaskessels an die Influxdb-Datenbank. Die Informationen werden durch die Vermittlung der Satel Integra-Zentraleinheit gesammelt, deren Eingang mit dem Ausgang des De Dietich MCR II-Kessels verbunden ist.
    Code: lua
    Melde dich an, um den Code zu sehen


    Wir haben drei PZEM004t und wollen alle drei Stromwerte in einem virtuellen und einem Stromdiagramm von drei Phasen haben:
    Code: lua
    Melde dich an, um den Code zu sehen


    Ähnlich wie oben bei denselben PZEM004t-Zählern möchten wir den Gesamtenergieverbrauch aus drei Phasen zusammenfassen.
    Code: lua
    Melde dich an, um den Code zu sehen
  • #2
    xury
    Spezialist Hausautomatisierung
    Mit einem Klingelknopf und einer Kamera, die auf das Tor gerichtet ist, können wir versuchen auf dem Smartphone eine Vorschau anzuzeigen, wer am Tor anruft.
    Um dies zu realisieren, benötigen wir die Anwendung Telegramm und zwei Skripte:
    Eines ist das Linux-Bash-Skript, das andere ist das DzVents-Skript, das das erste nach dem Drücken der Klingeltaste startet:
    Wir speichern das erste Skript, z. B. in /home/pi/domoticz/scripts/ natürlich mit Recht zur Ausführung:
    Code: bash
    Melde dich an, um den Code zu sehen

    Zusätzlich müssen wir ffmpeg installiert haben - das heißt, wir installieren:
    Code: bash
    Melde dich an, um den Code zu sehen
    auf Raspberry oder anderen Geräten, wo wir Domoticz haben.
    Das zweite Skript ist DzVents - Domoticzs native Skript:
    Code: lua
    Melde dich an, um den Code zu sehen

    Wenn alles richtig gemacht wurde, sollten Sie beim Drücken der Klingel eine Push-Benachrichtigung auf dem Telegramm mit einem Fünf-Sekunden-Film von der ausgewählten Kamera erhalten.
    Ich gehe davon aus, dass die Anwendung Telegramm, sowie deren ID und API-Schlüssel korrekt konfiguriert sind.

    Ein anderes Skript steuert die Beleuchtung in der Garage mit Hilfe des PIR-Sensors und des Reedschalters am Sektionaltor:

    Code: lua
    Melde dich an, um den Code zu sehen

    Die Wirkung ist wie folgt:
    Wenn sich das Garagentor zu öffnen beginnt, wird der Reedschalter gesteuert und wenn die Uhrzeit innerhalb des eingestellten Bereichs liegt, leuchtet das Licht auf (bei mir über ein Relais am ESP-01 gesteuert). Wenn der PIR-Sensor keine Bewegung erkennt, erlischt das Licht nach ca. 10 Minuten. Es schaltet sich auch aus, wenn das Tor geschlossen und der Reedschalter geschlossen wird.
  • #3
    igorrr
    Niveau 15  
    Muss man die Anwendung Telegramm auf RPI installieren? Ich habe Domoticz dort installiert.
  • #4
    xury
    Spezialist Hausautomatisierung
    Sie installieren Telegramm auf Ihrem Telefon. In Domoticz müssen Sie Ihre ID und Ihren API-Schlüssel eingeben, um Benachrichtigungen zu erhalten. Im Skript befindet sich ein Link zum Wiki von Domoticz, wie ID und API-Schlüssel abgerufen werden können.
    Und so sieht der Bildschirm von Telegramm aus:
    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
  • #5
    xury
    Spezialist Hausautomatisierung
    Jetzt ist es Zeit für das Node-Red-Skript. Ich versorge Domoticz mit aktuellen Coronavirus-Statistiken für Polen.

    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
    Code: json
    Melde dich an, um den Code zu sehen

    Es ist auch möglich, das Land zu ändern.
    Domoticz man muss 3 Stück dummy custom sensor erstellen.
    Natürlich müssen IDXs auf Ihre eigenen geändert werden.
    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
  • #6
    xury
    Spezialist Hausautomatisierung
    Ein weiteres cooles Skript, das ich für die Steuerung des Fernsehens mit Android TV geschrieben habe.
    Das ist genau TCL 65EP640. Ich denke jedoch, dass es mit fast jedem und mit verschiedenen TV-Boxen funktionieren wird.
    Sie müssen den Entwicklermodus und das USB-Debugging aktivieren. Jeder muss herausfinden, wie es auf seinem Fernseher geht.
    Das USB-Debugging muss aktiviert sein, um dank adb (Android Debug Bridge) eine Verbindung über TCP herzustellen. Der Adb-Server muss installiert werden.
    Eine USB-Verbindung wird nicht benötigt. Der angegebene flow ist ein Beispiel für eine manuelle Steuerung und eine node nora, die eine Sprachsteuerung ermöglicht.

    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
    Code: json
    Melde dich an, um den Code zu sehen
  • #7
    xury
    Spezialist Hausautomatisierung
    Anzeigen von Text auf dem Bildschirm der Hikvision-Kamera oder des Hikvision-Rekorders
    Ich habe lange Zeit eine Vorschau der Temperatur externer Sensoren auf dem Hikvision-Kamerabild.
    Es sieht ungefähr so aus:
    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
    Wie Sie sehen können, wird die Temperatur der an den esp8266 angeschlossenen ds18b20-Sensoren in der unteren rechten Ecke angezeigt.
    Dann werden mittels Node-Red die Temperaturdaten an die IP-Kamera oder den Rekorder gesendet und an das Bild der Hauptstrom angehängt.
    Der folgende einfache Ablauf basierend auf Hikvision ISAPI sendet Temperaturdaten. Diese Methode kann beispielsweise zum Senden von einer Registrierkasse oder einer anderen Datenquelle verwendet werden.
    Code: json
    Melde dich an, um den Code zu sehen

    In den IP-Kamera- oder Rekordereinstellungen im Menü Bild-OSD-Einstellungen die Anzahl der Textzeilen auswählen, die Sie übermitteln möchten.
    Die Textpositionen können im Funktionsknoten angepasst werden - die Tags positionX und positionY.
    Bei mir stammen die Temperaturdaten aus den globalen Variablen twEnd und West, und dies erfordert eine Anpassung an eigene Bedürfnisse. Sie können beispielsweise per payload gesendet werden. Es reicht ein wenig Javascript zu lernen.
    Mit Hikvision ISAPI kann noch viel mehr getan werden. Wenn Sie interessiert sind, suchen Sie bitte nach dem sechshundertseitigen PDF mit der Protokollbeschreibung.

    Von nun an ist die Sache viel einfacher geworden, denn auf meine Bitte hin hat Kollege Supergiovane einen Node erstellt, mit dem es viel einfacher geht. Es hat auch viele andere coole Funktionen:
    https://flows.nodered.org/node/node-red-contrib-hikvision-ultimate
  • #8
    ozogp
    Niveau 7  
    @xury ein sehr schönes Skript "aktuelle Coronavirus-Statistik für Polen".
    Alles läuft, ich weiß nicht warum der Wert wie unten auf dem Bildschirm angegeben wird, er ist auch bei Geräten falsch, aber im node-red Nachrichten und in Domoticz-Logs ist der Wert korrekt
    Bildschirm
    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
    Das Logbuch von Domoticz:
    2021-08-29 22: 01: 59.591 MQTT: Thema: domoticz / in, Nachricht: {"command": "udevice", "idx": 313, "nvalue": 0, "svalue": "2888231"}
    Irgendeine Idee? Vielen Dank im Voraus.
  • #9
    Daro1003
    Niveau 23  
    Hallo Kumpel @xury, ich habe eine Anfrage für das dzVents-Skript, ich habe keine Ahnung von deren Erstellung und werde es wahrscheinlich auch nicht haben, weil ich irgendwie mit dem Schreiben von Codes nicht zurechtkomme oder noch keine Anleitung gefunden habe, die es von Anfang an gut erklären würde.

    Beleuchtung gesteuert von Sonoff 4Ch
    Bewegungserkennung mit dem PIR-Melder von Integra 128 plus - Integration funktioniert.

    Skript-Bedienung:
    1. Der Melder erkennt Bewegung und schaltet die Beleuchtung für eine eingestellte Zeit ein, jede weitere Verletzung setzt die Zeit zurück und zählt nach Ablauf der Zeit erneut. Wenn der Melder keine Bewegung erkennt, erlischt das Licht. Also so etwas wie in Ihrem ersten Skript.
    2. Ich schalte die Beleuchtung mit dem lokalen (Klingel-) Schalter an der Wand oder von Domoticz ein und die Beleuchtung schaltet sich für die eingestellte Zeit ein, aber andere als in Punkt 1, jede Melderverletzung wird nach Ablauf dieser Zeit zurückgesetzt und das Licht geht ohne Verletzung aus.

    Ich kombiniere es über die Ein- und Ausgänge der Integra und blockly in Domoticz, aber es funktioniert schlecht.
  • #10
    ozogp
    Niveau 7  
    Hallo @Daro1003,

    Ad1. so was sollte dir helfen. Wenn es um Pkt 2 geht, verstehe ich den Sinn der Anwendung wirklich nicht.

    return {
    on = {
    devices = {'PIR_M'}
    },

    logging =
    {
    level = domoticz.LOG_DEBUG,
    marker = 'PIR_M',
    },
    execute = function(domoticz, device)
    --local variables
    local PIR = domoticz.devices('PIR_M')
    local Lampe = domoticz.devices('S_M')

    --local Movment = domoticz.devices('Bewegungserkennung')
    local LightingTime = 5
    if (Lampe.state == 'On') then
    Lampe.switchOff().afterMin(LightingTime)
    else
    Lampe.switchOn().forMin(LightingTime)
    end
    end
    }
  • #11
    Daro1003
    Niveau 23  
    ozogp hat geschrieben:
    Wenn es um Pkt 2 geht, verstehe ich den Sinn der Anwendung wirklich nicht.


    Nun, ich habe solche Räume wie eine Garage, einen Heizraum, eine Speisekammer, einen Kleiderschrank, wo ich ein solches Skript brauche. Wir sind es gewohnt Schalter aus einer alten traditionellen Installation zu verwenden, bei der meine Frau mit einem Schalter Licht einschaltet und nicht ausschaltet und das Licht ist an. So ein Skript schaltet es beispielsweise nach 10 Minuten aus.
  • #12
    ozogp
    Niveau 7  
    Ich verstehe, aber das wird es für Sie tun.
    Wenn der Melder Sie erwischt, leuchtet Licht 5 Minuten lang auf, wenn Sie den physischen Schalter einschalten und der Melder Sie erwischt, leuchtet Licht auch 5 Minuten lang auf, die Sache ist also erledigt.
  • #13
    Daro1003
    Niveau 23  
    return {
    on = {
    devices = {'Garage',
    'Bewegungsmelder'}
    },

    So soll ich den Melder und den Schalter ersetzen?

    Und ist es möglich, es mit zwei verschiedenen Zeiten zu erfassen?
  • #14
    ozogp
    Niveau 7  
    local PIR = domoticz.devices ('PIR_M') - PIR_M - Name Ihres Bewegungsmelders
    local Lampe = domoticz.devices ('S_M') - S_M - Name des Schalters, der den gewünschten Lichtempfang einschaltet

    Welche Software auf Sonoff? Original, Tasmota, EspEasy?
  • #15
    Daro1003
    Niveau 23  
    Auf Sonof AFE Firmware-Version T0-3.0.2
    Aber alles, was an Domoticz angeschlossen ist, funktioniert.
    Ich würde zwei verschiedene Einschaltzeiten bevorzugen, durch Melder kürzere Zeit, und durch Schalter längere.
  • #16
    ozogp
    Niveau 7  
    Mit zwei Zeiten kann ich dir nicht helfen, weil ich nicht weiß, wie es zu machen ist.

    local PIR = domoticz.devices ('PIR_M') - PIR_M - Name Ihres Bewegungsmelders
    local Lampe = domoticz.devices ('S_M') - S_M - der Name des Schalters von Domoticz, der den gewünschten Lichtempfang einschaltet
  • #17
    Daro1003
    Niveau 23  
    Ok, danke @ozogp für deine Bereitschaft, dein Skript werde ich speichern, weil es auch in Ordnung ist und wahrscheinlich nützlich sein wird.
  • #18
    ozogp
    Niveau 7  
    @Daro1003 kein Problem.
    Das Skript ist nicht von mir, ich habe es nur an meine Bedürfnisse angepasst, aber wenn es nützlich ist, freue ich mich.
  • #19
    ozogp
    Niveau 7  
    Ich bitte um Hilfe, ich benutze das Skript unten, alles funktioniert gut.
    Das Licht leuchtet nach Verletzung des Melders nach Einbruch der Dunkelheit für 10 Minuten.
    Ich benötige jedoch eine Modifikation, damit sich das Licht nach der Dämmerung einschaltet, wenn der Melder Bewegung entdeckt:
    - aber zwischen 00:00 und 6:00 würde es nach 10 Minuten erlöschen,
    - von der Dämmerung bis 23:59 soll es nicht automatisch ausschalten, sondern nur mit dem Knopf

    Ich bitte um Hilfe beim Umbau.
    Vielen Dank im Voraus

    Rückkehr {
    ein = {
    Geräte = {'PIR'}
    },
    Protokollierung =
    {
    level = domoticz.LOG_DEBUG,
    Markierung = 'PIR',
    },
    Ausführen = Funktion (domoticz, Gerät)
    --lokale Variablen
    local PIRLED = domoticz.devices ('PIR')
    lokales LEDLight = domoticz.devices ('S')
    lokale Nacht = domoticz.devices ('CZ')
    --local Bewegung = domoticz.devices ('Bewegungserkennung')
    lokale Beleuchtungszeit = 10
    if (Night.state == 'On') then
    if (LEDLight.state == 'On') then
    LEDLight.switchOff ().AfterMin (LightingTime)
    anders
    LEDLight.switchOn (). ForMin (LightingTime)
    Ende
    Ende
    Ende
    }
  • #20
    xury
    Spezialist Hausautomatisierung
    Ich kann jetzt nicht testen:
    Code: lua
    Melde dich an, um den Code zu sehen
  • #21
    ozogp
    Niveau 7  
    @xury, vielen Dank für die Antwort.
    Leider funktioniert dieser Code nicht wie erwartet, ja, das Licht geht an, aber es schaltet sich nicht automatisch nach x Minuten und zu den angegebenen Zeiten aus.
    Das Licht ist die ganze Zeit an.
    Ich habe die Dokumentation zu Zeitattributen durchgesehen, alles sieht richtig aus, wie Sie @xury geschrieben haben, aber etwas funktioniert nicht.
    Ich habe keine Ahnung, was falsch ist.
  • #22
    xury
    Spezialist Hausautomatisierung
    Ich glaube, ich weiß, was los ist. Es gibt keinen Auslöser, um dies auszulösen. Ich versuche es gleich zu korrigieren.

    Code: lua
    Melde dich an, um den Code zu sehen
  • #23
    joy
    Niveau 21  
    Kannst du mir helfen, ich brauche ein Skript, ein Dämmerungssensor Integra, plus 2 Bewegungsmelder, wird auch der dritte sein. Sechs Lichtpunkte. Das soll so funktionieren, nach Einbruch der Dunkelheit, nach der letzten Verletzung, z.B. nach 2 Minuten, geht gesamte Beleuchtung aus, außer der LED an der Tür, gesteuert im Bereich Dämmerung-23:00, aber nach dieser Zeit sollte sie angehen zusammen mit den anderen. Kann das Anzünden und Löschen der Beleuchtung nacheinander erfolgen? Die Beleuchtung muss wohl von dem Punkt aus eingeschaltet werden, der dem Bewegungsmelder am nächsten liegt.
  • #24
    ozogp
    Niveau 7  
    Guten Morgen,
    vielleicht sagt mir jemand, ich beschäftige mich schon seit mehreren Tagen mit dem Thema, habe aber keine Ahnung wie man das in Domoticz macht. Ich habe einen Messwert vom Energiezähler (L1) mit RS485 und Modbus RTU / ASCII / TCP / IP-Stecker - READ v2020.2F - er stammt von diesem Gerät und wird gut angezeigt, aber ich möchte ein Dummy-Gerät als ein Inkrementalzähler einfügen, z.B. für Energie, nennen wir ihn L2.
    Ich habe Probleme, den aktuellen Wert von L1 an L2 zu übergeben, natürlich ist L1 variabel.
    Habt Ihr eine Idee, wie es zu machen ist?
    Vielen Dank im Voraus für Ihre Hilfe.
  • #25
    xury
    Spezialist Hausautomatisierung
    Welchen Wert müssen Sie genau erreichen?
    Code: lua
    Melde dich an, um den Code zu sehen

    Wir fügen dies in das neue Skript dzvents minimal ein und löschen alles, was dort erscheint, wenn es ausgewählt wird. Die Namen müssen mit Ihren übereinstimmen. Alternativ anstelle von Namen IDX-Nummern ohne einfache Anführungszeichen.
  • #26
    ozogp
    Niveau 7  
    Guten Abend,
    Ich danke Ihnen sehr für Ihre Antwort. Ich möchte den aktuellen Verbrauch lesen und an den neuen Dummy Switch senden, der den aktuellen Verbrauchswert anzeigt und täglich summiert. Es wird möglich sein, den Verbrauch in den Berichten anzuzeigen - für bestimmte Monate, Jahre usw.
    Natürlich habe ich Grafana, aber es wäre schön, alles an einem Ort zu haben.

    In Bezug auf Ihren Code - ich habe es so gemacht, wie Sie es geschrieben haben, aber es ist abgestürzt, wenn dzVents-Ereignisse in Protokollen gelesen wurden
    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
    und immer wieder trotz der Tatsache, dass ich es von den Ereignissen und von der Festplatte entfernte. Ich hatte eine Kopie des Containers, also funktionierte es irgendwie, aber mit dem Code stimmte etwas nicht.
  • #27
    xury
    Spezialist Hausautomatisierung
    ozogp hat geschrieben:
    an den neuen Dummy Switch senden

    Sie müssen die Geräte verwechselt haben. Dummy Switch ist ein Schalter.
    Schreiben Sie genau, welche Art von virtuellen Sensoren Sie haben.
    Sensoren in meinem Skript
    'Energieverbrauch' - instant + counter
    'Stromzähler' - counter
    Das Attribut muss dem Sensortyp entsprechen.
    [F]
  • #28
    xury
    Spezialist Hausautomatisierung
    Flow, dank dessen man Daten aus dem bestellten PGE-Tagesbericht in die influxdb-Datenbank hochladen kann. Flow liest Daten zu verbrauchter, exportierter und ausgeglichener Energie aus einer CSV-Datei. Der Bericht kann auf der Website des BOK PGE bestellt werden. Der verfügbare Bereich reicht vom 01.04.2022 bis zum 31.12.2022, was mehr als 19.000 hinzuzufügende Datensätze ergibt. Flow speichert stündliche Aufzeichnungsdaten mit dem richtigen Zeitstempel, sodass die Daten an der richtigen Stelle in der Vergangenheit ankommen. Aufgrund der vielen Anfragen habe ich das Senden auf einen Wert pro Sekunde beschränkt. Am besten über Nacht stehen lassen und langsam aufbauen lassen. Bei einer leistungsstarken Maschine, auf der influxdb installiert ist, kann man die Anzahl der Anfragen erhöhen. Man kann es auch in einer txt-Datei speichern und die Daten nach dem auf dem influx-Helpdesk beschriebenen Schema hochladen.

    Vergleicht man die Daten mit denen, die von MEW-01 gesammelt wurden, scheint es, dass sie fast perfekt übereinstimmen.

    Für einen ordnungsgemäßen Betrieb benötigt man eine bei PGE bestellte CSV-Datei, die mit den Dateipfaden und den influxdb-API-Linkdaten übereinstimmt.
    https://flows.nodered.org/flow/c6e3b42319c72c290a1c8c3f14bb38f2
    Nützliche Skripte für Domoticz. DzVents, LUA, Node Red usw.
    [F]