Internal API non fonctionnel sur Debian 12

Bonjour,
Ce plugin est vraiment très complet par contre il ne fonctionne pas sur Debian 12 et voici les information et les logs de mes vaines tentatives:
La page Santé

Plugin MyUplink Internal API
Branche : beta
Source : market
Version : v1.2 (2024-08-14 01:24:25)

Après l’activation du plugin
Log cron-execution

2033|[Erreur] myuplink_internal::update() : Unsupported operand types: string - int [Erreur] myuplink_internal::update() : Unsupported operand types: string - int [Erreur] myuplink_internal::update() : Unsupported operand types: string - int    [Erreur] myuplink_internal::update() : Unsupported operand types: string - int [Erreur] myuplink_internal::update() : Unsupported operand types: string - int

Log MyUplink_Internal

0000|[2024-11-25 16:51:45] INFO  Début d'activation du plugin
0001|[2024-11-25 16:51:46] INFO  Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
0002|[2024-11-25 16:51:46] DEBUG  Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=myuplink_internal function=install callInstallFunction=1
0003|[2024-11-25 16:52:03] ERROR  Erreur sur myuplink_internal::update() : Unsupported operand types: string - int
0004|[2024-11-25 16:53:02] DEBUG  Début update
0005|[2024-11-25 16:53:02] DEBUG  Début updateAllEqLogic
0006|[2024-11-25 16:53:02] DEBUG  Début checkToken
0007|[2024-11-25 16:53:02] ERROR  Erreur sur myuplink_internal::update() : Unsupported operand types: string - int
0008|[2024-11-25 16:54:02] DEBUG  Début update
0009|[2024-11-25 16:54:02] DEBUG  Début updateAllEqLogic
0010|[2024-11-25 16:54:02] DEBUG  Début checkToken
0011|[2024-11-25 16:54:02] ERROR  Erreur sur myuplink_internal::update() : Unsupported operand types: string - int
0012|[2024-11-25 16:55:03] DEBUG  Début update
0013|[2024-11-25 16:55:03] DEBUG  Début updateAllEqLogic
0014|[2024-11-25 16:55:03] DEBUG  Début checkToken
0015|[2024-11-25 16:55:03] ERROR  Erreur sur myuplink_internal::update() : Unsupported operand types: string - int

Lors de la synchronisation affichage sur fond rouge « 500:Internal Server Error »
Log Http.error lors de la synchronisation

0114[Mon Nov 25 17:06:50.756473 2024] [php:error] [pid 836425:tid 836425] [client 192.168.0.139:65097] PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string - int in /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php:305\nStack trace:\n#0 /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php(459): myuplink_internal::checkToken()\n#1 /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php(165): myuplink_internal::getDevices()\n#2 /var/www/html/plugins/myuplink_internal/core/ajax/myuplink_internal.ajax.php(34): myuplink_internal::syncMyUplink()\n#3 {main}\n  thrown in /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php on line 305, referer: http://192.168.0.209/index.php?v=d&m=myuplink_internal&p=myuplink_internal
0115|[Mon Nov 25 17:07:54.944221 2024] [php:error] [pid 1811351:tid 1811351] [client 192.168.0.139:65199] PHP Fatal error:  Uncaught TypeError: Unsupported operand types: string - int in /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php:305\nStack trace:\n#0 /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php(459): myuplink_internal::checkToken()\n#1 /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php(165): myuplink_internal::getDevices()\n#2 /var/www/html/plugins/myuplink_internal/core/ajax/myuplink_internal.ajax.php(34): myuplink_internal::syncMyUplink()\n#3 {main}\n  thrown in /var/www/html/plugins/myuplink_internal/core/class/myuplink_internal.class.php on line 305, referer: http://192.168.0.209/index.php?v=d&m=myuplink_internal&p=myuplink_internal

Est ce que l’auteur du plugin ( flobul - DomoFlo1) ou bien une main experte peut adapter celui-ci (Debian12 et PHP8) ?

Merci d’avance
Jean Yves


Informations Jeedom

Matériel	odroidn2
Version Jeedom	4.5
Version OS	debian 12.7	Version PHP	8.2.24
Version OS	Linux odroidn2 6.6.47-current-meson64 #3 SMP PREEMPT Mon Aug 19 04:04:32 UTC 2024 aarch64 GNU/Linux [12.7]

Bonjour.

Merci pour le retour.
Je regarde ça dès que j’ai un moment.

J’ai poussé un mini fix.

Bonjour,
Merci pour cette réactivité. Le plugin fonctionne avec des erreurs.
La commande « Dernière notification » affiche:
string with translation id: 0 not found (EB100-EP14)
Sévérité 0
Le 2024-06-17 09:52:10
string with translation id: 0 not found

Log myuplink_internal

0000|[2024-11-26 13:01:43] ERROR  Erreur : Erreur inconnue code 0
0001|[2024-11-26 13:42:02] ERROR  Erreur : Erreur inconnue code 504

Serait-il possible pour les informations d’uniformiser le message (En marche ou Marche ainsi que arrêt et Arrêt)?
De plus, un peu hors sujet, le plugin myuplink comporte le même type d’erreur semble-t-il à la ligne 623 du fichier myuplink.class.php.

Encore merci pour cette action rapide.
Bonne journée.

Tu peux m’envoyer les logs stp.
Ils devraient commencer par :

68082|[2024-11-26 17:54:12] DEBUG  Début getNotif
68083|[2024-11-26 17:54:17] DEBUG  La requête GET : /v2/devices/XXXXXX-20XX-XX-XX-XX-XX-XX/alerts/paged/all?page=1&pageSize=10 a réussi code = 200 résultat = {
...

L’information récupérée est de ce style :

{
  "parameterId": "12594",
  "rawValue": 1,
  "kind": "Number",
  "value": 1.0,
  "unit": null,
  "isPending": false,
  "pendingValue": null,
  "timestamp": "2024-11-03T07:44:34+00:00",
  "minVal": null,
  "maxVal": null
}

On voit la valeur 1.0.
Le plugin vient rechercher cette valeur dans la liste des valeurs possibles qu’il a sauvegardé à la création de la commande (dans configuration → enumVal)

A la création de la commande, voilà les infos qu’il vient récupérer :

{
  "parameterId": "12594",
  "parameterName": "Pompe : Circuit chauf­fage (GP1)\r\n            ",
  "parameterUnit": "",
  "type": "display",
  "icon": null,
  "text": "Pompe : Circuit chauf­fage (GP1)\r\n            ",
  "deviceId": "20328283-2020-11-27-19-48-43",
  "accessLevel": "Paid",
  "maxVal": "",
  "minVal": "",
  "decimals": "0",
  "enumVal": "-1,0,1",
  "enumTextName": null,
  "scaleVal": "1",
  "kind": "Number",
  "disTextId": "36730",
  "settingType": null,
  "stepVal": "1",
  "stepValScaled": null,
  "defaultVal": "",
  "parameter": {
    "id": "12594",
    "name": "Pompe : Circuit chauf­fage (GP1)\r\n            ",
    "unit": "",
    "accessLevel": "Paid",
    "maxVal": "",
    "minVal": "",
    "decimals": "0",
    "scaleVal": "1",
    "kind": "Number",
    "stepVal": "1",
    "stepValScaled": "1",
    "defaultVal": "",
    "enumVal": "-1,0,1",
    "enumTextId": "16016,15003,15016",
    "disTextId": "36730",
    "enumValues": [{
      "value": "-1",
      "text": "Calibrage",
      "icon": ""
    }, {
      "value": "0",
      "text": "Arrêt",
      "icon": ""
    }, {
      "value": "1",
      "text": "Marche",
      "icon": ""
    }],
    "settingType": null,
    "tilePrio": "110",
    "tilePrioText": "",
    "tilePrioTextId": "",
    "techId": null,
    "techDis": "",
    "dis": "Pump: Heating medium (GP1)",
    "interceptVal": "0",
    "chart": false,
    "enumIconId": "",
    "iconAnimate": ["none"],
    "iconId": "",
    "tileIcon": false,
    "tileAnimate": ["none"],
    "tileText": "",
    "tileTextId": "",
    "valEm": [],
    "presentation": "display",
    "tileCollapsed": false,
    "dependOn": {},
    "dependOr": {},
    "dependOpt": {},
    "help": null,
    "helpTextId": null,
    "prio": "",
    "curveStyle": "binary",
    "textInput": "text",
    "textHelper": "none",
    "textRegex": "",
    "isWritable": false,
    "maxLen": null,
    "desc": "",
    "descType": "Default",
    "tileGroup": "",
    "shZoneIcon": "",
    "disableOn": {}
  }

On voit :
-1 : « Cablibrage »
0 : Arrêt
1 : Marche.

Ce sont les données fournies par l’API, donc pas possible de les modifier à la création.

Par contre, tu peux le faire en bloc code. Le code pour lire la valeur en log scenario:

$cmd = cmd::byId(123455); // mets ton ID de commande
$enum = $cmd->setConfiguration('enumVal');
$scenario->setLog("ENUM=>".$enum);

Donne :

[2024-11-26 18:15:04][SCENARIO] ENUM=>{"-1":"Calibrage","0":"Arr\u00eat","1":"Marche"}

Et pour écrire la nouvelle valeur :

$cmd = cmd::byId(123455); // mets ton ID de commande
$cmd->setConfiguration('enumVal', json_decode('{"-1":"Calibrage","0":"En arr\u00eat","1":"En marche"}',true))->save();

Attention bien respecter les guillemets, virgule du json.

J’ai cherché, et je trouve que c’est exactement le message que Nibe envoie : https://nathan.compano.com/Data/Environments/000105/Attachment/Bijlage/MET/MTE/myUplink%20met%20SMO40.pdf

Donc RAS pour moi, c’est ce que contiennent les champs « header », et « description ».

Ca malheureusement, c’est ce que répond le serveur myuplink parfois.
Je ne peux rien y faire.

Bonsoir,
Voici le log

0000|[2024-11-26 18:38:45] INFO  Début d'activation du plugin
0001|[2024-11-26 18:38:46] INFO  Info sur le démon : {"launchable_message":"","launchable":"nok","state":"nok","log":"nok","auto":0}
0002|[2024-11-26 18:38:46] DEBUG  Lancement de : /var/www/html/core/class/../../core/php/jeePlugin.php  plugin_id=myuplink_internal function=install callInstallFunction=1

Je vais m’arranger pour la présentation des commandes. C’est vrai que ces différences de formulations se retrouvent sur le site internet.
Bonne soirée.

J’ai encore poussé une correction pour le bouton Connexion.

Et mis à jour l’autre plugin myuplink également.

Bonjour,
Tout fonctionne, il n’y a plus de message d’erreur.
Encore merci et bonne journée.

Ce sujet a été automatiquement fermé après 24 heures suivant le dernier commentaire. Aucune réponse n’est permise dorénavant.