-
Compteur de contenus
26 171 -
Inscription
-
Dernière visite
-
Jours gagnés
1 318
Tout ce qui a été posté par Lazer
-
Bon j'ai trouvé comment récupérer le Debug des modules virtuels via l'API : Pour la main loop : /api/virtualDevices/15/debugMessages/0 Pour les boutons : /api/virtualDevices/15/debugMessages/1 /api/virtualDevices/15/debugMessages/2 /api/virtualDevices/15/debugMessages/3 ... . Pour les scènes, j'avais précédemment partagé une URL, mais ça date de la v3, je pense que ça va être déprécié et supprimé un jour ou l'autre. La nouvelle API à utiliser en v4 est : /api/scenes/14/debugMessages . Donc pour détecter un plantage d'une main loop d'un module virtuel ou une scène, on peut envisager plusieurs possibilités : rechercher une chaine particulière dans les messages de debug => utile pour détecter les erreurs classiques du style "attempt to concatenate a nil value" comparer le timestamp du dernier message avec le timestamp courant => utile pour détecter un code qui serait mort sans afficher de message d'erreur spécifique compter le nombre de scènes actives avec fibaro:countScenes(14) => attention cette commande n'est valide que depuis une scène, les valeurs retournées depuis un VD sont farfelues => peut-être utilisé très simplement pour GEA, qui doit normalement toujours avoir au minimum 1 instance en fonctionnement. Reste maintenant à écrire un Watchdog pour monitorer tous les modules virtuels et scènes critiques, puis avertir l'utilisateur par notification, et redémarrer automatiquement le module/scène planté. On a maintenant en main tous les outils pour résoudre les problèmes de plantage inexpliqués.... sauf l'erreur 503.
-
J'ai des clients chez qui ils ont mis ça dans leurs toilettes. 2 options : - Tu te dépêche - Ou tu apprécies le noir, et tu t'endors
-
Bah écoute j'ai constaté que 3 câbles dans une gaine de 25 passe mieux que 2 dans une 20.J'ai même pas fait de calcul de diamètre, mais 20mm, ce n'est pas le diamètre extérieur ? Donc tu as beaucoup moins dedans. Ce qui explique pourquoi les 2 câbles passent mal.
-
@pepite, tu auras du mal àpasser 2 câbles que tu as linké en premier post dans une gaine de 20. J'ai le même câble, il a un double blindage, donc épais et rigide. Par contre, comme je le disais, 3 câbles passent bien dans une gaine de 25mm pour peu que tu n'aies pas de coude (la technique est d'enfiler les câbles dans la gaine avant d'immobiliser celle ci fans les murs).
-
[emoji38] ça fonctionne chez moi
-
C'est bien ce qui me semblait, la presse en ligne high-tech (tout comme les autres secteurs d'ailleurs...) recherche avant tout le clic au détriment d'une information fiable et vérifiée. Voici donc un article sérieux qui essaye de mettre au clair cette affaire : http://www.sxminfo.fr/103470/12/11/2015/la-panne-informatique-dorly-liee-a-un-serveur-tournant-sous-windows-nt-3-1/
-
Ce qui compte, c'est d'arriver à faire fonctionner sa domotique comme on l'entend. Le LUA n'est pas une fin en soit, et si tu arrives à tout faire fonctionner via GEA ou des scènes en mode bloc, il n'y a pas de raison de perdre du temps avec LUA. Sauf si bien sà»r tu considères le LUA comme un exercice cérébral sain Mais n'oublie pas que le LUA est le langage de la HC2, que tu ne garderas pas éternellement, et rien ne dit que la prochaine box utilisera le LUA (même si plusieurs box utilisent le LUA en domotique, tels que Vera ou Domoticz). Le LUA est surtout utile si tu souhaites développer tes propres scènes ou modules virtuels, afin de répondre à des problématiques que personne n'a abordé sur le forum, ou que tu souhaites adapter du code existant à ton usage. Tout comme le Visual Basic permet d'étendre les fonctionnalités d'Excel par exemple pour développer des mini-applications puissantes.
-
Avec la V3, tu peux aussi piloter les volets roulants, mais ça te bouffe 2 relais par volet je crois. C'est ce qu'utilise @Nico entre autre.
- 134 réponses
-
- votre avis ?
- diy
-
(et 3 en plus)
Étiqueté avec :
-
ah oui très bien ça, j'avais oublié
- 134 réponses
-
- votre avis ?
- diy
-
(et 3 en plus)
Étiqueté avec :
-
Somfy ne fait pas de volets de toits à ma connaissance, ils laissent ça à leur partenaire Velux. Sur le toit, à part Velux, c'est difficile de trouver un autre fabricant. Il y a Fakro aussi je crois. Avec les Velux, il faut du filaire, et utiliser le nouveau module Qubino à inversion de polarité. Le souci c'est qu'il ne fonctionne pas du tout avec la HC2.
- 134 réponses
-
- votre avis ?
- diy
-
(et 3 en plus)
Étiqueté avec :
-
C'était la 3.11 for Workgroup qui ajoutait le support de TCP/IP je crois.
-
Ca sens le gros troll quand même. La news dis juste que le système informatique tourne sous Windows 3.1, mais on ne sait pas si c'est la cause du plantage. Si ça se trouve, c'est juste l'alimentation qui a lâché. Et j'ai même envie d'ajouter, si peu de plantage en tant d'années, ça démontre la robustesse du système. Je suis bien d'accord avec Syris, pourquoi migrer un système qui fonctionne bien ?
-
Lien up, j'ai l'impression qu'ils ont complété les informations par rapport àhier
-
Si Jerry mets un soufflant de 500W, ça passera sans souci, même si c'est pas vraiment aux normes.
-
@PITP2 : tu nous fais un beau premier post avec la photo du produit, et on déplace ça dans le topic des modules Qubino ? @chris6783 : oui j'ai pensé exactement la même chose quand je les ai vu, parfait pour un chauffe eau ça ! Reste à voir quand il seront supporté par la HC2..................................................................... (notez le grand nombre de petits points)
-
OK alors quelques jours de tests et je partage.
- 329 réponses
-
- 1
-
-
Je trouvais la fonctionnalité de scan des adresses Wi-Fi proposé par Krikroff trop limitée pour mon usage : - limité à 2 appareils Wi-Fi - les variables globales FbxV6_WiFiDev1 et FbxV6_WiFiDev2 ont les valeurs 0 ou 1, donc ne permettent que de savoir si l'appareil est présent à un instant T sur le réseau, sans plus de précision - si le smartphone n'est pas sur le réseau Wi-Fi au moment précis de la détection par la main loop de ce VD, alors la variable globale est mise à jour en conséquence.... avec une main loop qui se rafraichit toutes les 30 minutes, ça manque de précision, surtout avec les iPhone par ex qui se mettent en veillent régulièrement. Le problème peut aussi survenir avec les Android selon leur configuration. Donc j'ai créé une nouvelle fonction qui utilise l'API LAN Browser (permettant d'accéder aux mêmes infos que la fenêtre Périphériques réseaux de l'interface Web). Je récupère donc le timestamp de dernière connectivité pour chaque appareil à monitorer. Donc on n'est plus limité à 2 appareils, on peut surveiller aussi bien des devices Wi-Fi que Ethernet, et les Variables globales stockent le timestamp, donc on peut élaborer des scénarios beaucoup plus élaborés. Voici ma première application pratique : - si mes 2 téléphones portables et mon PC portable ne sont plus visibles sur le réseau depuis plus de 12h, alors cela signifie que je suis en déplacement professionnel => Une scène met à jour d'une variable globale, qui sera interprétée par GEA pour adapter les scénarios de chauffage en conséquence. Si ça vous intéresse, je partagerai les ajouts. L'inconvénient est que j'ai forcément touché à la main loop du module de Krikroff, donc le suivi des versions ultérieures sera plus difficile, à moins que Krikroff ne les valide et les réintègre dans la distribution officielle (si tu passes par là JC )
- 329 réponses
-
- 3
-
-
La création des nombreuses variables globales pour ce module virtuel est fastidieuse. Voici un code à copier/coller dans un bouton d'un virtual device temporaire, qui va automatiquement créer toutes les variables globales nécessaires si elle n'existent pas déjà : -- Global variables if not VG then VG = { ['p_freebox_appToken'] = {['default']='' , ['enum']={}}, ['p_freebox_lastcmd'] = {['default']='' , ['enum']={}}, ['p_freebox_trackId'] = {['default']='' , ['enum']={}}, ['FbxV6_IP'] = {['default']='' , ['enum']={}}, ['FbxV6_HddFree'] = {['default']='0' , ['enum']={}}, ['FbxV6_HddTemp'] = {['default']='0' , ['enum']={}}, ['FbxV6_Cnx'] = {['default']='down' , ['enum']={"down","going_down","going_up","up"}}, ['FbxV6_WiFi'] = {['default']='Inactif', ['enum']={"Actif","Inactif"}}, ['FbxV6_CPUbTemp'] = {['default']='0' , ['enum']={}}, ['FbxV6_CPUmTemp'] = {['default']='0' , ['enum']={}}, ['FbxV6_SwTemp'] = {['default']='0' , ['enum']={}}, ['FbxV6_FanRPM'] = {['default']='0' , ['enum']={}}, ['FbxV6_FwVersion'] = {['default']='0' , ['enum']={}}, ['FbxV6_WiFiDev1'] = {['default']='0' , ['enum']={}}, ['FbxV6_WiFiDev2'] = {['default']='0' , ['enum']={}} } -- Function : Create global variable function CreateVG(varName, varValue, varEnum) local isEnum = (#varEnum > 0) and 1 or 0 local HC2 = Net.FHttp("127.0.0.1", 11111) local payload = '{"name":"'..varName..'","isEnum":'..isEnum..',"value":"'..(varValue or "")..'"}' local response, status, errorCode = HC2:POST("/api/globalVariables/"..varName, payload) if tonumber(errorCode) == 0 and (tonumber(status) == 200 or tonumber(status) == 201) and response ~= nil and response ~= "" then fibaro:debug('Global variable "'..varName..'" created') if isEnum > 0 then local payload = '{"name":"'..varName..'","isEnum":true,"enumValues":'..json.encode(varEnum)..'}' local response, status, errorCode = HC2:PUT("/api/globalVariables/"..varName, payload) if tonumber(errorCode) == 0 and (tonumber(status) == 200 or tonumber(status) == 201) and response ~= nil and response ~= "" then fibaro:debug('Global variable "'..varName..'" modified with enum values') else fibaro:debug('<span style="display:inline;color:red;">Error : Can not modify enum global variable, errorCode='..errorCode..', status='..status..', payload='..payload..', response='..(response or "")..'</span>') end end else fibaro:debug('<span style="display:inline;color:red;">Error : Can not create global variable, errorCode='..errorCode..', status='..status..', payload='..payload..', response='..(response or "")..'</span>') end HC2 = nil end -- Check if global variables exist local HC2 = Net.FHttp("127.0.0.1", 11111) for vg, param in pairs(VG) do fibaro:debug("Check if global variable '"..vg.."' exists") local response, status, errorCode = HC2:GET("/api/globalVariables/"..vg) if tonumber(errorCode) == 0 and tonumber(status) == 200 and response ~= nil and response ~= "" then local jsonTable = json.decode(response) if not jsonTable.name or jsonTable.name ~= vg then fibaro:debug('Response OK but global variable "'..vg..'" does not exist...') CreateVG(vg, param['default'], param['enum']) end else fibaro:debug('Global variable "'..vg..'" does not exist...') CreateVG(vg, param['default'], param['enum']) end end end -- if not VG Exemple de résultat attendu dans la fenêtre de debug : [DEBUG] 23:44:02: Check if global variable 'FbxV6_WiFiDev2' exists [DEBUG] 23:44:02: Global variable "FbxV6_WiFiDev2" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_WiFiDev2" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_Cnx' exists [DEBUG] 23:44:02: Global variable "FbxV6_Cnx" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_Cnx" created [DEBUG] 23:44:02: Global variable "FbxV6_Cnx" modified with enum values [DEBUG] 23:44:02: Check if global variable 'p_freebox_appToken' exists [DEBUG] 23:44:02: Global variable "p_freebox_appToken" does not exist... [DEBUG] 23:44:02: Global variable "p_freebox_appToken" created [DEBUG] 23:44:02: Check if global variable 'p_freebox_lastcmd' exists [DEBUG] 23:44:02: Global variable "p_freebox_lastcmd" does not exist... [DEBUG] 23:44:02: Global variable "p_freebox_lastcmd" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_WiFiDev1' exists [DEBUG] 23:44:02: Global variable "FbxV6_WiFiDev1" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_WiFiDev1" created [DEBUG] 23:44:02: Check if global variable 'p_freebox_trackId' exists [DEBUG] 23:44:02: Global variable "p_freebox_trackId" does not exist... [DEBUG] 23:44:02: Global variable "p_freebox_trackId" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_FwVersion' exists [DEBUG] 23:44:02: Global variable "FbxV6_FwVersion" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_FwVersion" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_HddTemp' exists [DEBUG] 23:44:02: Global variable "FbxV6_HddTemp" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_HddTemp" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_SwTemp' exists [DEBUG] 23:44:02: Global variable "FbxV6_SwTemp" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_SwTemp" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_FanRPM' exists [DEBUG] 23:44:02: Global variable "FbxV6_FanRPM" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_FanRPM" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_CPUbTemp' exists [DEBUG] 23:44:02: Global variable "FbxV6_CPUbTemp" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_CPUbTemp" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_WiFi' exists [DEBUG] 23:44:02: Global variable "FbxV6_WiFi" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_WiFi" created [DEBUG] 23:44:02: Global variable "FbxV6_WiFi" modified with enum values [DEBUG] 23:44:02: Check if global variable 'FbxV6_IP' exists [DEBUG] 23:44:02: Global variable "FbxV6_IP" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_IP" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_CPUmTemp' exists [DEBUG] 23:44:02: Global variable "FbxV6_CPUmTemp" does not exist... [DEBUG] 23:44:02: Global variable "FbxV6_CPUmTemp" created [DEBUG] 23:44:02: Check if global variable 'FbxV6_HddFree' exists [DEBUG] 23:44:02: Global variable "FbxV6_HddFree" does not exist... [DEBUG] 23:44:03: Global variable "FbxV6_HddFree" created
- 329 réponses
-
- 1
-
-
Hum.... Essaye d'analyser les appels dans l'onglet réseau des outils de dev (touche F12) , il faut essayer de comprendre la logique de cette interface web.
- 228 réponses
-
Non mon clavier n'a pas buggué
- 85 réponses
-
- Waze
- Waze Calulator
-
(et 2 en plus)
Étiqueté avec :
-
Bon finalement j'ai modifié la chaine de recherche, car elle supprimait la première et dernière ligne des commentaires LUA sur plusieurs lignes : --[[ blah blah blah --]] Donc ils sont exclus avec cette regex : ^\s*\-\-(?!(\[\[)|(\]\])).*$
- 85 réponses
-
- Waze
- Waze Calulator
-
(et 2 en plus)
Étiqueté avec :
-
ah voilà , y'a bien des Frames. Essaye de regarder le contenu de : /userRpm/StatusRpm.htm ça a l'air d'être la frame principale. Regarde son contenu, et essaye de trouver un texte significatif (= qui te permette de différencier quand la module est opérationnel, de quand il est planté ou reboot)
- 228 réponses
-
Un exemple d'expression régulière utilisée à l'instant : ^\s*\-\-.*$ => permet de trouver une ligne contenant uniquement des commentaires LUA, commençant par "--", avec éventuellement des espaces ou tabulations devant. Par conséquent, les commentaires situés en fin de ligne après du code source ne seront pas pris en compte. Explication : ^ = début de ligne \s = espace (tabulation ou espace) * = quelque soit le nombre de caractère précédent (donc l'espace dans le cas présent) \- = un tiret \- = un second tiret . = n'importe quel caractère * = quelque soit le nombre de caractère précédent (donc n'importe quel caractère dans le cas présent) $ = fin de ligne Source : http://www.domotique-fibaro.fr/index.php/topic/328-plugin-freebox-v6/?p=95853
- 85 réponses
-
- Waze
- Waze Calulator
-
(et 2 en plus)
Étiqueté avec :