Hehe.. får se om jag hinner med det. Jag är också i behov av fler användare så fix kommer inom snar framtid.
Fix på det jag nämnde innan publicerad på git.
ICloud HC2 Bridge
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Har lagt upp VD:en här
https://github.com/raess1/iCloud-HC2-Br ... r/HC2%20VD
Har även fixat lite med avrundning och olika enheter. Ikväll ska det fixas med timestamp så det blir mer läs vänligt (Tar gärna emot tips på hur jag konverterar om epoch timestamp till något läsbart i HC2.
Sen tror jag även att Home Since måste få lite mer kärlek.
https://github.com/raess1/iCloud-HC2-Br ... r/HC2%20VD
Har även fixat lite med avrundning och olika enheter. Ikväll ska det fixas med timestamp så det blir mer läs vänligt (Tar gärna emot tips på hur jag konverterar om epoch timestamp till något läsbart i HC2.
Sen tror jag även att Home Since måste få lite mer kärlek.
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Update:
When: lyckades jag fixa till läsbar datum och tid.
home since, tar jag bort så länge.
Försöker få till ikonerna till batteri status
Men får det inte att funka bra. Någon som har tips?
When: lyckades jag fixa till läsbar datum och tid.
home since, tar jag bort så länge.
Försöker få till ikonerna till batteri status
Code: Select all
--icons
iconFull = 1005;
iconGood = 1006;
iconLow = 1008;
iconEmpty = 1007;
--update icon if battery level low under 5%
if (
( tonumber(fibaro:getGlobalValue("battery_level")) <= tonumber("0.05") or tonumber(fibaro:getGlobalValue("battery_level")) > tonumber("0.01") )
)
then
fibaro:call(vd, "setProperty", "currentIcon", iconEmpty)
end
--update icon if battery level over 5% to 30%
if (
( tonumber(fibaro:getGlobalValue("battery_level")) <= tonumber("0.30") or tonumber(fibaro:getGlobalValue("battery_level")) > tonumber("0.05") )
)
then
fibaro:call(vd, "setProperty", "currentIcon", iconLow)
end
--update icon if battery level over 30% to 75%
if (
( tonumber(fibaro:getGlobalValue("battery_level")) <= tonumber("0.75") or tonumber(fibaro:getGlobalValue("battery_level")) > tonumber("0.30") )
)
then
fibaro:call(vd, "setProperty", "currentIcon", iconGood)
end
--update icon if battery level over 75%
if (
( tonumber(fibaro:getGlobalValue("battery_level")) <= tonumber("1") or tonumber(fibaro:getGlobalValue("battery_level")) > tonumber("0.75") )
)
then
fibaro:call(vd, "setProperty", "currentIcon", iconFull)
end
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Update: nu har jag fixat ikoner för battery level
Har även hunnit provat den andra lösningen jag postade lite mer ingående.
och resultatet.... den funkar bra . Dörren öppnas när jag närmar mig & låser sig när jag åker.
http://www.zwaveforum.se/viewtopic.php?f=22&t=6301
Ändring på VD:en finns på git.Har även hunnit provat den andra lösningen jag postade lite mer ingående.
och resultatet.... den funkar bra . Dörren öppnas när jag närmar mig & låser sig när jag åker.
http://www.zwaveforum.se/viewtopic.php?f=22&t=6301
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Hmm
konstigt
Jag klistrar in den här då
konstigt
Jag klistrar in den här då
Code: Select all
local vd = 174 --Denna virtuella ID's nummer
local battery_status = fibaro:getGlobalValue("battery_status")
local address_location = fibaro:getGlobalValue("address_location")
local battery_level = fibaro:getGlobalValue("battery_level")
local home = fibaro:getGlobalValue("home")
local getdata_time = fibaro:getGlobalValue("getdata_time")
local position_type = fibaro:getGlobalValue("position_type")
local phone_accuracy = fibaro:getGlobalValue("phone_accuracy")
local distance_home = fibaro:getGlobalValue("distance_home")
local time_home = fibaro:getGlobalValue("time_home")
local meters_home = fibaro:getGlobalValue("meters_home")
fibaro:call(vd, 'setProperty', 'ui.Location.value',address_location)
--fibaro:debug("Your are here: "..address_location)
fibaro:call(vd, 'setProperty', 'ui.status.value',battery_status)
--fibaro:debug("Is your phone charging: "..battery_status)
fibaro:call(vd, 'setProperty', 'ui.level.value',battery_level * 100 .."%")
--fibaro:debug("Percentage of battery: "..battery_level * 100)
--fibaro:call(vd, 'setProperty', 'ui.home.value',home)
--fibaro:debug("Are the phone home "..home)
fibaro:call(vd, 'setProperty', 'ui.timestamp.value',getdata_time)
--fibaro:debug("Time is now: "..timeStamp)
fibaro:call(vd, 'setProperty', 'ui.positiontype.value',position_type)
--fibaro:debug("You get your data with: "..position_type)
fibaro:call(vd, 'setProperty', 'ui.horizontalAccuracy.value', phone_accuracy .. " M")
--fibaro:debug("How accurate is GPS data: "..phone_accuracy)
--fibaro:call(vd, 'setProperty', 'ui.Distancehome.value', distance_home .. " KM")
--fibaro:debug("Distance to home: "..distance_home)
--fibaro:call(vd, 'setProperty', 'ui.timehome.value', time_home / 60 .. " MIN")
--fibaro:debug("Driving time home: "..timehome)
--if ( tonumber(fibaro:getGlobalValue("home")) == 0 ) then
-- fibaro:call(vd, "setProperty", "ui.home.value", "No")
-- fibaro:call(vd, "setProperty", "ui.lastseen.value", "Away Since "..os.date("%H:%M:%S");
--else
-- fibaro:call(vd, "setProperty", "ui.home.value", "Yes")
-- fibaro:call(vd, "setProperty", "ui.lastseen.value","Home Since "..os.date("%H:%M:%S");
--end
--If distance home smaller <= 1KM switch to meters_home
if ( tonumber(fibaro:getGlobalValue("distance_home")) >= 1 ) then
fibaro:call(vd, 'setProperty', 'ui.Distancehome.value', distance_home .. " KM")
else
fibaro:call(vd, "setProperty", "ui.Distancehome.value",meters_home .. " M")
end
--If distance home smaller <= 1M recalculate to centimeters
--if ( tonumber(fibaro:getGlobalValue("meters_home")) == 0 )
--then
--fibaro:call(vd, "setProperty", "ui.Distancehome.value",distance_home * 10000 .." CM")
--end
--If time_home smaller <= 1Min use standard time S.
if ( tonumber(fibaro:getGlobalValue("time_home")) < 60 ) then
fibaro:call(vd, 'setProperty', 'ui.timehome.value',time_home .. " S")
else
fibaro:call(vd, 'setProperty', 'ui.timehome.value',time_home / 60 .. " min")
--or if ( tonumber(fibaro:getGlobalValue("time_home")) > 3600 ) then
--fibaro:call(vd, 'setProperty', 'ui.timehome.value',time_home / 3600 .. " h")
end
-- Convert battery level
battery_level2 = tonumber(battery_level * 100)
fibaro:debug("battery level: "..battery_level2)
if battery_level2 > tonumber(battery_level2) then
battery_level2 = tonumber(battery_level2)
end
function getIcon(battery_level2)
if(battery_level2 > 90) then return 1015
elseif(battery_level2 >= 75) then return 1014
elseif(battery_level2 >= 40) then return 1013
elseif(battery_level2 >= 30) then return 1012
elseif(battery_level2 >= 10) then return 1011
elseif(battery_level2 >= 0) then return 1010
end
end
-- If phone is charging then change icon to charging
if
(fibaro:getGlobalValue("battery_status")) == ("Charging") then
fibaro:call(vd, "setProperty", "currentIcon", 1016)
else
fibaro:call(vd, "setProperty", "currentIcon", getIcon(battery_level2));
end
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
@KristianO jag la upp en export av VD:en på git:
https://github.com/raess1/iCloud-HC2-Br ... .vfib.json
Update:
1. Ändrat ikoner (flera) så man får tydligare batteriprocent. 2. Sitter telefonen i laddaren och laddas animeras en laddningseffekt såhär:
https://youtu.be/0l2ZWB1gVGo
3. Sitter telefonen i laddaren och är fullladdad visas ikon:
https://github.com/raess1/iCloud-HC2-Br ... .vfib.json
Update:
1. Ändrat ikoner (flera) så man får tydligare batteriprocent. 2. Sitter telefonen i laddaren och laddas animeras en laddningseffekt såhär:
https://youtu.be/0l2ZWB1gVGo
3. Sitter telefonen i laddaren och är fullladdad visas ikon:
Skall testa igen. Men om telefonen är död? Tänker, sista poll ger 3% och gps. När nästa sen sker 1min senare så är den död. Är då positionen i retur den samma? Eller kan man då tolka svaret som "osäkert" och inte "trigga" något på det?
Sent from my iPhone using Tapatalk
Sent from my iPhone using Tapatalk
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Har du följt instruktionerna på git?
Vilka variabler har du lagt till?
dessa behövs ändras
$url = 'http://user:password@IP/api/globalVariables';
CURLOPT_URL => "http://IP/api/globalVariables/".$globalVariables,
"authorization: Basic token=",
$phone_id = 'UDID';
$fmi = new FindMyiPhone("icloud user","icloud password");
Vilka variabler har du lagt till?
dessa behövs ändras
$url = 'http://user:password@IP/api/globalVariables';
CURLOPT_URL => "http://IP/api/globalVariables/".$globalVariables,
"authorization: Basic token=",
$phone_id = 'UDID';
$fmi = new FindMyiPhone("icloud user","icloud password");
Nu funkar det... fick dock bygga om lite och vet inte riktigt varför?!?
Passade även på att lägga in 2 användare i ett och samma script.
Nästa steg blir att skapa variabler via api. Då jag allokerar dem dynamiskt per användare.
Hör av dig om du vill kika.
Sent from my iPhone using Tapatalk
Passade även på att lägga in 2 användare i ett och samma script.
Nästa steg blir att skapa variabler via api. Då jag allokerar dem dynamiskt per användare.
Hör av dig om du vill kika.
Sent from my iPhone using Tapatalk
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Nice.. Vad tycker du då?
Du kanske kan använda delar av mitt nya script som jag använder på min skrivare.
https://github.com/raess1/HP-OfficeJet- ... HC2-Bridge
Där kör jag ner alla variabler i samma string med json och sen kör jag:
data = json.decode(printer_usage) i HC2 och på det sättet behövs bara en variabel i hc2
dela gärna din kod sen om du gör några förbättringar
Lua koden ser ut såhär:
Du kanske kan använda delar av mitt nya script som jag använder på min skrivare.
https://github.com/raess1/HP-OfficeJet- ... HC2-Bridge
Där kör jag ner alla variabler i samma string med json och sen kör jag:
data = json.decode(printer_usage) i HC2 och på det sättet behövs bara en variabel i hc2
dela gärna din kod sen om du gör några förbättringar
Lua koden ser ut såhär:
Code: Select all
--[[
%% autostart
%% properties
%% globals
--]]
local vd = 182 --Denna virtuella ID's nummer
local printer = fibaro:getGlobalValue("printer")
--fibaro:debug("What is variabel " ..printer)
local printer_usage = fibaro:getGlobalValue("printer_usage")
--fibaro:debug("What is variabel " ..printer_usage)
data = json.decode(printer_usage)
-- after encoding jsonString variable contains '{ "value2": null, "value1": 512 }' string
-- Cyan Cartridge status
--fibaro:call(vd, 'setProperty', 'ui.cyanprocent.value',data.cyanprocent .."%")
fibaro:debug("Cyan Cartridge : " ..data.cyanprocent)
--fibaro:debug("Cyan pages remaining : " ..data.cyanpagesremaining)
-----if data.cyanprocent < 98 ) then
-- fibaro:call(vd, 'setProperty', 'ui.cyanprocent.value', "Cyan ink snart slut")
--else
-- fibaro:call(vd, "setProperty", "ui.cyanprocent.value",data.cyanprocent .."%")
--end
-- Magenta Cartridge status
fibaro:call(vd, 'setProperty', 'ui.magentaprocent.value',data.magentaprocent .."%")
--fibaro:debug("Magenta Cartridge : " ..data.magentaprocent)
--fibaro:debug("Magenta pages remaining : " ..data.magentapagesremaining)
-- Yellow Cartridge status
fibaro:call(vd, 'setProperty', 'ui.yellowprocent.value',data.yellowprocent .."%")
--fibaro:debug("Yellow Cartridge : " ..data.yellowprocent)
--fibaro:debug("Yellow pages remaining : " ..data.yellowpagesremaining)
-- Black Cartridge status
fibaro:call(vd, 'setProperty', 'ui.blackprocent.value',data.blackprocent .."%")
--fibaro:debug("Black Cartridge : " ..data.blackprocent)
fibaro:debug("Black pages remaining : " ..data.blackpagesremaining)
--Print jobs
fibaro:call(vd, 'setProperty', 'ui.totjobs.value',data.totjobs)
--fibaro:debug("tot print : " ..data.totjobs)
fibaro:call(vd, 'setProperty', 'ui.monochromeimpressions.value',data.monochromeimpressions)
--fibaro:debug("tot print black : " ..data.monochromeimpressions)
fibaro:call(vd, 'setProperty', 'ui.colorimpressions.value',data.colorimpressions)
--fibaro:debug("tot print color : " ..data.colorimpressions)
fibaro:call(vd, 'setProperty', 'ui.simplexsheets.value',data.simplexsheets)
--fibaro:debug("one sides prints : " ..data.simplexsheets)
--data = json.decode(printer)
--fibaro:debug("What is value1: " ..data.revision)
--fibaro:debug("Power: " ..data.power)
--fibaro:debug("What is the signal strength: " ..data.signalstrength)
--fibaro:debug("wifi:dBm " ..data.wifidbm)
--fibaro:debug("is USB connected: " ..data.usbconnect)
--end
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Har byggt om den lite nu så alla variabler skickas med json decode.
Senaste koden: finns på https://github.com/raess1/iCloud-HC2-Br ... /index.php
exemple på användande
Senaste koden: finns på https://github.com/raess1/iCloud-HC2-Br ... /index.php
exemple på användande
Code: Select all
--[[
%% autostart
%% properties
%% globals
--]]
local vd = 183 --Denna virtuella ID's nummer
local iphoneapi = fibaro:getGlobalValue("iphoneapi")
--fibaro:debug("What data are we receiving " ..iphoneapi)
data = json.decode(iphoneapi)
fibaro:debug("Device : " ..data.device_name)
fibaro:debug("Latitude : " ..data.latitude)
fibaro:debug("Longitude : " ..data.longitude)
fibaro:debug("BatteryLevel : " ..data.batteryLevel)
fibaro:debug("BatteryStatus : " ..data.batteryStatus)
fibaro:debug("HorizontalAccuracy : " ..data.horizontalAccuracy)
fibaro:debug("PositionType : " ..data.positionType)
fibaro:debug("Are the Device home : " ..data.home)
fibaro:debug("Address : " ..data.address)
fibaro:debug("Distance home in KM : " ..data.distance_home_k)
fibaro:debug("Distance home in meters : " ..data.distance_home_m)
fibaro:debug("Time home in minutes : " ..data.time)
fibaro:debug("What is your home address : " ..data.address_home)
fibaro:debug("Address to : " ..data.address_to)
Nice! Men går det även att trycka in alla variabler samtidigt mot hc2?
Nu ropar ju scriptet på funktionen vid varje förändring.
Bäst blir kanske en kombination av båda.
Spara "datat" som json för visning i VD.
Men att sen sätta "hemmastatus" via en egen variabel. Då man kanske vill "trigga" något på denna.
För att köra flera telefoner skapade jag en array med Telefon, användare och lösen.
Kör sedan en foreach loop på dessa och loggar in på iCloud.
Efter det använder jag din kod.
Allokerar sedan variabler dynamiskt genom att ta första bokstaven i telefonens namn.
Tex "K_<Global Variable>"
Kristian
Sent from my iPhone using Tapatalk
Nu ropar ju scriptet på funktionen vid varje förändring.
Bäst blir kanske en kombination av båda.
Spara "datat" som json för visning i VD.
Men att sen sätta "hemmastatus" via en egen variabel. Då man kanske vill "trigga" något på denna.
För att köra flera telefoner skapade jag en array med Telefon, användare och lösen.
Kör sedan en foreach loop på dessa och loggar in på iCloud.
Efter det använder jag din kod.
Allokerar sedan variabler dynamiskt genom att ta första bokstaven i telefonens namn.
Tex "K_<Global Variable>"
Kristian
Sent from my iPhone using Tapatalk
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Okej. Jag ska försöka skriva om den lite igen då
Varje gång scriptet körs skickas en json string med alla variabler. typ så här:
så alla variabler ändras ju efter den tid man har ställt in scriptet ska köras.
Sedan kan man ju köra detta i lua för att se vad variabeln "iphoneapi" innehåller:
Varje gång scriptet körs skickas en json string med alla variabler. typ så här:
Code: Select all
{
"name": "iphoneapi",
"value": "{\"latitude\":75.2995709219,\"longitude\":16.2713414643,\"device_name\":\"iPhone 7\",\"batteryLevel\":0.75,\"batteryStatus\":\"NotCharging\",\"timeStamp\":1483089160783,\"horizontalAccuracy\":8,\"positionType\":\"GPS\",\"home\":1,\"vibrate\":true,\"address\":\"Berggatan 9, 544 31 Hjo, Sweden\",\"distance_home_k\":0.00536841464861,\"distance_home_m\":0,\"time\":0,\"address_home\":\"Berggatan 9, 544 31 Hjo, Sweden\",\"address_to\":\"Berggatan 9, 544 31 Hjo, Sweden\"}",
"readOnly": false,
"isEnum": false,
"created": 1483051359,
"modified": 1483090500
}
Sedan kan man ju köra detta i lua för att se vad variabeln "iphoneapi" innehåller:
Code: Select all
local iphoneapi = fibaro:getGlobalValue("iphoneapi")
fibaro:debug("What data are we receiving " ..iphoneapi)
data = json.decode(iphoneapi)
Jo precis! Lite så kör jag i mitt script, fast fortfarande variabel för variabel. Att lägga hela json i en variabel e snyggare och skönt att slippa så många variabler
Nackdelen är att du inte kan trigga på dem, Dvs du kan inte starta en scen i hc2 på dem. Dessa måste ha en egen variabel.
Sent from my iPhone using Tapatalk
Nackdelen är att du inte kan trigga på dem, Dvs du kan inte starta en scen i hc2 på dem. Dessa måste ha en egen variabel.
Sent from my iPhone using Tapatalk
-
- Medlem
- Posts: 48
- Joined: 23 Dec 2016, 14:24
- 7
Okej jag förstår
kan du dela din kod på git?
kan du dela din kod på git?