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