Right off the top the board doesn’t pass DRC (Routing->Design Rules Check) because the CJMCU2317-MCP23017 part is incorrectly configured (it has no copper1 layer) and as a result the traces are shorting the pins.
Here is copper0 (the bottom layer) as gerber output displayed with gerbv:
note the CJMCU2317-MCP23017 has pads on the bottom layer. But one of the traces is shorting the pin next to it (likely because the part is misconfigured) and when I display the top layer (which should have pads in the same place) there are no pads and thus no plating through on the holes:
As well a number of the traces run through holes which will cause the trace to be destroyed due to the hole. I’ll fix the problems in the part and post a corrected one in a bit. After that we will need the data sheets (or at least the diameter of the pins in to the pcb) for the various connectors in the picture above to make sure the holes in the pcb are large enough to fit the pins. The hole size in Fritzing will be set to match whatever part the connector is designed for, if your parts are different the holes may be either to large (which is usually all right) or too small (which won’t work and makes the board unusable.) Then we get in to the issue of relays on the output pins of the CJMCU2317-MCP23017. It is very likely that the CJMCU2317-MCP23017 will not directly drive relays. It probably doesn’t have enough current drive to do so and likely lacks snubbing diodes to suppress back EMF from the relay coils. We would need the data sheet for the relays you intend to use to suggest a suitable driver circuit for the relays (you will likely need to add a relay driver chip to get enough current drive and back EMF protection.) The MCP23017 chip in the module will only source or sink 20ma of current which is not enough to drive most relay coils (and will likely be killed by back EMF without suppression diodes as well!)
edit:
OK here is a corrected part for the CJMCU2317-MCP23017.
CJMCU2317-MCP23017-fixed.fzpz (187.5 KB)
I changed its files and moduleId so it will load beside the original part. I would right click on the part and select delete which will delete both the part and all traces connected to it. I would then in pcb view do Routing->select all traces and then press the delete key to delete all traces and either manually route the traces (which gives the best results) or re run autorouter (which doesn’t work very well!) That should fix the trace issue and DRC. For your relays you likely need to add a uln2003A relay driver (available in core parts, do a parts search for uln2003 like this:
Here I have dragged the ln2003 and a couple of relays in to schematic.
The top relay has no diode across the coil (and may be high current, the 2003 will sink up to 500ma on each pin to a max of 2.5A for all pins.) The reed relay below it (which may be what you are using) already has the diode across the coil and is likely low current (although you would need to check that it doesn’t draw more than the 20ma the MCP23017 can sink!) and you can connect it directly to the CJMCU2317-MCP23017. If it draws more than 20ma you probably need the uln2003 relay driver. You would also need to check that the power supply (coming from the WeMos?) can provide that much current. All that remains is to determine if the pins on the terminal blocks will fit in the holes that are being drilled in pcb (and I don’t have the sizes of the pins on the terminal blocks!)
edit2:
I decided to add the new part to the sketch, and clean up breadboard some. The start of that is to route schematic to make sure I don’t break anything. That turned up several current errors. In PCB there is one net not routed (but the current part makes it not routable, so fix it when the part is replaced!)
Note the bottom (circled in green) says 31 of 32 nets routed. That is indicating the rats nest line (circled in red) needs to be routed but can’t be at present because there isn’t a clear path to route it. Then when I routed schematic I noticed a couple of missing connections in breadboard:
Note the data wire for reed2 is not connected to anything (I assume it should connect to the GPIO port with the green line.) As well one of the free GPIO part connections has no connection. I assume you want to move the first three up one pin and add a wire to the fourth pin as shown in green. With schematic now done I can go back and clean up breadboard some. Here is the sketch with schematic routed. Note the slanted wires on the MCP23017 are corrected in the new part which isn’t replaced in this sketch.
Unterstand_post-schematic-routed.fzz (453.3 KB)
It appears there is a terminal block missing in breadboard which should be using those unused ports on the MCP23017. It of course is also missing on pcb …
edit3:
This time I rearranged breadboard by moving parts around to clean up the routing like this:
I added in the missing terminal block for the 4 free GPIO ports (and routed them in schematic and positioned the terminal block in pcb) and added in the missing wire for pir2 (I am assuming you wanted both of those done, if not you will need to remove them!) I then deleted all traces in pcb so nothing is routed there which results in this sketch:
Unterstand_post-breadboard-rerouted.fzz (437.0 KB)
with that done I can now replace the 2 CJMCU2317-MCP23017 parts via delete minus. First I record the current coordinates of the 2 CJMCU2317-MCP23017 parts like this:
Then I delete the 2 CJMCU2317-MCP23017 parts via delete minus.
which results in this (the part is deleted but the traces are left in both schematic and breadboard)
then I replace both parts with the new version. In schematic that is going to cause a fair bit of rerouting because schematic is much larger in the new part and the position of the power and ground pins has changed.
breadboard is the same size, so it will be easier
and indeed moving the parts in caused all the connections to reform and all appears well. Now I need to position the parts in pcb back to their original position using the coordinates we recorded above. In pcb the parts appear in a random position and orientation, so we need to rotate them til they are in the original orientation then use Inspector to move them back to the original position like this:
It is in the correct orientation but not the correct position, so set the x and y coords from the image that we took of the original parts above to move it back to the correct position.
Note that the new part does not have the labels on silkscreen in the part. If you want those labels you need to use the pcb text part to add the labels yourself. The part is now back in the same place it started in, so do the same to the other one then move back to schematic to fix it up.
now both CJMCU2317-MCP23017 parts are in their original positions. Note the added terminal block that was missing in breadboard (circled in green) as noted if you don’t want this you can delete it. Now back to schematic to route the traces to their correct positions. In the end it turned out to be easier to delete all the original traces and reroute schematic from the rats nest lines producing this:
now we should be ready to route pcb. To my surprise Autoreouting and some small amount of DRC movement gives a board that passes DRC. I think a manual routing job would be much better, but this should work …
Unterstand_post-completed.fzz (269.9 KB)
edit4:
Just a reminder I would need the size of the pins on the terminal blocks to verify the holes in the terminal block parts are large enough so the actual part will fit …
Peter