<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="de">
	<id>http://wiki.fhem.de/w/index.php?action=history&amp;feed=atom&amp;title=Z-Wave-ZME_UZB1_USB_Dongle</id>
	<title>Z-Wave-ZME UZB1 USB Dongle - Versionsgeschichte</title>
	<link rel="self" type="application/atom+xml" href="http://wiki.fhem.de/w/index.php?action=history&amp;feed=atom&amp;title=Z-Wave-ZME_UZB1_USB_Dongle"/>
	<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave-ZME_UZB1_USB_Dongle&amp;action=history"/>
	<updated>2026-05-03T19:02:08Z</updated>
	<subtitle>Versionsgeschichte dieser Seite in FHEMWiki</subtitle>
	<generator>MediaWiki 1.43.6</generator>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Z-Wave-ZME_UZB1_USB_Dongle&amp;diff=24846&amp;oldid=prev</id>
		<title>Baumbuwe: ZME</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave-ZME_UZB1_USB_Dongle&amp;diff=24846&amp;oldid=prev"/>
		<updated>2018-01-30T12:20:46Z</updated>

		<summary type="html">&lt;p&gt;ZME&lt;/p&gt;
&lt;table style=&quot;background-color: #fff; color: #202122;&quot; data-mw=&quot;interface&quot;&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;col class=&quot;diff-marker&quot; /&gt;
				&lt;col class=&quot;diff-content&quot; /&gt;
				&lt;tr class=&quot;diff-title&quot; lang=&quot;de&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Nächstältere Version&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Version vom 30. Januar 2018, 14:20 Uhr&lt;/td&gt;
				&lt;/tr&gt;&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot; id=&quot;mw-diff-left-l241&quot;&gt;Zeile 241:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Zeile 241:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot;&gt;&lt;/td&gt;&lt;td style=&quot;background-color: #f8f9fa; color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #eaecf0; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;br&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;−&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #ffe49c; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Z-Wave Components]]&lt;/div&gt;&lt;/td&gt;&lt;td class=&quot;diff-marker&quot; data-marker=&quot;+&quot;&gt;&lt;/td&gt;&lt;td style=&quot;color: #202122; font-size: 88%; border-style: solid; border-width: 1px 1px 1px 4px; border-radius: 0.33em; border-color: #a3d3ff; vertical-align: top; white-space: pre-wrap;&quot;&gt;&lt;div&gt;[[Kategorie:Z-Wave Components&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;|CUL&lt;/ins&gt;]]&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;

&lt;!-- diff cache key c1fhemwiki:diff:1.41:old-24072:rev-24846:php=table --&gt;
&lt;/table&gt;</summary>
		<author><name>Baumbuwe</name></author>
	</entry>
	<entry>
		<id>http://wiki.fhem.de/w/index.php?title=Z-Wave-ZME_UZB1_USB_Dongle&amp;diff=24072&amp;oldid=prev</id>
		<title>Jochen0x90h: Seite erstellt: Protokoll für Z-Wave USB Dongle</title>
		<link rel="alternate" type="text/html" href="http://wiki.fhem.de/w/index.php?title=Z-Wave-ZME_UZB1_USB_Dongle&amp;diff=24072&amp;oldid=prev"/>
		<updated>2018-01-01T19:36:57Z</updated>

		<summary type="html">&lt;p&gt;Seite erstellt: Protokoll für Z-Wave USB Dongle&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Neue Seite&lt;/b&gt;&lt;/p&gt;&lt;div&gt;This is a short introduction to the communication protocol between host and UZB USB Dongle. All two digit values are hex values.&lt;br /&gt;
Also see [http://zwavepublic.com/specifications public specifications]&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
== Protocol ==&lt;br /&gt;
This section describes the communication protocol in an abstract view.&lt;br /&gt;
&lt;br /&gt;
=== Request to Controller ===&lt;br /&gt;
Send a request to the controller, e.g. get list of all nodes in the network:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send REQUEST&lt;br /&gt;
receive RESPONSE&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Request to Network ===&lt;br /&gt;
Send a request to send into the ZWave network, e.g. a command to a node to switch on a lamp:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send REQUEST (with funcId)&lt;br /&gt;
receive RESPONSE&lt;br /&gt;
receive REQUEST (contains funcId, used to filter double receive)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Request from Network ===&lt;br /&gt;
A node reports that e.g. the state of a lamp or switch has changed:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
receive REQUEST&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Messages ==&lt;br /&gt;
Messages are sent to and received from the USB Dongle via a serial port (e.g. on &lt;br /&gt;
/dev/ttyUSB0 on Linux) with these settings: 115200 bps, 8 bits, no parity, 1 stop bit.&lt;br /&gt;
&lt;br /&gt;
=== Frame ===&lt;br /&gt;
Structure of a standard frame (for list of FUNCTION values see&lt;br /&gt;
[https://github.com/OpenZWave/open-zwave/blob/master/cpp/src/Defs.h OpenZWave]):&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
FRAME = SOF length TYPE FUNCTION data checksum&lt;br /&gt;
	SOF = 01 (start of frame)&lt;br /&gt;
	length (length of following data)&lt;br /&gt;
	TYPE&lt;br /&gt;
		REQUEST = 00&lt;br /&gt;
		RESPONSE = 01&lt;br /&gt;
	FUNCTION&lt;br /&gt;
		SERIAL_API_GET_INIT_DATA = 02 (get list of nodes in the network)&lt;br /&gt;
		APPLICATION_COMMAND_HANDLER = 04 (a node reports its status)&lt;br /&gt;
		ZW_SEND_DATA = 13 (send data to a node)&lt;br /&gt;
		ZW_GET_NODE_PROTOCOL_INFO = 41 (get node device class)&lt;br /&gt;
		ZW_APPLICATION_UPDATE = 49 (a node reports its device class and command classes, &amp;quot;NIF&amp;quot;)&lt;br /&gt;
		ZW_REQUEST_NODE_INFO = 60 (request node info, ZW_APPLICATION_UPDATE follows)&lt;br /&gt;
		...&lt;br /&gt;
	data (payload data of frame)&lt;br /&gt;
	checksum (xor of frame bytes without first byte, negated)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Request Frame to send data to a node containing funcId:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
FRAME = SOF length REQUEST FUNCTION data funcId checksum&lt;br /&gt;
	funcId = 01-ff (used to associate requests that are sent in response to requests that transfer data over the network)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Request Frame received from the controller containing funcId:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
FRAME = SOF length REQUEST FUNCTION funcId data checksum&lt;br /&gt;
	funcId (same id that was used when sending a request to the controller)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Acknowledgement ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
ACK = 06&lt;br /&gt;
NACK = 15&lt;br /&gt;
CAN = 18&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Each FRAME is acknowledged with an ACK if the CHECKSUM is ok and with a NACK if there is a&lt;br /&gt;
checksum error. CAN means CANCEL and is sent when a next FRAME is sent while the other end &lt;br /&gt;
expects an ACK.&lt;br /&gt;
&lt;br /&gt;
=== Send a Request ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send REQUEST&lt;br /&gt;
receive ACK&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Receive a Frame (Request or Response) ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
receive FRAME&lt;br /&gt;
send ACK&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Send a Request with Checksum Error ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send REQUEST&lt;br /&gt;
receive NACK&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Double send before ACK ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send REQUEST&lt;br /&gt;
send REQUEST&lt;br /&gt;
receive CAN&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Node Info ==&lt;br /&gt;
Request node device class and supported command classes.&lt;br /&gt;
See 5.3.1.8 ApplicationControllerUpdate in &amp;quot;Z-Wave ZW0201/ZW0301 Appl. Prg. Guide v4.50&amp;quot;&lt;br /&gt;
&lt;br /&gt;
Request for getting node info:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send REQUEST REQUEST_NODE_INFO nodeId&lt;br /&gt;
	nodeId (id of target node)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Response to request:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
receive RESPONSE REQUEST_NODE_INFO RESULT&lt;br /&gt;
	RESULT&lt;br /&gt;
		SENT = 01&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Request for receiving a node info from a node:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
receive REQUEST APPLICATION_UPDATE STATUS nodeId length [BASIC GENERIC SPECIFIC CLASSES [CONTROL]]&lt;br /&gt;
	STATUS&lt;br /&gt;
		SUC_ID = 10&lt;br /&gt;
		DELETE_DONE = 20&lt;br /&gt;
		NEW_ID_ASSIGNED = 40&lt;br /&gt;
		ROUTING_PENDING = 80&lt;br /&gt;
		NODE_INFO_REQ_FAILED = 81&lt;br /&gt;
		NODE_INFO_REQ_DONE = 82&lt;br /&gt;
		NODE_INFO_RECEIVED = 84&lt;br /&gt;
	nodeId (id of source node)&lt;br /&gt;
	length (length of following data, may be 0)&lt;br /&gt;
	BASIC (basic device class)&lt;br /&gt;
	GENERIC (generic device class)&lt;br /&gt;
		CONTROLLER = 01&lt;br /&gt;
		STATIC_CONTROLLER = 02&lt;br /&gt;
		THERMOSTAT = 08&lt;br /&gt;
		SWITCH_BINARY = 10&lt;br /&gt;
		SWITCH_MULTILEVEL = 11&lt;br /&gt;
		SWITCH_TOGGLE = 13&lt;br /&gt;
		SENSOR_BINARY = 20&lt;br /&gt;
		SENSOR_MULTILEVEL = 21&lt;br /&gt;
		SENSOR_ALARM = a1&lt;br /&gt;
		...&lt;br /&gt;
	SPECIFIC (specific device class)&lt;br /&gt;
	CLASSES (list of supported command classes)&lt;br /&gt;
	CONTROL (list of command classes this device can control in other devices)&lt;br /&gt;
		MARK = ef (marks start of CONTROL list)		&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example: Request node info from node 4 (Fibaro FGR-222) ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send SOF length=05 REQUEST=00 REQUEST_NODE_INFO=60 nodeId=04&lt;br /&gt;
receive ACK&lt;br /&gt;
receive SOF length=04 RESPONSE=01 REQUEST_NODE_INFO=60 SENT=01&lt;br /&gt;
send ACK&lt;br /&gt;
receive SOF length=1c REQUEST=00 APPLICATION_UPDATE=49 STATUS.NODE_INFO_RECEIVED=84 nodeId=04 length=16 BASIC=04 GENERIC=11 SPECIFIC=06 CLASSES=(CONFIGURATION=70 SWITCH_BINARY=25 ...) CONTROL=(MARK=ef SWITCH_BINARY=25 ...)&lt;br /&gt;
send ACK&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example: Request node info from node 1 (the controller) ===&lt;br /&gt;
Fails because it has no associated NIF&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send SOF length=05 REQUEST=00 REQUEST_NODE_INFO=60 nodeId=01&lt;br /&gt;
receive ACK&lt;br /&gt;
receive SOF length=04 RESPONSE=01 REQUEST_NODE_INFO=60 SENT=01&lt;br /&gt;
send ACK&lt;br /&gt;
receive SOF length=06 REQUEST=00 APPLICATION_UPDATE=49 STATUS.FAILED=81 nodeId=00 length=00&lt;br /&gt;
send ACK&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
== Commands ==&lt;br /&gt;
Commands are used to tell nodes in the network to switch on the light, open the blinds or &lt;br /&gt;
lock a door. Commands are also used to report the current state of the nodes, e.g. if a light &lt;br /&gt;
or switch is on or the current temperature in a room.&lt;br /&gt;
See section 5.3.3.1 ZW_SendData and 5.3.1.5 ApplicationCommandHandler in &amp;quot;Z-Wave ZW0201/ZW0301 &lt;br /&gt;
Appl. Prg. Guide v4.50&amp;quot;.&lt;br /&gt;
See section 3.2.1 in &amp;quot;Z-Wave Application Command Class Specification&amp;quot;.&lt;br /&gt;
&lt;br /&gt;
Request for sending a command to a node:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send REQUEST ZW_SEND_DATA nodeId COMMAND TX_OPTIONS funcId&lt;br /&gt;
	nodeId (id of target node)&lt;br /&gt;
	TX_OPTIONS (transmit options, bit-wise combination of the following)&lt;br /&gt;
		ACK = 01 (request transfer acknowledge from receiving node to ensure proper transmission)&lt;br /&gt;
		LOW_POWER = 02 (low transmit power (if node is closer than 2 meters)			&lt;br /&gt;
		AUTO_ROUTE = 04 (try to transmit via repeater nodes if direct transmission is not possible)&lt;br /&gt;
		NO_ROUTE = 10 (disable routing)			&lt;br /&gt;
		EXPLORE = 20 (support explorer frames for automatic fixing of the routing table)		&lt;br /&gt;
	funcId = id to identify the request that follows the response (see Protocol)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Response to request:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
receive RESPONSE ZW_SEND_DATA RESULT&lt;br /&gt;
	RESULT&lt;br /&gt;
		SENT = 01&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Additional request that follows the response that informs about transmit status:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
receive REQUEST ZW_SEND_DATA funcId TX_STATUS ? ?&lt;br /&gt;
	TX_STATUS&lt;br /&gt;
		OK = 00&lt;br /&gt;
		NO_ACK = 01&lt;br /&gt;
		FAIL = 02&lt;br /&gt;
		NOT_IDLE = 03&lt;br /&gt;
		NOROUTE = 04&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Request for receiving a command (status report) from a node:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
receive REQUEST APPLICATION_COMMAND_HANDLER RX_STATUS nodeId COMMAND&lt;br /&gt;
	nodeId (id of source node)&lt;br /&gt;
	RX_STATUS (combination of the following flags)&lt;br /&gt;
		ROUTED_BUSY = 01&lt;br /&gt;
		LOW_POWER = 02 (received at low power)&lt;br /&gt;
		BROADCAST = 04 (received broadcast frame)&lt;br /&gt;
		MULTICAST = 08 (received multicast frame)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
Structure of a command:&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
COMMAND = length CLASS ID data&lt;br /&gt;
	length (length of command without length itself)&lt;br /&gt;
	CLASS (command class 1 or 2 bytes)&lt;br /&gt;
		BASIC = 20&lt;br /&gt;
		CONFIGURATION = 70&lt;br /&gt;
		...&lt;br /&gt;
	ID (class specific command identifiers)&lt;br /&gt;
		GET&lt;br /&gt;
		SET&lt;br /&gt;
		REPORT&lt;br /&gt;
		...&lt;br /&gt;
	data (data of command)&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
=== Example: Get BASIC value of node 4 (value is reported in an additional request) ===&lt;br /&gt;
 &amp;lt;nowiki&amp;gt;&lt;br /&gt;
send SOF length=09 REQUEST=00 ZW_SEND_DATA=13 node=04 COMMAND=(length=02 BASIC=20 GET=02) TX_OPTIONS=05 funcId=37&lt;br /&gt;
receive ACK&lt;br /&gt;
receive SOF length=04 RESPONSE=01 ZW_SEND_DATA=13 RESULT.SENT=01&lt;br /&gt;
send ACK&lt;br /&gt;
receive SOF length=07 REQUEST=00 ZW_SEND_DATA=13 funcId=37 TX_STATUS.OK=00 00? 02?&lt;br /&gt;
send ACK&lt;br /&gt;
receive SOF length=09 REQUEST=00 APPLICATION_COMMAND_HANDLER=04 RX_STATUS=00 nodeId=04 COMMAND=(length=03 BASIC=20 REPORT=03 value=01)&lt;br /&gt;
send ACK&lt;br /&gt;
&amp;lt;/nowiki&amp;gt;&lt;br /&gt;
&lt;br /&gt;
&lt;br /&gt;
[[Kategorie:Z-Wave Components]]&lt;/div&gt;</summary>
		<author><name>Jochen0x90h</name></author>
	</entry>
</feed>