Below is some research I did with Perplexity while thinking about how to do this.
What physical buttons work with beeminder
Beeminder can be used with a variety of physical buttons by leveraging integrations through platforms like IFTTT or custom setups. Supported and user-tested buttons and systems include:
- Flic Button: This Bluetooth button is commonly used with IFTTT to automatically send a datapoint to Beeminder when the button is pressed. You connect the Flic button to an IFTTT applet that posts to Beeminder, and you can configure single, double, or long presses to trigger different actions or goals[1][2].
- Amazon Dash Button (Repurposed): Originally created for one-click product ordering, Dash buttons can be hacked to send a datapoint to Beeminder, but this method requires monitoring network packets or using a custom script, as they’re not natively supported[3].
- AWS IoT Button: These are cloud-connected buttons from Amazon’s AWS platform. Each IoT button can be programmed via AWS and used with IFTTT webhooks to update Beeminder goals. They are more flexible and designed for such integrations compared to Dash buttons[4].
- Misfit Wearables: Devices like the Misfit can be connected through IFTTT, allowing different button presses (single, double, long) to trigger actions, including logging Beeminder datapoints[5].
- Internet Button / Particle Photon / Spark Core Devices: Hobbyist and DIY programmable WiFi buttons (like the Particle Photon or Spark’s Internet Button) can be coded to send HTTP requests, interact with IFTTT, and update Beeminder goals. Users often 3D-print enclosures, map multiple buttons to different goals, and use LEDs for feedback[3:1][6][7].
- NFC Tags: While not a button in the traditional sense, you can use NFC tags and a phone with automation apps (like Tasker on Android or Shortcuts on iOS) to trigger Beeminder actions when you tap your phone to the tag[3:2][2:1].
- Bluetooth Selfie Shutter Buttons: Cheap Bluetooth camera shutter buttons (used for selfies) may be repurposed to act as a trigger for custom software on your phone, which could then send data to Beeminder[5:1].
General Setup for these buttons usually involves:
- Pairing the button with your phone or WiFi.
- Creating an applet or automation (most often using IFTTT, Tasker, or custom scripts).
- Configuring the action: when the button is pressed, it sends a +1 (or other value) to a specific Beeminder goal.
No single official Beeminder-branded hardware button exists, but the Flic button is the most referenced and straightforward physical button solution due to its native IFTTT integration and ease of use with Beeminder[1:1][2:2]. Others, like Dash, AWS IoT, and Particle devices, cater to users comfortable with light DIY setup and scripting[3:3][6:1][4:1].
If you’re looking for a ready-to-use solution with minimal setup, the Flic button via IFTTT is the best-recommended option[1:2][2:3]. For tinkerers, Dash, IoT, and open-source hardware buttons offer more flexibility.
Which of these solutions work over wifi and on’t require a phone to be turned on
The Particle Internet Button and similar DIY/IoT (Internet of Things) buttons—such as repurposed Amazon Dash Buttons and the Seeed IoT Button for AWS—are the primary solutions that work over WiFi and do not require a phone to be present or turned on[8][9]. These devices connect directly to your WiFi network and can interact with services like IFTTT to log datapoints in Beeminder, all independently from your smartphone.
Here’s how the options compare:
Device Type | Wireless Protocol | Requires Phone Always On? | Notes |
---|---|---|---|
Particle Internet Button | WiFi | No | User-programmable, connects to IFTTT, requires setup[8:1]. |
Amazon Dash Button (repurposed) | WiFi | No | No longer manufactured, still used by hackers[8:2][9:1]. |
Seeed IoT Button for AWS | WiFi | No | Commercial replacement for Dash Button[9:2]. |
Flic Button | Bluetooth | Yes (unless using hub) | Needs phone or hub to bridge to internet[10][9:3]. |
NFC Tags | N/A | Yes | Needs phone to scan each time[11][8:3][9:4]. |
Bluetooth Selfie Buttons | Bluetooth | Yes | Requires connected phone for use[12]. |
Important details:
- WiFi buttons like the Particle Internet Button or repurposed Dash buttons can send data directly to the cloud, so you don’t need your phone turned on or present for the button to work[8:4][13][9:5].
- The Flic Button and NFC tags require a smartphone (or in Flic’s case, a special hub) to relay button presses to Beeminder; they do not work standalone over WiFi[10:1][9:6].
- Amazon Dash Buttons are discontinued but may still be available from resellers or as used devices[9:7].
- Third-party Seeed IoT Buttons and Particle devices are currently the best plug-and-play options for a standalone WiFi button solution.
Summary:
If you want a Beeminder-compatible button that works over WiFi without requiring your phone to be on or nearby, look into the Particle Internet Button, Seeed IoT Button, or similar programmable IoT WiFi buttons[8:5][9:8]. Avoid Bluetooth-based solutions unless you are willing to have a phone or special hub always powered and within range.
Using a Physical Button with a Raspberry Pi for Beeminder
You can definitely add a physical button to your Raspberry Pi and have it send data directly to Beeminder over WiFi, without needing a phone. This is arguably one of the most flexible and DIY-friendly approaches for creating a standalone “Beeminder button.”
How It Works
- Connect a physical button to the Raspberry Pi’s GPIO pins.
- Use a simple Python script to detect button presses.
- When pressed, send a datapoint to Beeminder using their API over WiFi.
- Your Pi only needs power and internet—no phone or hub is required.
What You Need
- Any model of Raspberry Pi with available GPIO pins.
- A momentary push button (widely available at electronics stores or online).
- 2 breadboard jumper wires, and optionally a resistor for safety/debouncing.
- Internet access for your Pi.
Basic Software Approach
- Wire the Button: Connect one side of the button to a GPIO pin (e.g., pin 7), the other to a GND pin. Simple tutorials exist for this kind of connection[14][15].
- Script the Button Press: Use Python with libraries like
gpiozero
orRPi.GPIO
to detect when the button is pressed[16][15:1]. - Send Data to Beeminder: When a button press is detected, your script uses Python’s
requests
library to call the [Beeminder API][17] and log a datapoint to your chosen goal.
Real-World Examples
- Standing Desk Tracker: One community member uses a magnetic sensor (wired just like a button) on a Raspberry Pi to log standing desk time to Beeminder, sharing their setup and script[18].
- Custom Multi-Button Boards: Others have made multi-button “goal boards,” where each button data-logs for a different Beeminder goal, using the Pi’s GPIO array[19][20].
- General GPIO Tutorials: Many tutorials show how to wire up and script a button; you can easily adapt these for Beeminder by including the Beeminder API call in the button-press event[16:1][15:2].
Why Choose a Pi-Based Button?
Feature | Value |
---|---|
WiFi | Yes |
Standalone | Yes (no phone needed) |
Flexible | Supports one or many buttons/goals |
Customizable | Add LEDs, displays, or additional logic |
DIY | Requires basic wiring and coding |
Example Workflow Overview
- Press button → Pi detects it → Pi sends +1 datapoint to Beeminder via WiFi.
Once set up, this is about as seamless as a commercial IoT button, and the Pi can be repurposed for more complex workflows if you wish[17:1][18:1][19:1].
Resources for Getting Started
- Beeminder API docs and basic scripts: [17:2]
- Sample project: logging standing time with a Pi and Beeminder[18:2]
- GPIO button wiring and Python scripting: [16:2][15:3]
A Raspberry Pi is an excellent way to create a WiFi-connected Beeminder button: it’s customizable, phone-independent, and only requires a little simple code and wiring.
Suitability of the KGOTA 8-Button Touch Module for a Raspberry Pi Beeminder Button
Overview
The KGOTA 8-Independent Key Button Touch Button Module (with LED indicators, 3.3–5V) is marketed as compatible with Raspberry Pi and other microcontroller platforms. This module provides eight individual touch-sensitive buttons, each with a digital output and an LED indicator, making it a convenient candidate for a DIY project like a Beeminder button array[21][22].
Why This Module Is a Good Choice
- Multiple Buttons: Offers 8 touch-sensitive buttons, which could easily be mapped to multiple Beeminder goals or various actions.
- Simple Wiring: Outputs a digital low signal on button press, which is straightforward to read from GPIO pins on a Raspberry Pi.
- LED Indicators: Built-in LEDs provide clear feedback when a button is pressed, enhancing usability and helping with debugging.
- Voltage Compatibility: Operates at 3.3–5V, which matches the logic levels on Raspberry Pi GPIO pins.
Application for Beeminder
You can wire one or more of these touch buttons to the GPIO pins on your Raspberry Pi and use a Python script (e.g., with gpiozero
or RPi.GPIO
) to:
- Detect when a specific button is touched.
- Send a POST request to the Beeminder API, logging a datapoint for the associated goal, over WiFi.
- Provide immediate visual feedback via the onboard LED for each button.
Considerations
- Touch vs. Mechanical: The module uses touch pads instead of mechanical push buttons. If you prefer the tactile feel of a clicky button, you may want a traditional momentary push button module instead. However, many users find touch buttons responsive enough for this use-case.
- Debouncing: Touch sensors generally don’t suffer from mechanical noise, so software debouncing may not be necessary (though always good practice to test).
- Physical Construction: The module is a bare circuit board, so you may want to mount or enclose it if planning frequent physical use.
In Summary
Yes, this is a good choice for your purpose:
- It is electrically and logically compatible with the Raspberry Pi.
- Allows you to add a simple, multi-goal Beeminder logging interface.
- Built-in LED indicators make setup and use more intuitive.
You’ll just need some jumper cables and a bit of code to connect each button’s output to a GPIO pin, poll for button events, and call the Beeminder API[22:1].
References