Jump to content
FIBARO Home Center App 1.0.0 - release Read more... ×
FIBARO Home Center App 1.0.0 - wydanie Read more... ×

Search the Community

Showing results for tags 'virtual device'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • FIBARO Community
    • FIBARO Portal and Forum policy
    • FIBARO
    • Say hello!
    • Off-topics
  • FIBARO Update
    • FIBARO System Update
    • FIBARO Mobile Update
  • FIBARO Community Support
    • Scenes and Interface
    • FIBARO Products
    • FIBARO Mobile
    • FIBARO HomeKit
    • FIBARO Assistant Integrations
    • Other Devices / Third-party devices
    • Tutorials and Guides
    • Home Automation
    • Suggestions
  • FIBARO Społeczność
    • FIBARO
    • Przywitaj się!
    • Off-topic
  • FIBARO Aktualizacja
    • FIBARO System Aktualizacja
    • FIBARO Mobile Aktualizacja
  • FIBARO Wsparcie Społeczności
    • Sceny i Interfejs
    • FIBARO Urządzenia
    • FIBARO Mobilnie
    • FIBARO HomeKit
    • Integracja z Amazon Alexa i Google Home
    • Urządzenia Firm Trzecich
    • Poradniki
    • Automatyka Domowa
    • Sugestie

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start






Website URL





Found 89 results

  1. DaveScout

    Broadlink RM2 Integration

    Morning all, It's been a while since I have seen any chatter about the Broadlink devices. Has anyone created a virual device or further thoughts on integrating the Broadlink IR / 433 blaster???
  2. Hello to all, I implemented to my HC2: IP Smartphone Presence Check V2.2 (http://www.domotique-fibaro.fr/index.php/topic/2613-detection-de-présence/) including some small changes but I identify one problem with data presentation on PC and on iPhone. Three way to view and three differents view:-( code are very simply: function Label(color, message) if color ~= "" then fibaro:call(selfId, "setProperty", "ui.Message.value", '<font color="'..color..'">'..message..'</font>') else fibaro:call(selfId, "setProperty", "ui.Message.value", message) end end Label ("green", os.date("On %d/%m/%y at %H:%M : ", timeVariable).."WIFI ON.") When I watch for this VD in Device/Advanced I see: When I watch for this VD in list of devices: And when I watch for this VD in mobile I see: Do you know how to apply text formatting "color" for viewing correct on iphone? Or how I code different view for mobile app and PC view? THX Peter
  3. Implement Sonos VD using node-http-API running on raspberry PI The following should help if you want to implement an sonos VD that leverages the node sonos http api by jishi The post consists in two parts Setting up the API on a raspberry pi Creating the VD and summary of other uses of the API and some sample code I use **I'll structure this in a better format in the coming weeks but for now it should be sufficient** I have tested this with Play1, 3, 5 (older version) ZP100, ZP80, ZP90. I don’t have a sonos soundbar or sub but from reading other forums it should work fine for those I intend to use this more in ‘Press Button’ mode rather than directly as a remote control but it should be good either way. You can also select what appears in HC2 UI by clicking the ‘main’ checkbox on the appropriate VD button ( I think you can have one button, one label and one slider) Credit & Reuse: This work draws on the work of many many people from both this forum as well as other forums. Without these people and the work they have done as well as what they have helped me learn over the last 12 months this wouldn't have been created. Like all VD’s please feel free to constructively criticise or modify it to meet your needs STEP1: Setup api on node.js device: This VD requires jishi’s node-sonos-http-api to be installed on a node.js capable device. This can be a RPi, a NAS or something similar. Details on where to get the code and install can be found on Git - https://github.com/jishi/node-sonos-http-api You will also find an excellent blog/issue tracker at the link above for any issues you encounter I have mine installed on a Rpi Added Feb 5th The fastest way I found to get up and running on a PI if you're unsure and just want to try it (takes about 15 minutes) Use the sonos-api precompiled rpi image at http://jishi.github.io/node-sonos-http-api/ (apply to blank sd card) when you login over SSH (with something like putty) the password is root Map a network drive or Start Run to \\<IP of Pi>\flash click apps folder and you'll see the sonos-http-api folder Get an API from VoiceRSS and create a settings.json file (details in the post) and drop it into the sonos-http-api folder reboot and that's it - test through browser with something like http://<ip-of-Pi:5005/<playername>/Say/Hello If you want to upgrade to the latest api release Download the latest zip from https://github.com/jishi/node-sonos-http-api (green button on right) In the flash folder rename the sonos-http-api to -old Rename what you downloaded to to sonos-http-api Drop in your settings.json file SSH into the Pi - login = root cd /flash/apps cd sonos-http-api npm install --production when finished reboot DOCKER from @riemers (thanks ) You could also use docker Some nas systems include docker too (synology) from the gui. Using docker is easy and simple to give to someone else too, work on Pi3 too. For node-sonos-api there is a docker image https://github.com/chrisns/docker-node-sonos-http-api saves you the hassle of installing all dependency's, assuming you have some knowledge with linux. # Edit - additional observation - I like the Synology NAS option but mine doesn't reboot in the event of a power outage. The Rpi does reboot. If you use a NAS it might be good to use a UPS or find a way to reboot after an outage Once you have this setup you are ready to move on to Step 2 STEP 2 : Import the VD, you will need one VD per sonos zone node-sonos-api VD.vfib Name - The zone name needs to be the same as what it is in native Sonos (try and avoid chars such as /,etc) Spaces are okay IP Address: This is the IP of the device where the api is installed (This is NOT the IP address of the sonos zone) Port: Leave at 5005 (can be changed it needed, see git above) STEP 3 : Configure Play, Stop, Repeat, Shuffle, etc – this should work as is The parts you may want to modify are as follows => Volume I opted for the vol + / vol – as opposed to the slider as I find the sliders difficult to use on a tablet Vol + / - operates in increments of 2%. This is easy to change in the url string. The Vol 10% button is also easy to change => Favourites You will need to modify this to your favourites and how they are named in your sonos setup I would advise simplifying these names in the native Sonos setup as much as you can. Spaces are okay, you just need to use %20 where you have a space in a name If you need more of less favourites, please add/delete buttons as required => Playlists I don’t really use them but these are easily enough added in a similar way to the favourites above. => Line-in selection You can create one button for each line in option on your setup for any connect/connect amp or Zp unit.. (I have 4 on my setup) You will need to get the UUID for the zone that has the line in physically connected to it. You can get the UUID of that zone by viewing the topology of the zone with the topology url. (drop it into chrome/ff) http://[IP of any of your zone]:1400/status/topology The format of the url and you will need to change the last numerical string for your own UUID. => Grouping Zones I have included two examples of grouping and ungrouping The url format is simple and easy to read. below are two examples that were setup on the kitchen zone where I wanted to group the Playroom zone two it and play what was playing on the kitchen zone Group - [playroom joining kitchen and playing kitchen music] Ungroup - [playroom leaving kitchen zone] You could also include a group all and an ungroup all by stacking the commands from each zone under one button. There are also options to control volume of grouped zones if you like but I haven't explored that yet Beyond this… The api is very extensive and still undergoing development. There are other functions in the api that could be used and might be worth a glance depending on your system and patterns of use I'll update the post this evening with the actual VD as I can't seem to export it remotely. The node.js api will need to be installed first before the VD will be of any use. Hopefully it will be of use to some people Thanks -Frank Update: Adding VD file Adding some extra information The api is very extensive and seems to keep growing I use it for mainly behind the scenes control rather than me clicking the vd/scenes buttons manually If you look at http://zone_ip:5005/room_name/state for any of your players you’ll see all the state json info and what’s possible to control/trigger from Pretifying the json will show it's structure better { "currentTrack": { "title": "x-sonosapi-stream:s2846?sid=254&flags=32", "albumArtUri": "\/getaa?s=1&u=x-sonosapi-stream%3as2846%3fsid%3d254%26flags%3d32", "duration": 0, "uri": "x-sonosapi-stream:s2846?sid=254&flags=32", "type": "radio", "absoluteAlbumArtUri": "http:\/\/\/getaa?s=1&u=x-sonosapi-stream%3as2846%3fsid%3d254%26flags%3d32" }, "nextTrack": { "artist": "", "title": "", "album": "", "albumArtUri": "", "duration": 0, "uri": "" }, "volume": 10, "mute": false, "trackNo": 1, "elapsedTime": 651, "elapsedTimeFormatted": "00:10:51", "playbackState": "PLAYING", "playMode": { "repeat": "none", "shuffle": false, "crossfade": false } } I have a VD that shows me the status of all my players (attached) main scene code (just add labels local device = fibaro:getSelfId(); local zonename = fibaro:getName(device); local ipaddress = fibaro:getValue(device, "IPAddress"); local port = fibaro:getValue(device, "TCPPort"); sonos = Net.FHttp(ipaddress, port); local jS = json.decode(fibaro:getGlobalValue("StateTable")) -- zero the counter for each loop local zoneCount = 0 -- LANDING response = sonos:GET("/Landing/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.Landing_Stairs.isPlaying = 1 else jS.Landing_Stairs.isPlaying = 0 end jS.Landing_Stairs.volPlaying = jsonTable.volume jS.Landing_Stairs.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblLanding.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- TWINS BEDROOM response = sonos:GET("/Bed_LE/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.lau_eth_bedroom.isPlaying = 1 else jS.lau_eth_bedroom.isPlaying = 0 end jS.lau_eth_bedroom.volPlaying = jsonTable.volume jS.lau_eth_bedroom.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblBedLE.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- FRANK BEDROOM response = sonos:GET("/Bed_Frank/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.frank_bedroom.isPlaying = 1 else jS.frank_bedroom.isPlaying = 0 end jS.frank_bedroom.volPlaying = jsonTable.volume jS.frank_bedroom.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblBedFrank.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- GUEST BEDROOM response = sonos:GET("/Bed_Guests/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.guest_bedroom.isPlaying = 1 else jS.guest_bedroom.isPlaying = 0 end jS.guest_bedroom.volPlaying = jsonTable.volume jS.guest_bedroom.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblGuests.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- OFFICE response = sonos:GET("/Bed5_Office/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.office.isPlaying = 1 else jS.office.isPlaying = 0 end jS.office.volPlaying = jsonTable.volume jS.office.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblOffice.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- MASTER BED response = sonos:GET("/Bed_MasterL/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.master_bedroom.isPlaying = 1 else jS.master_bedroom.isPlaying = 0 end jS.master_bedroom.volPlaying = jsonTable.volume jS.master_bedroom.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblMaster.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- HALL response = sonos:GET("/Hallway/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.hall.isPlaying = 1 else jS.hall.isPlaying = 0 end jS.hall.volPlaying = jsonTable.volume jS.hall.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblhallway.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- KITCHEN response = sonos:GET("/Kitchen/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.kitchen.isPlaying = 1 else jS.kitchen.isPlaying = 0 end jS.kitchen.volPlaying = jsonTable.volume jS.kitchen.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblkitchen.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- PLAYROOM response = sonos:GET("/playroom/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.playroom.isPlaying = 1 else jS.playroom.isPlaying = 0 end jS.playroom.volPlaying = jsonTable.volume jS.playroom.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblplayroom.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- GARAGE response = sonos:GET("/Garage/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.garage.isPlaying = 1 else jS.garage.isPlaying = 0 end jS.garage.volPlaying = jsonTable.volume jS.garage.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblgarage.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- PIZZA BBQ response = sonos:GET("/PizzaBBQ_Area/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.pizza_bbq_area.isPlaying = 1 else jS.pizza_bbq_area.isPlaying = 0 end jS.pizza_bbq_area.volPlaying = jsonTable.volume jS.pizza_bbq_area.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblpizza.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- LIVING response = sonos:GET("/Living_Room/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.living_room.isPlaying = 1 else jS.living_room.isPlaying = 0 end jS.living_room.volPlaying = jsonTable.volume jS.living_room.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lblliving.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); -- GARAGE response = sonos:GET("/DiningRoom/state") jsonTable = json.decode(response); if jsonTable.playbackState == "PLAYING" then zoneCount = zoneCount + 1 jS.dining_room.isPlaying = 1 else jS.dining_room.isPlaying = 0 end jS.dining_room.volPlaying = jsonTable.volume jS.dining_room.nowPlaying = jsonTable.currentTrack.artist jStateTable = json.encode(jS) fibaro:setGlobal("StateTable", jStateTable) fibaro:call(device,"setProperty","ui.lbldining.value",""..jsonTable.playbackState.." | "..jsonTable.volume..""); fibaro:setGlobal("ActiveMusicZones", zoneCount); fibaro:call(device,"setProperty","ui.activeZones.value",zoneCount); Three of my zones use power amps (the are sonos connects) and I use the ‘playstate’ to turn the amp on / off when required. That’s the code at the bottom of the vd At one stage I was even displaying the image (radio station, music album) on an openremote UI using the uri part of the state json. I use the VoiceRSS TTS on teh http api but there are others. That all that was there when I found it and it worked well I have TTS to tell me “welcome home”, “good night”, "gate opening/closing", "garage door opening/closing" and all the usual stuff but I vary the volume it at night so it doesn’t wake everybody up. I intend this expand this feedback out so If we come home and the alarm went off it would tell me or that the washing machine has finished, the humidity is still too high in the bathroom and I should open the window (or that a fan was turned on) or some HC2 system info like the available memory went beyond certain thresholds, temp in a room rose or dropped, My siemens alarm is connected to my HC2 and I keep track of all the status of the alarm zones and when we press the “Leaving Home” button it checks the alarm zones and if one or many are open, it will TTS the open alarm zones in the hall sonos so we know where to go and close. Same thing when we go to bed at night. I found that each of my zones have different volume levels that work at night and during the day. I’ll be using my HomeTable (different topic) to store this info for each zones but it can written directly into the scene/vd. (This is what the the following code is for) I also plan on using a central TTS engine (simple a scene that take a zone/message and vol) so I can TTS more easily to any player. For now I have specific TTS code on a per player basis. I leverage the global variables that @Sankotronic Weather Basic VD populates and a scene that allows me to send the current weather (temp, humidity, wind speed direction, etc) as a TTS to our bedroom in the morning as well as the temp of the house as part of our wake up routine The API has a presets concept. This allows the user to pre-define a set of grouped players, source and volume. This is a file on the rpi and is referenced by a single command rather than starting one zone and grouping other zones. An example of its structure is as follows ... { "players": [ { "roomName": "Landing", "volume": 0 }, { "roomName": "Bed_MasterL", "volume": 0 }, { "roomName": "Bed_LE", "volume": 0 }, { "roomName": "Bed_Frank", "volume": 0 } ], "pauseOthers": false, "favorite": "96FM" } You may notice that the volume is set as 0 because I use another scene to slowly raise the volume so we are not woken to the sharp shock to a loud song. This simple vd button code is what I use to slowly raise the volume slowly local device = fibaro:getSelfId(); local zonename = fibaro:getName(device); local ipaddress = fibaro:getValue(device, "IPAddress"); local port = fibaro:getValue(device, "TCPPort"); sonos = Net.FHttp(ipaddress, port); for v = 1, 10 do response = sonos:GET("/Bed_Frank/volume/"..v.."") fibaro:debug("vol= "..v.."") fibaro:sleep(1000) end I use this for morning music upstairs and downstairs as well as when the kids go to bed. (changing the presets on the rpi requires a restart of the api - i normally just reboot the pi ) Watch out for radio favorites and playlists - try and not have spaces in the names on sonos and you should have no issue calling them ADDED - Jan 21st Creating a single button on a VD to cycle through favorites or playlist instead of using 1 per favorite. Every time you click the button it selects the next favorite. I have it limited to 5 favorites but this is easily adjusted. I store the favorite in my HomeTable but it could also be a global variable. I use an array to decode the numerical value stored globally into the actual favorite so I can append to the sonos api call. This will need to be adjusted to suit your system VD button code .... local device = fibaro:getSelfId(); local ipaddress = fibaro:getValue(device, "IPAddress"); local port = fibaro:getValue(device, "TCPPort"); local jT = json.decode(fibaro:getGlobalValue("HomeTable")) -- Get the current favorite number stored, increment by 1 and if > 5 set back to 1 local f = tonumber(jT.Landing_Stairs.RadFav) + 1 if f > 5 then f = 1 end -- Store the new favorite jT.Landing_Stairs.RadFav = f fibaro:setGlobal("HomeTable", json.encode(jT)) -- Array for the favorites fav = {[1] = "4FM", [2] = "96FM", [3] = "Calm", [4] = "Heart", [5] = "Red_FM"} -- Execute the sonos conmmand sonos = Net.FHttp(ipaddress, port); response = sonos:GET("/Landing/favorite/"..fav[f]..""); I also reflect this on a status label on the VD. -- Get favorite stored globally local f = tonumber(jT.Landing_Stairs.RadFav) -- Translate into favorite name to be displayed fav = {[1] = "96FM", [2] = "4FM", [3] = "Calm", [4] = "Heart", [5] = "Red_FM"} -- fav[f] represents the name. I apppend to otehr date and display in one label local status = " "..fav[f].." | "..jTS.playbackState.." | Volume "..jTS.volume.."%" fibaro:call(device,"setProperty","ui.status.value", status); This display at the top of the VD doesn't account is somebody changes the favorite from the native sonos app. I'll add code later to keep alignment between what is selected and what is stored in the global variable, This is what it looks like on my setup that is still a work in progress x Please see post 163 on this topic on how to get the VD icons dynamic for radio station or line in
  4. KevCo


    Version 1.0.1


    Here's a virtual device I created to control my Volumio Music Player, which is running on a Rasbperry Pi. Volumio comes with an own built-in ReST API that I use for the this virtual device. You must have your Volumio connected to your local area network (the same as Fibaro HC). After importing the virtual device, set the IP address and the port (default port 80) to point at your Volumio. Offical site of Volumio: www.volumio.org Volumio ReST API documentation: www.volumio.github.io/docs/API/REST_API.html Note: Tested on Fibaro HC2 4.180 Enjoy.
  5. Hi folks, I have some VD's which works great most of the time, but sometimes they seem to stop working and need to be kick-started again. How can I automatically trigger "wake up" of the VD's? I presume there are no way of force them to be active, self activation by the HC2, or? Regards, JP
  6. Willem-Jan

    Virtual device as room temperate

    If a temperature sensor is installed in a room, that one is selected as temperature for the room (displayed at several places on the UI and used in heat control or so). Is is possible to have a value of virtual device defined as temperature of the room? Sorry, I found another item about this subject. This can be closed.
  7. I've seen a couple of times now that it seems like the virtual device is running an older version together with the new one. The reason I think so is that I see debug messages no longer in the main loop in the log when I test the latest changes. Anyone seen this before with version 4.510? How can I see what is actually running?
  8. Hi, I need to set a cookie in a VD Is it possible to modify the headers in a net.fhttp call ? Thanks
  9. Hi there, I am facing such a problem as I can't send anything by using TCP connection from Fibaro to my Raspberry Pi using a C language's Socket Server. For more information, I am leaving my C's Socket Server as below. I can use telnet from my computer to send string to Raspberry Pi but I can't receive any string send from the Fibaro. I am using Raspberry's gpio to send Infrared code. #include <string.h> #include <stdio.h> #include <stdlib.h> #include <unistd.h> #include <sys/types.h> #include <sys/socket.h> #include <netinet/in.h> int main(int argc, char *argv[]){ int sockfd = 0,forClientSockfd = 0; sockfd = socket(AF_INET, SOCK_STREAM,0); int port = 8982; if(sockfd == -1) printf("Failed to Open Socket.\n"); struct sockaddr_in serverInfo, clientInfo; int addrlen = sizeof(clientInfo); bzero(&serverInfo, sizeof(serverInfo)); serverInfo.sin_family = PF_INET; serverInfo.sin_addr.s_addr = INADDR_ANY; serverInfo.sin_port = htons(port); printf("Starting Server at Port %d", port); bind(sockfd,(struct sockaddr *)&serverInfo,sizeof(serverInfo)); listen(sockfd,5); char sock_message[] = {"Hello\n"}; forClientSockfd = accept(sockfd,(struct sockaddr*) &clientInfo, &addrlen); send(forClientSockfd,sock_message,sizeof(sock_message),0); char inputBuffer[256] = {}; while(1){ recv(forClientSockfd,inputBuffer,sizeof(inputBuffer),0); printf("Get:%s\n",inputBuffer); } } The Client Server's Code in Fibaro HC2 as below, and I am using a button to send String. if not (started == 'YES') then started = 'YES' tcpSocket = Net.FTcpSocket("",8982) end Thanks
  10. I get the following JSON string from my device in a browser by typing the IP of my device: {"data":{ "id":"8200007A","type":"8","detector":"SI29BG","voltage":382,"cpm":14,"temperature":9.45,"humidity":48.29,"pressure":100281,"voc":12800000,"co2":399,"noise":39,"ch2o":0.00,"pm25":3,"uptime": 107787}} is it possible to import these values into a virtual device in HC2? The closest I have found is: local urad = Net.FHttp("") local urad = Net.FHttp("{{}}",80) local urad = assert(io.popen('curl')) but these will not get the json string This is a part question for my thread:
  11. hello all. i have just bought some Sonos speakers and wanted to integrate with home center 2. first part is to control then second part text-to-speech workaround whilst i was going through the forums i found the info i needed scattered around different threads and the original thread was very long, so i have thought i might make it easier by creating a small quick guide: First thing is all credit to the virtual device goes to krikroff for the VD, original thread here - http://forum.fibaro.com/index.php?showtopic=12344 I have created a video demo instead as it was easier to show rather than write. video link is as above. enjoy... download link here: http://www.yorkshireautomation.co.uk/downloads/sonos.zip
  12. Ananta Creation

    IR control using virtual device

    How can I add button in virtual device ( Remote for TV), by pressing it I can send command for channel No. Ex. Button Name MTV - which will send IR code for digit 2,3,4
  13. Hi all, The wife and I have done some work on getting json data from a Raspberry PI, running PI1Monitor. The Pi is reading the data from a smart meter P1 port and we built a virtual device that shows the meter readings in a VD screen. I included the VD and LUA-code. It's not pretty, but it works. We would like to take this to the next level, but here is where we need help. - Would it be possible to change the VD so it delivers the current usage to the power metering of the HC2. Right now, we have only some switches and dimmers that are counted in the power panel and we would like to have all power usage visible and we're not so interested in the usage of individual lights. We could use "some" help with that. - How can we add icons to the labels. We've seen some examples with beautiful screenshots, but we are stuck with plain text. Feel free to use the code. We're happy to share it with you. Regards, Erwin & Linda Slimme meter.lua Slimme_meter.vfib
  14. agentmulder


    So, I don't know LUA, so I'm using commands to set up my sound system. I did buttons with preset volume settings: <12VO860x0D0x0A (This sets up to max that is 38) This is working perfectly. How can I set up a slider and make it work with the volume? Should something like this work? <12VO((_sliderValue_ / 100) * 38)0x0D0x0A
  15. seiq


    Version 1.0.1


    1. The TCP Port setting is used to store the input timeout in seconds. Adjust as required. 2. Change the myGlobal button and code to suit the name of the global you wish to set.
  16. seiq

    Daikin SkyFi

    Version 1.0.0


    Virtual device for control of Daikin air conditioners with the SKYFi addon. (untested)
  17. Hi guys, I have used the Sonos VD before with the SONOS play:1 speakers and the Fibaro HC2, however I am planning to buy a Sonos One (with built-in Alexa), has anyone tried using the VD with this? Thanks, Prankit
  18. I am writing a mobile app where I want to change the value of a virtual device label from it. Do I really have to grab the json, modify and send it back ? Is there no way to run the equivalent of setproperty ? Background. My wife keeps losing her phone several times a day. So I have installed three beacons (for testing), I have another 20 to install. My app can now figure out which room the phone is in. All I have to do is to have a virtual device with a label for each member of the family. The app will update the location and we will know where the phone was last seen.
  19. RohitNz

    Battery Level Display

    Version 1.0.0


    The Virtual Device shows the battery status of battery powered devices. In addition, it will send an email to a user when the battery is low or dead. It is suitable for a small number of devices and gives you a snapshot view. Note that the Lithium battery drops suddenly and if its below 80 then its marked as low and should be replaced. The battery is checked once a day roughly. The lua code is attached. I have written it for efficiency instead of accuracy, as lua execution is so so slow. Hence the use of delays. You need as many labels in the VD as the number of devices and it uses label1..labeln for simplicity. CODE.TXT
  20. Hi, I am wondering about the properties of a Virtual Device and how they can be accessed and changed. For instance, if you want to change the icon of a VD you can use a statement like this: fibaro:call(100, "setProperty", "currentIcon", 200); If you want to update a label text you would do: fibaro:call(100, "setProperty", "ui.label1.value", "Label text" ); To my question then: Does anyone know of a complete list of properties applicable to a Virtual Device? For instance: devices which report power consumption use the footer area to display current power usage. Can this area be accessed in a VD too? Someting along the lines of: fibaro:call(100, "setProperty", "ui.footer.value", "Footer text" ); I am reading in Fibaro's documentation of the REST API about how to extract a list of all VDs and their properties/data. There are apparently properties like "caption", and "buttonIcon". The question is if and how these can be set via LUA code. Thanks for any tips and hints. /Per
  21. I'm trying to understand the function/purpose of the option favourite which is visible when creating a label in a virtual device. I can mark and unmark this, but doesn't seem to have any effect.
  22. DonZap


    Hi I am new here, so sorry if I post this at the wrong forum I'm using fibaro HC2 together with google home by ifttt. I have created a user who only has access to a virtual device that I send the http command to. It works fine when I using device ID directly: http://User:Password@/api/callAction?deviceID=93&name=turnOn but when i usen the button indside the virtual device, it dose not work at all: http://User:Password@/api/callAction?deviceID=201&name=pressButton&arg1=button0 and I am getting the virtual device ID from the http link: /fibaro/en/devices/virtual_edit.html?id=201 I have no idea why it dose not work, its pretty Straight froward? thanks in advance for your inputs
  23. Bodyart

    RFC for Virtual Devices

    Hi ALL including the moderators @T.Konopka and @I.Srodka! I'm not sure where to post, because there is no RFC section, but I like to propose an RFC for the Virtual devices: 1. Make it possible same as for the scenes or physical devices to make a VD Hidden in the system. 2. Make it possible to stop the Main Loop in a VD. Specially option 2. can help to prevent disasters and is also very useful for testing purposes. Thank you very much for your attention.
  24. Hello, I can put data in Virtual device labels with a for loop in LUA code: fibaro:call(63, "setProperty", "ui." .. Labels[n] .. ".value", kwh[n] .. " Kwh") What property (like value) do i use to change the name of these labels? Where can i find this documentation? (it is not in http://myhc2ip/docs) Thanks!
  25. Hi! I have a Home Center LITE (without LUA support) and I am trying the creat a Virtual Device that can control my Synology NAS music player (AudioStation). It has a good webapi kit, that I can use with HTTP commands, but can't solve it. For example my ip addresses: - Fibaro HCL: - NAS: - NAS l/p: admin:admin This is 3 command to the NAS (login / start music / pause music / etc.): LOGIN: START MUSIC: PAUSE MUSIC: I can transform to GET HTTP request as a virtual device button, but doesn't work (e.g.. Pause): GET /webapi/AudioStation/remote_player.cgi?api=SYNO.AudioStation.RemotePlayer&method=control&action=pause&id=__SYNO_USB_PLAYER__&version=2 HTTP/1.1 Host: Authorization: Basic admin:admin(Base64EncodedForm) I think it is ok, but what about Virtual Device advanced settings fields? - Name - Room - IP Address - TCP Port Is these IP Address and TCP Port the HCL's address or NAS's address? Don't working nether Can somebody help me, I fell I am so close! Thanks, Balage