<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>https://www.diychristmas.org/wiki/index.php?action=history&amp;feed=atom&amp;title=ZIPP-R</id>
	<title>ZIPP-R - Revision history</title>
	<link rel="self" type="application/atom+xml" href="https://www.diychristmas.org/wiki/index.php?action=history&amp;feed=atom&amp;title=ZIPP-R"/>
	<link rel="alternate" type="text/html" href="https://www.diychristmas.org/wiki/index.php?title=ZIPP-R&amp;action=history"/>
	<updated>2026-09-23T12:45:20Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.35.11</generator>
	<entry>
		<id>https://www.diychristmas.org/wiki/index.php?title=ZIPP-R&amp;diff=5917&amp;oldid=prev</id>
		<title>ErnieHorning: Initial ZIPP-R documentation – ZIPP-R1 hardware, ESP-NOW architecture, addressing, master/satellite operation, testing, and planned development.</title>
		<link rel="alternate" type="text/html" href="https://www.diychristmas.org/wiki/index.php?title=ZIPP-R&amp;diff=5917&amp;oldid=prev"/>
		<updated>2026-09-17T23:02:22Z</updated>

		<summary type="html">&lt;p&gt;Initial ZIPP-R documentation – ZIPP-R1 hardware, ESP-NOW architecture, addressing, master/satellite operation, testing, and planned development.&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{Warning|ZIPP-R is currently under active development. Hardware designs, firmware, communications protocols, addressing, configuration procedures, and specifications described on this page may change as development and testing continue.}}&lt;br /&gt;
&lt;br /&gt;
= ZIPP-R Relay Controller =&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ZIPP-R&amp;#039;&amp;#039;&amp;#039; (pronounced &amp;#039;&amp;#039;&amp;#039;&amp;quot;zipper&amp;quot;&amp;#039;&amp;#039;&amp;#039;) is the relay-control branch of the [[ZIPP]] project family.&lt;br /&gt;
&lt;br /&gt;
ZIPP-R is intended to provide very inexpensive distributed ON/OFF control for Christmas, Halloween, and other animated-display applications.&lt;br /&gt;
&lt;br /&gt;
Rather than locating many relay outputs on one large centralized controller, small ZIPP-R controllers can be placed wherever switched power is required.&lt;br /&gt;
&lt;br /&gt;
The first implementation, &amp;#039;&amp;#039;&amp;#039;ZIPP-R1&amp;#039;&amp;#039;&amp;#039;, provides one remotely controlled relay output using an inexpensive ESP-01S and a readily available single-channel relay module.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Project Status:&amp;#039;&amp;#039;&amp;#039; Working prototype / active development.&lt;br /&gt;
&lt;br /&gt;
== Design Goals ==&lt;br /&gt;
&lt;br /&gt;
The ZIPP-R project was developed around several goals:&lt;br /&gt;
&lt;br /&gt;
* Very low cost per controlled output&lt;br /&gt;
* Small physical size&lt;br /&gt;
* Simple remote hardware&lt;br /&gt;
* Distributed installation near the controlled load&lt;br /&gt;
* ESP-NOW wireless communication&lt;br /&gt;
* Centralized control through an ESP32 master&lt;br /&gt;
* Logical device addressing&lt;br /&gt;
* Identical firmware in multiple remote controllers where practical&lt;br /&gt;
* Automatic recovery from communication interruptions&lt;br /&gt;
* Future automatic wireless-channel selection and roaming&lt;br /&gt;
* Integration with DDP-based sequencing software&lt;br /&gt;
&lt;br /&gt;
The intention is that ZIPP-R controllers can be inexpensive enough to install wherever a switched output is useful rather than requiring every possible controller location to be planned in advance.&lt;br /&gt;
&lt;br /&gt;
== ZIPP-R1 ==&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;ZIPP-R1&amp;#039;&amp;#039;&amp;#039; is the first ZIPP-R hardware implementation.&lt;br /&gt;
&lt;br /&gt;
The &amp;quot;1&amp;quot; indicates that the controller provides one relay output.&lt;br /&gt;
&lt;br /&gt;
The initial prototype consists of:&lt;br /&gt;
&lt;br /&gt;
* ESP-01S ESP8266 module&lt;br /&gt;
* Inexpensive single-channel 5 V relay module&lt;br /&gt;
* Onboard 5 V to 3.3 V regulator&lt;br /&gt;
* Optically isolated relay-drive circuitry&lt;br /&gt;
* Compact enclosure&lt;br /&gt;
* ESP-NOW communications&lt;br /&gt;
&lt;br /&gt;
The relay module uses GPIO0 of the ESP-01S to control the relay.&lt;br /&gt;
&lt;br /&gt;
The tested hardware uses active-low relay control:&lt;br /&gt;
&lt;br /&gt;
 GPIO0 LOW  = Relay ON&lt;br /&gt;
 GPIO0 HIGH = Relay OFF&lt;br /&gt;
&lt;br /&gt;
Because GPIO0 is also an ESP8266 boot-strapping pin, the hardware and firmware must ensure that the controller can boot normally while maintaining predictable relay operation.&lt;br /&gt;
&lt;br /&gt;
== ZIPP-R1 Hardware ==&lt;br /&gt;
&lt;br /&gt;
The relay module used for the initial prototype accepts a 5 V supply and contains the circuitry required to power the ESP-01S.&lt;br /&gt;
&lt;br /&gt;
The module includes a 3.3 V regulator for the ESP-01S and a PC817 optocoupler in the relay-control circuit.&lt;br /&gt;
&lt;br /&gt;
This allows a very small complete remote controller to be constructed using only the relay board, ESP-01S, enclosure, and appropriate power and load wiring.&lt;br /&gt;
&lt;br /&gt;
The initial ZIPP-R1 enclosure was 3D printed and designed to contain the electronics and associated wiring as a compact inline controller.&lt;br /&gt;
&lt;br /&gt;
Future versions may use different relay boards, enclosures, connectors, or switching devices while retaining the same ZIPP-R communications architecture.&lt;br /&gt;
&lt;br /&gt;
== Basic Architecture ==&lt;br /&gt;
&lt;br /&gt;
ZIPP-R uses a master/satellite architecture.&lt;br /&gt;
&lt;br /&gt;
A typical system is expected to operate as follows:&lt;br /&gt;
&lt;br /&gt;
 Sequencer / Show Player&lt;br /&gt;
          |&lt;br /&gt;
         DDP&lt;br /&gt;
          |&lt;br /&gt;
      Wi-Fi&lt;br /&gt;
          |&lt;br /&gt;
   ESP32 ZIPP Master&lt;br /&gt;
          |&lt;br /&gt;
       ESP-NOW&lt;br /&gt;
          |&lt;br /&gt;
     +----+----+----+----+&lt;br /&gt;
     |         |         |&lt;br /&gt;
 ZIPP-R1   ZIPP-R1   ZIPP-R1&lt;br /&gt;
   #1        #2        #3&lt;br /&gt;
     |         |         |&lt;br /&gt;
   Relay     Relay     Relay&lt;br /&gt;
&lt;br /&gt;
The ESP32 master performs the higher-level network processing.&lt;br /&gt;
&lt;br /&gt;
The individual ESP-01S satellites perform only the relatively simple tasks required for remote relay control.&lt;br /&gt;
&lt;br /&gt;
This allows the satellite firmware and hardware to remain small and inexpensive.&lt;br /&gt;
&lt;br /&gt;
== Why ESP-NOW? ==&lt;br /&gt;
&lt;br /&gt;
A relay requires extremely little communications bandwidth compared with a pixel controller.&lt;br /&gt;
&lt;br /&gt;
Maintaining a separate conventional Wi-Fi/DDP connection for every single relay would therefore create unnecessary network traffic and Wi-Fi association overhead.&lt;br /&gt;
&lt;br /&gt;
ZIPP-R instead uses ESP-NOW between the master and the remote relay controllers.&lt;br /&gt;
&lt;br /&gt;
The ESP32 master can maintain the higher-level connection to the show system while communicating with many inexpensive ESP8266 satellites using short ESP-NOW messages.&lt;br /&gt;
&lt;br /&gt;
This architecture is intended to reduce the number of conventional Wi-Fi clients required in a large display.&lt;br /&gt;
&lt;br /&gt;
It also allows the ZIPP-R communications protocol to be optimized specifically for simple distributed control.&lt;br /&gt;
&lt;br /&gt;
== Current ESP-NOW Packet ==&lt;br /&gt;
&lt;br /&gt;
The initial development firmware uses a compact six-byte command packet.&lt;br /&gt;
&lt;br /&gt;
The packet currently contains:&lt;br /&gt;
&lt;br /&gt;
* Packet identification/magic value&lt;br /&gt;
* Protocol version&lt;br /&gt;
* Logical device ID&lt;br /&gt;
* Relay command&lt;br /&gt;
* Sequence number&lt;br /&gt;
&lt;br /&gt;
The initial development structure is:&lt;br /&gt;
&lt;br /&gt;
 struct ZippRelayPacket&lt;br /&gt;
 {&lt;br /&gt;
     uint16_t magic;&lt;br /&gt;
     uint8_t  version;&lt;br /&gt;
     uint8_t  deviceId;&lt;br /&gt;
     uint8_t  command;&lt;br /&gt;
     uint8_t  sequence;&lt;br /&gt;
 };&lt;br /&gt;
&lt;br /&gt;
The current relay command values are:&lt;br /&gt;
&lt;br /&gt;
 0 = OFF&lt;br /&gt;
 1 = ON&lt;br /&gt;
&lt;br /&gt;
The packet format is experimental and may change as development continues.&lt;br /&gt;
&lt;br /&gt;
== Logical Device Addressing ==&lt;br /&gt;
&lt;br /&gt;
ZIPP-R is intended to use simple logical addresses rather than requiring users to maintain lists of ESP8266 MAC addresses.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 ZIPP-R #1&lt;br /&gt;
 ZIPP-R #2&lt;br /&gt;
 ZIPP-R #3&lt;br /&gt;
 ...&lt;br /&gt;
 ZIPP-R #50&lt;br /&gt;
&lt;br /&gt;
The current prototype firmware contains a simple device ID in the command packet.&lt;br /&gt;
&lt;br /&gt;
Each satellite examines the logical device ID and responds only to commands intended for that device. A broadcast address may also be used for commands intended for all devices.&lt;br /&gt;
&lt;br /&gt;
The initial prototype uses:&lt;br /&gt;
&lt;br /&gt;
 Device ID 1&lt;br /&gt;
&lt;br /&gt;
for the first ZIPP-R1.&lt;br /&gt;
&lt;br /&gt;
== Automatic Commissioning ==&lt;br /&gt;
&lt;br /&gt;
A future objective is to eliminate the need to compile separate firmware for every ZIPP-R1.&lt;br /&gt;
&lt;br /&gt;
All satellites should be capable of receiving identical firmware.&lt;br /&gt;
&lt;br /&gt;
An unconfigured controller could announce itself to the master using its unique factory MAC address.&lt;br /&gt;
&lt;br /&gt;
The master could then assign an available logical ZIPP-R number.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 New ZIPP-R detected&lt;br /&gt;
 Factory MAC: xx:xx:xx:xx:xx:xx&lt;br /&gt;
 Assigned ID: ZIPP-R #17&lt;br /&gt;
&lt;br /&gt;
The satellite would store its assigned logical ID in nonvolatile memory and use that address during future operation.&lt;br /&gt;
&lt;br /&gt;
The MAC address would therefore be used internally during commissioning, but normal operation and configuration would use the simpler logical ZIPP-R number.&lt;br /&gt;
&lt;br /&gt;
A newly assigned controller could also operate its relay or indicator in a recognizable pattern so that the installer can physically identify and label the controller.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Automatic commissioning has not yet been implemented.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== ESP32 ZIPP Master ==&lt;br /&gt;
&lt;br /&gt;
The current development master uses an ESP32-C3.&lt;br /&gt;
&lt;br /&gt;
The master is responsible for communicating with the remote ESP-01S ZIPP-R controllers.&lt;br /&gt;
&lt;br /&gt;
The first bench-test firmware accepts simple commands through the USB serial interface and transmits the corresponding relay command using ESP-NOW.&lt;br /&gt;
&lt;br /&gt;
Initial testing successfully demonstrated:&lt;br /&gt;
&lt;br /&gt;
 ESP32-C3&lt;br /&gt;
     |&lt;br /&gt;
  ESP-NOW&lt;br /&gt;
     |&lt;br /&gt;
  ESP-01S&lt;br /&gt;
     |&lt;br /&gt;
   GPIO0&lt;br /&gt;
     |&lt;br /&gt;
   Relay&lt;br /&gt;
&lt;br /&gt;
The first working prototype successfully operated the relay remotely using ESP-NOW commands.&lt;br /&gt;
&lt;br /&gt;
This established the basic communications and hardware architecture before DDP and other higher-level features were added.&lt;br /&gt;
&lt;br /&gt;
== Initial Bench Testing ==&lt;br /&gt;
&lt;br /&gt;
The first ZIPP-R1 ESP-NOW test used:&lt;br /&gt;
&lt;br /&gt;
* ESP32-C3 master&lt;br /&gt;
* ESP-01S satellite&lt;br /&gt;
* Single-channel relay module&lt;br /&gt;
* ESP-NOW channel 1&lt;br /&gt;
* Logical Device ID 1&lt;br /&gt;
* Serial commands at the master for testing&lt;br /&gt;
&lt;br /&gt;
Development commands included:&lt;br /&gt;
&lt;br /&gt;
 1 = Relay ON&lt;br /&gt;
 0 = Relay OFF&lt;br /&gt;
 t = Toggle relay&lt;br /&gt;
 s = Display status&lt;br /&gt;
&lt;br /&gt;
The ESP32-C3 transmitted the six-byte ZIPP-R packet using ESP-NOW.&lt;br /&gt;
&lt;br /&gt;
The ESP-01S received the packet, verified the packet information and logical device address, and controlled GPIO0 accordingly.&lt;br /&gt;
&lt;br /&gt;
Remote ON and OFF operation of the physical relay was successfully demonstrated.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;This was the first successful end-to-end ZIPP-R1 communications test.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== DDP Integration ==&lt;br /&gt;
&lt;br /&gt;
The eventual ZIPP-R master is intended to receive DDP data from a sequencing or show-player application.&lt;br /&gt;
&lt;br /&gt;
Individual DDP channels can then be mapped to logical ZIPP-R outputs.&lt;br /&gt;
&lt;br /&gt;
For example:&lt;br /&gt;
&lt;br /&gt;
 DDP Channel 1  -&amp;gt; ZIPP-R #1&lt;br /&gt;
 DDP Channel 2  -&amp;gt; ZIPP-R #2&lt;br /&gt;
 DDP Channel 3  -&amp;gt; ZIPP-R #3&lt;br /&gt;
&lt;br /&gt;
The master converts the incoming channel state into the small ESP-NOW command required by the appropriate satellite.&lt;br /&gt;
&lt;br /&gt;
This allows sequencing software to treat ZIPP-R outputs similarly to other show channels without requiring the software to understand ESP-NOW or the individual remote devices.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;DDP-to-ZIPP-R operation has not yet been implemented or tested.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Sequencing Software ==&lt;br /&gt;
&lt;br /&gt;
Because the planned interface between the show computer and ZIPP master is DDP, ZIPP-R should not inherently depend on one particular sequencing application.&lt;br /&gt;
&lt;br /&gt;
[[xLights]] is expected to be the primary software used during development.&lt;br /&gt;
&lt;br /&gt;
Other sequencing or show-player applications capable of transmitting compatible DDP data should potentially be capable of controlling ZIPP-R through the master.&lt;br /&gt;
&lt;br /&gt;
Software compatibility should be considered unverified until specifically tested.&lt;br /&gt;
&lt;br /&gt;
== Heartbeat and Failsafe ==&lt;br /&gt;
&lt;br /&gt;
A future ZIPP-R communications system is expected to include periodic heartbeat or state messages.&lt;br /&gt;
&lt;br /&gt;
The master can periodically retransmit the desired state of each output even when no change has occurred.&lt;br /&gt;
&lt;br /&gt;
This provides several advantages:&lt;br /&gt;
&lt;br /&gt;
* Recovery from a missed command&lt;br /&gt;
* Confirmation that the master is still operating&lt;br /&gt;
* Detection of communication loss&lt;br /&gt;
* Automatic restoration of the correct relay state after temporary interference&lt;br /&gt;
&lt;br /&gt;
A satellite that fails to hear the master for a defined period can enter a predetermined safe state.&lt;br /&gt;
&lt;br /&gt;
For many ZIPP-R applications, the expected failsafe state will be:&lt;br /&gt;
&lt;br /&gt;
 Relay OFF&lt;br /&gt;
&lt;br /&gt;
The exact heartbeat interval and failsafe behavior have not yet been finalized.&lt;br /&gt;
&lt;br /&gt;
== Acknowledgements and Status ==&lt;br /&gt;
&lt;br /&gt;
ESP-NOW provides information about successful radio transmission, but radio-level delivery does not necessarily prove that the physical relay changed state.&lt;br /&gt;
&lt;br /&gt;
Future ZIPP-R development may therefore include application-level acknowledgement and status reporting from satellites to the master.&lt;br /&gt;
&lt;br /&gt;
This could allow the master to distinguish between:&lt;br /&gt;
&lt;br /&gt;
* Command transmitted&lt;br /&gt;
* Command received&lt;br /&gt;
* Command accepted&lt;br /&gt;
* Relay state changed&lt;br /&gt;
* Satellite communication lost&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Application-level acknowledgement has not yet been implemented.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Wireless Channel Selection and Roaming ==&lt;br /&gt;
&lt;br /&gt;
Automatic 2.4 GHz channel selection and roaming are planned features of the ZIPP communications architecture.&lt;br /&gt;
&lt;br /&gt;
The objective is to avoid permanently assigning every ZIPP-R controller to one manually selected RF channel.&lt;br /&gt;
&lt;br /&gt;
A future ZIPP-R satellite may:&lt;br /&gt;
&lt;br /&gt;
* Start on its last known working channel&lt;br /&gt;
* Listen for a recognizable ZIPP master beacon&lt;br /&gt;
* Remain on that channel when the master is found&lt;br /&gt;
* Detect loss of the master heartbeat&lt;br /&gt;
* Search permitted channels when communication is lost&lt;br /&gt;
* Rediscover the ZIPP master automatically&lt;br /&gt;
* Store the newly discovered channel for future startup&lt;br /&gt;
&lt;br /&gt;
The master may eventually evaluate the local 2.4 GHz RF environment and select the most suitable usable channel.&lt;br /&gt;
&lt;br /&gt;
A possible future channel-change procedure is:&lt;br /&gt;
&lt;br /&gt;
 Master determines that another channel is preferable&lt;br /&gt;
                 |&lt;br /&gt;
 Master announces the new channel&lt;br /&gt;
                 |&lt;br /&gt;
 Satellites acknowledge or prepare to move&lt;br /&gt;
                 |&lt;br /&gt;
 Master and satellites change channels&lt;br /&gt;
                 |&lt;br /&gt;
 Normal communications resume&lt;br /&gt;
&lt;br /&gt;
A satellite that misses the channel-change announcement could eventually detect loss of the heartbeat, begin searching, and rediscover the master.&lt;br /&gt;
&lt;br /&gt;
This makes ZIPP-R an attractive development platform for testing automatic channel selection because relay-control traffic requires very little bandwidth.&lt;br /&gt;
&lt;br /&gt;
There is an important limitation when the ESP32 master is simultaneously associated with a conventional Wi-Fi access point. Wi-Fi and ESP-NOW share the ESP32&amp;#039;s 2.4 GHz radio, so channel selection must account for the channel being used by the Wi-Fi network.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Automatic channel selection and roaming have not yet been implemented.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
== Multiple ZIPP-R Controllers ==&lt;br /&gt;
&lt;br /&gt;
The ZIPP-R architecture is intended to support many inexpensive remote controllers from one master.&lt;br /&gt;
&lt;br /&gt;
Because relay commands are very small and relay states change relatively infrequently, communications requirements are much lower than those of pixel controllers.&lt;br /&gt;
&lt;br /&gt;
The practical maximum number of satellites has not yet been established.&lt;br /&gt;
&lt;br /&gt;
Future testing will determine:&lt;br /&gt;
&lt;br /&gt;
* Maximum practical controller count&lt;br /&gt;
* Command latency&lt;br /&gt;
* Packet-loss behavior&lt;br /&gt;
* Startup and discovery time&lt;br /&gt;
* Recovery after interference&lt;br /&gt;
* Channel-roaming performance&lt;br /&gt;
* Master processing requirements&lt;br /&gt;
&lt;br /&gt;
== Possible Future ZIPP-R Variants ==&lt;br /&gt;
&lt;br /&gt;
ZIPP-R1 identifies the current single-relay controller.&lt;br /&gt;
&lt;br /&gt;
The architecture does not require every future ZIPP-R controller to contain only one output.&lt;br /&gt;
&lt;br /&gt;
Possible future variants could include:&lt;br /&gt;
&lt;br /&gt;
 ZIPP-R1  - One relay output&lt;br /&gt;
 ZIPP-R4  - Four relay outputs&lt;br /&gt;
 ZIPP-R8  - Eight relay outputs&lt;br /&gt;
&lt;br /&gt;
These variants are conceptual unless separately documented as completed hardware.&lt;br /&gt;
&lt;br /&gt;
For widely separated loads, multiple inexpensive ZIPP-R1 controllers may be preferable to a larger multi-output controller.&lt;br /&gt;
&lt;br /&gt;
For several loads located together, a multi-relay ZIPP-R controller could reduce the total hardware required.&lt;br /&gt;
&lt;br /&gt;
== Enclosure ==&lt;br /&gt;
&lt;br /&gt;
The initial ZIPP-R1 prototype uses a custom 3D-printed enclosure.&lt;br /&gt;
&lt;br /&gt;
The enclosure is intended to contain the ESP-01S relay module and associated wiring in a compact package suitable for distributed use.&lt;br /&gt;
&lt;br /&gt;
Multiple enclosures can be printed inexpensively, making it practical to construct a relatively large number of identical remote controllers.&lt;br /&gt;
&lt;br /&gt;
Enclosure files and construction details may be added after the design has been sufficiently tested and finalized.&lt;br /&gt;
&lt;br /&gt;
== Firmware ==&lt;br /&gt;
&lt;br /&gt;
Two firmware components are required by the current ZIPP-R architecture:&lt;br /&gt;
&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ZIPP-R satellite firmware&amp;#039;&amp;#039;&amp;#039; for the ESP-01S&lt;br /&gt;
* &amp;#039;&amp;#039;&amp;#039;ZIPP Master firmware&amp;#039;&amp;#039;&amp;#039; for the ESP32&lt;br /&gt;
&lt;br /&gt;
The current firmware is development firmware and should not yet be considered a general release.&lt;br /&gt;
&lt;br /&gt;
The first working satellite development firmware provides:&lt;br /&gt;
&lt;br /&gt;
* ESP-NOW reception&lt;br /&gt;
* Logical device filtering&lt;br /&gt;
* Relay ON/OFF control&lt;br /&gt;
* Serial diagnostics&lt;br /&gt;
* Manual serial testing&lt;br /&gt;
&lt;br /&gt;
The first working ESP32-C3 master development firmware provides:&lt;br /&gt;
&lt;br /&gt;
* ESP-NOW transmission&lt;br /&gt;
* Logical device addressing&lt;br /&gt;
* Serial ON/OFF commands&lt;br /&gt;
* Toggle command&lt;br /&gt;
* Status diagnostics&lt;br /&gt;
&lt;br /&gt;
Firmware downloads and programming instructions will be added when suitable versions are ready for general use.&lt;br /&gt;
&lt;br /&gt;
== Safety ==&lt;br /&gt;
&lt;br /&gt;
ZIPP-R may be used to control line-voltage electrical loads.&lt;br /&gt;
&lt;br /&gt;
&amp;#039;&amp;#039;&amp;#039;Line voltage can cause serious injury, fire, or death.&amp;#039;&amp;#039;&amp;#039;&lt;br /&gt;
&lt;br /&gt;
Appropriate electrical construction practices, insulation, strain relief, fusing, enclosure design, wire sizes, connectors, weather protection, and component ratings must be used.&lt;br /&gt;
&lt;br /&gt;
Low-voltage ESP electronics and accessible programming connections must be appropriately isolated from line-voltage wiring.&lt;br /&gt;
&lt;br /&gt;
Relay contact ratings must be suitable for the connected load.&lt;br /&gt;
&lt;br /&gt;
Outdoor controllers must be protected against moisture and environmental exposure.&lt;br /&gt;
&lt;br /&gt;
== Relationship to Other ZIPP Projects ==&lt;br /&gt;
&lt;br /&gt;
ZIPP-R is part of the larger [[ZIPP]] project family.&lt;br /&gt;
&lt;br /&gt;
Related projects include:&lt;br /&gt;
&lt;br /&gt;
* [[ZIPP Pixel Controller|ZIPP]] - DDP pixel control&lt;br /&gt;
* [[ZIPP-I]] - Incandescent-light control and dimming&lt;br /&gt;
* [[ZIPP-M]] - Motion sensing and interactive control&lt;br /&gt;
* [[ZIPP-A]] - Experimental audio distribution&lt;br /&gt;
&lt;br /&gt;
ZIPP-R also serves as a useful development platform for features that may eventually be shared with other low-bandwidth ZIPP devices, particularly logical addressing, automatic commissioning, heartbeat/failsafe operation, and wireless channel roaming.&lt;br /&gt;
&lt;br /&gt;
== Future Development ==&lt;br /&gt;
&lt;br /&gt;
Planned or proposed ZIPP-R development includes:&lt;br /&gt;
&lt;br /&gt;
* Multiple logical satellite addresses&lt;br /&gt;
* Automatic device commissioning&lt;br /&gt;
* Persistent logical addresses&lt;br /&gt;
* DDP input at the ESP32 master&lt;br /&gt;
* Mapping DDP channels to ZIPP-R devices&lt;br /&gt;
* Periodic heartbeat/state messages&lt;br /&gt;
* Satellite failsafe behavior&lt;br /&gt;
* Application-level acknowledgements&lt;br /&gt;
* Automatic RF channel selection&lt;br /&gt;
* Automatic channel roaming&lt;br /&gt;
* Lost-device recovery&lt;br /&gt;
* Configuration interface&lt;br /&gt;
* Additional ZIPP-R hardware variants&lt;br /&gt;
* Large-controller-count testing&lt;br /&gt;
* Documentation of enclosure and construction details&lt;br /&gt;
&lt;br /&gt;
== Project Author ==&lt;br /&gt;
&lt;br /&gt;
ZIPP-R is a DIY Christmas member project developed by &amp;#039;&amp;#039;&amp;#039;Ernest Horning&amp;#039;&amp;#039;&amp;#039; as part of the [[ZIPP]] project family.&lt;br /&gt;
&lt;br /&gt;
The project is being documented during development so that hardware information, firmware architecture, experiments, test results, and design decisions can be preserved for future reference.&lt;br /&gt;
&lt;br /&gt;
== See Also ==&lt;br /&gt;
&lt;br /&gt;
* [[ZIPP]]&lt;br /&gt;
* [[ZIPP Pixel Controller]]&lt;br /&gt;
* [[ZIPP-I]]&lt;br /&gt;
* [[ZIPP-M]]&lt;br /&gt;
* [[ZIPP-A]]&lt;br /&gt;
* [[Controllers]]&lt;br /&gt;
* [[ESP8266]]&lt;br /&gt;
* [[ESP32]]&lt;br /&gt;
* [[DDP]]&lt;br /&gt;
* [[xLights]]&lt;br /&gt;
&lt;br /&gt;
[[Category:Controllers]]&lt;/div&gt;</summary>
		<author><name>ErnieHorning</name></author>
	</entry>
</feed>