This forum uses cookies
This forum makes use of cookies to store your login information if you are registered, and your last visit if you are not. Cookies are small text documents stored on your computer; the cookies set by this forum can only be used on this website and pose no security risk. Cookies on this forum also track the specific topics you have read and when you last read them. Please confirm that you accept these cookies being set.

Rituals Genie
#1
Here my code to control a Rituals Genie.

add a library
Code:
--[[ based on     - https://community.home-assistant.io/t/restful-or-not-rituals-perfume-genie/167112     - fibaro rituals genie quickapp --]] json = require('json') https = require('ssl.https') ltn12 = require('ltn12') escape = require('socket.url').escape -- rituals account ritualsServer = 'https://rituals.sense-company.com' ritualsUserName = 'xxx@xxxxxxxx.nl' ritualsPassword = 'xxxxxxxx' -- hubs hubWoonkamer = 1  -- get from getHubs() -- general debug logging debug = false function debugLog(iLog)     if debug then     log(iLog)   end end   -- general web request function function request(endpoint, data, method)   local url = ritualsServer .. endpoint   local resp = {}   local headers = {     ['Content-Type'] = 'application/json'   }   local source   if data then     method = method or 'POST'     source = ltn12.source.string(data)     headers['Content-Length'] = #data   else     method = 'GET'   end   local res, code = https.request({     url = url,     method = method,     headers = headers,     source = source,     sink = ltn12.sink.table(resp)   })   debugLog(res,code,resp)     if res and code == 200 then     return json.pdecode(table.concat(resp))   else     return res, code   end end -- get account hash function getAccount()   data = '{\"email\": \"' .. ritualsUserName .. '\", \"password\": \"' .. ritualsPassword .. '\"}'   resp = request('/ocapi/login', data, 'POST')   accountHash = resp.account_hash   return accountHash end --getAccount() -- get hub hash function getHubs(iHub)     data = nil     resp = request('/api/account/hubs/'..getAccount(), data, 'GET')   if iHub then       hubHash = resp[iHub].hub.hash       return hubHash   else     debugLog(resp) -- get all hubs   end end --getHubs() --getHubs(hubWoonkamer) -- get hub hash function getHubInfo(iHub)     data = nil     resp = request('/api/account/hub/'..getHubs(iHub), data, 'GET')     debugLog({'power:'..resp.hub.attributes.fanc, 'speed:'..resp.hub.attributes.speedc, 'cardridge:'..resp.hub.sensors.rfidc.title, 'volume:'..resp.hub.sensors.fillc.title}) end --getHubInfo(hubWoonkamer) -- set hub state function setHubState(iHub, iState)     if iState then oState = 1 else oState = 0 end   data = '{\"hub\": \"' .. getHubs(iHub) .. '\",\"json\": {\"attr\": {\"fanc\": \"'..oState..'\"}}}'   resp = request('/api/hub/update/attr', data, 'POST') end --setHubState(hubWoonkamer,true) --setHubState(hubWoonkamer,false) -- set hub speed (1=low, 2=med, 3=high) function setHubSpeed(iHub, iSpeed)   data = '{\"hub\": \"' .. getHubs(iHub) .. '\",\"json\": {\"attr\": {\"speedc\": \"'..iSpeed..'\"}}}'   resp = request('/api/hub/update/attr', data, 'POST') end --setHubSpeed(hubWoonkamer,1) --setHubSpeed(hubWoonkamer,2) --setHubSpeed(hubWoonkamer,3)

use this code for example
Code:
require('user.nit_rituals') setHubState(hubWoonkamer,true)
Reply


Forum Jump: