1. Introduction
soifgo is a professional, open‑source 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 & Open Source: No ads, no tracking. Full transparency.
  • 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. 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).

4. 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
5. 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!

6. 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 PropertiesPaste Properties
7. 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
8. 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.
9. 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).
10. 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.

11. 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
12. 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