I am hoping not, unfortunately I do not have the experience required but I believe that @dashrb was looking into the possibility. I hope that someone can take up the challenge - as you say it appears to have been solved for other platforms.
Looks like openHAB is falling behind other solutions. Time to think about a platform change. Will be a lot of work, but looks much more promising.
Thatâs exactly what I thought yesterday ![]()
Iâm assuming that the lack of any updates here suggests that the development of this has sadly come to an end and itâs now no longer an option within OpenHAB? ![]()
Would be really happy to be wrong on my assumption! Anyone managed to get their Blink cameras back into OpenHAB?
I have an Home Assistent instance running for testing. I managed to tunnel some functionality via MQTT to/from Openhab.
That canât be the final solution. I wondering that Blink is in store available and comes with update to 5.1 with no working interface to Blink itself.
Github bug is created by me: [Blink] Error Communication caus API changes · Issue #19927 · openhab/openhab-addons · GitHub
I have managed to more or less follow the instructions to install the JDK, maven, and eclipse (had to back-version it to 2025-06), and rebuilt the existing blink binding jar (with new logging statements to prove that Iâm running what I think Iâm running), and executed it locally! Of course, it still fails for me like it fails for everyone.
So now Iâve started the surgery to replicate what blinkpy does (in python, for HA, I think), into Java for openhab. Donât get excited. Iâve never seen this code before, I have no expertise with OSGi, Iâve never implemented an OAUTH authentication transaction, Iâm not familiar with the code conventions and terminology, but I do have hope. And revolutions are built on hope!
So far I have modified the code to initiate the first OAUTH-related API call. Iâm on the path but be patient as I try to figure out what Iâm doing.
Progress Report: I have successfully sent a user/password, received an MFA code on my phone, typed it into the Blink Account thing (in a new field I added, similar to how the iCloud account works), and then upon save, submitted the MFA code to blink, and received an access_token and a refresh_token!
Things I still need to figure out (chime in if you have insight) :
- figure out where to store the tokens. In the
BlinkAccount DTO? in theProperties(these appear to be visible to the end user though!)? in an instance variable of theAccountHander? - Iâm also storing a few cryptologic variables as part of the PKCE verification steps of OAUTH2 (a brand new concept to me). These are being stored in the
BlinkAccountâs Properties, but then they appear in the UI if the user opens the ThingProperties panel. It might be insecure to show these variables (even though theyâre only valid for a short period of time) from a MITM / replay sort of attack. I am not sure. Is there somewhere else I should be storing these values other than Properties? I need to fully absorb what the lifecycle is of theAccountHandlerinstance (which extendsBaseBridgeHandler), and whether itâs effectively a singleton throughout the openhab JVM lifespan. The Bindings Page has a nice sequence diagram of the initialization, and based on that, it seems like an instance variable would work. ThePropertiesappear to be persisted somewhere across invocations of Openhab, though, which is important for some of the variables (e.g. the self-generated UUID identifying the âblink client hardwareâ which our code is masquerading as). (Oh, the Bindings page says that: Thing handler implementations must not rely on properties to be persisted as not all providers support that . Hmmmm. Wait, what? If they arenât persisted, how would any Thing survive a restart of the openhab process? - figure out how to send the new access_token in all of the various calls to the Blink APIs
- figure out what Blink thinks the âhome screenâ is
- figure out how the existing code is attempting to refresh the token, but failing because itâs using the old style token from 2024, rather than the OAUTH v2 tokens that Blink is using as of Nov 2025. Update this code to make the token refresh work properly.
- Since I added mfaCode to the Configuration, the user is able to type the MFA code into the BlinkAccount thing. This is how IcloudAccount works too. But iCloudAccount clears the MFA code field after use (it is only valid one time). So I need to figure out how to update the Configuration object (to clear the MFA programmatically) in a way that the openhab framework updates the UI accordingly. Oh! the Binding page says that thereâs an
updateConfiguration()method I can call. Cool, this should be easy.
So yea, I still have lots to do, but I am encouraged by my progress. At least working on this is a lot better than watching the news. ![]()
@dashrb I hope your invest will be successful.
Progress Report: I am able to get the Blink Account to go ONLINE, and the Inbox is populated with my 13 Cameras and my 4 Sync Modules (âNetworksâ), and my 1 Owl (mini camera). Alas, my Doorbell does not appear.
- Still needs action. I noted that the iCloud Account bindingâs handlerFactory is passed a StorageService, and appears to use that for storing authentication credentials. That sounds nice. But this blink code doesnât have its own factory (perhaps itâs using a default factory provided by the framework via some magic dependency injection. So I donât appear to have access to a StorageService. I would like to store the tokens, so that when the openhab JVM starts, the codes doesnât login in fresh again (because the human would need to type an MFA code each time).
- Still needs action
- Done, AFIAK Iâm sending the correct token in the various API calls (at least the ones I tested)
- Done, itâs the list of devices, and properly populates the Inbox
- Done. I didnât wait the 12 hours for the current token to expire (Iâll let this happen overnight), but I did force a refresh of the token and the API call was successful, so Iâm optimistic this will work automatically upon expiration. Will confirm tomorrow.
- Done.
- (New): figure out why my doorbell doesnât appear in the Inbox. (Did this work previously? any prior Blink users please let me know!)
Hi Robert,
that really sounds great! I have the blink binding deeply integrated in my automations so I am super happy that you dig into the new authentication method.
Just wanted to leave a big thank you for your effort at that point in time!
Progress Report: BlinkAccount goes ONLINE, refreshes tokens as needed. 13 Cameras, 4 Sync Modules, 1 Owl (mini). Still no Doorbell.
- Done. I do have a factory and some magic
@Referenceannotation hooked me up. I now store the tokens and other account information in JSON, and FWIW, I believe that I did so in a way that allows you to interact with two BlinkAccounts in the same openhab environment. Maybe this already worked previously. I only have one Blink Account so I canât really test it. Do you? - Done. The Properties have been cleaned up so they only show things that are safe to expose, and that the user might find interesting, or help with debugging.
- Done (still)
- Done (still)
- Done. I did wait for expiration (it was only 4 hours, FWIW), and verified that token refresh works properly.
- Done (still)
- Still needs actionâwhere is my doorbell?
- (New): I have had to comment out significant chunks of Test code which exercised the previous login flow. I have zero
Mockitoexperience so I need to figure out how this works and implement test cases accordingly. - (New): Figure out how to commit this / submit it to openhab-addons as a pull request.
I feel like Iâm getting close!
Do you have a doorbell, and was it part of your automations?
To answer this question (from Oct 2025), yes I forked it from @doktormo âs GitHub account. I thought it was the best place to start.
Oh, @vbier I see an old post where you indicated that you have code which incorporates the doorbell. Are you still willing to share? Where is your code? Thanks!!
You can find the code in the pull request in doktormos GitHub repository: add support for blink video doorbell by vbier · Pull Request #1 · moesterheld/openhab-addons · GitHub
@dashrb Some really positive sounding news there! If you have a .jar which you could post then I am more than willing to install and test it. I have a doorbell also on my account, but it was never included in OpenHAB as it previously never showed up. Do have a combination of 16 cameras (mixture of outdoor and minis with a couple of the minis being the newer variants).
Unfortunately not, only Indoor and Outddor cameras.
Volker, I have incorporated your doorbell code into my codebase and it seems to be working! Nicely done! I did make one or two minor tweaks but I will put your name in the source code as the author of these changes, unless you request otherwise.
Also, (unrelated to the doorbell camera by @vbier), I discovered that the code which handles new media events from blink, was only reporting a camera media event (i.e. a motion detection with a new recording) if the camera type was set to âcatalinaâ, which means a gen-3 Blink outdoor camera. Since I have a number of XT and XT2 cameras (and one gen4, plus a doorbell), these other cameras were ignoring their motion events. I donât know if this has been a forever-problem, but this should pleasantly surprise a number of users.
I also discovered the probable cause of @BG56 in post 36 above, where a sporadic failure to send a command (e.g. enable motion detection on a camera) will OFFLINE the entire account. This is particularly troubling if the camera in question experiences dead batteries, as it will keep the account offline until the CameraThing is removed, or its batteries are replaced. I had previously deleted a camera from the Blink App, but still had an openhab thing for it, and struggled for a while to figure out why my code was working on the local dev box system, but failing on my established openhab production system. So I fixed this by setting just the failing CameraThing to Offline, and keeping the entire Account Online.
Finally, I discovered that the media events contain a reference to a thumbnail (a frame from the recording itself). I think Iâd like to expose this âRecording Thumbnailâ as a channel. It is a separate thumbnail from the âHome Screen thumbnailâ which already exists. I donât typically update my camerasâ thumbnails so many of them are several years old at this point. For a motion event (new video recording), I should probably should expose a link to the video itself too, right?
I donât want to scope-creep myself into a whole bunch of new features right away though. Perhaps I should post what I have and let a few people do some testing.
My status items from prior messages:
- Done
- Done
- Done
- Done
- Done
- Done
- Done
- Still need to figure out how to run this test code.
- Still need to figure out the commit process for openhab-addons so we arenât using a google drive for the rest of eternity.
Anyway, hereâs a download link to a jar file. It is named 5.2.0-SNAPSHOT, but I was able to drop it directly into my openhab v5.1 addons folder, and it seems to work. https://drive.google.com/file/d/1v0YrFyqi6BjAtQNsnnurx1P5hDdV-_yR/view?usp=share_link
Your steps for testing:
- Download the jar using the google drive link above
- Use the openhab admin pages to REMOVE your existing blink binding.
- For the remaining steps you can leave openhab running if you want, or terminate it if you prefer.
- Navigate to your OPENHAB ADDONS folder. This might be
/usr/share/openhab/addons, for example. - Make sure youâre in the right place! You could find that this folder contains an
openhab-addons-5.1.0.karand aREADMEfile already. Leave those alone, theyâre fine. - If you discover that you have matthiasâ old
blink 4.1.0-SNAPSHOT jarfile here, then REMOVE IT (or move it to another folder entirely) - Copy my
org.openhab.binding.blink-5.2.0-SNAPSHOT.jarfile (from step 1) into this folder. It might need proper ownership/permissions for openhab to read it (follow the example of the .kar file you saw in step 5) - Watch your openhab log file (perhaps
/var/log/openhab/openhab.log), for this line should appear:2026-01-09 00:21:19.066 [WARN ] [link.internal.handler.AccountHandler] - WARNING: This is a pre-release version of the Blink Binding, 2026-01-08. If you donât see this line, perhaps something went wrong in the previous steps. - If you already have Blink Things, leave them alone. Navigate to your BlinkAccount thing. There should be a new configuration field
MFA Code. If you donât see that then something went wrong in the previous steps. - At this point, if your username and password are blank, then type them in, and Save.
- Blink should send you an MFA code (maybe to your phone, maybe to your email, depending on how you set it up with Blink). Type it in the MFA Code field, and Save.
- Let me know how it goes!
Hi Robert. I followed your steps and everything worked flawlessly. Thanks a lot for your great work!
FYI: I only have 4 outdoor cameras. 3 catalina, one newer device that e.g. blink2mqtt did not discover but works well with this binding.
Thank you @dashrb for fixing the problem. I could implement the new addon.
Here is my log:
It seems to work but I have some error messages, one of them in detail:
-
Time
10:53:08.119
-
Timestamp
Jan 9, 2026, 10:53:08 AM
-
Level
ERROR
-
Logger Class
org.openhab.core.internal.common.AbstractInvocationHandler
-
Message
An error occurred while calling method âThingHandler.handleCommand()â on âorg.openhab.binding.blink.internal.handler.CameraHandler@18869dfeâ: Cannot call motion detection api without account or camera
-
Stack Trace
java.lang.IllegalArgumentException: Cannot call motion detection api without account or camera
at org.openhab.binding.blink.internal.service.CameraService.motionDetection(CameraService.java:52)
at org.openhab.binding.blink.internal.handler.CameraHandler.handleCommand(CameraHandler.java:104)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:149)
at org.openhab.core.internal.common.InvocationHandlerSync.invoke(InvocationHandlerSync.java:59)
at jdk.proxy984/jdk.proxy984.$Proxy1135.handleCommand(Unknown Source)
at org.openhab.core.thing.internal.profiles.ProfileCallbackImpl.handleCommand(ProfileCallbackImpl.java:97)
at org.openhab.core.thing.internal.profiles.SystemDefaultProfile.onCommandFromItem(SystemDefaultProfile.java:49)
at org.openhab.core.thing.profiles.StateProfile.onCommandFromItem(StateProfile.java:42)
at java.base/jdk.internal.reflect.DirectMethodHandleAccessor.invoke(DirectMethodHandleAccessor.java:103)
at java.base/java.lang.reflect.Method.invoke(Method.java:580)
at org.openhab.core.internal.common.AbstractInvocationHandler.invokeDirect(AbstractInvocationHandler.java:149)
at org.openhab.core.internal.common.Invocation.call(Invocation.java:52)
at java.base/java.util.concurrent.FutureTask.run(FutureTask.java:317)
at java.base/java.util.concurrent.ThreadPoolExecutor.runWorker(ThreadPoolExecutor.java:1144)
at java.base/java.util.concurrent.ThreadPoolExecutor$Worker.run(ThreadPoolExecutor.java:642)
at java.base/java.lang.Thread.run(Thread.java:1583)
