{"id":11137,"date":"2026-10-05T00:27:13","date_gmt":"2026-10-05T00:27:13","guid":{"rendered":"https:\/\/schindlerengineering.com\/public\/?p=11137"},"modified":"2026-10-05T00:27:13","modified_gmt":"2026-10-05T00:27:13","slug":"version-4-20-a-weekend-of-wiring-the-ranch-one-swapped-pair-at-a-time","status":"publish","type":"post","link":"https:\/\/schindlerengineering.com\/public\/2026\/10\/05\/version-4-20-a-weekend-of-wiring-the-ranch-one-swapped-pair-at-a-time\/","title":{"rendered":"Version 4.20: a weekend of wiring the ranch, one swapped pair at a time"},"content":{"rendered":"<p>Saturday started at 5:25 in the morning with a dead laptop, a house battery at<br \/>\n5.8 percent, and both inverters missing from their own cloud. Sunday ended with<br \/>\na sonar on top of a hill reporting gallons and gallons-per-minute, the battery<br \/>\nmonitor on a wire updating once a second, both inverters answering over RS485,<br \/>\nand a wall display that a grandfather can read from across the room.<\/p>\n<p>This is the long version of how that happened, including every wrong turn,<br \/>\nbecause the wrong turns are the useful part.<\/p>\n<h2>Where it started<\/h2>\n<p>The laptop that runs everything had lost wall power Friday evening and shut<br \/>\nitself down on a critical battery at 10:23&nbsp;PM. When it came back at dawn,<br \/>\nthis is what the wall looked like:<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-01-wall-v2-dawn.jpg\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-01-wall-v2-dawn.jpg\" alt=\"The wall display at dawn on Saturday showing the battery at 5.8 percent\" style=\"width:100%;max-width:520px;height:auto\" \/><\/a><\/p>\n<p>Version 2.0. A stack of cards, most of them dashes, because the inverters had<br \/>\nstopped reporting to the vendor&#8217;s cloud the morning before. The one live number<br \/>\nwas the battery, from the Victron shunt, and it said 5.8 percent and falling at<br \/>\n1.7&nbsp;kW. The &#8220;power left tonight&#8221; card said zero minutes, because it was<br \/>\ncounting down to a 15 percent floor we had sailed through hours earlier.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-02-kiosk-v2.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-02-kiosk-v2.png\" alt=\"Screenshot of version 2.0 of the wall display, a stack of cards\" style=\"width:100%;max-width:420px;height:auto\" \/><\/a><\/p>\n<p>That screen had three problems that shaped the whole weekend. It depended on<br \/>\ntwo vendor clouds, so when either one hiccupped it went blank. It was slow: the<br \/>\nbattery figure came from a database that only produced a new sample about every<br \/>\n105 seconds. And it told you nothing about water, which on a ranch is the other<br \/>\nthing you run out of.<\/p>\n<p>The plan: move the operation to a second laptop that lives in the solar room,<br \/>\nwire that laptop directly to the equipment, and put a level sensor on the tanks<br \/>\nhalf a mile up the hill.<\/p>\n<h2>Two machines, passing notes<\/h2>\n<p>The work ran as two Claude Code sessions, one on the laptop that travels and<br \/>\none on the laptop that stays, messaging each other over a Tailscale network.<br \/>\nOne did the radio firmware, the phone app and the coordination. The other owned<br \/>\nthe wall display and everything plugged into it. Most of what follows was<br \/>\ndecided on a phone, standing next to whatever was being wired.<\/p>\n<h2>The radio link: three bugs before the first walk<\/h2>\n<p>The tank link is two Heltec LoRa boards. The one that goes up the hill got<br \/>\nnamed HILL, the one at the bottom BASE, and the name is printed in big letters<br \/>\non each screen so they cannot be mixed up. The first firmware was a range<br \/>\ntester: HILL pings, BASE answers, both screens show signal strength in both<br \/>\ndirections.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-03-lora-desk-frozen.jpg\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-03-lora-desk-frozen.jpg\" alt=\"Two LoRa boards on a desk, one reading GOOD and the other NO LINK\" style=\"max-width:100%;height:auto\" \/><\/a><\/p>\n<p>That photo caught the first real bug. BASE says GOOD, sequence 5, one second<br \/>\nold. HILL says sequence 38 and no link. BASE was frozen. With its USB cable<br \/>\nplugged in and nothing reading the log, the log buffer filled after six lines<br \/>\nand the board hung waiting to write. The fix was to drop a log line when the<br \/>\nbuffer is full instead of waiting. The same photo shows the second bug: &#8220;NO<br \/>\nLINK&#8221; was two characters too wide for the screen.<\/p>\n<p>Then the walk. It failed in the front yard.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-04-front-yard-walk.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-04-front-yard-walk.png\" alt=\"Signal chart of a range walk that failed in the front yard\" style=\"max-width:100%;height:auto\" \/><\/a><\/p>\n<p>Fifteen pings missed in a row, through one wall and some Douglas fir. The<br \/>\nowner&#8217;s reaction was the right one: something is wrong. It was. These boards<br \/>\ncome in two revisions with different radio amplifier chips, and on this revision<br \/>\none control pin has to be flipped for every transmission. The firmware was<br \/>\nholding it in the receive position, so the amplifier never switched on and the<br \/>\nsignal leaked out roughly 40&nbsp;dB down, about a ten-thousandth of the intended<br \/>\npower. With the fix, the same two boards on the same desk went from -40&nbsp;dBm<br \/>\nto about 0.<\/p>\n<p>The next walk reached a quarter mile. Then a 40 minute drive around town with<br \/>\nthe logger running:<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-05-half-mile-drive.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-05-half-mile-drive.png\" alt=\"Signal chart of a 40 minute drive with the link dropping at half a mile\" style=\"max-width:100%;height:auto\" \/><\/a><\/p>\n<p>Solid out to about half a mile, a ten minute stretch of nothing at the far<br \/>\nend, and a clean recovery on the way back. One calibration came out of that<br \/>\nchart: on these boards a receive amplifier sits ahead of the measurement, so the<br \/>\nsignal figure reads about 20&nbsp;dB high. The link dies near -100 on the screen,<br \/>\nnot the -125 you would expect from the radio chip alone. Signal-to-noise is the number<br \/>\nto trust.<\/p>\n<h2>The sonar: which hole is hole 6<\/h2>\n<p>The level sensor is a waterproof ultrasonic module, the kind used for parking<br \/>\nsensors. It runs from a switched 3.3&nbsp;volt pin on the board, which matters<br \/>\nmore than it sounds: the module idles at about 5&nbsp;mA, and left on all day that<br \/>\nwould be several times the rest of the power budget combined. Switched, it draws<br \/>\nnothing between readings.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-06-sonar-wiring.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-06-sonar-wiring.png\" alt=\"Wiring diagram for the sonar cable onto the LoRa board\" style=\"width:100%;max-width:620px;height:auto\" \/><\/a><\/p>\n<p>Getting four wires onto the right four holes took longer than writing the<br \/>\nfirmware. The manufacturer&#8217;s diagram shows the front of the board; the holes are<br \/>\nlabelled on the back; and one early message called them &#8220;pin 17 and pin 15&#8221;,<br \/>\nwhich are positions along the row and also happen to be numbers printed on four<br \/>\nunrelated pads. The numbers printed next to the holes are the ones the code<br \/>\nuses. The hole between the two sonar wires is the amplifier control pin from the<br \/>\nprevious section, so it stays empty.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-07-board-back.jpg\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-07-board-back.jpg\" alt=\"The back of the LoRa board with its printed hole labels\" style=\"max-width:100%;height:auto\" \/><\/a><\/p>\n<p>First power-up: every one of nine pings came back as a pulse of exactly 35.2<br \/>\nmilliseconds. That is the module&#8217;s own &#8220;I heard nothing&#8221; timeout, which was<br \/>\ngood news in disguise. It proved the board was powered, triggering and replying<br \/>\nat 3.3 volts. It just had nothing in front of it. Pointed at a wall, it returned<br \/>\nnine good pings out of nine.<\/p>\n<p>Two modes came out of the bench testing. TEST takes a reading about once a<br \/>\nsecond, for aiming the sensor with the unit in your hand. FIELD takes one on a<br \/>\nschedule and sleeps in between. A button on either board flips the mode, and the<br \/>\nbase station can change the schedule from the bottom of the hill, because every<br \/>\nanswer it sends back up carries the settings.<\/p>\n<h2>On the hill<\/h2>\n<p>The sensor went onto the tank 3.7 feet above the water.<br \/>\nThe display said 3.7 feet.<\/p>\n<p>The tank rules are deliberately blunt. A reading of one foot or less is FULL.<br \/>\nSeven feet or more, or no echo at all, is EMPTY. A sensor that produces no pulse<br \/>\nwhatsoever is a FAULT, because &#8220;no echo means empty&#8221; would otherwise turn an<br \/>\nunplugged cable into an empty tank. Three 2,500 gallon tanks in parallel make<br \/>\n7,500 gallons, which works out to 1,250 gallons per foot of water.<\/p>\n<p>Deep sleep had never run before the unit was on the hill, so it got a staged<br \/>\ntest from below: one-minute readings first. HILL slept and woke itself three<br \/>\ntimes, 63, 63 and 59 seconds apart. Then ten minutes, and the next reading<br \/>\narrived 597 seconds later.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-08-tank-first-afternoon.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-08-tank-first-afternoon.png\" alt=\"Chart of gallons in the tanks over the first afternoon\" style=\"max-width:100%;height:auto\" \/><\/a><\/p>\n<p>The fill and drain rate is the slope of a straight line through the last 45<br \/>\nminutes of readings. The sonar is good to about a centimetre, which here is<br \/>\nabout 40 gallons, so at one reading every ten minutes the rate is honest to<br \/>\nroughly one gallon per minute and anything smaller is shown as &#8220;steady&#8221;.<\/p>\n<p>Where to put the base station is still not solved. Next to the solar<br \/>\nequipment it heard the hill well but had poor WiFi, and something in that room<br \/>\nputs bursts of radio noise on its receiver. On a roof nearer the access point<br \/>\nthe WiFi was fine and the radio was at the edge of what it can decode. On top of<br \/>\nthe generator, about the same. A tall antenna for the base station is the next<br \/>\nexperiment.<\/p>\n<h2>The Victron on a wire<\/h2>\n<p>The battery monitor&#8217;s hub, a Victron Cerbo, had been reaching the internet<br \/>\nover weak WiFi. That afternoon the wall showed its data as 3,668 seconds old.<br \/>\nMost of that hour was real: the hub had been off the cloud for most of two and a<br \/>\nhalf hours.<\/p>\n<p>An Ethernet switch, a WiFi extender used as a bridge, and one cable to the<br \/>\nhub fixed the path. Then one switch on the hub&#8217;s own screen:<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-09-cerbo-mqtt.jpg\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-09-cerbo-mqtt.jpg\" alt=\"The Victron Cerbo touchscreen with MQTT Access switched on\" style=\"max-width:100%;height:auto\" \/><\/a><\/p>\n<p>The hub wanted a password before it would hand out data, which took two<br \/>\nattempts to get right. Once it accepted one, the numbers were not subtle. The<br \/>\nfirst value arrived 0.6 seconds after connecting, where the cloud feed took<br \/>\nanywhere from five seconds to a minute. Updates come once a second. A ping to<br \/>\nthe hub over the wire takes 0.4 milliseconds; over its WiFi a few minutes earlier it took<br \/>\n429.<\/p>\n<h2>The wall display grows up<\/h2>\n<p>With live data arriving, the cards stopped being good enough. The brief for<br \/>\nthe 27 inch touchscreen was one paragraph: it should look like a picture. Solar<br \/>\npanels at the top. The two inverters in the middle. The battery on the left. The<br \/>\nload on the right, drawn as a water pump. And coming off the pump, the tanks,<br \/>\nwith blue water at the real level.<\/p>\n<p>First cut, 3:37 in the afternoon:<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-10-cockpit-v4-first-cut.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-10-cockpit-v4-first-cut.png\" alt=\"First cut of the picture layout, 3:37 PM\" style=\"width:100%;max-width:420px;height:auto\" \/><\/a><\/p>\n<p>Good, and wrong in two ways that two of us spotted independently. The battery&#8217;s wire hung off one inverter and the pump&#8217;s wire off<br \/>\nthe other, as if one charged and the other pumped. Both do both. And the battery<br \/>\nwas green while it was draining.<\/p>\n<p>Second round, 21 minutes later:<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-11-cockpit-round2.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-11-cockpit-round2.png\" alt=\"Second round of the picture layout, 3:58 PM\" style=\"width:100%;max-width:420px;height:auto\" \/><\/a><\/p>\n<p>The inverters swapped sides to match the real wall. A wire chase appeared<br \/>\nunderneath them, because there is one, six feet long, and that is where the<br \/>\nwires actually go. The battery turned orange while discharging; it is green when<br \/>\ncharging and red only when it is genuinely low, so red still means something.<br \/>\nAnd the &#8220;days off the grid&#8221; counter was replaced with a month of daily bars in<br \/>\nthe style of a utility bill.<\/p>\n<p>That counter deserves a paragraph. The old screen had claimed a 21 day<br \/>\nstreak. Part of that streak was a day when the inverters reported nothing at<br \/>\nall, which the old code had read as &#8220;zero grid use&#8221;. The new chart has a third<br \/>\nstate for exactly that: a day with almost no solar recorded is marked as no<br \/>\ndata, not as a win.<\/p>\n<p>Third round, eight minutes after that:<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-12-cockpit-round3.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-12-cockpit-round3.png\" alt=\"Third round of the picture layout, 4:06 PM\" style=\"width:100%;max-width:420px;height:auto\" \/><\/a><\/p>\n<p>Two months along the bottom. Today&#8217;s energy at the top, made against used.<br \/>\nAnd the words &#8220;hardwire&#8221; and &#8220;wireless&#8221; replaced by a tiny plug and a tiny WiFi<br \/>\nsymbol on each part, driven by the path the data is really taking. They are<br \/>\nsmall on purpose. One person in the family wants to know which parts are on a<br \/>\nwire. Another just wants to see the water.<\/p>\n<p>A few rules settled along the way and are now permanent. Every number shows<br \/>\nits age in minutes and seconds. A reading that stops arriving is never blanked;<br \/>\nthe last good value stays up with its timer running. And a total is never built<br \/>\nfrom half the system: if one inverter is silent, the total shows dashes and says<br \/>\nwhy.<\/p>\n<p>At this point the version was set to 4.20 and pinned there. By instruction,<br \/>\nit stays 4.20 forever.<\/p>\n<h2>The inverters: two wires, wrong way round<\/h2>\n<p>Last job of the day. Each inverter has an RS485 port that normally feeds its<br \/>\nWiFi dongle. Pull the dongle, plug in a cable, and the inverter will answer<br \/>\nquestions directly, about once a second instead of every couple of minutes.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-13-rs485-adapters.jpg\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-13-rs485-adapters.jpg\" alt=\"Two USB RS485 adapters with network cable wired to their terminals\" style=\"width:100%;max-width:560px;height:auto\" \/><\/a><\/p>\n<p>Two USB adapters, two cut-down network cables, brown and white-brown on the<br \/>\nscrew terminals exactly as the guides on the internet show. Both dongles came<br \/>\nout. The wall went grey on the inverter side, as it should.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-14-inverter-sockets.jpg\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-14-inverter-sockets.jpg\" alt=\"The communication sockets inside the inverter\" style=\"width:100%;max-width:560px;height:auto\" \/><\/a><\/p>\n<p>And then nothing. Read-only requests at three speeds and two addresses, on<br \/>\nboth cables: zero bytes back. Not garbage, not errors. Silence.<\/p>\n<p>Silence is a clue. A wrong speed gives you garbage. Silence means the<br \/>\ninverter is not hearing the question at all. The socket was right (the upper<br \/>\nleft of the two unlabelled ones at the top). The settings were right (19200<br \/>\nbaud, address 1, confirmed afterwards against two independent sources). That<br \/>\nleft the two wires.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-15-rs485-swap.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-15-rs485-swap.png\" alt=\"Diagram of the two RS485 wires as labelled and as swapped\" style=\"max-width:100%;height:auto\" \/><\/a><\/p>\n<p>The inverter calls pin 7 &#8220;B&#8221; and pin 8 &#8220;A&#8221;. The adapter also has terminals<br \/>\ncalled A and B. They are not the same A and B. Swapping brown and white-brown<br \/>\non one adapter turned twenty requests into eighteen clean replies: battery 52.4<br \/>\nvolts, one solar string at 239 volts and 762 watts, the other at 342 volts and<br \/>\n906 watts, output at 239.0 volts and 59.91 hertz. The inverter also reported<br \/>\nits own serial number, which is how each cable is now pinned to the right<br \/>\nbox.<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-16-cockpit-420-master-wired.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-16-cockpit-420-master-wired.png\" alt=\"Version 4.20 with one inverter on the wire, 4:46 PM\" style=\"width:100%;max-width:420px;height:auto\" \/><\/a><\/p>\n<p>One inverter on the wire, the other still dark, and the totals showing dashes<br \/>\nrather than half the truth. One detail from that first frame: the inverter<br \/>\nbelieved the battery was at 81 percent while the shunt said 35. The dashboard<br \/>\nignores the inverter&#8217;s opinion and always has.<\/p>\n<p>The second pair of wires got swapped, and at five o&#8217;clock:<\/p>\n<p style=\"text-align:center\"><a href=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-17-cockpit-420-everything-wired.png\"><img decoding=\"async\" src=\"https:\/\/schindlerengineering.com\/public\/wp-content\/uploads\/2026\/10\/hardwire-17-cockpit-420-everything-wired.png\" alt=\"Version 4.20 with both inverters on the wire, 5:00 PM\" style=\"width:100%;max-width:520px;height:auto\" \/><\/a><\/p>\n<p>Everything in the solar room on a wire. Plugs on every part of the picture<br \/>\nexcept the tanks, which get an antenna, because they really are half a mile<br \/>\naway by radio. The ring in the middle is the newest piece: solar coming in, load<br \/>\ngoing out, and the difference on the battery, the three numbers that matter,<br \/>\nin one place.<\/p>\n<h2>What bit us, in order<\/h2>\n<ul>\n<li>A log buffer that froze a radio when nobody was reading it.<\/li>\n<li>An amplifier pin that differs between two revisions of the same board, and<br \/>\ncost 40&nbsp;dB.<\/li>\n<li>Hole numbers that mean one thing in a table and another on the board.<\/li>\n<li>A sonar &#8220;reading&#8221; that was really a timeout.<\/li>\n<li>A base station that can have good WiFi or good radio, and so far not<br \/>\nboth.<\/li>\n<li>An extender that quietly became its own network when it lost its<br \/>\nsignal.<\/li>\n<li>A hub that wanted a password nobody remembered setting.<\/li>\n<li>An off-grid streak inflated by a day with no data.<\/li>\n<li>Two terminals labelled A and B that meant B and A.<\/li>\n<\/ul>\n<h2>What is left<\/h2>\n<p>The base station needs a better antenna or a better home. The hill unit<br \/>\nshould retry when a reading goes unanswered, and its first transmission after<br \/>\nwaking arrives weaker than it should. Each part of the picture is getting its<br \/>\nown page when you touch it: one big graphic for the person who wants graphics,<br \/>\nand a full page of numbers underneath for the person who wants numbers, with a<br \/>\nHOME button that says HOME. And the phone app is moving off the vendor clouds<br \/>\nonto the laptop in the solar room.<\/p>\n<p>The version number, though, is finished.<\/p>\n","protected":false},"excerpt":{"rendered":"<p>Saturday started at 5:25 in the morning with a dead laptop, a house battery at 5.8 percent, and both inverters missing from their own cloud. Sunday ended with a sonar on top of a hill reporting gallons and gallons-per-minute, the battery monitor on a wire updating once a second, both inverters answering over RS485, and &hellip; <\/p>\n<p class=\"link-more\"><a href=\"https:\/\/schindlerengineering.com\/public\/2026\/10\/05\/version-4-20-a-weekend-of-wiring-the-ranch-one-swapped-pair-at-a-time\/\" class=\"more-link\">Continue reading<span class=\"screen-reader-text\"> &#8220;Version 4.20: a weekend of wiring the ranch, one swapped pair at a time&#8221;<\/span><\/a><\/p>\n","protected":false},"author":1,"featured_media":0,"comment_status":"closed","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"nf_dc_page":"","footnotes":""},"categories":[1],"tags":[],"class_list":["post-11137","post","type-post","status-publish","format-standard","hentry","category-uncategorized"],"jetpack_featured_media_url":"","_links":{"self":[{"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/posts\/11137","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/comments?post=11137"}],"version-history":[{"count":1,"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/posts\/11137\/revisions"}],"predecessor-version":[{"id":11138,"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/posts\/11137\/revisions\/11138"}],"wp:attachment":[{"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/media?parent=11137"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/categories?post=11137"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/schindlerengineering.com\/public\/wp-json\/wp\/v2\/tags?post=11137"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}