Thermostat ELV/eQ-3/Conrad Max! / MaxCube

J’ai trouver ceci sur un forum. Quelqu’un sais m’expliquer svp je ne sais pas comment faire. Merci

Le demon qui ne voulait plus démarrer alors que l’IP de mon MAX!Cube était bonne. J’ai voulu réinstaller les dépendances et ça indiquait « erreur ». Du coup j’ai supprimé le plugin pour le remettre mais idem. Seul solution, allez attaquer le script qui ce trouve dans : /var/www/html/plugins/maxcube/resources/install_maxcube.sh

L’exécuter et voir ou ça bloque. Ça bloquait à 2 niveaux le premier, de ma faute, j’avais bien un fichier dans tmp mais j’avais bidouillé le dossier et supprimer les droits de modification ( oups ) le deuxième « sudo apt-get install -y nodejs npm ». Corrigé en faisant un apt-get update. Surement du à mes sources qui n’était plus à jours.

Je viens d’aller voir mon script, ça vous parle ?

#!/bin/bash
ME=cd $(dirname $0); pwd

touch /tmp/maxcube_in_progress
echo 0 > /tmp/maxcube_in_progress
echo « Installing maxcube dependencies »

sudo apt-get install -y git
echo 10 > /tmp/maxcube_in_progress
BIN=which node
if [ « $BIN » = «  » ]; then
BIN=which nodejs
fi
if [ « $BIN » = «  » ]; then
echo « No nodejs found »
major=0
else
actual=$BIN -v
major=$BIN -v | sed "s#v##" | sed "s#[.].*##"
echo « Current version: ${actual} (major $major) »
fi

echo 30 > /tmp/maxcube_in_progress
if [ arch == « armv6l » -a $major -lt 5 ]; then
echo « Raspberry 1 detected, using armv6 package »
sudo npm rebuild
sudo apt-get -y --purge autoremove nodejs npm
sudo rm /etc/apt/sources.list.d/nodesource.list
wget http://node-arm.herokuapp.com/node_latest_armhf.deb
sudo dpkg -i node_latest_armhf.deb
rm node_latest_armhf.deb
elif [ $major -lt 8 ]; then
echo « using official repository »
curl -sL https://deb.nodesource.com/setup_8.x | sudo -E bash -
sudo apt-get install -y nodejs npm
fi

BIN=which node
if [ « $BIN » = «  » ]; then
BIN=which nodejs
fi
new=$BIN -v;
echo « new version installed: ${new} »

echo 50 > /tmp/maxcube_in_progress
git --version
cd $ME/maxcube.js
sudo rm -rf node_modules ~/.npm
npm i
echo 100 > /tmp/maxcube_in_progress
rm /tmp/maxcube_in_progress

Le plugin est pas compatible v4, faut changer un peu le script. Mais c’est largement faisable !

d’ailleurs fensoft tu penses pousser une version compatible v4 ?

si c’est le object → jeeObject, il est en beta il me semble

et concernant nodejs, s’il y a une version superieure ça ne touche à rien

Oui c’est bien le passage vers jeeObject.

T’as le multi cube en béta ? Si oui je bascule peut être ^^

pour info, je suis en train de reprendre le dev jeedom sur un autre plugin, j’en profiterais pour update celui ci !

1 « J'aime »

Bonjour fensoft,

rançon du succès, j’attends avec impatience une version compatible de Maxcube avec V4 … pour relancer mon installation qui est aveugle maintenant.

à bientôt.

ça marche en v4 si tu change le object en jeeobject comme décrit si dessus.

1 « J'aime »

Très bonne nouvelle fensoft !

Si en plus il y a le multi cubes :stuck_out_tongue: :smiley:

Merci pour l’info.
J’ai modifié récemment quelques consignes de température des vannes thermostatiques avec l’appli Maxcube. Suite à cette modif, le daemon ne démarrait plus.

Le log du daemon en debug:

[2021-02-17T17:06:31+00:00] Data received: C [0c6ee7]
buffer.js:330
throw new ERR_INVALID_ARG_TYPE(
^
TypeError [ERR_INVALID_ARG_TYPE]: The first argument must be of type string or an instance of Buffer, ArrayBuffer, or Array or an Array-like Object. Received undefined
at Function.from (buffer.js:330:9)
at new Buffer (buffer.js:286:17)
at MaxCube.parseCommandConfiguration (/var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/maxcube/maxcube.js:364:24)
at MaxCube.parseCommand (/var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/maxcube/maxcube.js:212:40)
at Socket.<anonymous> (/var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/maxcube/maxcube.js:81:36)
at Socket.emit (events.js:314:20)
at addChunk (_stream_readable.js:297:12)
at readableAddChunk (_stream_readable.js:272:9)
at Socket.Readable.push (_stream_readable.js:213:10)
at TCP.onStreamRead (internal/stream_base_commons.js:188:23) {
code: 'ERR_INVALID_ARG_TYPE'
}

Résolu en modifiant le début de la fonction parseCommandConfiguration dans le fichier maxcube.js

function parseCommandConfiguration (payload) {
  if (payload.length == 0 || payload.indexOf(",") == -1 ) {
    // log('Skipped payload: ' +payload.toString('hex'));
    return; // Payload vide ou mal formé
  }

0c6ee7 est le rf_address d’une vanne thermo qui est dans le group_rf_address 0c6ee7 avec le thermostat mural et le contact de fenêtre.

Nodejs v12.20.2 sur ma Smart en buster

tu as update node j’imagine, reinstalle les dépendances

Bonjour @fensoft

J’ai migré ma Smart en Buster en début d’année.
node v12 a été installé par le plugin alexa-api à ce moment.
Les dépendances de maxcube ont été installées aussitôt après et le daemon a démarré.

Après modification de la config du cube et reboot de la Smart, le daemon ne démarre plus.

Avec ma correction de maxcube.js, le log contient maintenant:

[2021-02-19T16:52:30+00:00] Data received: C [0c6ee7]
[2021-02-19T16:52:30+00:00] Data received: , [gxu5wEDEKBLRVEwOTEyMjE2JyM9CQcYA3AM/wBHIEcgRyBHIEcgRyBHIEUgRSBFIEUgRSBFIEcgRyBHIEcgRyBHIEcgRSBFIEUgRSBFIEUgRyBHIEcgRyBHIEcgRyBFIEUgRSBFIEUgRSBCtE0gTSBNIE0gTSBNIEUgRSBFIEUgRSBFIExXTttHIEcgRyBHIEcgRSBFIEUgRSBFIEUgRyBHIEcgRyBHIEcgRyBFIEUgRSBFIEUgRSBHIEcgRyBHIEcgRyBHIEUgRSBFIEUgRSBFIA==]
[2021-02-19T16:52:30+00:00] Unknown command type: ,

Je n’ai pas réinstallé les dépendances de maxcube sur ma Smart. Je ne modifie pas ce qui fonctionne.
Je l’ai toutefois fait sur une VM ( en désactivant le daemon de la Smart ). J’ai la même erreur sur la VM.

tu as ajouté des modules et/ou renomé des modules ? il y a un pb avec une config trop longue, essaie de renomer tes devices pour des trucs plus court

Hello fensoft :slight_smile:

Est ce que la beta prend en compte les correctifs sur le multi cube ?

Hello,

Des news sur le plugin fensoft ?

Bon et bien moi je suis planté avec ce plungin qui ne fonctionne plus du tout… C’est moche car ca me fati 15 radiateurs à réequiper…

Ce n’est plus mis a jour mais pour le moment ça fonctionne encore en dernière version jeedom pour moi. Tu as fais quoi que ça ne vas plus?

Bonjour,
Avec les modifs décrites dans ce post: Le daemon maxcube ne peut plus remonter les informations au plugin
il fonctionne encore chez moi.
Avez-vous les erreurs ? « Vous n’êtes pas autorisé à effectuer cette action »

Oui pareil chez moi j’ai du faire ces modifications aussi :+1:

Bon, je m’en sortait pas et du coup j’ai désinstallé le pligin pour le réinstaller…

Résultat, impossible d’installer les dépendances… :frowning:

une idée pour m’en sortir ?

+++ dirname /var/www/html/plugins/maxcube/core/class/../../resources/install_maxcube.sh
++ cd /var/www/html/plugins/maxcube/core/class/../../resources
++ pwd
+ ME=/var/www/html/plugins/maxcube/resources
+ touch /tmp/maxcube_in_progress
+ echo 0
+ echo 'Installing maxcube dependencies'
Installing maxcube dependencies
+ sudo apt-get install -y git
Reading package lists...
Building dependency tree...
Reading state information...
git is already the newest version (1:2.20.1-2+deb10u4).
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
+ echo 10
++ which node
+ BIN=/usr/bin/node
+ '[' /usr/bin/node = '' ']'
+ '[' /usr/bin/node = '' ']'
++ /usr/bin/node -v
+ actual=v16.18.1
++ /usr/bin/node -v
++ sed s#v##
++ sed 's#[.].*##'
+ major=16
+ echo 'Current version: v16.18.1 (major 16)'
Current version: v16.18.1 (major 16)
+ echo 30
++ arch
+ '[' armv7l == armv6l -a 16 -lt 5 ']'
+ '[' 16 -lt 8 ']'
++ which node
+ BIN=/usr/bin/node
+ '[' /usr/bin/node = '' ']'
++ /usr/bin/node -v
+ new=v16.18.1
+ echo 'new version installed: v16.18.1'
new version installed: v16.18.1
+ echo 50
+ git --version
git version 2.20.1
+ cd /var/www/html/plugins/maxcube/resources/maxcube.js
+ sudo rm -rf node_modules
+ echo 'cache = "/var/www/html/plugins/maxcube/resources/npm-cache"'
+ npm i
npm WARN old lockfile
npm WARN old lockfile The package-lock.json file was created with an old version of npm,
npm WARN old lockfile so supplemental metadata must be fetched from the registry.
npm WARN old lockfile
npm WARN old lockfile This is a one-time fix-up, please be patient...
npm WARN old lockfile
npm WARN deprecated har-validator@5.1.3: this library is no longer supported
npm WARN deprecated uuid@3.3.2: Please upgrade  to version 7 or higher.  Older versions may use Math.random() in certain circumstances, which is known to be problematic.  See https://v8.dev/blog/math-random for details.
npm WARN deprecated request@2.88.0: request has been deprecated, see https://github.com/request/request/issues/3142
npm ERR! code 1
npm ERR! path /var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/sleep
npm ERR! command failed
npm ERR! command sh -c node-gyp rebuild
npm ERR! make: Entering directory '/var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/sleep/build'
npm ERR!   CXX(target) Release/obj.target/node_sleep/module_init.o
npm ERR! make: Leaving directory '/var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/sleep/build'
npm ERR! gyp info it worked if it ends with ok
npm ERR! gyp info using node-gyp@9.3.0
npm ERR! gyp info using node@16.18.1 | linux | arm
npm ERR! gyp info find Python using Python version 3.7.3 found at "/usr/bin/python3"
npm ERR! gyp info spawn /usr/bin/python3
npm ERR! gyp info spawn args [
npm ERR! gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/gyp/gyp_main.py',
npm ERR! gyp info spawn args   'binding.gyp',
npm ERR! gyp info spawn args   '-f',
npm ERR! gyp info spawn args   'make',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/sleep/build/config.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/usr/lib/node_modules/npm/node_modules/node-gyp/addon.gypi',
npm ERR! gyp info spawn args   '-I',
npm ERR! gyp info spawn args   '/var/www/.cache/node-gyp/16.18.1/include/node/common.gypi',
npm ERR! gyp info spawn args   '-Dlibrary=shared_library',
npm ERR! gyp info spawn args   '-Dvisibility=default',
npm ERR! gyp info spawn args   '-Dnode_root_dir=/var/www/.cache/node-gyp/16.18.1',
npm ERR! gyp info spawn args   '-Dnode_gyp_dir=/usr/lib/node_modules/npm/node_modules/node-gyp',
npm ERR! gyp info spawn args   '-Dnode_lib_file=/var/www/.cache/node-gyp/16.18.1/<(target_arch)/node.lib',
npm ERR! gyp info spawn args   '-Dmodule_root_dir=/var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/sleep',
npm ERR! gyp info spawn args   '-Dnode_engine=v8',
npm ERR! gyp info spawn args   '--depth=.',
npm ERR! gyp info spawn args   '--no-parallel',
npm ERR! gyp info spawn args   '--generator-output',
npm ERR! gyp info spawn args   'build',
npm ERR! gyp info spawn args   '-Goutput_dir=.'
npm ERR! gyp info spawn args ]
npm ERR! gyp info spawn make
npm ERR! gyp info spawn args [ 'BUILDTYPE=Release', '-C', 'build' ]
npm ERR! In file included from ../../nan/nan_converters.h:67,
npm ERR!                  from ../../nan/nan.h:222,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! ../../nan/nan_converters_43_inl.h: In static member function 'static Nan::imp::ToFactoryBase::return_t Nan::imp::ToFactory::convert(v8::Local)':
npm ERR! ../../nan/nan_converters_43_inl.h:18:51: error: no matching function for call to 'v8::Value::ToBoolean(v8::Local)'
npm ERR!        val->To ## TYPE(isolate->GetCurrentContext())                            \
npm ERR!                                                    ^
npm ERR! ../../nan/nan_converters_43_inl.h:22:1: note: in expansion of macro 'X'
npm ERR!  X(Boolean)
npm ERR!  ^
npm ERR! In file included from /var/www/.cache/node-gyp/16.18.1/include/node/node.h:73,
npm ERR!                  from ../../nan/nan.h:53,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:3086:18: note: candidate: 'v8::Local v8::Value::ToBoolean(v8::Isolate*) const'
npm ERR!    Local ToBoolean(Isolate* isolate) const;
npm ERR!                   ^~~~~~~~~
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:3086:18: note:   no known conversion for argument 1 from 'v8::Local' to 'v8::Isolate*'
npm ERR! In file included from ../../nan/nan_converters.h:67,
npm ERR!                  from ../../nan/nan.h:222,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! ../../nan/nan_converters_43_inl.h: In static member function 'static Nan::imp::ValueFactoryBase::return_t Nan::imp::ToFactory::convert(v8::Local)':
npm ERR! ../../nan/nan_converters_43_inl.h:37:57: error: no matching function for call to 'v8::Value::BooleanValue(v8::Local)'
npm ERR!    return val->NAME ## Value(isolate->GetCurrentContext());                     \
npm ERR!                                                          ^
npm ERR! ../../nan/nan_converters_43_inl.h:40:1: note: in expansion of macro 'X'
npm ERR!  X(bool, Boolean)
npm ERR!  ^
npm ERR! In file included from /var/www/.cache/node-gyp/16.18.1/include/node/node.h:73,
npm ERR!                  from ../../nan/nan.h:53,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:3096:8: note: candidate: 'bool v8::Value::BooleanValue(v8::Isolate*) const'
npm ERR!    bool BooleanValue(Isolate* isolate) const;
npm ERR!         ^~~~~~~~~~~~
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:3096:8: note:   no known conversion for argument 1 from 'v8::Local' to 'v8::Isolate*'
npm ERR! In file included from ../../nan/nan_new.h:189,
npm ERR!                  from ../../nan/nan.h:223,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! ../../nan/nan_implementation_12_inl.h: In static member function 'static Nan::imp::FactoryBase::return_t Nan::imp::Factory::New(v8::Local)':
npm ERR! ../../nan/nan_implementation_12_inl.h:356:37: error: no matching function for call to 'v8::StringObject::New(v8::Local&)'
npm ERR!    return v8::StringObject::New(value).As();
npm ERR!                                      ^
npm ERR! In file included from /var/www/.cache/node-gyp/16.18.1/include/node/node.h:73,
npm ERR!                  from ../../nan/nan.h:53,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:6196:23: note: candidate: 'static v8::Local v8::StringObject::New(v8::Isolate*, v8::Local)'
npm ERR!    static Local New(Isolate* isolate, Local value);
npm ERR!                        ^~~
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:6196:23: note:   candidate expects 2 arguments, 1 provided
npm ERR! In file included from ../../nan/nan_new.h:189,
npm ERR!                  from ../../nan/nan.h:223,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! ../../nan/nan_implementation_12_inl.h:356:58: error: expected primary-expression before '>' token
npm ERR!    return v8::StringObject::New(value).As();
npm ERR!                                                           ^
npm ERR! ../../nan/nan_implementation_12_inl.h:356:60: error: expected primary-expression before ')' token
npm ERR!    return v8::StringObject::New(value).As();
npm ERR!                                                             ^
npm ERR! In file included from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! ../../nan/nan.h: In function 'void Nan::AsyncQueueWorker(Nan::AsyncWorker*)':
npm ERR! ../../nan/nan.h:2232:62: warning: cast between incompatible function types from 'void (*)(uv_work_t*)' {aka 'void (*)(uv_work_s*)'} to 'uv_after_work_cb' {aka 'void (*)(uv_work_s*, int)'} [-Wcast-function-type]
npm ERR!      , reinterpret_cast(AsyncExecuteComplete)
npm ERR!                                                               ^
npm ERR! In file included from /usr/include/c++/8/cassert:44,
npm ERR!                  from /var/www/.cache/node-gyp/16.18.1/include/node/node_object_wrap.h:26,
npm ERR!                  from ../../nan/nan.h:55,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! ../../nan/nan_object_wrap.h: In destructor 'virtual Nan::ObjectWrap::~ObjectWrap()':
npm ERR! ../../nan/nan_object_wrap.h:24:25: error: 'class Nan::Persistent' has no member named 'IsNearDeath'
npm ERR!      assert(persistent().IsNearDeath());
npm ERR!                          ^~~~~~~~~~~
npm ERR! ../../nan/nan_object_wrap.h: In static member function 'static void Nan::ObjectWrap::WeakCallback(const v8::WeakCallbackInfo&)':
npm ERR! ../../nan/nan_object_wrap.h:127:26: error: 'class Nan::Persistent' has no member named 'IsNearDeath'
npm ERR!      assert(wrap->handle_.IsNearDeath());
npm ERR!                           ^~~~~~~~~~~
npm ERR! ../module_init.cc: At global scope:
npm ERR! ../module_init.cc:4:11: error: 'v8::Handle' has not been declared
npm ERR!  using v8::Handle;
npm ERR!            ^~~~~~
npm ERR! ../module_init.cc: In function 'void init(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)':
npm ERR! ../module_init.cc:23:54: error: no matching function for call to 'v8::FunctionTemplate::GetFunction()'
npm ERR!      Nan::New(MUSleep)->GetFunction());
npm ERR!                                                       ^
npm ERR! In file included from /var/www/.cache/node-gyp/16.18.1/include/node/node.h:73,
npm ERR!                  from ../../nan/nan.h:53,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:6802:46: note: candidate: 'v8::MaybeLocal v8::FunctionTemplate::GetFunction(v8::Local)'
npm ERR!    V8_WARN_UNUSED_RESULT MaybeLocal GetFunction(
npm ERR!                                               ^~~~~~~~~~~
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/v8.h:6802:46: note:   candidate expects 1 argument, 0 provided
npm ERR! In file included from ../../nan/nan.h:53,
npm ERR!                  from ../sleep.h:4,
npm ERR!                  from ../module_init.cc:1:
npm ERR! ../module_init.cc: At global scope:
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/node.h:887:43: warning: cast between incompatible function types from 'void (*)(Nan::ADDON_REGISTER_FUNCTION_ARGS_TYPE)' {aka 'void (*)(v8::Local)'} to 'node::addon_register_func' {aka 'void (*)(v8::Local, v8::Local, void*)'} [-Wcast-function-type]
npm ERR!        (node::addon_register_func) (regfunc),                          \
npm ERR!                                            ^
npm ERR! /var/www/.cache/node-gyp/16.18.1/include/node/node.h:921:3: note: in expansion of macro 'NODE_MODULE_X'
npm ERR!    NODE_MODULE_X(modname, regfunc, NULL, 0)  // NOLINT (readability/null_usage)
npm ERR!    ^~~~~~~~~~~~~
npm ERR! ../module_init.cc:26:1: note: in expansion of macro 'NODE_MODULE'
npm ERR!  NODE_MODULE(node_sleep, init)
npm ERR!  ^~~~~~~~~~~
npm ERR! make: *** [node_sleep.target.mk:114: Release/obj.target/node_sleep/module_init.o] Error 1
npm ERR! gyp ERR! build error
npm ERR! gyp ERR! stack Error: `make` failed with exit code: 2
npm ERR! gyp ERR! stack     at ChildProcess.onExit (/usr/lib/node_modules/npm/node_modules/node-gyp/lib/build.js:203:23)
npm ERR! gyp ERR! stack     at ChildProcess.emit (node:events:513:28)
npm ERR! gyp ERR! stack     at Process.ChildProcess._handle.onexit (node:internal/child_process:293:12)
npm ERR! gyp ERR! System Linux 5.10.103-v7l+
npm ERR! gyp ERR! command "/usr/bin/node" "/usr/lib/node_modules/npm/node_modules/node-gyp/bin/node-gyp.js" "rebuild"
npm ERR! gyp ERR! cwd /var/www/html/plugins/maxcube/resources/maxcube.js/node_modules/sleep
npm ERR! gyp ERR! node -v v16.18.1
npm ERR! gyp ERR! node-gyp -v v9.3.0
npm ERR! gyp ERR! not ok
npm ERR! A complete log of this run can be found in:
npm ERR!     /var/www/html/plugins/maxcube/resources/npm-cache/_logs/2022-12-03T13_23_02_468Z-debug-0.log
+ echo 100
+ rm /tmp/maxcube_in_progress