Open mkz212 opened 1 year ago
I would love to use the dummy sensor. Not sure this patch will be merged into the master repo..
It depends on the author of the plugin. I have great hope for that.
Hello, absentee landlord here :) sorry I'm slow to respond, I don't use this plugin myself anymore. This is a lot of stuff! What is the purpose of making specific dummy accessories like window blinds, etc?
I collected different conclusions, from different people, from different threads and somehow it came out. But different types are not the only modification. Yes, I think it's a lot of changes but simple to introduce. Just in time for version 1.0. 😀
Different types have their advantages. For example, in the Apple Home application, you can enable notifications for: Lock, Garage, Security. Motion is displayed in status and not in devices. Thermostat and Security are more extensive devices.
In addition to new devices:
Appreciate the writeup! I'm still struggling a bit though - originally the purpose of the dummy switch was to make a mechanism to trigger multiple scenes in HomeKit, kind of a workaround for missing functionality.
But these other fake accessories, what is their practical purpose?
For the fake sensors, we can get a notification when using the sensor while the standard or dummy switch don't have the option. It is kind of limitation of Apple Home but this can be a good workaround. Not sure about other accessories but @mkz212 may have idea.
As @sooyoung0321 writes, such types have more opportunities in Apple Home, especially in iOS 17: notifications and logs etc. My code only adds additional options, you still have the option to choose a regular switch. But with such an ordinary switch, you have additional options to choose what state should be at the start, it is reset with each activity, you still have the ability to set the timer, etc.
All these things are not my invention but the collected wishes of the users of this plugin.
You don't lose anything, you can only gain! Please give it a chance! 😀👍
My examples of automation where your plug-in is useful to me, and even it is necessary:
When the motion sensor detects movement, it turns on the Dummy Switch and turns it off after 18 hours. Each movement detection extends the timer. That's why I had to change your code so that the reset was with every activity, not only when turning off. Then this Dummy Switch uses to control the heating - if Dummy is turned off it lowers the set temperature. Here I needed some Dummy Switch to be turned on after restarting homebridge to avoid the situation that it will be too cold.
I have a trigger set to control the air conditioning. Every 15 minutes he checks the conditions. I wanted the climate to turn on for a minimum of an hour.
I will not answer you how to use other types of sensors but I know that other users have ideas for it. I know for sure that additional types of sensors are only optional and you do not need to use them. In addition to the sensor types, I added many other things. Code is ready and tested and works well (at least for me).
@nfarina @mkz212
I used dummies to give my home memory. I'll try to be concise and illustrate with exemples:
When I turn on the PS5 (plugin), a scene turns the living room lights blue and turns on the dummy plugin "PS5" on. If I go to to another room, that room's sensor will turn off the lights in the living room but the dummy ps5 stays on. When I sit on the sofa, motion is detected: homekit will test if dummy PS5 is on, if yes, then lights turn blue again = My house remembers I'm playing ps5 thanks to the dummy and so PS5 scene is persistent. Notice how I could have resume the scene upon motion sensor but rather when I sit on the sofa thanks to a vibration sensor. It feels much more organic and that's thanks to you.
I also have a "Guest mode" dummy where, if on, homekit stops turning off the lights behind me/in the room I just left or increasing the volume of the HomePod because I left to another room.
I like to start an ambiant sound when I enter my bedroom at 50% but It's too loud when I go to sleep. So I have a vibration sensor in my bed that turns down the volume to 5% when I lay down. But if I'm going to the bathroom (right next to the bedroom) at night and come back into the bedroom, it'd go back to 50% right? So I have a dummy "In bed presence" that prevents going back to 50%. If my partner is already in bed and I trigger motion in the bedroom, that dummy covers for that too and volume stays at 5%
Simpler things: automating things only once a day:
@nfarina Nick your plugin literally gave my home persistence and memory. It's very powerful (but does require to create complex if-condition-based automation if you want to do fancier things like I do). But if you're not using it, are you using an alternative that provides dummies too?
@incline02 Thank You for your examples. What do you think about my plugin development proposal? Do you have any suggestions what else to add?
Sure, I'm happy to provide feedback
new types: Blind, Motion, Lock, Garage Door, Contact, Security (4 values switch), Thermostat
I join @nfarina is asking the practical purpose: don't all of the above come down to reporting Virtual On/Off statuses or a given %? It is true that they will unlock different views/properties in HomeKit but nothing actionable as they are virtual. I don't have the blinds or Garage door but I have all the others and I'm not sure why I would need them virtual. I can see a a way to use them but it's rather convoluted: say I have homekit capable blind or door or else but it doesn't advertise as such because the manufacture was lazy or whatever and so they show up as smart plug where OFF means blind/door closed. With your adjustments, I could substitute this plug profile to an actual garage door profile and as such via automations (if the dummy blinds Is set to closes, the real plug turns off. Then in the home app, I'd have to hide it away in favour of the dummy) benefits? Improving Siri/natural language: use "open the curtains" instead of "turn on the curtain". But that's about as useful it get; on top of my mind. I would add, if not too hard to maintain, it's better to have more profiles that not enough. And someone like me, will come up with something creative.
option to set sensor value on startup: on, off, set value (for dimmer or blind) or last used (cache)
Persistence through reboot is great. I need this. If I reboot at night, because of the % dimmer, my systems thinks it's day so I set all motion sensors to reset the % correctly. cumbersome. Last used would be great, set value, would be great.
option to chose timer unit: days, hour, minutes, seconds, miliseconds
I would design the homebridge UI so it offers these, but let it pass the data to homebridge in the unit homebridge prefers, to avoid any bug. But I think it's a great one too.
new settings display, with sections and with showing and hiding fields depending on the need more info in logs small fixes
that's always welcomed. I actually wish homebridge/or this plug could offer Dummy Management because I have around 20 of them and they could easily be sorted by category
Also as we speak, homebridge-Dummy is rendering my entire homebridge non-responsive randomly til I reboot. I could seriously use an update as I realise my dependancy on @nfarina :D ! I'm a little worried Nick isn't using their own plugin anymore :D !
I'm now reverting back to old versions to find out if it'll fix my issues but any fix is highly welcomed.
Thank You. My code fix problem with no response. But I'm not the author and only @nfarina can make it public.
I'm not too familiar with gihub, only use to it open issues or search for fix so pardon my question: can't you create a fork if @nfarina isn't interested in maintenance?
or you can open a separate repository such as dummy-extension, and you can maintain it on it.
I still hope @nfarina will use my code and update plugin for all. Unfortunately, I also don't know much about github and I don't know how to make these fork or repository.
@mkz212 on top of mind, given that it's just a copy paste of a project after which, replacing some files, it can't be complicated !
I found a tutorial that I'm willing to follow but it's your ideas and so you should be the owner of the new copied project. Would you like to give it a try?
https://docs.github.com/en/get-started/quickstart/fork-a-repo
Maybe let's ask the author for his opinion? @nfarina What do you think? Are you going to use my code to update the plugin? Are you going to develop plugin or have you completely abandoned the project?
@incline02 If the author will be not interested in updating the plugin, you can use my code.
Sorry for the very late reply. I don't use this plugin anymore and you can tell I haven't updated this repo in some time.
Expanding this scope of this plugin using your code is something I cannot sign up for right now. But I highly encourage you to fork/copy my code and publish your own repository! It's not too difficult and then you can have complete control.
solid copy HQ. I'll have a look into it today
@mkz212 the fix for unresponsive device: how did you fix it? fixed it on my own by deleting all cached accessories (assuming I should have deleted only the dummy switches but there was a long list
edit: scratch it, it happened again
Alright, it's created https://github.com/incline02/homebridge-dummy
and updated with your changes. Only thing is, I can't find a way to "publish it" into homebridge's repo so one can find it and install it via homebridge. I keep looking but, any help?
Nice! You're welcome to use the homebridge-dummy
name of course but you might have more luck picking a new name - that will help folks who are looking for this extended functionality.
To make it installable in Homebridge, you'll need to publish it to npm. Here's their getting started guide.
thanks for the tip! named changed! I'll publish it today I hope
Alright, it appears in Homebridge when you search for it. search for "incline_02" to find "homebridge-dummy-incline_02-beta"
Let me know what goes wrong
HEADS UP It will use your "old" config from nFarina's original project and show them as "not supported" in homekit.
The fix:
I confirm @mkz212 new types of dummies are in there too
And so far, the bug I reported isn't anymore.
Let's keep this open for some after care. please note I'll be attending a private event til Monday morning. Do come with feedback though!
Appreciate the writeup! I'm still struggling a bit though - originally the purpose of the dummy switch was to make a mechanism to trigger multiple scenes in HomeKit, kind of a workaround for missing functionality.
But these other fake accessories, what is their practical purpose?
Dummy Irrigation would get me the correct icons into Home App for my watering systems which are triggered by switches.
@nfarina If you want I can make my code as pull request. Would you then accept the changes?
@bubffm I can add Irrigation, but I am not the author of the plugin. It all depends on @nfarina . I just added pull request with all these big changes.
@nfarina I added a pull request with all these changes. But I know that it's a lot of changes for one pull request. Perhaps you prefer me to divide it into single changes?
The question is whether you are still going to develop the plugin? If not, maybe you consider pass it to someone who would like to?
Meanwhile, I'd like to test this but don't know how to install it from a separate source. I tried to find a way to install a plugin from the source code but no luck. Could you please point me out how to do it?
I've never done it before, but from what I read, in homebridge terminal type:
npm install mkz212/homebridge-dummy#big-update --save
But I check and for me it doesn't work.
Or connect via FTP and change code in these two files.
I'm interested in this revision. Especially being able to set security notification. I have interfaced parts of my alarm system (Texecomm) to shelly uni's using mongoose firmware. For example when down stairs alarm is set triggers a shelly uni, which then turns all the downstairs lights off.
My question does this install along side the existing dummy switch. Or do I need to uninstall the original install the revision. Then recreate the dummy switches and timers? Which then require me to rebuild the scenes etc
@5xPa I think that it will override plugin. But I changed the code a bit now so that it should work with the current settings - now only miliseconds can be set, and in my version miliseconds are default and you can change it.
@5xPa I check this and for me npm install mkz212/homebridge-dummy#big-update --save
doesn't work.
@mkz212
In Homebridge plugins I searched for incline_02, which returned Homebridge Dummy Incline_02 Beta
homebridge-dummy-incline_02-beta v0.9.1 (2023-07-12)
I was not sure if this was the latest version, I do not have it installed.
Hoping someone will comment is this the latest version
On Sat, 28 Oct 2023 at 09:47, mkz212 @.***> wrote:
@5xPa https://github.com/5xPa I check this and for me npm install mkz212/homebridge-dummy#big-update --save doesn't work.
— Reply to this email directly, view it on GitHub https://github.com/nfarina/homebridge-dummy/issues/84#issuecomment-1783750627, or unsubscribe https://github.com/notifications/unsubscribe-auth/ARF3VCADVLLOKQ3TVUX46FLYBTBB3AVCNFSM6AAAAAAXYGWGYKVHI2DSMVQWIX3LMV43OSLTON2WKQ3PNVWWK3TUHMYTOOBTG42TANRSG4 . You are receiving this because you were mentioned.Message ID: @.***>
I think you can try. Since then I have only changed the fact that by default the time is set to milliseconds as in the original. But if it installs as an independent plugin, it doesn't matter.
Ok now it should work: npm install mkz212/homebridge-dummy#big-update --save
.
It will override plugin but you can return to the original code at any time: in the Plugins tab, click the key icon next to the plugin, then: install another version.
I'm not brave enough to update the branch, so I tried to install a separate plugin Incline_02 Beta. But, it looks like the Incline_02 Beta plugin shares the same configuration as this dummy switch plugin. That said, once something is changed in Incline_02 Beta, this dummy plugin is affected. So, I deleted Incline_02 Beta.
Writing this code, my idea was for the author of the original plugin to include new additions and corrections in his plugin, not to create a new plugin. That's why I added a pull request as well as the code itself and information on which files to replace. Since this is not a separate plugin but corrections to the current one, it is obvious that it will be the same configuration. But in my opinion the code does not take anything but only corrects and adds.
@nfarina
Maybe you could create a new branch and merge PR to it with this big update and release it as a beta? Who will want will install and test it.
Do you have any comments what to improve?
If you do not want to release the entire code as a beta because it is too big change, if I add a small PRs with small changes, is there a chance that you will include them?
If you are busy, maybe you could consider appointing someone as an administrator? This is a great plugin that a lot of people use and it would be nice if it was further supported and developed.
@mkz212 It looks like the original author doesn't want to make any change on this plugin or takeover it. We cannot force him/her to do that. I think you'd better make a separate git and plugin if you want. Once you make your own plugin and publish it, you can advertise it on Reddit. https://www.reddit.com/r/homebridge/ This community is quite active so you can get quick and a lot of feedback on your plugin. You can check a recent post about AppleTV plugin https://www.reddit.com/r/homebridge/comments/17mquj7/apple_tv_enhanced_plugin/ It's been 12 days posted it but there are a lot of comments and the developer attracted a lot of users.
@nfarina
Maybe you could create a new branch and merge PR to it with this big update and release it as a beta? Who will want will install and test it.
Do you have any comments what to improve?
If you do not want to release the entire code as a beta because it is too big change, if I add a small PRs with small changes, is there a chance that you will include them?
If you are busy, maybe you could consider appointing someone as an administrator? This is a great plugin that a lot of people use and it would be nice if it was further supported and developed.
I think it would be great if you can create a separate plugin
Hey @mkz212. Thanks a lot for your effort! Its sad to see that the original developer is currently not willing to incorporate your update into the plugin. As the last changes to this plugin are very old I would also opt for you to create a separate plugin where the development can continue.
@dadsalleb @maisun @spaceg00se-r I made plugin. But it is not published. You can take it and develop and publish. homebridge-virtual-device available here: https://github.com/homebridge/unmaintained-plugins
@mkz212 I'm not sure if I'm the guy to do that but I'll think about it. Do you know if the virtual-device plugin would already be Homebridge 2.0 compatible?
@mkz212 I'm not sure if I'm the guy to do that but I'll think about it. Do you know if the virtual-device plugin would already be Homebridge 2.0 compatible?
It should be - I tested it on Homebridge 2.0.0 and works. It is also platform plugin so you could submit it to Verified by Homebridge program.
Hello, I submitted the project located at https://github.com/Plankske/hb-virtual-switch for verification a few weeks ago. It supports Homebridge 2.0 and includes virtual switches with on/off, stateful/stateless and normally open/closed options. New is that you can also monitor the Homebridge log file for specific keywords or phrases and set a switch that are logged in the Homebridge log file set a switch if they do. Should there be a requirement, this project can be used for further development. I am open to contributing if the current project is not actively maintained any longer.
Hello, I submitted the project located at https://github.com/Plankske/hb-virtual-switch for verification a few weeks ago. It supports Homebridge 2.0 and includes virtual switches with on/off, stateful/stateless and normally open/closed options. New is that you can also monitor the Homebridge log file for specific keywords or phrases and set a switch that are logged in the Homebridge log file set a switch if they do. Should there be a requirement, this project can be used for further development. I am open to contributing if the current project is not actively maintained any longer.
Cool. But.. I think that Homebridge plugin name must starts with 'homebridge-'?
@Plankske have you also added the timer functionality as well as the option to reset the timer with every activity as @mkz212 did with the code change suggested above?
Hello, I submitted the project located at https://github.com/Plankske/hb-virtual-switch for verification a few weeks ago. It supports Homebridge 2.0 and includes virtual switches with on/off, stateful/stateless and normally open/closed options. New is that you can also monitor the Homebridge log file for specific keywords or phrases and set a switch that are logged in the Homebridge log file set a switch if they do. Should there be a requirement, this project can be used for further development. I am open to contributing if the current project is not actively maintained any longer.
Cool. But.. I think that Homebridge plugin name must starts with 'homebridge-'?
The name was changed by npm as part of this namespace management because of the name 'virtual switch'.
If You want new functions:
replace config.schema.json to:
and replace index.js to:
@nfarina what do you think? This is my suggestion for the next update, to 1.0.0.