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
- 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_STORAGEto save projects. On Android 11+,MANAGE_EXTERNAL_STORAGEis 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.
-
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. -
Open the menu — tap the Edit icon and choose Select Design.
-
Create a Folder — from the list, choose Folder → then tap Create. Optionally edit the folder name, then tap Confirm. Your folder is now created.
-
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.
-
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).
-
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. -
Run the WebView — go back to Play mode and tap the button. Your HTML page loads inside SoifGo.
-
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.
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).
- 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 Bluetoothbehaviour transmit data. Buttons withReceive Bluetooth Text/Valuedisplay incoming data. - Format (CR/LF/STX): Configure per‑button or globally. Options:
CR+LF,CR,LF,STX/ETX,NULL,NON(raw).
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/Valueparse JSON responses. - Filters: Use
Start WordandEnd Wordto 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!
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).
- 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.
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.
- 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
ZoomandViewoptions in the graph menu to inspect historical data. - Data Logging: Enable
Graph Time Saveto 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.
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.
- Light Sensor: Measures ambient light (lux). Assign to a button with
Receive Sensorbehaviour. - Accelerometer (X/Y): Measures device tilt and motion. Use
MoveXorMoveYas 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.
- 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.