openLuup

Tutoriels sur la Vera

openLuup

Messagede vosmont » 06 Nov 2015, 16:57

openLuup est un portage du moteur de la Vera et s'installe sur plein de plateformes.
Il y a une passerelle pour contrĂ´ler directement des Veras physiques.
Ce moteur marche de concert avec le plugin ALTUI.

Plus d'info ici :
http://forum.micasaverde.com/index.php/ ... 463.0.html

Je l'utilise pour l'instant pour développer mes plugins : c'est beaucoup plus rapide et pas besoin d'attendre les innombrables redémarrage du moteur Luup.

Quelques notes rapides sur ma config :
- Windows + ZeroBraneStudio (http://studio.zerobrane.com/)
- par défaut ZeroBraneStudio n'a pas toutes les librairies LUA nécessaire pour openLuup et ALTUI
Il faut créer le fichier "packages/luadist.lua" : https://github.com/pkulchenko/ZeroBrane ... t-27532676
Ensuite dans l'onglet "Remote console", il suffit pour installer des libraires, de taper :
luadist.install("luaexpat")
luadist.install("luasec")


La version actuelle de openLuup (5.5) ne marche pas directement sous Windows.
J'ai envoyé quelques modifications au créateur du plugin (akbooer).
En attendant leurs intégration, n'hésitez pas à me contacter si vous souhaitez tester sur Windows (pas besoin de modif sur Linux ou Mac)

ContrĂ´leurs: VeraLite UI5 / VeraEdge UI7 + Rfxcom Rfxtrx433 + enOcean / openLuup + edisio
Interface: ALTUI / ImperiHome / Sarah / Karotz
DĂ©tecteur ouverture : Vision Security ZD2102
DĂ©tecteur mouvement : Fibaro FGMS-001- Blyss - Chacon
Mesures : Oregon THGN132N / THGR122NX - Owl CM180
Prises / Eclairage : Everspring AN157-6 / AN158-6 / AD142-6 - Fibaro FGS-221 / FGD-211 / FGRGB-101
Sécurité : Foscam FI8918W - Onduleur - Fortrezz FOR_SSA1(sirène)
Divers: Proliant N54L + Xpenology + EmonCms
vosmont
Dieu de domotique
 
Messages: 615
Inscription: 24 AoĂ» 2012, 11:43
Localisation: Nantes

Re: openLuup

Messagede noise » 02 DĂ©c 2015, 16:15

Bonjour,

Si j'ai bien tout compris,

Il serait possible d'installer openluup sur un raspberry pi ?
Il serait possible de faire tourner lĂ  dessus les plugins vera ?

Du coup, on pourrait profiter des plugins vera pour une eedomus par exemple (via les api des 2 )?
noise
Dieu de domotique
 
Messages: 293
Inscription: 04 Mai 2006, 18:44
Localisation: LAVAL

Re: openLuup

Messagede vosmont » 02 DĂ©c 2015, 16:50

openLuup est un portage de la Vera qui peut effectivement fonctionner sur un raspberry.
Pas mal de plugins fonctionneront, par contre je crois que openLuup n'est pas fait pour contrĂ´ler un dongle (via usbserial).
Du coup, il n'y a que les plugins qui utilisent des requĂŞtes http qui fonctionnent pleinement (pas de RfxTrx ou mySensors).
Il y a une passerelle vers des Veras physiques, qui permet de contrĂ´ler les modules ZWave de ces Veras.

Si je comprends bien ta question, tu parles d'un plugin tournant sur la Vera vers l'eedomus ?
Je ne sais pas si ce type de montage est intéressant, à moins que tu n'aies des plugins exclusivement pour la Vera que tu ne peux pas remplacer.

openLuup est plutôt conçu pour délester la Vera et prendre en charge l'exécution des plugins et laisser la Vera physique s'occuper du réseau Z-Wave.

A noter que la dernière version de openLuup tourne sur Windows sans modification.

ContrĂ´leurs: VeraLite UI5 / VeraEdge UI7 + Rfxcom Rfxtrx433 + enOcean / openLuup + edisio
Interface: ALTUI / ImperiHome / Sarah / Karotz
DĂ©tecteur ouverture : Vision Security ZD2102
DĂ©tecteur mouvement : Fibaro FGMS-001- Blyss - Chacon
Mesures : Oregon THGN132N / THGR122NX - Owl CM180
Prises / Eclairage : Everspring AN157-6 / AN158-6 / AD142-6 - Fibaro FGS-221 / FGD-211 / FGRGB-101
Sécurité : Foscam FI8918W - Onduleur - Fortrezz FOR_SSA1(sirène)
Divers: Proliant N54L + Xpenology + EmonCms
vosmont
Dieu de domotique
 
Messages: 615
Inscription: 24 AoĂ» 2012, 11:43
Localisation: Nantes

Re: openLuup

Messagede lmet » 02 DĂ©c 2015, 22:30

@vosmont
J'ai bien envie de me lancer dans l'aventure mais il n'y a pas vraiment de doc sous Windows 7.
° J'ai créé un dossier openluup à la racine d'un disque
° Un dossier zerobrane où j'ai mis l'éditeur lua
Après je n'ai pas trouvé d'autres infos dans la doc pour une install sous windows. Comme tu indiques qu'il n'y a plus de manips supplémentaires, cela serait sympa de donner un début de tuto pour Windows.
Adepte des "Setup" "Next" "Next" "Icon on desktop" et "Finish" j'ai peur de ne pas m'en sortir dans cette affaire
D'avance merci
lmet
Domotique : RPI 3 raspbian stretch, clef Z-wave Aeon Labs, application Domoticz v4.9700
EverSpring : ST814, AN158-6
Fibaro : FGR-221,FGS-221, FGS-211,FGD-211,FGK-103, FGRM-221, FGRM-222, FGMS-001, FGFS-101
iPad Air 2 : Imperihome
Caméras : FosCam FI9805W
Sécurité : Nest Protect
Energie : AEO_HEM2 d'AEON LABS, onduleur APC Back-UPS ES 700
Autres : Pc Windows 10 Pro 64 bits, IPX 800 v3, Netatmo station météo, NAS Synology DS214, TV Sony KDL-50W755c
Avatar de l’utilisateur
lmet
Dieu de domotique
 
Messages: 1031
Inscription: 14 AoĂ» 2011, 18:54
Localisation: Val d'Oise

Re: openLuup

Messagede vosmont » 03 DĂ©c 2015, 11:42

Voici un rapide tuto pour tester sur Windows en mode développement (il faudra relancer à chaque fois qu'un rechargement Luup est fait).
Je regarde pour installer directement avec Lua for Windows, mais pour l'instant j'ai un problème de librairies.

1/ Installer la dernière release de openLuup (https://github.com/akbooer/openLuup/releases)
bien respecter l'arborescence

2/ Installer ZeroBraneStudio (http://studio.zerobrane.com)

3/ Dans le répertoire de ZeroBraneStudio, créer le fichier "packages\luadist.lua" à partir de la source présente ici : https://github.com/pkulchenko/ZeroBrane ... t-27532676
Code: Tout sélectionner
-- Copyright 2013 Paul Kulchenko

local script = ([==[
io.stdout:setvbuf('no')
local conf = require 'dist.config'
for k, v in pairs(%s) do conf[k] = v end
for k, v in pairs(%s) do conf.variables[k] = v end
os.exit = function() error('done') end
local s = os.time()
local ok, err = pcall(require('luadist').%s.run, [[%s]], %s)
if not ok and not err:find('done$') then print(err) end
print('Completed in '..(os.time()-s)..' second(s).')]==]):gsub('\n', '; ')

local echoscript = ([==[
print('PATH: ', os.getenv('PATH'))
print('LUA_PATH: ', os.getenv('LUA_PATH'))
print('LUA_CPATH: ', os.getenv('LUA_CPATH'))
print([[params: %s]])
print([[variables: %s]])
--[[%s]]
print([[root: %s]])
print([[libs: %s]])
]==]):gsub('\n', '; ')

local win, mac = ide.osname == 'Windows', ide.osname == 'Macintosh'
local ext = win and 'dll' or 'so'
local distarch = mac and 'Darwin' or win and 'Windows' or 'Linux'
local disttype = ide.osarch
local function serialize(s)
  return require('mobdebug').line(s, {comment = false}):gsub('"',"'") end

local function run(plugin, command, ...)
  local libs = {...}
  local ver = tonumber(libs[1]) and tostring(table.remove(libs, 1)) or '5.1'
  local opt = type(libs[#libs]) == 'table' and table.remove(libs) or {}
  local int = ide:GetConfig().default.interpreter
  local exe = ide:GetInterpreters()[int]:fexepath("")
  local root = plugin:GetConfig().root or MergeFullPath(ide.oshome, 'luadist/'..ver)
  local install = command == 'install'
  local params = {
    distinfos_dir = 'dists',
    source = not (install and (win or mac)),
    arch = distarch,
    type = disttype,
    -- caching doesn't work well when mixing binary and source installs;
    -- can still be enabled manually from `install` call ({cache = true})
    cache = false,
    -- only specify components when installing, otherwise
    -- removing components doesn't work (as only listed ones are removed).
    components = install and {'Runtime', 'Documentation', 'Header', 'Library', 'Unspecified'} or nil,
    -- need to reset all *_dir and *_file references as they are generated
    -- before arch is set, which makes separators not always correct.
    cache_dir      = MergeFullPath('tmp', 'cache'),
    log_file       = MergeFullPath('tmp', 'luadist.log'),
    manifest_file  = MergeFullPath('tmp/cache', '.gitmodules'),
    dep_cache_file = MergeFullPath('tmp/cache', '.depcache'),
    -- "manifest download" has clever logic to figure out root directory
    -- based on package.path, which is not quite correct when Lua5.2 is
    -- the current interpreter; set it explicitly.
    root_dir = root,
  }
  local variables = {
    CMAKE_SHARED_MODULE_CREATE_C_FLAGS = mac and "-bundle -undefined dynamic_lookup" or nil,
    CMAKE_FIND_FRAMEWORK = mac and "LAST" or nil,
    CMAKE_OSX_ARCHITECTURES = mac and "i386 -arch x86_64" or nil,
  }
  -- update manually specified parameters:
  -- upper-case only -- CMake, all others -- LuaDist parameters
  for k,v in pairs(opt) do
    if k:match('^[A-Z_]+$') then variables[k] = v else params[k] = v end
  end

  -- .depcache keeps track of installed modules, but doesn't reset the
  -- cache when switching between binary/source, so when lpeg-0.12 (source)
  -- is in the cache and (binary) is requested, the error is returned.
  -- reset cache timeout to avoid binary/source mismatch
  if not params.cache_timeout and not params.source then
    params.cache_timeout = 0 end

  -- not the best way to hardcode the Lua versions, but LuaDist doesn't
  -- accept lua-5.2 as a version to install and doesn't report the latest.
  local realver = ver == '5.2' and '5.2.2' or '5.1.5'
  local fakedist = MergeFullPath(root, 'dists/lua-'..ver..'/dist.info')
  local realdist = GetFullPathIfExists(root, 'dists/lua-'..realver..'/dist.info')

  if install and #libs > 0 then
    local installlua = libs[1]:find('^lua-')
    if params.source then
      if wx.wxFileExists(fakedist) then
        -- remove file and the folder
        wx.wxRemoveFile(fakedist)
        wx.wxRmdir(GetPathWithSep(fakedist))
      end
      if not realdist then -- maybe a different Lua version installed?
        local distdir = MergeFullPath(root, params.distinfos_dir)
        local candidates = FileSysGetRecursive(distdir, true, 'dist.info')
        for _, file in ipairs(candidates) do
          local luaver = file:match('[/\\]lua%-([%d%.]+)[/\\]dist.info$')
          if luaver then realver = luaver; break end
        end
      end
      if not installlua then table.insert(libs, 1, 'lua-'..realver) end
    elseif not installlua
    and not wx.wxFileExists(fakedist) and not realdist then
      local distinfo = ('version="%s"\nname="lua"\narch="%s"\ntype="%s"\nfiles={Runtime={}}')
        :format(ver, distarch, disttype)
      local ok, err = FileWrite(fakedist, distinfo)
      if not ok then
        DisplayShellErr(("Can't write dist.info file to '%s': %s")
          :format(fakedist, err))
        return
      end
      table.insert(libs, 1, 'lua-'..ver)
    end
  end

  if command ~= 'help' then
    DisplayShell(("Running '%s' for Lua %s in '%s'."):format(command, ver, root))
  end

  local cmd = ('"%s" -e "%s"'):format(
    exe,
    (command == 'echo' and echoscript or script):format(
      serialize(params), serialize(variables), command, root, serialize(libs))
  )

  -- add "clibs" to PATH to allow required DLLs to load
  local _, path = wx.wxGetEnv("PATH")
  if win and path then
    local clibs = MergeFullPath(GetPathWithSep(exe), 'clibs')
    -- set it first in case the current interpreter is Lua 5.2 and PATH is already modified
    wx.wxSetEnv("PATH", clibs..';'..path)
  end
  -- set LUA_DIR as LuaDist sometime picks up proxy liblua,
  -- which is not suitable for linking
  local _, ldir = wx.wxGetEnv("LUA_DIR")
  if win then wx.wxSetEnv("LUA_DIR", root) end

  local workdir = wx.wxFileName.SplitPath(ide.editorFilename)
  CommandLineToShell(CommandLineRun(cmd,workdir,true,false), true)

  -- restore environment
  if win and path then wx.wxSetEnv("PATH", path) end
  if win and ldir then wx.wxSetEnv("LUA_DIR", ldir) end
end

local paths = {}

return {
  name = "LuaDist integration",
  description = "Provides LuaDist integration to install modules from LuaDist.",
  author = "Paul Kulchenko",
  version = 0.14,
  onRegister = function(self)
    -- force loading liblua.dll on windows so that it's available if needed;
    -- load something that requires liblua.dll so that it's in memory and
    -- can be used by modules that require it from local console.
    local _, path = wx.wxGetEnv("PATH")
    if win and path then
      local clibs = ide.osclibs:gsub('%?%.dll','')
      wx.wxSetEnv("PATH", clibs..';'..path)
      local ok = pcall(require, 'git.core')
      wx.wxSetEnv("PATH", path)
      if not ok then
        DisplayOutputLn("Couldn't find LuaDist dependency ('git.core'); 'luadist' commands may not work.")
      end
    end

    -- update path/cpath so that LuaDist modules are available from the console
    local root = MergeFullPath(ide.oshome, 'luadist/5.1')
    local lib = MergeFullPath(root, 'lib/lua')
    if not package.path:find(lib, 1, true) then
      package.path = package.path..(';%s/?.lua;%s/?/init.lua'):format(lib, lib)
    end
    if not package.cpath:find(lib, 1, true) then
      package.cpath = package.cpath..(';%s/?.%s'):format(lib, ext)
    end

    -- register all LuaDist commands
    local commands = {}
    for _, command in ipairs({
      'help', 'install', 'remove', 'refresh', 'list', 'info', 'search',
      'fetch', 'make', 'upload', 'tree', 'selftest', 'echo',
    }) do commands[command] = function(...) return run(self, command, ...) end end

    ide:AddConsoleAlias("luadist", commands)
  end,
  onUnRegister = function(self) ide:RemoveConsoleAlias("luadist") end,

  onInterpreterLoad = function(self, interpreter)
    if not interpreter.luaversion then return end

    local version = tostring(interpreter.luaversion)
    local root = self:GetConfig().root or MergeFullPath(ide.oshome, ('luadist/%s'):format(version))
    local lib = MergeFullPath(root, 'lib/lua')
    local bin = MergeFullPath(root, 'bin')

    -- need to set PATH on windows to allow liblua.dll from LuaDist to load
    -- need to reference bin/, but it may also include liblua.dll if lua
    -- is installed through LuaDist, so put bin/ after clibs/ to make sure
    -- that proxy liblua.dll is loaded instead of the real one.
    local _, path = wx.wxGetEnv("PATH")
    if win and path then
      local clibs = ide.osclibs:gsub('%?%.dll','')
        :gsub('/clibs', '/clibs' .. (version > '5.1' and version:gsub('%.','') or ''))
      wx.wxSetEnv("PATH", clibs..';'..bin..';'..path)
    end

    -- keep "libs" last as luadist dependencies need to be loaded from
    -- the IDE location first as dist/* module has been modified.
    local libs = (';%s/?.%s;'):format(lib, ext)
    local _, lcpath = wx.wxGetEnv('LUA_CPATH')
    if lcpath then wx.wxSetEnv('LUA_CPATH', lcpath..libs) end

    local libs = (';%s/?.lua;%s/?/init.lua;'):format(lib, lib)
    local _, lpath = wx.wxGetEnv('LUA_PATH')
    if lpath then wx.wxSetEnv('LUA_PATH', lpath..libs) end

    paths = {PATH = path, LUA_CPATH = lcpath, LUA_PATH = lpath}
  end,
  onInterpreterClose = function(self, interpreter)
    local version = interpreter.luaversion
    if not version then return end

    for p,v in pairs(paths) do if v then wx.wxSetEnv(p, v) end end
  end,
}


4/ Lancer un serveur web pour exposer le répertoire "...\www" sur le port 80
J'utilise mongoose pour créer ce serveur web de test (je ne sais plus où j'ai trouvé le binaire).
Il suffit de mettre l'exécutable et son fichier de configuration "mongoose.conf" dans dans le répertoire "...\www"
Code: Tout sélectionner
listening_port 80


5/ Lancer ZeroBraneStudio, choisir comme répertoire de travail ".../openLuup/etc/cmh-ludl", vérifier que le moteur LUA utilisé est bien le 5.1

6/ Dans l'onglet "Remote console" de ZeroBraneStudio, installer les libraires :
luadist.install("luaexpat")
luadist.install("luasec")

7/ Lancer le fichier "openLuup_release_1.lua"

8/ Ouvrir ALTUI
127.0.0.1:3480/data_request?id=lr_ALTUI_Handler&command=home#

ContrĂ´leurs: VeraLite UI5 / VeraEdge UI7 + Rfxcom Rfxtrx433 + enOcean / openLuup + edisio
Interface: ALTUI / ImperiHome / Sarah / Karotz
DĂ©tecteur ouverture : Vision Security ZD2102
DĂ©tecteur mouvement : Fibaro FGMS-001- Blyss - Chacon
Mesures : Oregon THGN132N / THGR122NX - Owl CM180
Prises / Eclairage : Everspring AN157-6 / AN158-6 / AD142-6 - Fibaro FGS-221 / FGD-211 / FGRGB-101
Sécurité : Foscam FI8918W - Onduleur - Fortrezz FOR_SSA1(sirène)
Divers: Proliant N54L + Xpenology + EmonCms
vosmont
Dieu de domotique
 
Messages: 615
Inscription: 24 AoĂ» 2012, 11:43
Localisation: Nantes

Re: openLuup

Messagede lmet » 03 DĂ©c 2015, 16:15

Waouh! c'est pas du "Next" "Next", je vais me garder ça pour ce week-end et sûrement les suivants ;)
Merci beaucoup vosmont
lmet
Domotique : RPI 3 raspbian stretch, clef Z-wave Aeon Labs, application Domoticz v4.9700
EverSpring : ST814, AN158-6
Fibaro : FGR-221,FGS-221, FGS-211,FGD-211,FGK-103, FGRM-221, FGRM-222, FGMS-001, FGFS-101
iPad Air 2 : Imperihome
Caméras : FosCam FI9805W
Sécurité : Nest Protect
Energie : AEO_HEM2 d'AEON LABS, onduleur APC Back-UPS ES 700
Autres : Pc Windows 10 Pro 64 bits, IPX 800 v3, Netatmo station météo, NAS Synology DS214, TV Sony KDL-50W755c
Avatar de l’utilisateur
lmet
Dieu de domotique
 
Messages: 1031
Inscription: 14 AoĂ» 2011, 18:54
Localisation: Val d'Oise

Re: openLuup

Messagede vosmont » 09 DĂ©c 2015, 12:12

Bon finalement, c'est bien plus simple : http://luadist.org/
Il y a tout, LUA 5.1 et les librairies dont on a besoin.

Le script "openLuup_reload.bat" à créer dans "openLuup\etc\cmh-ludl" :
Code: Tout sélectionner
@ECHO OFF
SETLOCAL
SET LUA_DEV=D:\devhome\app\LuaDist\bin
SET CURRENT_PATH=%~dp0
ECHO Start openLuup from "%CURRENT_PATH%"
ECHO.
CD %CURRENT_PATH%
"%LUA_DEV%\lua" openLuup\init.lua %1

:loop
IF NOT %ERRORLEVEL% == 42 GOTO exit
"%LUA_DEV%\lua" openLuup\init.lua
GOTO loop

:exit

ENDLOCAL
pause


Pensez à adapter la variable "LUA_DEV" en fonction du répertoire d'installation de LuaDist

ContrĂ´leurs: VeraLite UI5 / VeraEdge UI7 + Rfxcom Rfxtrx433 + enOcean / openLuup + edisio
Interface: ALTUI / ImperiHome / Sarah / Karotz
DĂ©tecteur ouverture : Vision Security ZD2102
DĂ©tecteur mouvement : Fibaro FGMS-001- Blyss - Chacon
Mesures : Oregon THGN132N / THGR122NX - Owl CM180
Prises / Eclairage : Everspring AN157-6 / AN158-6 / AD142-6 - Fibaro FGS-221 / FGD-211 / FGRGB-101
Sécurité : Foscam FI8918W - Onduleur - Fortrezz FOR_SSA1(sirène)
Divers: Proliant N54L + Xpenology + EmonCms
vosmont
Dieu de domotique
 
Messages: 615
Inscription: 24 AoĂ» 2012, 11:43
Localisation: Nantes


Retourner vers Tutoriels

Qui est en ligne

Utilisateurs parcourant ce forum: Aucun utilisateur enregistré et 2 invités

Copyright © 2011 - Touteladomotique.com - Tous droits rĂ©servĂ©s
Les blogs partenaires : Abavala, Domo-Blog, Domotique34, Maison et Domotique