1. Introduction
soifgo is a professional Android application designed for industrial automation, IoT prototyping, and Bluetooth device control. It transforms your phone into a powerful HMI (Human-Machine Interface) with zero coding required.

Why soifgo?

  • Free & Private: No ads, no tracking. Your data stays on your device.
  • 21 Languages: Built-in custom translation engine (English, Persian, Arabic, Chinese, Russian, etc.).
  • Lightweight: Only 7.5 MB APK. Runs smoothly on older devices (Android 5+).
  • Offline First: All projects are saved locally. No internet required for core features.

Who is it for?

  • Engineers: Test PLCs, VFDs, and serial devices via Bluetooth.
  • Makers: Control Arduino / ESP32 / Raspberry Pi projects.
  • Educators: Teach IoT, sensor reading, and control logic.
  • Technicians: Diagnose equipment with real‑time graphs and logs.

Developed with B4A (Basic4Android) · Architecture: B4XPages · Version 1.41

2. Installation & Permissions
First-time setup guide for Android 5 to Android 14+.
  • Download APK – Get the latest version from GitHub Releases or APKPure.
  • Enable Unknown Sources – Allow installation from your file manager or browser (Android 8+ handles this per‑app).
  • Storage Permission (Android 5–10) – Grant WRITE_EXTERNAL_STORAGE to save projects. On Android 11+, MANAGE_EXTERNAL_STORAGE is required for full file access.
  • Bluetooth & SMS Permissions – Required for device pairing, sending data, and SMS automation. Denying SMS will disable the SMS button function only.
// App creates this folder structure on first run: /storage/emulated/0/soifgo/<folder>/Page/ /storage/emulated/0/soifgo/<folder>/Note/ /storage/emulated/0/soifgo/<folder>/HTML/ /storage/emulated/0/soifgo/<folder>/Audio/ /storage/emulated/0/soifgo/<folder>/Pictures/ /storage/emulated/0/soifgo/<folder>/Pdf/ /storage/emulated/0/soifgo/<folder>/graph/
3. Page Setup — How to Start
SoifGo has two main modes: Play (run) and Pause / Edit (design). Every action below happens from the top‑bar icons. Follow these steps in order the first time.
  1. Open the app — tap the Play (▶️) icon in the top bar to enter run mode, then tap the Pause (⏸️) icon to switch to Edit mode.
    You are now in the design screen.
  2. Open the menu — tap the Edit icon and choose Select Design.
  3. Create a Folder — from the list, choose Folder → then tap Create. Optionally edit the folder name, then tap Confirm. Your folder is now created.
  4. Create a Page — tap the Pause icon again → Select Design → choose Page → tap New. Optionally rename it, then Confirm. A new section is added to the menu.
  5. Add a Button — tap Button, then drag it anywhere on the page to position it. Tap the Pause icon to open the button's properties (background, size, behaviour, and more).
  6. Set the behaviour to WebView (to run your custom HTML idea or app) — open the Behaviour menu and select Web Load, then choose Offline HTML file. Next, pick one of these options:
    • Create New — start a fresh HTML file.
    • Explore — browse storage to reload an existing file.
    • Samples — ready‑made examples.
    • Saved / Existing — files already inside your project's HTML folder.

    💡 Tip: If the built‑in explorer feels limited, install a good file manager on your phone — it will make editing and moving files much easier.
  7. Run the WebView — go back to Play mode and tap the button. Your HTML page loads inside SoifGo.
  8. Edit the HTML — tap the Play icon, then choose Edit to see the code. You can edit manually or paste code from an AI assistant.

    For convenience, the menu has a Select All & Paste option — it replaces the whole file in one step.

    Wait until the syntax highlighting changes from black to colored. Then tap the Close (✕) icon to view the updated page.

Reminders

  • Save often — from the slide menu → Save Page.
  • Your project lives here: /storage/emulated/0/soifgo/<Folder>/.
  • Reuse everything — Copy / Paste Properties from any button onto a new one.
  • No hardware yet? Activate Simulation from the slide menu and test the UI.
// Typical folder you end up with after following these steps: /storage/emulated/0/soifgo/MyProject/ ├── Page/Main/ // page + button layout ├── HTML/ // your WebView HTML files ├── Note/ // text / G-code ├── Audio/ // sound files ├── Pictures/ // button icons ├── Pdf/ // PDFs └── graph/ // graph logs (.ttx)
4. Dashboard Overview
The main screen consists of a configurable panel (Panel1) where you place Buttons and SeekBars.

Play / Edit Mode

  • Play (▶️): Active runtime. Buttons send commands, bars update values, graphs plot data.
  • Pause (⏸️): Edit mode. Move/resize controls, change behaviours, customize colors.
  • Switching modes reloads the current page with updated properties.

Main Controls

  • Top Bar: Bluetooth connect, Menu (≡), Play/Pause, Page navigation.
  • Slide Menu (≡): Access folders, pages, search, undo/redo, simulation, and language selection.
  • Bottom SeekBars: Fine‑tune effects, sizes, delays, and graph zoom.

Tip: Long‑press on any button or SeekBar to access quick‑edit options (audio, vibra, effects).

5. Bluetooth Serial Communication
Connect to any classic Bluetooth (SPP) device like HC‑05, HC‑06, Arduino, or industrial modules.
  • Pairing: First, pair your device in Android Settings > Bluetooth. Return to soifgo.
  • Connect: Tap the Bluetooth icon (top‑left). Select your paired device from the list. The icon turns blue on success.
  • Send / Receive: Buttons with Send Bluetooth behaviour transmit data. Buttons with Receive Bluetooth Text/Value display incoming data.
  • Format (CR/LF/STX): Configure per‑button or globally. Options: CR+LF, CR, LF, STX/ETX, NULL, NON (raw).
// Example: Button sends "M3 S1000" with CR+LF Behaviour: Send Bluetooth Sender: M3 S1000 Format: CR+LF // Appends \r\n
6. Server API & MQTT Integration
Connect to REST APIs or MQTT brokers for cloud‑based control, data logging, and IIoT applications.

REST API

  • Address: Full URL (e.g., http://192.168.1.100:3000/data).
  • Server Key: JSON key name (e.g., "temperature").
  • Sender: The value to send (static text or sensor variable).
  • Receive: Buttons with Receive Server Text/Value parse JSON responses.
  • Filters: Use Start Word and End Word to extract substrings from large JSON responses.

MQTT

  • Broker: Address (e.g., tcp://test.mosquitto.org:1883).
  • Client ID: Unique identifier (auto‑generated if left blank).
  • Topic: Subscribe/Publish topic (e.g., soifgo/sensor1).
  • QoS: 0, 1, or 2. Set in the MQTT options menu.
  • Auth: Optional username/password for secure brokers.

Both API and MQTT support Note Jobs – send entire text files line‑by‑line with delays!

7. Buttons – Full Configuration
Each button can be customized with behaviours, effects, and media.

Behaviour Types

  • Send: Bluetooth, SMS, API, MQTT.
  • Receive: Bluetooth Text/Value, API Text/Value, MQTT Text/Value.
  • UI: Note, PDF, Image, Web (HTML), Open Page, Open Folder.
  • Bar Control: +Bar, -Bar, Show Bar Value.
  • Sensor: Read Phone Sensor (Light, Accel X/Y, Magnetic).

Visual Properties

  • Name, Font, Text Size, Color.
  • Icon: Load from gallery or choose from built‑in icons (Shadow, Edg, Clock, etc.).
  • Gradients: 9 pre‑defined gradient styles (TL_BR, LEFT_RIGHT, etc.).
  • Corner Radius & Border: Customize the shape and stroke.
  • Rotation: Freely rotate the button (0–359°).

Audio & Vibra

  • Audio: Assign an MP3/WAV file (from assets or saved folder) to play on click.
  • Beeper: Use system beeper instead of audio file.
  • Vibration: Set vibration duration (ms).
// Copy / Paste entire button properties (great for templates) Slide Menu → Copy Properties → Paste Properties
8. SeekBars – Analog Controls
SeekBars provide variable output (0–Max). Perfect for speed control, PWM, or dimming.
  • Range: Set Min=0, Max (default 100). Customisable via properties.
  • RGB Modes: White (0–255 grayscale), Color Picker (select any color), Color Picker + Free (click to toggle).
  • Send Values: Configure to send via Bluetooth, API, MQTT, or SMS with custom prefix/suffix.
  • Check‑in: Enable to wait for an echo/response before moving to the next value.
// Example: SeekBar sends "R255G200B100" via Bluetooth Prefix: R Suffix: G RGB Mode: Color Picker
9. Note Editor & HTML Viewer
A powerful multi‑purpose editor for text, HTML, G‑Code, and automated data streaming.

Note Features

  • Line Numbers: Toggle on/off.
  • Free / Wrap: Choose between free‑resizing or word wrap.
  • Font & Size: Custom fonts from assets.
  • Find & Replace: Search text and replace all or next.
  • Undo / Redo: Full history via manager1.

HTML & G‑Code

  • HTML Mode: WYSIWYG preview inside the app. Supports <style> and <script>.
  • Syntax Highlighting: Auto‑colors HTML tags, CSS properties, and JS keywords.
  • G‑Code Viewer: Visualise CNC paths (G0, G1, G2, G3) directly in the app.
  • Rangmang2: Built‑in utility for 2D plotting and coordinate transformations.

Note Jobs (Automation)

  • Bluetooth Send / Server Send: Stream each line of the note to Bluetooth/API/MQTT.
  • Delays: Set a fixed delay between lines, or use the wait= command inside the text (e.g., wait=5).
  • Loop: Repeat the entire note endlessly.
  • Check Next: Wait for a specific response (e.g., "OK") before moving to the next line.
10. Real‑Time Graphs
Visualise incoming numeric data (Bluetooth/API/MQTT/Sensors) with live plotting.
  • Activate: In button effects, enable Graph ON. The button background turns into a graph canvas.
  • Update Rate: Set Graph Intertime (milliseconds per point).
  • Zoom & Scroll: Use the Zoom and View options in the graph menu to inspect historical data.
  • Data Logging: Enable Graph Time Save to store timestamped values (year, month, day, hour, minute, second, value) into the /graph/ folder.
  • Graph Select: Switch between active graphs without leaving the main view.
// Graph data is saved as .ttx files: /soifgo/<folder>/graph/<page>/<ButtonName>_1.ttx // Each file contains: Width, then pairs of (Year, Month, Day, Hour, Minute, Second, Value).
11. Dynamic Effects (Visual Feedback)
Buttons can react to incoming values with visual changes, making the dashboard come alive.

Max Size

The button grows or shrinks proportionally to the input value within a defined range (WidthMax, HeightMax).

Circular Gauge

Draws an arc (like a speedometer) around the button. Define Start and End angles (0–359°).

Max Move

Translate the button position based on the value (MoveX, MoveY). Great for slider‑like indicators.

Rotation

Rotate the button dynamically between Start and End angles (0–359°).

Color Effect

7 modes: Battery, Cooling, Light (W/R/G/B/Y). Colors change based on value thresholds.

Math Formula

Apply custom expressions like val * 2 + 10 or Math.sin(val) to the incoming value before display.

12. Phone Sensors
Use your phone's hardware sensors as input sources.
  • Light Sensor: Measures ambient light (lux). Assign to a button with Receive Sensor behaviour.
  • Accelerometer (X/Y): Measures device tilt and motion. Use MoveX or MoveY as address.
  • Magnetometer: Measures magnetic field (µT). Useful for compass or metal detection.
  • Scaling: Apply multipliers (MagMulti, AccMulti) and offsets (MagAdd, AccAdd) to raw sensor data.
// Example: Send light value via Bluetooth Behaviour: Send Bluetooth | Sensor: Light | Divider: 1
13. Simulation Mode
Test your dashboard without any hardware connected.
  • Signal Types: Ramp (0→1024), Bipolar Ramp (-1024→1024), Sine (0→1024), Bipolar Sine (-1024→1024).
  • Show/Hide: Toggle the simulated value display on the main screen.
  • Usage: Activate from the Slide Menu → Simulation. Great for demo and UI testing.
soifgo · Built for engineers, makers, and educators
Free forever · No ads · No tracking