Read the statement by Michael Teeuw here.
JSON request module
-
@ELMAGO
I added some to the [documentation] (https://github.com/Tom-Hirschberger/MMM-ValuesByNotification/blob/main/doc/value.md) of the module.
As there can be used any build-in JavaScript function invalueFormat
there are nearly endless possibilities. -
good evening,
I tested the replace function:
{ module: "MMM-ValuesByNotification", position: "top_right", header: "INFORMATION MÉGANE", config: { updateInterval: 300, reuseCount: 100, addClassesRecursive: true, valueFormat: "\"${value}\".replace(\"false\",\"Non\").replace(\"true\",\"Oui\")", groups: [ { items: [ { notification: "AUTBATTMEGANE", itemTitle: "Autonomie ", values: [ { valueUnit: " Km", valueFormat: "Number(${value}).toFixed(2)", jsonpath: "data", }, ] }, { notification: "BATTMEGANE", itemTitle: "Charge batterie ", values: [ { valueUnit: " %", valueFormat: "Number(${value}).toFixed(2)", jsonpath: "data", }, ] }, { notification: "PLUGMEGANE", itemTitle: "Voirture branchée ", classes: "withIcons", valueFormat: "\"${value}\".replace(\"false\",\"Non\").replace(\"true\",\"Oui\")", values: [ { valueFormat: "Number(${value}).toFixed(2)", jsonpath: "data", }, ] }, ] }, ] }, },
But unfortunately it doesn’t work.
Would you know why?
Thanks
-
@ELMAGO As
valueFormat
settings further down in the hierarchy override setting further up you only have to muchvalueFormat
settings.This config should do the trick:
{ module: "MMM-ValuesByNotification", position: "top_right", header: "INFORMATION MÉGANE", config: { updateInterval: 300, reuseCount: 100, addClassesRecursive: true, groups: [ { items: [ { notification: "AUTBATTMEGANE", itemTitle: "Autonomie ", values: [ { valueUnit: " Km", valueFormat: "Number(${value}).toFixed(2)", jsonpath: "data", }, ] }, { notification: "BATTMEGANE", itemTitle: "Charge batterie ", values: [ { valueUnit: " %", valueFormat: "Number(${value}).toFixed(2)", jsonpath: "data", }, ] }, { notification: "PLUGMEGANE", itemTitle: "Voirture branchée ", classes: "withIcons", values: [ { valueFormat: "\"${value}\".replace(\"false\",\"Non\").replace(\"true\",\"Oui\")", jsonpath: "data", }, ] }, ] }, ] }, },
-
I come back here, it will be simpler.
My code is:
//INFORMATION HOMEY EUFY { module: "MMM-CommandToNotification", disabled: false, config: { updateInterval: 300, commands: [ { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/ETATEUFY", timeout: 1000, notifications: [ "ETATEUFY", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMSALLE", timeout: 1000, notifications: [ "CAMSALLE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMPALIER", timeout: 1000, notifications: [ "CAMPALIER", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMARRIERE", timeout: 1000, notifications: [ "CAMARRIERE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMGARAGE", timeout: 1000, notifications: [ "CAMGARAGE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMGAUCHE", timeout: 1000, notifications: [ "CAMGAUCHE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMAVANT", timeout: 1000, notifications: [ "CAMAVANT", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPSALLE", timeout: 1000, notifications: [ "TEMPSALLE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPBUREAU", timeout: 1000, notifications: [ "TEMPBUREAU", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHELENA", timeout: 1000, notifications: [ "TEMPCHELENA", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHLOUCA", timeout: 1000, notifications: [ "TEMPCHLOUCA", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHALAN", timeout: 1000, notifications: [ "TEMPCHALAN", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHPARENT", timeout: 1000, notifications: [ "TEMPCHPARENT", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/AUTBATTMEGANE", timeout: 1000, notifications: [ "AUTBATTMEGANE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/BATTMEGANE", timeout: 1000, notifications: [ "BATTMEGANE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/PLUGMEGANE", timeout: 1000, notifications: [ "PLUGMEGANE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CHARGEMEGANE", timeout: 1000, notifications: [ "CHARGEMEGANE", ], }, ] }, },
So I think it launches all requests at the same time, because my server which must answer crashes.
I wanted to split it like this:
//INFORMATION HOMEY EUFY { module: "MMM-CommandToNotification", disabled: false, config: { updateInterval: 300, commands: [ { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/ETATEUFY", timeout: 1000, notifications: [ "ETATEUFY", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMSALLE", timeout: 1000, notifications: [ "CAMSALLE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMPALIER", timeout: 1000, notifications: [ "CAMPALIER", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMARRIERE", timeout: 1000, notifications: [ "CAMARRIERE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMGARAGE", timeout: 1000, notifications: [ "CAMGARAGE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMGAUCHE", timeout: 1000, notifications: [ "CAMGAUCHE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CAMAVANT", timeout: 1000, notifications: [ "CAMAVANT", ], }, ] }, },
and
//INFORMATION HOMEY EUFY { module: "MMM-CommandToNotification", disabled: false, config: { updateInterval: 300, commands: [ { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPSALLE", timeout: 1000, notifications: [ "TEMPSALLE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPBUREAU", timeout: 1000, notifications: [ "TEMPBUREAU", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHELENA", timeout: 1000, notifications: [ "TEMPCHELENA", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHLOUCA", timeout: 1000, notifications: [ "TEMPCHLOUCA", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHALAN", timeout: 1000, notifications: [ "TEMPCHALAN", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/TEMPCHPARENT", timeout: 1000, notifications: [ "TEMPCHPARENT", ], }, ] }, },
and :
//INFORMATION HOMEY EUFY { module: "MMM-CommandToNotification", disabled: false, config: { updateInterval: 300, commands: [ { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/AUTBATTMEGANE", timeout: 1000, notifications: [ "AUTBATTMEGANE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/BATTMEGANE", timeout: 1000, notifications: [ "BATTMEGANE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/PLUGMEGANE", timeout: 1000, notifications: [ "PLUGMEGANE", ], }, { script: "/usr/bin/curl", args: "-s http://192.168.100.244:3000/CHARGEMEGANE", timeout: 1000, notifications: [ "CHARGEMEGANE", ], }, ] }, },
But it doesn’t work, only the last element appears.
-
@ELMAGO Hi,
thats right. The module does not support multi instance configurations.
You will need to copy the complete module folder and change some things to get it work.
But to me it looks like your server is stressed with the 16 calls straight after each other. So you do not need more parallelism but less.
So i will check if i can at a configurable delay after each command to stretch the time the calls get made to your server a little bit. -
good morning
I don’t mind doing it by hand if you explain to me what I need to change
-
@ELMAGO Hi,
i just released a new version of the module which has a new option
delayNext
that can be added to each command.
The module then starts the command and waits this amount of milliseconds before the next one is processed.
So in your case you can add adelayNext: 1000
to each of the commands to give your server some time between the calls. -
@wishmaster270 you could make it support multi instance easily
in the modulename.js when u sendSocketNotification… add the module id to the data
in the node_helper, send the id back
in the modulename.js in receiveSocketNotification
check that the returned id matches this instances idsendSocketNotification from the node_helper is a broadcast , all instances get it at the same time, thus the need for the check.
-
@sdetweil Hi Sam, I will check that for the next release.
I already added something similar to one of my other modules but did not know that there is a module id already and added a uuid instead. -