<?xml version="1.0"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
	<id>http://groupkos.com/dev/index.php?action=history&amp;feed=atom&amp;title=DataNet_System_Microservices_Architecture</id>
	<title>DataNet System Microservices Architecture - Revision history</title>
	<link rel="self" type="application/atom+xml" href="http://groupkos.com/dev/index.php?action=history&amp;feed=atom&amp;title=DataNet_System_Microservices_Architecture"/>
	<link rel="alternate" type="text/html" href="http://groupkos.com/dev/index.php?title=DataNet_System_Microservices_Architecture&amp;action=history"/>
	<updated>2026-04-16T09:07:45Z</updated>
	<subtitle>Revision history for this page on the wiki</subtitle>
	<generator>MediaWiki 1.39.3</generator>
	<entry>
		<id>http://groupkos.com/dev/index.php?title=DataNet_System_Microservices_Architecture&amp;diff=5243&amp;oldid=prev</id>
		<title>XenoEngineer at 16:15, 28 June 2025</title>
		<link rel="alternate" type="text/html" href="http://groupkos.com/dev/index.php?title=DataNet_System_Microservices_Architecture&amp;diff=5243&amp;oldid=prev"/>
		<updated>2025-06-28T16:15:59Z</updated>

		<summary type="html">&lt;p&gt;&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:15, 28 June 2025&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;div&gt;{{menuDataNet}}&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;/div&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;div&gt;{{menuDataNet}}&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;/div&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;&lt;del style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&lt;/del&gt;&lt;/div&gt;&lt;/td&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-side-added&quot;&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;div&gt;&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;/div&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;div&gt;&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;/div&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;div&gt;&amp;lt;head&amp;gt;&lt;/div&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;div&gt;&amp;lt;head&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>XenoEngineer</name></author>
	</entry>
	<entry>
		<id>http://groupkos.com/dev/index.php?title=DataNet_System_Microservices_Architecture&amp;diff=5238&amp;oldid=prev</id>
		<title>XenoEngineer at 16:06, 28 June 2025</title>
		<link rel="alternate" type="text/html" href="http://groupkos.com/dev/index.php?title=DataNet_System_Microservices_Architecture&amp;diff=5238&amp;oldid=prev"/>
		<updated>2025-06-28T16:06:30Z</updated>

		<summary type="html">&lt;p&gt;&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;en&quot;&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;← Older revision&lt;/td&gt;
				&lt;td colspan=&quot;2&quot; style=&quot;background-color: #fff; color: #202122; text-align: center;&quot;&gt;Revision as of 16:06, 28 June 2025&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-l1&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&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;{{menuDataNet}}&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;{{menuDataNet}}&lt;ins style=&quot;font-weight: bold; text-decoration: none;&quot;&gt;&amp;lt;br style=&amp;quot;clear:both;&amp;quot;/&amp;gt;&lt;/ins&gt;&lt;/div&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;&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;div&gt;&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;/div&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;div&gt;&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>XenoEngineer</name></author>
	</entry>
	<entry>
		<id>http://groupkos.com/dev/index.php?title=DataNet_System_Microservices_Architecture&amp;diff=5233&amp;oldid=prev</id>
		<title>XenoEngineer: Created page with &quot;{{menuDataNet}}  &lt;html lang=&quot;en&quot;&gt; &lt;head&gt;     &lt;meta charset=&quot;UTF-8&quot;&gt;     &lt;meta name=&quot;viewport&quot; content=&quot;width=device-width, initial-scale=1.0&quot;&gt;     &lt;title&gt;Lab System Microservices Architecture&lt;/title&gt;     &lt;style&gt;         body {             font-family: &#039;Segoe UI&#039;, Tahoma, Geneva, Verdana, sans-serif;             margin: 0;             padding: 20px;             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);             min-height: 100vh;             color:...&quot;</title>
		<link rel="alternate" type="text/html" href="http://groupkos.com/dev/index.php?title=DataNet_System_Microservices_Architecture&amp;diff=5233&amp;oldid=prev"/>
		<updated>2025-06-28T15:54:21Z</updated>

		<summary type="html">&lt;p&gt;Created page with &amp;quot;{{menuDataNet}}  &amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt; &amp;lt;head&amp;gt;     &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;     &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;     &amp;lt;title&amp;gt;Lab System Microservices Architecture&amp;lt;/title&amp;gt;     &amp;lt;style&amp;gt;         body {             font-family: &amp;#039;Segoe UI&amp;#039;, Tahoma, Geneva, Verdana, sans-serif;             margin: 0;             padding: 20px;             background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);             min-height: 100vh;             color:...&amp;quot;&lt;/p&gt;
&lt;p&gt;&lt;b&gt;New page&lt;/b&gt;&lt;/p&gt;&lt;div&gt;{{menuDataNet}}&lt;br /&gt;
&lt;br /&gt;
&amp;lt;html lang=&amp;quot;en&amp;quot;&amp;gt;&lt;br /&gt;
&amp;lt;head&amp;gt;&lt;br /&gt;
    &amp;lt;meta charset=&amp;quot;UTF-8&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;meta name=&amp;quot;viewport&amp;quot; content=&amp;quot;width=device-width, initial-scale=1.0&amp;quot;&amp;gt;&lt;br /&gt;
    &amp;lt;title&amp;gt;Lab System Microservices Architecture&amp;lt;/title&amp;gt;&lt;br /&gt;
    &amp;lt;style&amp;gt;&lt;br /&gt;
        body {&lt;br /&gt;
            font-family: &amp;#039;Segoe UI&amp;#039;, Tahoma, Geneva, Verdana, sans-serif;&lt;br /&gt;
            margin: 0;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            background: linear-gradient(135deg, #667eea 0%, #764ba2 100%);&lt;br /&gt;
            min-height: 100vh;&lt;br /&gt;
            color: #333;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .container {&lt;br /&gt;
            max-width: 1400px;&lt;br /&gt;
            margin: 0 auto;&lt;br /&gt;
            background: rgba(255, 255, 255, 0.95);&lt;br /&gt;
            backdrop-filter: blur(10px);&lt;br /&gt;
            border-radius: 20px;&lt;br /&gt;
            padding: 30px;&lt;br /&gt;
            box-shadow: 0 20px 40px rgba(0,0,0,0.1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        h1 {&lt;br /&gt;
            text-align: center;&lt;br /&gt;
            color: #2c3e50;&lt;br /&gt;
            margin-bottom: 30px;&lt;br /&gt;
            font-size: 2.5em;&lt;br /&gt;
            text-shadow: 2px 2px 4px rgba(0,0,0,0.1);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .architecture-grid {&lt;br /&gt;
            display: grid;&lt;br /&gt;
            grid-template-columns: repeat(auto-fit, minmax(300px, 1fr));&lt;br /&gt;
            gap: 25px;&lt;br /&gt;
            margin-bottom: 40px;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .service-card {&lt;br /&gt;
            background: linear-gradient(145deg, #ffffff, #f0f0f0);&lt;br /&gt;
            border-radius: 15px;&lt;br /&gt;
            padding: 25px;&lt;br /&gt;
            box-shadow: 0 10px 25px rgba(0,0,0,0.1);&lt;br /&gt;
            border: 2px solid transparent;&lt;br /&gt;
            transition: all 0.3s ease;&lt;br /&gt;
            position: relative;&lt;br /&gt;
            overflow: hidden;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .service-card:hover {&lt;br /&gt;
            transform: translateY(-5px);&lt;br /&gt;
            border-color: #667eea;&lt;br /&gt;
            box-shadow: 0 15px 35px rgba(0,0,0,0.15);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .service-card::before {&lt;br /&gt;
            content: &amp;#039;&amp;#039;;&lt;br /&gt;
            position: absolute;&lt;br /&gt;
            top: 0;&lt;br /&gt;
            left: 0;&lt;br /&gt;
            right: 0;&lt;br /&gt;
            height: 4px;&lt;br /&gt;
            background: linear-gradient(90deg, #667eea, #764ba2);&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .service-title {&lt;br /&gt;
            font-size: 1.4em;&lt;br /&gt;
            font-weight: bold;&lt;br /&gt;
            color: #2c3e50;&lt;br /&gt;
            margin-bottom: 15px;&lt;br /&gt;
            display: flex;&lt;br /&gt;
            align-items: center;&lt;br /&gt;
            gap: 10px;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .service-icon {&lt;br /&gt;
            width: 30px;&lt;br /&gt;
            height: 30px;&lt;br /&gt;
            border-radius: 50%;&lt;br /&gt;
            display: flex;&lt;br /&gt;
            align-items: center;&lt;br /&gt;
            justify-content: center;&lt;br /&gt;
            font-weight: bold;&lt;br /&gt;
            color: white;&lt;br /&gt;
            font-size: 0.8em;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .ui-service .service-icon { background: #3498db; }&lt;br /&gt;
        .control-service .service-icon { background: #e74c3c; }&lt;br /&gt;
        .device-service .service-icon { background: #f39c12; }&lt;br /&gt;
        .data-service .service-icon { background: #27ae60; }&lt;br /&gt;
        .analysis-service .service-icon { background: #9b59b6; }&lt;br /&gt;
        .gateway-service .service-icon { background: #34495e; }&lt;br /&gt;
        &lt;br /&gt;
        .service-description {&lt;br /&gt;
            color: #555;&lt;br /&gt;
            line-height: 1.6;&lt;br /&gt;
            margin-bottom: 15px;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .service-tech {&lt;br /&gt;
            background: #ecf0f1;&lt;br /&gt;
            padding: 10px;&lt;br /&gt;
            border-radius: 8px;&lt;br /&gt;
            font-size: 0.9em;&lt;br /&gt;
            color: #7f8c8d;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .flow-diagram {&lt;br /&gt;
            background: #f8f9fa;&lt;br /&gt;
            border-radius: 15px;&lt;br /&gt;
            padding: 30px;&lt;br /&gt;
            margin: 30px 0;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .flow-title {&lt;br /&gt;
            font-size: 1.8em;&lt;br /&gt;
            color: #2c3e50;&lt;br /&gt;
            margin-bottom: 25px;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .flow-steps {&lt;br /&gt;
            display: flex;&lt;br /&gt;
            justify-content: space-around;&lt;br /&gt;
            align-items: center;&lt;br /&gt;
            flex-wrap: wrap;&lt;br /&gt;
            gap: 20px;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .flow-step {&lt;br /&gt;
            background: white;&lt;br /&gt;
            padding: 15px 20px;&lt;br /&gt;
            border-radius: 10px;&lt;br /&gt;
            box-shadow: 0 5px 15px rgba(0,0,0,0.1);&lt;br /&gt;
            min-width: 120px;&lt;br /&gt;
            font-weight: bold;&lt;br /&gt;
            color: #2c3e50;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .flow-arrow {&lt;br /&gt;
            font-size: 1.5em;&lt;br /&gt;
            color: #667eea;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .implementation-notes {&lt;br /&gt;
            background: #e8f5e8;&lt;br /&gt;
            border-left: 5px solid #27ae60;&lt;br /&gt;
            padding: 20px;&lt;br /&gt;
            margin: 30px 0;&lt;br /&gt;
            border-radius: 0 10px 10px 0;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .implementation-notes h3 {&lt;br /&gt;
            color: #27ae60;&lt;br /&gt;
            margin-top: 0;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .tech-stack {&lt;br /&gt;
            display: grid;&lt;br /&gt;
            grid-template-columns: repeat(auto-fit, minmax(200px, 1fr));&lt;br /&gt;
            gap: 15px;&lt;br /&gt;
            margin-top: 30px;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        .tech-item {&lt;br /&gt;
            background: linear-gradient(135deg, #667eea, #764ba2);&lt;br /&gt;
            color: white;&lt;br /&gt;
            padding: 15px;&lt;br /&gt;
            border-radius: 10px;&lt;br /&gt;
            text-align: center;&lt;br /&gt;
            font-weight: bold;&lt;br /&gt;
        }&lt;br /&gt;
        &lt;br /&gt;
        @media (max-width: 768px) {&lt;br /&gt;
            .flow-steps {&lt;br /&gt;
                flex-direction: column;&lt;br /&gt;
            }&lt;br /&gt;
            .flow-arrow {&lt;br /&gt;
                transform: rotate(90deg);&lt;br /&gt;
            }&lt;br /&gt;
        }&lt;br /&gt;
    &amp;lt;/style&amp;gt;&lt;br /&gt;
&amp;lt;/head&amp;gt;&lt;br /&gt;
&amp;lt;body&amp;gt;&lt;br /&gt;
    &amp;lt;div class=&amp;quot;container&amp;quot;&amp;gt;&lt;br /&gt;
        &amp;lt;h1&amp;gt;🧪 Lab System Microservices Architecture&amp;lt;/h1&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div class=&amp;quot;architecture-grid&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;service-card ui-service&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-title&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;service-icon&amp;quot;&amp;gt;UI&amp;lt;/div&amp;gt;&lt;br /&gt;
                    Web Interface Service&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-description&amp;quot;&amp;gt;&lt;br /&gt;
                    Simple HTML/JS/CSS interface with editable numeric and text fields. Handles user input validation and real-time updates from analysis results.&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-tech&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Tech:&amp;lt;/strong&amp;gt; Pure HTML/JS/CSS, WebSocket client, minimal framework&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
            &amp;lt;div class=&amp;quot;service-card gateway-service&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-title&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;service-icon&amp;quot;&amp;gt;GW&amp;lt;/div&amp;gt;&lt;br /&gt;
                    API Gateway Service&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-description&amp;quot;&amp;gt;&lt;br /&gt;
                    Central entry point that routes requests, handles authentication, and manages WebSocket connections for real-time communication.&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-tech&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Tech:&amp;lt;/strong&amp;gt; Node.js/Express or Go, WebSocket support, CORS handling&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
            &amp;lt;div class=&amp;quot;service-card control-service&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-title&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;service-icon&amp;quot;&amp;gt;CT&amp;lt;/div&amp;gt;&lt;br /&gt;
                    Control Service&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-description&amp;quot;&amp;gt;&lt;br /&gt;
                    Receives UI field values, validates them, and formats control data for ESP32 register transmission. Maintains current control state.&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-tech&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Tech:&amp;lt;/strong&amp;gt; Python/FastAPI or Node.js, UDP/TCP client, register mapping&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
            &amp;lt;div class=&amp;quot;service-card device-service&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-title&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;service-icon&amp;quot;&amp;gt;DV&amp;lt;/div&amp;gt;&lt;br /&gt;
                    Device Communication Service&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-description&amp;quot;&amp;gt;&lt;br /&gt;
                    Manages WiFi protocol with ESP32. Sends control registers and receives event data blocks containing: on-timestamp, off-timestamp, event-count from binary counter captures on state transitions.&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-tech&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Tech:&amp;lt;/strong&amp;gt; Python/asyncio, UDP/TCP, binary packet parsing, block buffering&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
            &amp;lt;div class=&amp;quot;service-card data-service&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-title&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;service-icon&amp;quot;&amp;gt;DB&amp;lt;/div&amp;gt;&lt;br /&gt;
                    Event Data Service&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-description&amp;quot;&amp;gt;&lt;br /&gt;
                    Receives event data blocks from ESP32: processes pulse timing (on/off timestamps) and event counts. Calculates pulse width, frequency, and counter deltas for analysis.&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-tech&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Tech:&amp;lt;/strong&amp;gt; Python/FastAPI, time-series DB, event processing, pulse analysis&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
            &lt;br /&gt;
            &amp;lt;div class=&amp;quot;service-card analysis-service&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-title&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;div class=&amp;quot;service-icon&amp;quot;&amp;gt;AN&amp;lt;/div&amp;gt;&lt;br /&gt;
                    Analysis Service&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-description&amp;quot;&amp;gt;&lt;br /&gt;
                    Processes logged data, performs calculations, and generates parametric changes to feed back to UI control fields for closed-loop operation.&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;service-tech&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Tech:&amp;lt;/strong&amp;gt; Python/NumPy/SciPy, algorithm engine, parameter optimization&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div class=&amp;quot;flow-diagram&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;flow-title&amp;quot;&amp;gt;📊 Event-Driven Data Flow&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;flow-steps&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-step&amp;quot;&amp;gt;Web UI&amp;lt;br&amp;gt;Controls&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-arrow&amp;quot;&amp;gt;→&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-step&amp;quot;&amp;gt;ESP32&amp;lt;br&amp;gt;Registers&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-arrow&amp;quot;&amp;gt;→&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-step&amp;quot;&amp;gt;Binary Input&amp;lt;br&amp;gt;Monitor&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-arrow&amp;quot;&amp;gt;→&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-step&amp;quot;&amp;gt;State Change&amp;lt;br&amp;gt;Trigger&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-arrow&amp;quot;&amp;gt;→&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-step&amp;quot;&amp;gt;Event Packet&amp;lt;br&amp;gt;Capture&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-arrow&amp;quot;&amp;gt;→&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-step&amp;quot;&amp;gt;Block Buffer&amp;lt;br&amp;gt;ESP32&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-arrow&amp;quot;&amp;gt;→&amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div class=&amp;quot;flow-step&amp;quot;&amp;gt;Event Data&amp;lt;br&amp;gt;Service&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div class=&amp;quot;implementation-notes&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h3&amp;gt;🔧 ESP32 Event Capture Logic&amp;lt;/h3&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Interrupt-driven:&amp;lt;/strong&amp;gt; Binary input triggers on falling edge (off-state transition)&amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Event packet:&amp;lt;/strong&amp;gt; [on_timestamp, off_timestamp, counter_value] - 12 bytes typical&amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Block transmission:&amp;lt;/strong&amp;gt; Buffer N packets (e.g., 10-100) before WiFi transmission&amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Counter capture:&amp;lt;/strong&amp;gt; Sample wide binary counter at exact moment of state transition&amp;lt;/p&amp;gt;&lt;br /&gt;
            &amp;lt;p&amp;gt;&amp;lt;strong&amp;gt;Timing precision:&amp;lt;/strong&amp;gt; ESP32 microsecond timestamps for pulse width analysis&amp;lt;/p&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
&lt;br /&gt;
        &amp;lt;div style=&amp;quot;background: #fff3cd; border-left: 5px solid #ffc107; padding: 20px; margin: 30px 0; border-radius: 0 10px 10px 0;&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;h3 style=&amp;quot;color: #856404; margin-top: 0;&amp;quot;&amp;gt;⚡ ESP32 Firmware Services Needed&amp;lt;/h3&amp;gt;&lt;br /&gt;
            &amp;lt;div style=&amp;quot;display: grid; grid-template-columns: repeat(auto-fit, minmax(250px, 1fr)); gap: 15px; margin-top: 15px;&amp;quot;&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background: white; padding: 15px; border-radius: 8px; border: 1px solid #ffc107;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Interrupt Handler&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
                    Binary input monitoring, timestamp capture, counter sampling&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background: white; padding: 15px; border-radius: 8px; border: 1px solid #ffc107;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Event Buffer Manager&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
                    Packet queuing, block-size detection, memory management&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background: white; padding: 15px; border-radius: 8px; border: 1px solid #ffc107;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;WiFi Communication&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
                    Register updates from PC, event data transmission to PC&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
                &amp;lt;div style=&amp;quot;background: white; padding: 15px; border-radius: 8px; border: 1px solid #ffc107;&amp;quot;&amp;gt;&lt;br /&gt;
                    &amp;lt;strong&amp;gt;Register Interface&amp;lt;/strong&amp;gt;&amp;lt;br&amp;gt;&lt;br /&gt;
                    Control parameter storage, add-on board interfacing&lt;br /&gt;
                &amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
        &lt;br /&gt;
        &amp;lt;div class=&amp;quot;tech-stack&amp;quot;&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;tech-item&amp;quot;&amp;gt;ESP32 Protocol&amp;lt;br&amp;gt;UDP/TCP&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;tech-item&amp;quot;&amp;gt;WebSocket&amp;lt;br&amp;gt;Real-time&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;tech-item&amp;quot;&amp;gt;SQLite/InfluxDB&amp;lt;br&amp;gt;Time-series&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;tech-item&amp;quot;&amp;gt;Python/Node.js&amp;lt;br&amp;gt;Services&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;tech-item&amp;quot;&amp;gt;Pure HTML/JS&amp;lt;br&amp;gt;No Libraries&amp;lt;/div&amp;gt;&lt;br /&gt;
            &amp;lt;div class=&amp;quot;tech-item&amp;quot;&amp;gt;Docker&amp;lt;br&amp;gt;Containerization&amp;lt;/div&amp;gt;&lt;br /&gt;
        &amp;lt;/div&amp;gt;&lt;br /&gt;
    &amp;lt;/div&amp;gt;&lt;br /&gt;
&amp;lt;/body&amp;gt;&lt;br /&gt;
&amp;lt;/html&amp;gt;&lt;/div&gt;</summary>
		<author><name>XenoEngineer</name></author>
	</entry>
</feed>