<?xml version="1.0" encoding="utf-8" standalone="yes"?><rss version="2.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>Tenant Operations on Deevnet IoTaaS</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/</link><description>Recent content in Tenant Operations on Deevnet IoTaaS</description><generator>Hugo</generator><language>en-us</language><atom:link href="https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/index.xml" rel="self" type="application/rss+xml"/><item><title>Walkthrough: Device to Backend</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/walkthrough-mqtt-device/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/walkthrough-mqtt-device/</guid><description>&lt;h1 id="walkthrough-a-pico-w-or-esp32-talking-to-a-backend">
 Walkthrough: a Pico W or ESP32 Talking to a Backend
 &lt;a class="anchor" href="#walkthrough-a-pico-w-or-esp32-talking-to-a-backend">#&lt;/a>
&lt;/h1>
&lt;p>The whole path, end to end: a microcontroller on your bench publishes readings over MQTT, a backend
on a workload receives them and can send commands back, and the device&amp;rsquo;s own log lines land in your
log store.&lt;/p>
&lt;pre tabindex="0">&lt;code> Pico W / ESP32 ──Wi-Fi (your key)──▶ IoT network ──TLS 8883──▶ MQTT broker ◀──TLS 8883── backend workload
 │ │ (your tenant network)
 └── publishes bench1/log/&amp;lt;device&amp;gt; ───────────────────────────▶ log bridge ──▶ your log partition (index, 2)
&lt;/code>&lt;/pre>&lt;p>The tenant in this walkthrough is called &lt;strong>&lt;code>bench1&lt;/code>&lt;/strong>. Use your own name everywhere you see it.&lt;/p></description></item><item><title>Pi Lab</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/pi-lab/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/pi-lab/</guid><description>&lt;h1 id="pi-lab">
 Pi Lab
 &lt;a class="anchor" href="#pi-lab">#&lt;/a>
&lt;/h1>
&lt;p>The &lt;strong>Raspberry Pi bank&lt;/strong> is a shared workbench for projects that need a Pi rather than a VM: edge
compute, SDR, sensors, GPIO, clustering experiments. The hardware and why it was chosen are under

 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/platforms/tenant-compute/raspberry-pi/">Raspberry Pi&lt;/a> in Implementation &amp;amp; Tooling; this page
is how to use it.&lt;/p>
&lt;p>The idea is &lt;strong>the SD card is the product&lt;/strong>. You develop on a bank Pi; when the project works, the
card moves to dedicated hardware and the bank Pi returns to the pool.&lt;/p></description></item><item><title>Connect Device to Wi-Fi</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/connect-a-device/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/connect-a-device/</guid><description>&lt;h1 id="connect-device-to-wi-fi">
 Connect Device to Wi-Fi
 &lt;a class="anchor" href="#connect-device-to-wi-fi">#&lt;/a>
&lt;/h1>
&lt;p>Any Wi-Fi board you flash, such as a Pico W or an ESP32, joins the site&amp;rsquo;s &lt;strong>IoT SSID&lt;/strong> with your
tenant&amp;rsquo;s Wi-Fi key. It makes no difference whether the device is your own or a pre-wired kit
borrowed at a meetup (CARPE keeps those on its

 &lt;a href="https://carpe-tech.org/hands-on/project-kits/">Example Project Kits&lt;/a> page): once your key is on
it, it is one of your devices.&lt;/p>
&lt;p>This page covers only getting the device onto the network. Talking to the broker comes after, in

 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/runbook/tenant/services/devices-and-mqtt/">Devices &amp;amp; MQTT&lt;/a>, and the

 &lt;a href="https://deevnet.github.io/deevnet-docs/deevnet-docs/docs/runbook/tenant/walkthrough-mqtt-device/">walkthrough&lt;/a> does both end to end.&lt;/p></description></item><item><title>Convert a Tenant to a Pi Image</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/tenant-to-pi-image/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/tenant-to-pi-image/</guid><description>&lt;h1 id="convert-a-tenant-to-a-raspberry-pi-image">
 Convert a Tenant to a Raspberry Pi Image
 &lt;a class="anchor" href="#convert-a-tenant-to-a-raspberry-pi-image">#&lt;/a>
&lt;/h1>
&lt;p>This page converts a tenant into a standalone &lt;strong>Raspberry Pi image&lt;/strong>: your app and your devices
keep working, with no Deevnet behind them. The Pi is flashed from the image factory&amp;rsquo;s &lt;code>pi-backend&lt;/code>
image and runs your tenant&amp;rsquo;s back-end services itself, so it can go anywhere: home, a classroom, a
project that outlives the site.&lt;/p>
&lt;pre tabindex="0">&lt;code> on Deevnet on your Pi
 ────────── ──────────
 devices ──TLS 8883──▶ mqtt.mobile.deevnet.net devices ──TLS 8883──▶ your Pi (Mosquitto)
 app ──TLS 8427──▶ Deevnet log store app ──TLS 8427──▶ your Pi (VictoriaLogs)
 you ──TLS 3000──▶ Deevnet Grafana you ──TLS 3000──▶ your Pi (Grafana)
 &amp;lt;tenant&amp;gt;/… &amp;lt;tenant&amp;gt;/log/&amp;lt;device&amp;gt; &amp;lt;tenant&amp;gt;/… &amp;lt;tenant&amp;gt;/log/&amp;lt;device&amp;gt; ← unchanged
&lt;/code>&lt;/pre>&lt;p>The Pi keeps the &lt;strong>app contract&lt;/strong>: the same ports, the same topic prefix, the same reserved &lt;code>log&lt;/code>
level, the same ingest and read tokens with the same partition header, and a Grafana organization
with the same three data source UIDs. What changes is the host
name, the CA and the secrets. &lt;strong>Nothing on the Pi belongs to Deevnet.&lt;/strong> It has no Deevnet account,
key or route, and its CA and tokens are generated on the card the first time it boots.&lt;/p></description></item><item><title>Troubleshooting</title><link>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/troubleshooting/</link><pubDate>Mon, 01 Jan 0001 00:00:00 +0000</pubDate><guid>https://deevnet.github.io/deevnet-docs/docs/runbook/tenant/troubleshooting/</guid><description>&lt;h1 id="troubleshooting">
 Troubleshooting
 &lt;a class="anchor" href="#troubleshooting">#&lt;/a>
&lt;/h1>
&lt;h2 id="is-it-the-network">
 Is it the network?
 &lt;a class="anchor" href="#is-it-the-network">#&lt;/a>
&lt;/h2>
&lt;p>If Terraform or an MQTT client times out, check the network before anything else. From your laptop
on &lt;code>DVNTM-TD&lt;/code>:&lt;/p>
&lt;div class="highlight">&lt;pre tabindex="0" style="color:#f8f8f2;background-color:#272822;-moz-tab-size:4;-o-tab-size:4;tab-size:4;">&lt;code class="language-bash" data-lang="bash">&lt;span style="display:flex;">&lt;span>curl -fsSLO https://raw.githubusercontent.com/deevnet/ansible-collection-deevnet.net/main/scripts/segment-check.sh
&lt;/span>&lt;/span>&lt;span style="display:flex;">&lt;span>bash segment-check.sh DVNTM-TD
&lt;/span>&lt;/span>&lt;/code>&lt;/pre>&lt;/div>&lt;p>It checks your address and DNS, the provisioning API, the state store and the broker (each over the
site CA), the internet, and that the rest of the site is correctly out of reach. Turn off any VPN
or iCloud Private Relay first. &lt;strong>All passing&lt;/strong> means the network is fine and the problem is on the
Terraform or client side (below). &lt;strong>Anything failing:&lt;/strong> send the whole output to the operator; the
fix is on the substrate, not in your repo.&lt;/p></description></item></channel></rss>