Closed mrMiimo closed 2 years ago
I checked better, now strangely all the volumetric sensors are seen as detected movements.
this is the configuration:
{
"accessory": "mqttthing",
"type": "motionSensor",
"name": "Esterno Soggiorno Giardino",
"url": "mqtt://127.0.0.1:1883",
"username": "XXXXXX",
"password": "XXXXX",
"caption": "Zona 33: Sensore Esterno Soggiorno",
"topics": {
"getMotionDetected": {
"topic": "ialarm/sensors/state",
"apply": "if (JSON.parse(message)[1].status > 0) return 1; else return 0;"
},
"getStatusActive": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[1].ok;"
},
"getStatusFault": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[1].fault;"
},
"getStatusLowBattery": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[1].lowbat;"
}
},
"integerValue": true
},
Hi the "ERR" response error is related to a known issue: https://github.com/maxill1/node-ialarm/issues/7
I don't know much about mqttthing but some commit ago I changed some of the default device classes. You can configure them by overriding specific zones: https://github.com/maxill1/ialarm-mqtt/wiki/Configuration#specific-zone-config
thanks for the feedback. I configured the specific zones, but it didn't work, they continue (doors and motion sensor) to be always active ... mqttthing simply define the sensor / device type and topics ... as I reported above
Maybe I do a rollback of the docker compose 😞
🤷🏻♂️...the last docker image that works for me is maxill1/ialarm-mqtt:v0.7.4
Sorry now I get the problem: you are saying that getStatusActive reports "active" while it should not be.
Since TCP implementation (0.8.0) changed the default status to 1, your getMotionDetected topic is getting bad readings.
You can change your configuration like this:
"getMotionDetected": {
"topic": "ialarm/sensors/state",
"apply": "if (JSON.parse(message)[1].status > 1) return 1; else return 0;"
},
keep in mind that using "status" greater than 1 may results in "motion detection" in any of this case:
Thanks for the list of all the values that can take "state", it is clarifying.
I took a test, it works! 👍🏼
But I also had to change the reading order of the string. Although I have specified the active zones with: "zones": [7,33,34,35,36,38,39,40]
, it now lists all 40 zones.
Does the option that specify active zones still work?
"server" : {
"host": "192.168.178.33",
"port": "18034",
"username": "XXXXX",
"password": "XXXX",
"hadiscovery": {"enabled" : false},
"zones": [7,33,34,35,36,38,39,40],
"polling" : {
"status" : 3500,
"events" : 400000
}
The last thing, the mqttthing logs now says (rightly) the "Fault" value is not an integer. I need to figure out how to fix it ...🤨
[10/10/2021, 11:48:09 AM] [Esterno Soggiorno Giardino] Ignoring invalid value [false] for Status Fault - not an integer
Mqttthing configuration:
{
"accessory": "mqttthing",
"type": "motionSensor",
"name": "Esterno Soggiorno Giardino",
"url": "mqtt://XXXXXX:1883",
"username": "XXXXXX",
"password": "XXXXX",
"caption": "Zona 33: Sensore Esterno Soggiorno",
"topics": {
"getMotionDetected": {
"topic": "ialarm/sensors/state",
"apply": "if (JSON.parse(message)[32].status > 1) return 1; else return 0;"
},
"getStatusActive": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[32].ok;"
},
"getStatusFault": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[32].fault;"
},
"getStatusLowBattery": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[32].lowbat;"
}
},
"integerValue": true
}
"zones" filter should work, tomorrow I will give it a try and report back.
About the integer issue, you have configured mqttthing with:
"integerValue": true
So It expect all the "apply" functions to return an integer while ialarm-mqtt returns boolean for fault, etc...i recall that i introduced in "scraper" version a feature to change on/off payload in config.json. I will check if i broke that too..
let me know if you need more information or the config.json file
no no, it's a bug! confirmed. WIP.
kk 👍🏼, let me know when to update
pull the dev tag (maxill1/ialarm-mqtt:dev) and let me know if it's working
"Zones", seems to work! Thanks! I keep seeing in the logs:
[Esterno Soggiorno Giardino] Ignoring invalid value [true] for Status Fault - not an integer
Maybe setting mqttthing this way works.
"getStatusLowBattery": {
"topic": "ialarm/sensors/state",
"apply": "if (JSON.parse (message) [7].lowbat = 'true') return 1; else return 0;"
}
It is difficult to simulate "lowbat", what do you think?
"Zones", seems to work! Thanks! I keep seeing in the logs:
[Esterno Soggiorno Giardino] Ignoring invalid value [true] for Status Fault - not an integer
Maybe setting mqttthing this way works.
"getStatusLowBattery": { "topic": "ialarm/sensors/state", "apply": "if (JSON.parse (message) [7].lowbat = 'true') return 1; else return 0;" }
It is difficult to simulate "lowbat", what do you think?
you are missing one "=" in your if statement:
"getStatusLowBattery": {
"topic": "ialarm/sensors/state",
"apply": "if (JSON.parse (message) [7].lowbat == 'true') return 1; else return 0;"
}
to simulate a lowbat you can try like this:
@mrMiimo in riferimento ai nuovi topic menzionati in https://github.com/maxill1/ialarm-mqtt/issues/18#issuecomment-940869992
La versione "dev" che già usi il supporta già.
Se vuoi potresti semplificare la tua configurazione come segue:
"getContactSensorState": {
"topic": "ialarm/sensors/zone_8",
"apply": "if (JSON.parse(message).status > 1) return 1; else return 0;"
Ovvero impostando ialarm/sensors/zone_8 dove 8 è il numero di zona e togliendo l'indice Array 7 da "apply".
Vedi se ti è più comodo.
stasera faccio un po' di prove e ti faccio sapere. comunque questa versione tcp la trovo molto più reattiva rispetto alla precedente.
stavo facendo un po' di test e sono fermato al primo 🙂 Mi sono accorto che quando viene azionata l'allarme, mqttthing non se ne accorge... è cambiato il "triggered"?
Questa è la mia configurazione Mqttthing:
{
"accessory": "mqttthing",
"type": "securitySystem",
"name": "Allarme",
"url": "mqtt://XXXXX:1883",
"username": "XXXXX",
"password": "XXXXX",
"topics": {
"setTargetState": "ialarm/alarm/set",
"getTargetState": "ialarm/alarm/state",
"getCurrentState": "ialarm/alarm/state"
},
"targetStateValues": [
"armed_home",
"armed_away",
"night_arm",
"disarmed"
],
"currentStateValues": [
"armed_home",
"armed_away",
"night_arm",
"disarmed",
"triggered",
"trigger"
],
"restrictTargetState": [
0,
1,
3
]
}
E questa la configurazione ialarm-mqtt:
"topics" : {
"availability": "ialarm/alarm/availability",
"error" : "ialarm/alarm/error",
"alarm_qos": 2,
"alarm" : {
"state" : "ialarm/alarm/state",
"command" : "ialarm/alarm/set",
"event" : "ialarm/alarm/event",
"discovery" : "ialarm/alarm/discovery",
"resetCache" : "ialarm/alarm/resetCache",
"bypass": "ialarm/alarm/zone/${zoneId}/bypass"
},
"sensors" : {
"topicType" : "state",
"state": "ialarm/sensors/state",
"sensors_qos": 0,
"zone": {
"alarm": "ialarm/sensors/${zoneId}/alarm",
"active": "ialarm/sensors/${zoneId}/active",
"lowBattery": "ialarm/sensors/${zoneId}/battery",
"fault": "ialarm/sensors/${zoneId}/fault"
}
}
},
"payloads": {
"alarmAvailable" : "online",
"alarmNotvailable" : "offline",
"alarmDecoder": {
"armAway" : ["armAway", "armedAway", "armed_away", "arm_away", "AA", "AwayArm"],
"armHome" : ["armHome", "armedHome", "armed_home", "arm_home", "SA", "HomeArm" ,"StayArm", "armStay", "armedStay", "arm_stay", "armed_stay"],
"disarm" : ["disarm", "disarmed", "D"],
"cancel" : ["cancel", "canceled", "C"],
"triggered": [ "trigger", "triggered", "T"]
},
"alarm":{
"armAway" : "armed_away",
"armHome" : "armed_home",
"disarm" : "disarmed",
"cancel" : "cancel",
"triggered": "triggered"
},
"sensorOn" : "1",
"sensorOff" : "0"
},
non riesco a capire cosa manca... secondo me è un topic quando scatta l'allarme... però "triggered" e "trigger" sono configurati
dopo lavoro verifico, probabilmente è un bug. è stato cambiato molto dalla versione scraper, serve pazienza.
Per chiarezza, tu che centrale hai? Vorrei censire un po i modelli perchè altri utenti con "casasicura" hanno molti problemi di connessione.
No problem, allora non tocco più e aspetto… La mia è casasicura
No problem, allora non tocco più e aspetto… La mia è casasicura
switcha di nuovo il docker-compose su "latest" e buon allarme :smile:
maxill1/ialarm-mqtt:latest
Ah be provo subito. Mi sembra un buon ora per svegliare i vicini 😬
sicuro è stato creato il container nuovo?
faccio docker-compose pull
però sembra non scarichi niente e sul HUB docker non trovo nessuna immagine nuova...
Purtroppo la action non era partita, l'ho fatta parte manualmente.
P.s. lo sai che puoi mutare la sirena per fare le prove, vero? Dalle opzioni metti durata sirena a 0
Perfetto, funziona quando scatta, faccio un po’ di test in questi giorni. Grazie mille!
P.s. lo sai che puoi mutare la sirena per fare le prove, vero? Dalle opzioni metti durata sirena a 0
Sisi lo so, è che cosi non ce gusto 😂… comunque a certe ore l’imposta a 0
you are missing one "=" in your if statement:
"getStatusLowBattery": { "topic": "ialarm/sensors/state", "apply": "if (JSON.parse (message) [7].lowbat == 'true') return 1; else return 0;" }
to simulate a lowbat you can try like this:
- install MQTT explorer connect to the broker and copy a ialarm/sensors/state payload to a file editor (notepad++, visual studio code, etc)
- edit one of your sensor setting lowbat : true
- on ialarm-mqtt increment the status polling to a very large value (60-120 seconds) and restart the container and wait for startup
- publish the payload you just edited and mqttthing should pickup the values.
Ho fatto delle prove però non sono riuscito a far funzionare fault
e lowbat
.
fault
e lowbat
vuole solo integer
.
Invece "OK," funziona perfettamente con "true/false", è possibile gestire anche gli altri 2 valori?
Ciao Luca, ho visto che hai rilasciato un'aggiornamento. Conviene farlo anche a me? per caso risolve la questione sopra? Grazie mille.
puoi anche non aggiornare, risolve altre problematiche.
La tua secondo me è solo di configurazione della funzione "apply". Dalla documentazione di mqttthing per i motion-sensor dice che puoi trattarli come boolean oppure integer usando "integerValue": true.
Ma se togli "integerValue": true da mqttthing, togli "sensorOn" : "1", "sensorOff" : "0" da ialarm-mqtt e torni a usare solo boolean come nell'esempio della documentazione di mqttthing?
{
"accessory": "mqttthing",
"type": "motionSensor",
"name": "Esterno Soggiorno Giardino",
"url": "mqtt://XXXXXX:1883",
"username": "XXXXXX",
"password": "XXXXX",
"caption": "Zona 33: Sensore Esterno Soggiorno",
"topics": {
"getMotionDetected": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[32].status > 1;"
},
"getStatusActive": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[32].ok;"
},
"getStatusFault": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[32].fault;"
},
"getStatusLowBattery": {
"topic": "ialarm/sensors/state",
"apply": "return JSON.parse(message)[32].lowbat;"
}
}
}
solo adesso sono riuscito a provare.
Ho variato la configurazione come mi hai suggerito però non ha cambiato niente... continuo a ricevere il messaggio:
[1/13/2022, 4:08:29 PM] [Esterno Soggiorno Giardino] Ignoring invalid value [false] for Status Fault - not an integer
Non saprei cosa altro provare.. :\
Hi, I have updated to the latest version and set port 18034. When I set a state in the alarm, I find "ERR | 00" in the log, is this normal?
Anyway at the moment everything seems to be work fine…