[NODE-RED] Xiaomi-Gateway chinesisch steuern

Ich wollte die Xiaomi Gateway steuern, um auf diese Sounds und Lichter zugreifen zu können. Mit Jérôme und dem Node Red-Video von Pierre-Gilles habe ich bei Node Red viel Fortschritt gemacht. Jérôme hat mir diesen Link gegeben: Xiaomi Gateway in NodeRED - NotEnoughTech, um die Befehle der Gateway zu verstehen. Um noch mehr über Node Red zu erfahren, habe ich dann diese Tutorial-Serie von Néodyme verfolgt: https://www.youtube.com/watch?v=Sf1_fbwA6iQ&list=PLYCQztVKrSmDaZG0bwnbd0PfgdXGe9Q2c&index=5.

Achtung:

Wenn wir uns für Node Red entscheiden, sollten wir wissen, dass die Xiaomi-Integration nicht mehr funktioniert, da die Gateway nur mit einer « Adresse » verbunden werden kann. Es ist Mqtt, das die Werte an Gladys sendet, was zur Folge hat: Die Sensoren funktionieren nicht mehr mit der Xiaomi-Integration. Man kann sie mit der Integration zigbbe2Mqtt verwenden. Wenn Sie Ihre Gateway noch nie in den Entwicklermodus versetzt haben, müssen Sie die Version von Mi Home auf Android zurücksetzen (siehe Kapitel « Node Gateway » unten).

Ich konnte also die LED und die Sounds der Gateway mit « nodes inject » steuern, um anzufangen (die Sounds werden immer noch von « nodes inject » gesteuert), es musste die Zeichenkette entschlüsselt werden, die an die Gateway gesendet werden soll. In diesem Video Xiaomi Gateway in NodeRED - NotEnoughTech sind die Befehle für Helligkeit und Farbe vertauscht.

Um anzufangen:

Man muss Node Red installieren (siehe Video von Pierre Gilles) (ich habe es auf dem Raspberry installiert, auf dem ich Gladys mit Putty installiert habe).

Man muss die Xiaomi Gateway-Bibliothek installieren: « node-red-contrib-xiaomi-smart-devices ».

In Node RED, klicken Sie auf die drei horizontalen Striche

Klicken Sie auf « Manage palette » 11. Zeile

Gehen Sie zum Tab « install » (oben auf der Seite), starten Sie eine Suche « Xiaomi » zum Beispiel, dann scrollen Sie nach unten, um die Palette « node-red-contrib-xiaomi-devices » zu sehen

Wählen Sie: « node-red-contrib-xiaomi-smart-devices », klicken Sie auf das kleine « install », das sich rechts befindet.

Klicken Sie auf den Tab Nodes links von « Tab install » oben, um zu überprüfen, dass die Bibliothek installiert ist.

Schließen Sie die Seite. Und in Node Red, in der linken Spalte, im Abschnitt « Filter nodes », ganz unten sollten Sie alle installierten Xiaomi-Nodes haben.

Um den « Node Gateway » zu erstellen

Klicken und ziehen Sie den Node mit dem Namen « gateway » in die Mitte des Fensters. Dann doppelklicken Sie auf den Node, klicken Sie auf den kleinen Stift, um auf das Fenster unten zuzugreifen, in dem die Parameter eingegeben werden.

Sie benötigen:

Name: Den, den Sie möchten. Das wird der Name des Xiaomi-Servers für Node Red sein

Key: Das ist das Passwort der Gateway, das man lesen kann, wenn man sie in den Entwicklermodus versetzt.

Address: Das ist die IP-Adresse, mit der Ihre Gateway in Ihrem lokalen Netzwerk verbunden ist

Port: 9898 (standardmäßig)

Wenn Sie dieses Passwort bereits unter einer älteren Version von MI HOME abgerufen haben, gibt es keinen Grund, warum es sich geändert hat, selbst nach mehreren Resets der Gateway. Ich habe das festgestellt, nachdem ich meine Version heruntergestuft hatte. Aktuell hat sich die Mi Home-App wieder aktualisiert (aktuelle Version 6.14.702) und ich habe keine Probleme.

Um die Gateway in den Entwicklermodus zu versetzen, siehe Gladys Assistant: Xiaomi Home | Gladys Assistant.

Aktuell kann man dieses Verfahren nicht mehr anwenden, da das versteckte Menü nicht mehr zugänglich ist. Ich musste meine Version von Mi Home herunterstufen, um darauf zuzugreifen.

Um zu überprüfen, ob Sie das richtige Passwort haben, wenn Sie die Parameter in den « Node Gateway » eingegeben haben, zeigt dieser Ihnen an, dass er verbunden ist, indem er Ihnen die « sid » (MAC-Adresse) Ihrer Gateway und das kleine grüne Quadrat mit der Bezeichnung « connected » zurücksendet

image

Wenn Sie das Passwort nicht haben oder Ihre Gateway noch nicht im Entwicklermodus ist, müssen Sie die Version der MI Home-App herunterstufen, folgen Sie diesen Links.

Hier ist die Adresse der Website, um eine ältere Version der Mi Home-App für Android herunterzuladen: https://androidapksfree.com/mihome/com-xiaomi-smarthome/old/ .

Lesen Sie dieses Forum, um die Methode zum Abrufen des Passworts zu erfahren:

https://community.jeedom.com/t/xiaomi-gateway-passer-en-mode-dev-sur-app-6-0-214/49374, (Nachricht 5/15 vom 13. Januar).

Ich nehme an, Sie kennen die Grundlagen von Node Red, ich überspringe die Installation der Nodes. Andernfalls sehen Sie das Video von Pierre-Gilles oder folgen Sie diesem Link:

der Lichtteil

Die an die Gateway zu sendenden Daten, um die LED zu steuern:

Hier ist der Gateway-Befehls-Flow

Ich habe die Helligkeit und die Farbe in Hexadezimal umgewandelt, die beiden Zeichenketten verkettet, dann in Dezimal umgewandelt, dann diese Zeichenkette mit dem Wert des NodeMqtt « OnOff » (0 oder 1) multipliziert, und zum Schluss habe ich das Ergebnis in einem msg.payload platziert, um es an den « Node-gateway » zu senden. Ich habe die Variablen « OnOff, Helligkeit und Farbe » mit Context-Variablen gespeichert.

Um die Gateway auszuschalten*

Man muss den RGB-Wert auf 0 setzen. Wir werden später sehen, wie man dieses 0 anwendet

image

In dem Node « Änderung des Topics » ändere ich den Namen des Mqtt-Topics OnOff von Gladys: (gladys/device/mqtt:gateway/feature/mqtt:gatewayOnOff/state), um ihn zu vereinfachen, was uns später für das Verständnis dienen wird. Das ist nicht obligatorisch.

In « to the value »: Wir benennen das Topic einfach « topic OnOff »

Um die Gateway einzuschalten

Man muss « die Farbe und die Helligkeit » kombinieren und senden:

Erklärung:

Der endgültige RGB-Wert muss eine Dezimalzahl sein. Nehmen wir die Zahl « 1677786880 », die die LED einschaltet.

Um die Funktionsweise zu verstehen, muss man diese Zahl in Hexadezimal umwandeln, in meinem Beispiel: 1677786880 ergibt in Hexadezimal: 6400FF00.

Diese Zahl wird zerlegt: 6400FF00

64 = Helligkeit (AA)

00 = rote Farbe (RR)

FF = grüne Farbe (GG)

00 = blaue Farbe (BB)

Daher wird die Gateway hier mit 100% Grün eingeschaltet. Durch Ändern der Werte von RR, GG und BB ändert man die Farben der LED. Und durch Ändern des Wertes von AA ändert man die Helligkeit.

Funktionsbereich der Werte:

AA: ist von 0 bis 64 in Hexadezimal einstellbar, also von 0 bis 100 in Dezimal (Tipp: Stellen Sie den Mqtt-Schieberegler, den Sie in Gladys erstellen, auf min 0 max 100 ein, dann müssen Sie nur noch in Node Red (Dezimal zu Hexadezimal) umwandeln). Achten Sie darauf, wenn Sie die Helligkeit auf 0 setzen, schaltet sich die Gateway aus. Ich habe einen « Node Change » hinter dem « Node Mqtt Helligkeit » hinzugefügt, um den Wert 0 vom Dashboard-Schieberegler in 2 zu ändern, damit die Gateway nicht ausgeschaltet wird.

RR, GG und BB: Die Farben sind jeweils von 0 bis FF (in Hexadezimal) oder in Dezimal von 0 bis 255 einstellbar. Wenn man alle Werte RRGGBB auf 00 oder auf RR=GG=BB einstellt, ist die Endfarbe weiß.

Helligkeitsbereich:

Ich habe den « Node Change » entfernt, um den Wert 0 vom Mqtt-Helligkeitsregler von Gladys zu verbieten, es ist besser, ihn zwischen 1 und 100 einzustellen.
image

In den « Nodes Function Helligkeit », bezeichnet « hexa und Topic-Änderung »
In Zeile 1 lese ich den msg payload des vorherigen Nodes « node Mqtt Helligkeit » und speichere ihn in der Variablen « input »
In Zeile 2 konvertiere ich den msg.payload, der eine Zeichenkette enthält, die der Dezimalzahl entspricht, die vom Mqtt-Schieberegler in Gladys empfangen wurde, in eine Zeichenkette, die diese in Hexadezimal umgewandelte Zahl enthält.

An der Zeile 3 ändere ich den Namen des Themas von Gladys in einen einfacheren Namen « topicluminosität » für die weitere Verarbeitung.
An der Zeile 4 senden wir msg.pload an den « nächsten Knoten »

Anweisungen zum Einfügen:

const input = msg.payload;

msg.payload = Number(input).toString(16);

msg.topic= "topicluminosität";

return msg;

Farbbereich,

Ich hatte ein Problem mit dem Format des Farbwerts.

Wenn man eine Farbe ohne Rot auswählt, wird der hexadezimale Wert mit 3 oder 4 Stellen ausgedrückt. Oben habe ich als Beispiel den Wert 6400FF00 genommen, wobei 64 dem Prozentsatz der Helligkeit entspricht. In diesem Stadium des Programms ist die Verkettung der Zeichenkette nicht erfolgt, daher ist mein Farbwert 00FF00. Aber wie üblich, werden die führenden 00 nicht gezählt, und daher erhalten wir in der Zeichenkette diesen Wert FF00. Nach der berühmten Verkettung, die wir später sehen, erhalten wir den Wert 64FF00 (in Dezimal = 6618880), der nicht unserer Ausgangswert (1677786880) entspricht, mit diesem Wert geht die Gateway nicht an.

Daher behandle ich dieses Problem von Zeile 2 bis Zeile 11, und wenn die Zahl tatsächlich ein 6-stelliges Format hat, gehen wir zu Zeile 13 über.

Wenn der Farbwert 3 Stellen fehlen, müssen wir 000 hinzufügen:

Zeile 1: Wir holen uns den Wert des MQTT-Knotens von Gladys (msg.payload) und legen ihn in die Variable « input ».

Zeile 2: Wir testen, ob « input » einen Wert hat, der strikt kleiner als 4096 Dezimal (in Hexa = 1000) ist, (also nie gleich 4096), aber 4095 (und in Hexa FFF). Daher werden wir in diesem Teil des Codes durchgehen, wenn der in input enthaltene Wert kleiner als 4096 ist.

Zeile 3: Ich konvertiere msg.payload, das eine Zeichenkette enthält, die einer Dezimalzahl entspricht, die von der MQTT-Taste in Gladys empfangen wurde, in eine Zeichenkette, die dieselbe Zahl enthält, aber in Hexadezimal umgewandelt. Dann lege ich sie in « valuestring ».

Zeile 4: Ich verkette die Zeichenkette « 000 » mit der Zeichenkette « valuestring », was, wenn « valuestring » = FFF ist, « 000FFF » ergibt. Dann lege ich diesen Wert in die Zeichenkette « valuemodif ».

Zeile 5: « valuemodif » wird in msg.payload eingesetzt,

Wenn der Farbwert 2 Stellen fehlen, müssen wir 00 hinzufügen:

Wir machen dasselbe wie zuvor, in diesem Fall bezieht sich die « if-Bedingung » auf die Zahl 65536, daher, wie zuvor, ist der letzte Wert, der den Eintritt in die Schleife ermöglicht, 65535 in Dezimal (FFFF in Hexa). Und wir setzen vor die Zeichenkette « valuestring » die Zeichenkette « 00 ».

Wenn der Farbwert 1 Stelle fehlt, müssen wir 0 hinzufügen:

In diesem Fall funktioniert die Farbe, die LED leuchtet, aber die Helligkeit ist verfälscht, da die fehlende Stelle in der Farbe von der Stelle der Helligkeit genommen wird. Wenn wir « valustring » = 25FF5 haben und mit « Helligkeit » verkettet, erhalten wir 6425FF5,

AA = 6 statt 64 RR = 42 GG = 5F BB = F5, während wir AA = 64 RR = 02 GG = 5F BB = F5 haben sollten.

Daher ist der hier zu testende Wert 1048576.

Und wenn die Farbe tatsächlich 6 Stellen hat, gehen wir zu Zeile 19 des Programms über.

Zeile 21: Änderung des Namens des Themas von MQTT Gladys

Zeile 22: Senden der Nachricht an den nächsten Knoten

Anweisungen zum Einfügen:

const input = msg.payload;

if (input<4095){ // kein Rot in der Farbe

valuestring = Number(input).toString(16);

valuemodif = "000"+ valuestring;

msg.payload= valuemodif;

}

else if (input<65535){ // kein Rot in der Farbe

valuestring = Number(input).toString(16);

valuemodif = "00"+ valuestring;

msg.payload= valuemodif;

}

else if (input<1048576){ // kein Rot in der Farbe

valuestring = Number(input).toString(16);

valuemodif = "00"+ valuestring;

msg.payload= valuemodif;

}

else{

msg.payload = Number(input).toString(16);

}

msg.topic= "topiccouleur";

return msg;

Und diese beiden Flows « couleur » und « luminosität » werden an den « Node Funktion Verkettung der Zeichenkette » gesendet

image

In diesem Node teste ich die Ankunft der Payloads in Abhängigkeit von ihrem Thema. Daher ist es interessant, den Namen der Themen von Gladys vereinfacht zu haben, sie sind dieselben, aber ich habe ihre jeweiligen Namen geändert.

Zeile 2, 3, 4 dienen zur Deklaration der Variablen und zu deren Speicherung in den Variablen « context ».

||, die beiden vertikalen Striche (Pipe), dienen zur Initialisierung der Variablen, wenn sie keine Werte enthalten. (Daher erste Initialisierung der LED auf Weiß bei 100% und ON = 1). Wenn man einen Node ändert und « deploy » ausführt, verliert man die Historie der Variablen und startet mit den Werten, die hinter den Pipes (||) angegeben sind.

Zeile: 22: Wir verketten die Variablen « luminosität » und « couleur », die wir in « valuestring » einsetzen.

Zeile 23: Wir transformieren die Zeichenkette in eine Zahl und setzen sie in « valuehex » (die ich « valuenum » hätte nennen sollen, aber das ändert nichts an der Funktionsweise).

Zeile 24: Wir multiplizieren « valuehex » mit dem Wert der Variable « OnOff », die wir in « Value » einsetzen. Diese Zeile ermöglicht es, die Gateway einzuschalten oder auszuschalten. Wenn « OnOff » den Wert 1 hat, schalten wir die Gateway ein, der Wert von « value » wird gleich « luminosität + couleur ». Wenn « OnOff » gleich 0 ist, schalten wir die Gateway aus, « value » wird gleich 0 und wir haben gesehen, dass wenn RGB (also « value ») = 0 ist, die Gateway ausgeschaltet wird.

Zeile 25: Wir laden den Payload mit « Value »

Zeile 26: Wir erstellen das « Json » mit dem Schlüssel der Gateway und dem RGB-Wert.

Zeile 32: Wir laden msg.payload mit dem Befehl « cmd », den die Gateway interpretieren kann.

Man muss zuerst die Gateway einschalten, dann kann man das Licht und die Farbe ändern.

Anweisungen zum Einfügen: setzen Sie Ihr Gateway-Passwort in Zeile 27 ein

var topic = msg.topic

var Luminosität =context.get("LuminositätContext")||"64";

varCouleur =context.get("CouleurContext")||"ffffff" ;

``var OnOff =context.get(« OnOffContext »)||« 0 »; // es ist besser, einen 0 als Standardwert einzusetzen

if (topic === "topiccouleur"){

Couleur =msg.payload;

context.set("CouleurContext",Couleur);

}

if (topic === "topicluminosität"){

Luminosität =msg.payload;

context.set("LuminositätContext",Luminosität);// man muss « set » und nicht « get » wie im Screenshot verwenden

}

if (topic === "topicOnOff"){

OnOff=msg.payload;

context.set("OnOffContext",OnOff);

}

var valuestring = (Luminosität + Couleur);

var valuehex = parseInt(valuestring,16);

var value = valuehex * OnOff;

msg.payload = value;

``cmd= {

"key": "xxxxxxxxxxxxxxxxxxxxxx ", // Gateway-Passwort

"data" : { "rgb" : value}

}

msg.payload = cmd;

return msg ;

MQTT-Seite von Gladys:

Auf dem Dashboard habe ich diesen Befehlstyp mit der MQTT-Integration erstellt,

In der MQTT-Integration von Gladys habe ich das Gerät Gateway erstellt, dann in diesem Gerät habe ich die folgenden Funktionen hinzugefügt:

  1. Helligkeit (Schieberegler)

  2. Ein/Aus (Schalter)

  3. die Farbpalette

  4. der vierte wird ein Sensor sein, der den Helligkeitswert des Raums empfängt, erfasst durch die Gateway (siehe unten)

Erstellung des Geräts Gateway

Hinzufügen der 4 Funktionen (siehe Gladys Assistant MQTT für die Vorgehensweise)

Für den « Node _Illumination » :

Ich hole mir die Info im « Node Debug » mit dem Namen « Lecture Gateway ».

Die erste Nachricht « cmd write » zeigt an, dass der Farbbefehl übergeben wurde, und die zweite « cmd write_ack » bestätigt die Berücksichtigung des Befehls. In der zweiten Nachricht in der Zeile « data: Objekt » haben wir die Rückgabe des RGB-Werts und den Wert der Beleuchtung, daher holen wir uns den Beleuchtungswert. Am Ende, rechts in der Zeile, fahren wir mit der Maus darüber und es erscheinen Symbole.

Wenn man auf das Symbol « Pfad kopieren » klickt, erhält man den Pfad des Wertes von « Beleuchtung » (payload.data.illumination).

image

In dem « Node Funktion Beleuchtung » unten:

Zeile 1: Man schreibt: " const input = msg. " und fügt dahinter den kopierten Pfad ein,

Zeile 2: Die Bedingung if ermöglicht es, die Anzeige in Gladys beizubehalten, andernfalls verschwindet der Beleuchtungswert bei jedem empfangenen Sensorwert, da er nicht aktualisiert wird. 1324 entspricht dem Maximalwert der Helligkeit des Sensors (kann um einige Einheiten daneben liegen :roll_eyes:)

Anweisungen zum Einfügen:

const input = msg.payload.data.illumination

if ((input > 0 & input< 1324)){

msg.payload = input;

return msg;

}

Der Sound-Teil:

Derzeit steuere ich die Gateway nur über die « Nodes Inject »: « Sound und Soundstop ». Ich habe die MQTT-Befehle noch nicht entwickelt.

Erklärung des Befehls:

Ich habe diese Liste hier gefunden: Xiaomi Gateway in NodeRED - NotEnoughTech

Liste der Sounds

stop =10000

custom1 = 10001 (hat bei mir nicht funktioniert)

custom2 = 10002 (meine Aufnahmen beginnen bei Custom 2)

Custom 3 = 10003

Custom 4 = 10004

police car 1 = 0

police car 2 = 1

accident = 2

countdown =3

ghost = 4

sniper rifle = 5

battle = 6

air raid = 7

bark = 8

doorbell = 10

knock at a door = 11

amuse = 12

alarm clock = 13

mimix = 20

enthusiastic = 21

guitar classic = 22

ice world piano = 23

leisure time = 24

childhood = 25

morning stream list = 26

music box = 27

orange = 28

thinker = 29

Ich habe alle Sounds überprüft und sie funktionieren.

Hier ist der Befehl, den der « NodeInject » « Sound » ausgibt:

Der Wert « mid » entspricht einer Nummer aus der obigen Soundliste.

Hier entspricht « mid: 0 » "police car 1", die Nummer 0

Bei den benutzerdefinierten Sounds beginnt es für mich bei 10002

Der Wert « vol » entspricht der Lautstärke, und sein Funktionsbereich kann von 0 bis 100 eingestellt werden.

Um den Sound zu stoppen, setzt man den Wert von « mid » auf 10000.

Unten ist die Kopie der Rückmeldung von « nodedebug: Gateway-Lesevorgang », nach den ausgegebenen Befehlen:

Sound-Befehl:

« Soundstop »-Befehl:

Der Sensorbereich

Hier ist der Flow für einen Tür- oder Fensteröffnungssensor.

Man erstellt einen MQTT-Sensor in Gladys, erhält sein Topic. (Siehe MQTT-Integration Gladys).

Zuvor müssen alle Sensoren mit der Gateway in der Mi Home-App verbunden werden. Und der Node Gateway muss installiert und verbunden sein (siehe Kapitel: Zum Erstellen des "Node_Gateway )

  • Zunächst wird der « NodeXiaomi Gateway Utils » verwendet, der in der Spalte Node Section Xiaomi zu finden ist. Dieser Node ermöglicht das Abrufen aller Keys aller mit der Gateway in der MiHome-App verbundenen Sensoren (kompatibel mit WiFi).

image

Konfiguration des Nodes, es reicht aus, den Namen auszuwählen, den Sie der Gateway im Dropdown-Menü gegeben haben

Nach « Done » und « Deploy » sollte die Meldung « connected » unter dem « Node Gateway Utils » erscheinen.

Dann sollte im Debug-Bereich die folgende Liste nach etwa 10 Sekunden erscheinen.

Man klickt auf das kleine Dreieck, um das Json zu entfalten

Das Objekt entfaltet sich, man kann dann den Namen aller Sensoren und ihre jeweilige Sid lesen. Der graue Bereich entspricht einer Nummer wie dieser: sid: 190d0005f568f4.

  • Man erhält den Node, der dem Sensor entspricht, den man in der Node-Spalte erstellen möchte, wir werden für das Beispiel einen "Node wall-switch " verwenden.
  • Man platziert einen « Node Funktion » und den "Node Mqtt " (der die Daten an Gladys sendet). Dann trägt man sie wie folgt ein:

image

Xiaomi Node wall-switch :

Gateway: Name Ihrer Gateway

Name: Name, der dem Node gegeben wurde

Sid: Sid, der dem Sensor aus der obigen Liste entspricht

Device: Key/Name, Sie geben eine Zahl und einen Namen an

Type: Dies ist der Typ des im Dropdown-Menü zu wählenden Knopfes, (für mich ist es ein Türöffnungssensor, offen/geschlossen, nicht verkabelt)

« Node Funktion »:

Man muss den Zustand des Knopfes « offen » oder « geschlossen » abrufen. Wenn man den Knopf (oder Sensor) auslöst, sendet die Gateway einen Befehl: « report », in diesem Json findet man unsere Informationen. Es wird in der Spalte « Debug » angezeigt. Wenn die Tür offen ist, sendet der Sensor « open », wenn die Tür geschlossen wird, sendet er « close ». Man erhält den Status in data: object.

Es reicht aus, « msg.payload = msg.payload.status » zu schreiben (Zeile 1: des « Node Funktion ») (oder « copy path » wie oben gesehen), dann muss man nur testen, ob msg.payload « open » oder « close » ist (Zeile 2). Aber Gladys kennt nur 1 oder 0, man wandelt « open » in « 1 » und « close » in « 0 » um, daher erzwingt man msg.payload = 1, wenn der Sensor « open » ist, und 0, wenn er « close » ist, (die Codezeilen 2 bis 7 tun dies). Zeile 8 gibt msg.payload an den nächsten Knoten weiter.

Anweisungen zum Einfügen:

msg.payload =msg.payload.status;

if (msg.payload == "open"){

msg.payload = 1;

}

else if(msg.payload == "close"){

msg.payload = 0;

}

return msg;

« Node Mqtt: »

Pierre-Gilles erklärt in seinem Node Red-Video, wie man den MQTT-Server deklariert.

Server = Name des MQTT-Servers

Topic = Name des Topics, das erstellt wurde, als der MQTT-Sensor in Gladys erstellt wurde

QOS 0 – sendet die Nachricht einmal (nicht garantiert)

QOS 1 – mindestens einmal (garantiert)

QOS 2 – nur einmal (garantiert)

Name = Name des Nodes, der in Node Red angezeigt wird

Done, deploy und es sollte gut sein, es bleibt nur noch zu testen.

Für die anderen Sensoren verwenden Sie das gleiche Prinzip:

  • Sensor betätigen
  • « cmd: report » lesen
  • Status in data: object finden

Es gibt mehrere Möglichkeiten, dies zu tun, ich verwende den Node Funktion, Pierre-Gilles hat den Node Change für diese Anwendung verwendet.
Ich hoffe, es war nicht zu anstrengend zu lesen.
Die Codes können sicherlich verbessert werden, da ich in Node Red und in Js Anfänger bin, daher bin ich für alle Code-Optimierungen offen.

Das war’s, aber es gibt noch die Möglichkeit, andere Radios als chinesische zu empfangen (siehe immer den gleichen Link: Xiaomi Gateway in NodeRED - NotEnoughTech)

Danke für dieses super Tutorial @Psoy, sehr vollständig!

Damit das Tutorial klarer wird, kannst du die Stellen mit Code in « code » Tags setzen, Beispiel:

msg.payload =msg.payload.status;

if (msg.payload == „open“){
  msg.payload = 1;
} else if(msg.payload == „close“){
  msg.payload = 0;
}

return msg;

Das ist leserfreundlicher :slight_smile:

Hallo Pierre-Gilles
Danke dir und auch Jérôme für die Unterstützung.
Wie kann ich das Tutorial nochmal bearbeiten, um die Änderungen vorzunehmen, die du mir angibst? Da verstehe ich gerade gar nichts :frowning_face:
Danke

Wie wende ich die « code »-Tags an?

Schau hier:

Danke für deine Antwort, :slightly_smiling_face:
Weißt du, wie ich das Tutorial, das ich gepostet habe, ändern kann, um die Änderungen anzupassen?

Unten im Tutorial hast du einen Button zum Bearbeiten :slight_smile:

Danke Pierre-Gilles, aber wenn ich auf die 3 Punkte klicke, habe ich keinen Stift

Ich habe das gleiche Problem, ich kann die Tutorials, die ich erstellt habe, nicht bearbeiten… Vielleicht eine kleine Einstellung, die überprüft werden muss @pierre-gilles ?

Es gab tatsächlich eine Zeitbegrenzung, aber die habe ich jetzt entfernt. Ihr könnt eure Beiträge jetzt normalerweise bearbeiten :slight_smile:

Danke Pierre Gilles
Es funktioniert super, ich kann es korrigieren
Guten Tag

Hallo @Psoy

Könntest du mir bitte helfen, ich habe Probleme mit dem Funktionsknoten Farbe

Beim Kopieren und Einfügen gibt es Fehler bei den Werten Valuestring und Valuemodif. Da ich alles verloren habe, bin ich auf das Einfachste und Schnellste ausgewichen :rofl:

Falls du mir einen Export dieses Knotens machen könntest :wink:

Hallo @jerome
je kopiere dir die Anweisungen des Farbfunktionsknotens.
Ich bin gerade auf dem Sprung, ich bin eine Woche weg. Falls du nicht weiterkommst, habe ich Anfang Oktober mehr Zeit, um dir zu helfen. Ich werde das Thema auf einem Handy verfolgen, aber ich habe keinen Zugriff mehr auf Node Red.
Guten Tag und viel Spaß beim Basteln. Ich denke, du hast es schon gelesen, aber im obigen Tutorial gibt es die Erklärung des Knotens « Kettenverkettung ».

[
let topic = msg.topic;
var Luminosität =context.get("LuminositätContext")||"50";
var Farbe =context.get("FarbeContext")||"ffffff" ;
var EinAus =context.get("EinAusContext")||"0";


if (topic === "topicfarbe"){
   Farbe =msg.payload;
    context.set("FarbeContext",Farbe);
}

if (topic === "topicluminosität"){
  Luminosität =msg.payload;
    context.set("LuminositätContext",Luminosität);
}  
if (topic === "topicEinAus"){
    EinAus=msg.payload;
   context.set("EinAusContext",EinAus);
}  


var valuestring = (Luminosität + Farbe); 
var valuehex = parseInt(valuestring,16);
var value = valuehex * EinAus;
msg.payload = value;
 var cmd = {       
    "key": "xxxxxxxxxxxxxxxxxxx ", // Passwort des Gateways
    "data" : { "rgb" : value}
}


msg.payload = cmd;
return msg ;


hallo @jerome
hast du es geschafft?

Hallo @Psoy

Bei mir funktionieren nur 2 von 3. Natürlich ist es die wichtigste, bei der ich nicht weiterkomme.

Ich verstehe das nicht, die Parameter sind dupliziert und das Passwort des Gateways ist korrekt.

Hast du denselben Code wie ich? Falls nicht, schick mir eine Kopie deines Codes, damit ich etwas finden kann.