рд╣рдо рдЪреАрдиреА рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдмрд┐рдирд╛, рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ CO work Xiaomi ClearGrass Air Detector рд╕реЗрдВрд╕рд░ рдХреЗ рд╕рд╛рде рдХрд╛рдо рдХрд░рддреЗ рд╣реИрдВ



рд▓рдВрдмреЗ рд╕рдордп рд╕реЗ рдореИрдВрдиреЗ рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рдореЗрдВ рдХрд╛рд░реНрдмрди рдбрд╛рдЗрдСрдХреНрд╕рд╛рдЗрдб рд╕реЗрдВрд╕рд░ CO home рд▓рдЧрд╛рдиреЗ рдХреА рдпреЛрдЬрдирд╛ рдмрдирд╛рдИред рдХреАрдордд / рдЧреБрдгрд╡рддреНрддрд╛ / рдлрд╝рдВрдХреНрд╢рди / рдЙрдкрд╕реНрдерд┐рддрд┐ рдХреЗ рд╕рдВрджрд░реНрдн рдореЗрдВ, Xiaomi ClearGrass Air Detector рдореЗрд░реЗ рд▓рд┐рдП рд╕рдмрд╕реЗ рдЕрдЪреНрдЫрд╛ рд░рд╣рд╛ред рд╡рд╛рдпреБ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдореЗрдВ рд╕реЗрдВрд╕рд░ рд╣реЛрддреЗ рд╣реИрдВ:

  1. COтВВ
  2. tVOC (рд╡рд╛рд╖реНрдкрд╢реАрд▓ рдХрд╛рд░реНрдмрдирд┐рдХ рдпреМрдЧрд┐рдХ)
  3. PM2.5
  4. рддрд╛рдкрдорд╛рди
  5. рдирдореА

ClearGrass рдореЗрдВ рдЙрдЪреНрдЪ рдЧреБрдгрд╡рддреНрддрд╛ рд╡рд╛рд▓реА рд╕реНрдХреНрд░реАрди рд╣реИ рдЬрд┐рд╕рдореЗрдВ рдмрдбрд╝реЗ рд╡реНрдпреВрдЗрдВрдЧ рдПрдВрдЧрд▓ рдФрд░ 6 рдШрдВрдЯреЗ рдХреА рдмреИрдЯрд░реА рд▓рд╛рдЗрдл рд╣реИред рдЗрд╕ рддрд░рд╣ рдХреЗ рдбрд┐рд╡рд╛рдЗрд╕ рдХреЗ рд▓рд┐рдП $ 130 рдХреЗ рдХреНрд╖реЗрддреНрд░ рдореЗрдВ рдХреАрдордд рдЗрд╕реЗ рдЕрд╡рд╢реНрдп рд╣реА рд╕реЗрдЧрдореЗрдВрдЯ рдореЗрдВ рдмрджрд▓ рджреЗрддреА рд╣реИ! рдорд╣рд╛рди рд╕рдореАрдХреНрд╖рд╛ mysku.ru рдкрд░ рдкрдврд╝реА рдЬрд╛ рд╕рдХрддреА рд╣реИ ред

рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЛ рдореВрд▓ qingping + рдпрд╛ MiHome рдПрдкреНрд▓рд┐рдХреЗрд╢рди рдореЗрдВ рдЬреЛрдбрд╝рд╛ рдЬрд╛ рд╕рдХрддрд╛ рд╣реИ , рджреЛрдиреЛрдВ рд╣реА рдорд╛рдорд▓реЛрдВ рдореЗрдВ рдбреЗрдЯрд╛ рдЪреАрдиреА рд╕рд░реНрд╡рд░реЛрдВ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЬрд╛рддрд╛ рд╣реИ, рдЬреЛ рд╕реНрдкрд╖реНрдЯ рд░реВрдк рд╕реЗ рдореБрдЭреЗ рд╕реВрдЯ рдирд╣реАрдВ рдХрд░рддрд╛ рдерд╛ред рдореИрдВрдиреЗ рдпрд╣ рдкрддрд╛ рд▓рдЧрд╛рдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдХрд┐ рддреАрд╕рд░реЗ рдкрдХреНрд╖ рдХреЗ рд░рд┐рдореЛрдЯ рд╕рд░реНрд╡рд░ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд┐рдП рдмрд┐рдирд╛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рд╕реЗрдВрд╕рд░ рд╕реЗ рдбреЗрдЯрд╛ рдХреИрд╕реЗ рдкреНрд░рд╛рдкреНрдд рдХрд┐рдпрд╛ рдЬрд╛рдПред

1. рдпрд╛рддрд╛рдпрд╛рдд рдХрд╛ рдЕрдзреНрдпрдпрди рдХрд░реЗрдВ


рдкрд╣рд▓рд╛ рдХрджрдо рдпрд╣ рджреЗрдЦрдирд╛ рдерд╛ рдХрд┐ ClearGrass рдбреЗрдЯрд╛ рдХреЛ qingping + рдЕрдиреБрдкреНрд░рдпреЛрдЧ рдореЗрдВ рдХреИрд╕реЗ рд╕реНрдерд╛рдирд╛рдВрддрд░рд┐рдд рдХрд░рддрд╛ рд╣реИ ред ClearGrass рд╡рд╛рдИ-рдлрд╛рдИ рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рдЗрдВрдЯрд░рдиреЗрдЯ рд╕реЗ рдЬреБрдбрд╝рддрд╛ рд╣реИред рдЯреНрд░реИрдлрд╝рд┐рдХ рд╕реБрдирдиреЗ рдХреЗ рд▓рд┐рдП, рдореИрдВрдиреЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рд╡рд╛рдИ-рдлрд╛рдИ рдкрд░ рдПрдХ рдПрдХреНрд╕реЗрд╕ рдкреЙрдЗрдВрдЯ рдЙрдард╛рдпрд╛ рдФрд░ рдЬрд╛рдирдХрд╛рд░реА рдЗрдХрдЯреНрдард╛ рдХрд░рдиреЗ рдХреЗ рд▓рд┐рдП tcpdump рд╢реБрд░реВ рдХрд┐рдпрд╛:

sudo tcpdump -i wlan0 -vv -s0 -X -n port 1883 -s 65535 -w cleargrass.pcap

рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдг рд╕реЗ рдкрддрд╛ рдЪрд▓рд╛ рд╣реИ рдХрд┐ ClearGrass рд▓рдЧрднрдЧ 5 рдЕрд▓рдЧ-рдЕрд▓рдЧ IP рдкрддреЛрдВ рдкрд░ рдкрд╣реБрдВрдЪрддрд╛ рд╣реИ, рдФрд░ 154.8.191.174 рдкрд░ рдпрд╣ MQTT рдкреНрд░реЛрдЯреЛрдХреЙрд▓ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рдХреЗ рдПрдпрд░ рдХреНрд╡рд╛рд▓рд┐рдЯреА рдбреЗрдЯрд╛ рдХреЛ рдЕрдирдПрдиреНрдХреНрд░рд┐рдкреНрдЯреЗрдб рдЯреНрд░рд╛рдВрд╕рдорд┐рдЯ рдХрд░рддрд╛ рд╣реИ ред



2. рд╣рдо рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ ClearGrass рд╕реЗ рдпрд╛рддрд╛рдпрд╛рдд рд▓рдкреЗрдЯрддреЗ рд╣реИрдВ


Iptables рдХреЗ рд╕рд╛рде рдереЛрдбрд╝рд╛ рдкреНрд░рдпреЛрдЧ рдХрд░рдиреЗ рдХреЗ рдмрд╛рдж , рдореИрдВ рдЗрд╕ рдирд┐рдпрдо рдкрд░ рдЖрдпрд╛:

sudo iptables -i wlan0 -t nat -A PREROUTING -s 192.168.115.19 -j REDIRECT

рдпрд╣ рдЗрд╕ рддрд░рд╣ рдкрдврд╝рддрд╛ рд╣реИ: "192.168.115.19 (IP ClearGrass) рд╕реЗ wlan0 рдЗрдВрдЯрд░рдлрд╝реЗрд╕ рдкрд░ рд╕рднреА рдирдП рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рд╕реНрдерд╛рдиреАрдп рд╕реНрддрд░ рдкрд░ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдХрд┐рдпрд╛ рдЬрд╛рдирд╛ рдЪрд╛рд╣рд┐рдПред" рдореИрдВ iptables рдХрд╛ рдПрдХ рдмрдбрд╝рд╛ рдкрд╛рд░рдЦреА рдирд╣реАрдВ рд╣реВрдВ, рдЗрд╕рд▓рд┐рдП рдореБрдЭреЗ рд╕реБрдЭрд╛рд╡реЛрдВ рдФрд░ рд╕реБрдзрд╛рд░реЛрдВ рдХреЗ рд▓рд┐рдП рдЦреБрд╢реА рд╣реЛрдЧреАред рдЗрд╕ рдирд┐рдпрдо рдореЗрдВ рдПрдХ рдорд╛рдЗрдирд╕ рд╣реИ, рдЕрдЧрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдкрд╣рд▓реЗ рд╕реЗ рд╣реА рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рд╕реЗ рдЬреБрдбрд╝рд╛ рд╣реБрдЖ рд╣реИ, рддреЛ рдЯреНрд░реИрдлрд╝рд┐рдХ рдХреЛ рдкреБрдирд░реНрдирд┐рд░реНрджреЗрд╢рд┐рдд рдирд╣реАрдВ рдХрд┐рдпрд╛ рдЬрд╛рдПрдЧрд╛ред рдкрд╣рд▓реЗ рдЖрдкрдХреЛ рдирд┐рдпрдо рдЪрд▓рд╛рдиреЗ рдХреА рдЖрд╡рд╢реНрдпрдХрддрд╛ рд╣реИ рдФрд░ рдЙрд╕рдХреЗ рдмрд╛рдж рд╣реА ClearGrass рдХреЛ Wi-Fi рдХреЗ рдорд╛рдзреНрдпрдо рд╕реЗ рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рд╕реЗ рдХрдиреЗрдХреНрдЯ рдХрд░реЗрдВред

рдирддреАрдЬрддрди, рд░рд╛рд╕реНрдкрдмреЗрд░реА рдкрд╛рдИ рдкрд░ рдПрдордХреНрдпреВрдЯреАрдЯреА рдордЪреНрдЫрд░ рджрд▓рд╛рд▓ рдХреЛ рдЙрдард╛рдпрд╛ , рдореИрдВрдиреЗ рджреЗрдЦрд╛ рдХрд┐ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдПрдХ рдорд┐рдирдЯ рдореЗрдВ рдПрдХ рдмрд╛рд░ рд╡рд╛рдпреБ рдЧреБрдгрд╡рддреНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╕рд╛рд░рд┐рдд рдХрд░рддрд╛ рд╣реИред

3. рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рдЬреЗрдб-рд╡реЗ рдХреЗ рд▓рд┐рдП JS рдкрд░ MQTT рдиреИрдиреЛ-рдмреНрд░реЛрдХрд░


рдПрдХ рд╣реЛрдо рдСрдЯреЛрдореЗрд╢рди рд╕рд░реНрд╡рд░ рдХреЗ рд░реВрдк рдореЗрдВ, рдореИрдВ рдЬреЗрдб-рд╡реЗ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░рддрд╛ рд╣реВрдВ, рдЬреЛ рдХрдИ рдЬреЗрдб-рд╡реЗрд╡ рдбрд┐рд╡рд╛рдЗрд╕ рдФрд░ рдЬреЗрдПрд╕ рдореЗрдВ рд╕реНрдХреНрд░рд┐рдкреНрдЯ рд▓рд┐рдЦрдиреЗ рдХреА рдХреНрд╖рдорддрд╛ рдХрд╛ рд╕рдорд░реНрдерди рдХрд░рддрд╛ рд╣реИред



рдЬреЗрдб-рд╡реЗ рдХреЗ рд▓рд┐рдП рджреБрд░реНрднрд╛рдЧреНрдп рд╕реЗ рдЬреЗрдПрд╕ рдореЗрдВ рдХреЛрдИ рдПрдордХреНрдпреВрдЯреАрдЯреА рдмреНрд░реЛрдХрд░ рдирд╣реАрдВ рд╣реИ (рдиреЛрдб.рдЬреЗрдПрд╕ рдкрд░ рдЖрдзрд╛рд░рд┐рдд рд╕рд┐рд╕реНрдЯрдо рдХреЗ рд╡рд┐рдкрд░реАрдд), рдЗрд╕рд▓рд┐рдП рдореИрдВрдиреЗ рдПрдХ рдиреНрдпреВрдирддрдо рдмреНрд░реЛрдХрд░ рд▓рд┐рдЦрдиреЗ рдХрд╛ рдлреИрд╕рд▓рд╛ рдХрд┐рдпрд╛ рдЬреЛ рдХреЗрд╡рд▓ рдЗрд╕ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдХреЗ рдбреЗрдЯрд╛ рдХреЛ рд╕реНрд╡реАрдХрд╛рд░ рдХрд░рддрд╛ рд╣реИ рдФрд░ рдХреБрдЫ рдФрд░ рдирд╣реАрдВ рдХрд░ рд╕рдХрддрд╛ рд╣реИред рд╡рд┐рд╢реЗрд╖ рд░реВрдк рд╕реЗ рдкреНрд░рд▓реЗрдЦрди рдХреЛ рдкрдврд╝реЗ рдмрд┐рдирд╛, рдореИрдВрдиреЗ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рдФрд░ рдордЪреНрдЫрд░ рдХреЗ рдмреАрдЪ рд╕рдВрдЪрд╛рд░ рдХреЛ рджреЗрдЦрд╛ рдФрд░ рдирд┐рдореНрдирд▓рд┐рдЦрд┐рдд рдЕрдиреБрдХреНрд░рдо рд╕рдВрдХрд▓рд┐рдд рдХрд┐рдпрд╛:

MQTT PROTOCOL

Connect Command (sensor -> broker)
	0x10 - Connect Command

Connect Ack (broker -> sensor)
	0x20 - Connect Ack
	0x02 - Len 2
	0x00
	0x00 - Connection Accepted

Subscribe Request (sensor -> broker)
	0x82 - 0b1000 0010; 0b1000 - Subscribe Request

Subscribe Ack (broker -> sensor)
	0x90 - 0b1001 0000; 0b1001 - Subscribe Ack
	0x03 - Len 3
	0x00
	0x08 - Message identifier 8
	0x00 - Fire and Forget

Ping Request (sensor -> broker)
	0xC0 - Ping Request
	0x00 - Len 0

Ping Response (broker -> sensor)
	0xD0 - Ping Response
	0x00 - Len 0

Publish Message (sensor -> broker)
	0x30 - Publish Message
	0x96
	0x04 - Len 534

рдкрд░рд┐рдгрд╛рдорд╕реНрд╡рд░реВрдк, рдПрдХ рд╕рд░рд▓ JS рд╕реНрдХреНрд░рд┐рдкреНрдЯ рдХрд╛ рдЬрдиреНрдо рд╣реБрдЖ:

mqttSocket.reusable();
mqttSocket.bind(1883);
mqttSocket.onrecv = function(data, host, port) {
	var arr = new Uint8Array(data);

	switch(arr[0]) {
		// PING
		case 0xC0:
			console.log("---------- MQTT PING RESPONSE");
			this.send([0xD0, 0x00]);
			break;
		// CONNECT
		case 0x10:
			console.log("---------- MQTT CONNECT ACK");
			this.send([0x20, 0x02, 0x00, 0x00]);
			break;
		// SUBSCRIBE
		case 0x82:
			console.log("---------- MQTT SUBSCRIBE ACK");
			this.send([0x90, 0x03, arr[2], arr[3], 0x00]);
			break;
		// PUBLISH
		case 0x30:
			var sensorPayload = self.getPayload(arr);
			var sensorMessage = sensorPayload.substr(sensorPayload.indexOf('{'), sensorPayload.lastIndexOf('}'));
			var sensorObj = JSON.parse(sensorMessage);
			console.logJS("---------- MQTT MESSAGE:", sensorObj);
			console.logJS("---------- CO2: ", sensorObj.data.co2);
			self.vDevCO2.set("metrics:level", sensorObj.data.co2);
			break;
	}
};
mqttSocket.listen();

рдмреЗрд╢рдХ, рдЬрдмрдХрд┐ рдмрд╣реБрдд рдХреБрдЫ рдХреЛ рдзреНрдпрд╛рди рдореЗрдВ рдирд╣реАрдВ рд░рдЦрд╛ рдЧрдпрд╛ рд╣реИ, рдЙрджрд╛рд╣рд░рдг рдХреЗ рд▓рд┐рдП, рдПрдХ рдЖрдзрд╛рд░ рдореЗрдВ, рдкрд┐рдВрдЧ рдФрд░ рдореИрд╕реЗрдЬ рджреЛрдиреЛрдВ рдЖ рд╕рдХрддреЗ рд╣реИрдВ, рд▓реЗрдХрд┐рди рдореИрдВ рдЗрд╕рдореЗрдВ рд╕реЗ рдХреБрдЫ рдХреЛ рдпрд╛рдж рдХрд░реВрдВрдЧрд╛ред рд╢рд╛рдпрдж рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ рдЬреЗрдб-рд╡реЗ рдХреЗ рд▓рд┐рдП рдПрдордХреНрдпреВрдЯреАрдЯреА рдмреНрд░реЛрдХрд░ рдмрдирд╛рдиреЗ рдХреЗ рд▓рд┐рдП рдПрдбреАрдЬ рдХреЛрдб рдмреЗрд╕ рдХрд╛ рдЙрдкрдпреЛрдЧ рдХрд░реВрдВрдЧрд╛ ред рдФрд░ рдлрд┐рд▓рд╣рд╛рд▓, рд▓рдХреНрд╖реНрдп Xiaomi ClearGrass рдПрдпрд░ рдбрд┐рдЯреЗрдХреНрдЯрд░ рд╡рд┐рд╢реНрд▓реЗрд╖рдХ рд╕реЗ рд╕реНрдерд╛рдиреАрдп рд░реВрдк рд╕реЗ рд╡рд╛рдпреБ рдЧреБрдгрд╡рддреНрддрд╛ рдбреЗрдЯрд╛ рдкреНрд░рд╛рдкреНрдд рдХрд░рдиреЗ рдХрд╛ рдореМрд▓рд┐рдХ рдЕрд╡рд╕рд░ рдерд╛ рдФрд░ рдпрд╣ рд▓рдХреНрд╖реНрдп рд╣рд╛рд╕рд┐рд▓ рдХрд┐рдпрд╛ рдЧрдпрд╛ рдерд╛ред

рднрд╡рд┐рд╖реНрдп рдореЗрдВ рдореИрдВ TION S3 рдмреНрд░реЗрдХрд░ рдХреЗ Z-Wave рд╕рдВрд╕реНрдХрд░рдг рдХреЛ рд╕реНрдерд╛рдкрд┐рдд рдХрд░рдирд╛ рдЪрд╛рд╣рддрд╛ рд╣реВрдВ рдФрд░ рдЗрд╕реЗ ClearGrass рдХреЗ рдбреЗрдЯрд╛ рдХреЗ рдЖрдзрд╛рд░ рдкрд░ рдирд┐рдпрдВрддреНрд░рд┐рдд рдХрд░рддрд╛ рд╣реВрдВред

All Articles