Closed maxill1 closed 1 year ago
Dovremmo provare a capire se il comando "SetAlarmStatus" e "GetAlarmStatus" permette di passare un qualche parametro di indice (area 1, area 2, area 3).
Secondo quanto osservato da @wildstray il comando GetAlarmStatus non sembra avere un Ln, Offset (come GetZone) o una Pos (come GetByWay) ne un Num (come GetWlsStatus).
Non avendo una centrale che supporta più aree non posso testare di persona il submit di un xml con un eventuale Pos/Num/Lx/Offset, posso dire che passandoli la mia centrale iAlarm/Antifurto356 li accetta, li ignora e mi torna lo stato dell'unica area che ho.
Dimmi come posso essere di aiuto.
grazie del supporto.
Vorrei prima identificare quale pannello è per capire che caratteristiche ha e se trovo su internet qualche info, perchè senza sniffare il traffico tra app android e centrale andiamo davvero a tentativi...
Sul forum indomus avevi messo uno screenshot e mi sembrava ci fosse scritto DEFCON, quindi immagino una di quelle vendute da skynetitalia, ovvero wmg ovvero Meian/Focus?
A naso sembra un rebrand di una di queste due, corretto?
La FC-7688Plus è uguale anche la tastiera, come supporto vado qua: https://supporto.skynetitalia.net/site/index/659
l'applicazione dai video sembra leggermente diversa da IPGuard di antifurto365 ma credo che se me la installo probabilmente funziona anche con il mio antifurto (tempo provai una applicazione di un altro brand e andava...il protocollo dopotutto è lo stesso). Sai dirmi il nome dell'applicazione, se si trova sul playstore o dove trovare l'apk?
Si chiama ST Panel si trona nel playstore
@blakdog1978 allora avrei un soluzione che però richiede il tuo intervento.
In pratica dovresti installare uno sniffer che si chiama tpacketCapture su un telefono android che abbia ST Panel installato quindi:
<Root><Host><GetAlarmStatus><DevStatus>TYP,DISARM|1</DevStatus><Err>ERR|00</Err></GetAlarmStatus></Host></Root>
L'alternativa se vuoi è che ti spiego come decodificarla usando node-ialarm, fammi sapere se te la senti.
Come faccio a mandartelo in privato? Se vuoi prova a spiegarmi come fare a decodificarlo...
se vuoi provare a decodificarlo ti ho preparato un piccolo script con nodejs.
Per eseguirlo dovrai:
node index.js
in console vedrai il messaggio decodificato:
Decoded message <Root><Host><SetAlarmStatus><DevStatus>TYP,DISARM|1</DevStatus><Err/></SetAlarmStatus></Host></Root>
Se i messaggi hanno dati personali (username, password o altro sensibile come nomi zone, etc) oscurali e poi postali pure qui.
in alternativa fammi sapere che ti riposto la mia mail
Non mi è chiaro come estrarre lo script e lanciare lo script.
Scarica il file zip meian-wireshark-string-literal-decoder.zip dal post precedente ed estrailo in una cartella per lanciarlo ti servirà nodejs che è un interprete di questo linguaggio (JavaScript)
scusa mi ero perso il tuo commento...
se vuoi provare a decodificarlo ti ho preparato un piccolo script con nodejs.
Per eseguirlo dovrai:
- scaricare questo script quindi estrare tutto il contenuto in una cartella meian-wireshark-string-literal-decoder.zip Va bene qualsiasi cartella ?
- installare sul pc nodejs
- aprire il file pcap con wireshark e filtrare per ip (ip.addr == 192.168.1.x o 47.91.74.102 in funzione di come ti sei collegato ) quindi scorrere la lista e trovare i messaggi che hanno @iem dentro il corpo (vedi la schermata di esempio di poco fa)
- copiare la "stringa letterale" estratta da uno di questi messaggi da wireshark e incollarla nel file "message.txt" presente nella cartella che hai estratto al punto 1
- aprire il terminale e lanciare lo script in questo modo: Quale terminale ? uno di quelli installato con node.js ?
node index.js
in console vedrai il messaggio decodificato:
Decoded message <Root><Host><SetAlarmStatus><DevStatus>TYP,DISARM|1</DevStatus><Err/></SetAlarmStatus></Host></Root>
Se i messaggi hanno dati personali (username, password o altro sensibile come nomi zone, etc) oscurali e poi postali pure qui.
in alternativa fammi sapere che ti riposto la mia mail
ok sono riuscito la posto qui ?
ok sono riuscito la posto qui ?
Se non ci sono dati sensibili si, altrimenti cancellali e mettici delle XXX prima di postare
non riesco a postarle cambiano
non riesco a postarle cambiano
ok ho ricevuto il file:
Decoded message <Root><Host><SetArea><Pos>S32,0,3|3</Pos><Status>S32,0,0|0</Status><Err/></SetArea></Host></Root>
Decoded message <Root><Host><GetArea><Total/><Offset>S32,0,0|0</Offset><Ln/><Err/></GetArea></Host></Root>
Quindi è un nuovo comando che si chiama GetArea e SetArea...perfetto abbiamo qualcosa da cui partire! Grazie :smile:
Grazie a te !
Purtroppo quei comandi sulla mia centrale non producono alcun risultato, quindi non posso testarli in prima persona. Posso chiederti di eseguire un test?
node index.js username=admin password=password host=192.168.1.x
modificando username, password e host (gli stessi che usi per ialarm-mqtt).
In circa 20 secondi dovrebbe stamparti in console qualcosa di simile a questo e spero con risultati diversi:
will test meianClient on 192.168.1.81:18034
Sending command: SetArea with args 0,2
SetArea: connected to 192.168.1.81:18034
SetArea: disconnecting from 192.168.1.81:18034
Response: {"commandNames":["SetArea"],"commandArgs":[[0,"2"]],"data":{"SetArea":{"Root":{"Host":{"SetArea":{"Pos":{},"Status":{"value":"TYP,STAY|2"},"Err":{}}}}}}}
Sending command: GetArea with args 0
GetArea: connected to 192.168.1.81:18034
GetArea: disconnecting from 192.168.1.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[0]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{},"Offset":{"value":"S32,0,0|0"},"Ln":{},"Err":{}}}}}}}
Sending command: GetArea with args 1
GetArea: connected to 192.168.1.81:18034
GetArea: disconnecting from 192.168.1.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[1]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{},"Offset":{"value":"S32,0,0|1"},"Ln":{},"Err":{}}}}}}}
Sending command: GetArea with args 2
GetArea: connected to 192.168.1.81:18034
GetArea: disconnecting from 192.168.1.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[2]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{},"Offset":{"value":"S32,0,0|2"},"Ln":{},"Err":{}}}}}}}
Sending command: GetArea with args 3
GetArea: connected to 192.168.1.81:18034
GetArea: disconnecting from 192.168.1.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[3]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{},"Offset":{"value":"S32,0,0|3"},"Ln":{},"Err":{}}}}}}}
questo è il risultato:
will test meianClient on 192.168.8.81:18034
Sending command: SetArea with args 0,2
SetArea: connected to 192.168.8.81:18034
SetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["SetArea"],"commandArgs":[[0,"2"]],"data":{"SetArea":{"Root":{"Host":{"SetArea":{"Pos":{"value":"S32,0,3|0"},"Status":{"value":"TYP,STAY|2"},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 0
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[0]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,STAY|2"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 1
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[1]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,1|1"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,STAY|2"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 2
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[2]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,2|2"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,STAY|2"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 3
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[3]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,3|3"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,STAY|2"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
Perfetto!
Un paio di domande:
Il comando SetArea ti ha funzionato armando "in casa" su Area 3? (indice 2 = 3 posizione dell'array quindi area 3) Verificalo da ST Panel o da pannello web.
Il comando GetArea sembra funzionare da una lista d 4i elementi (L0,L1,L2,L3) e ognuna ha il suo stato (STAY, DISARM, DISARM, DISARM):
"GetArea": {
"Root": {
"Host": {
"GetArea": {
"Total": {
"value": "S32,4,4|4"
},
"Offset": {
"value": "S32,0,0|0"
},
"Ln": {
"value": "S32,0,4|4"
},
"L0": {
"Status": {
"value": "TYP,STAY|2"
}
},
"L1": {
"Status": {
"value": "TYP,DISARM|1"
}
},
"L2": {
"Status": {
"value": "TYP,DISARM|1"
}
},
"L3": {
"Status": {
"value": "TYP,DISARM|1"
}
},
"Err": {}
}
}
},
"Err": "ERR|00"
}
Sembra aver armato in casa area 1
hai ragione...mi ricordavo male, perdonami.
nel codice che trovi nel file index.js, c'è indice 0 quindi l'area armata era la numero 1.
Ti andrebbe di modificarlo con un area diversa e riprovare?
riga 41 modifica lo 0 che ho messo in grassetto con 1, 2 o 3 e se vuoi prova a cambiare "ARMED_HOME" con "DISARMED" oppure "ARMED_AWAY"
testSocket(['SetArea'], [[0, alarmStatus.fromStatusToTcpValue('ARMED_HOME')]], function () {
se funziona integriamo la cosa nella prossima versione ed rendo configurabile il numero di Aree, in modo che venga esposto un entity "alarm_control_panel" per ogni Area.
Fatto ha funzionato mettendo 1 ha armato area 2 posto il risultato:
will test meianClient on 192.168.8.81:18034
Sending command: SetArea with args 1,2
SetArea: connected to 192.168.8.81:18034
SetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["SetArea"],"commandArgs":[[1,"2"]],"data":{"SetArea":{"Root":{"Host":{"SetArea":{"Pos":{"value":"S32,0,3|1"},"Status":{"value":"TYP,STAY|2"},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 0
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[0]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,STAY|2"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 1
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[1]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,1|1"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,STAY|2"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 2
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[2]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,2|2"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,STAY|2"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
Sending command: GetArea with args 3
GetArea: connected to 192.168.8.81:18034
GetArea: disconnecting from 192.168.8.81:18034
Response: {"commandNames":["GetArea"],"commandArgs":[[3]],"data":{"GetArea":{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,3|3"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,STAY|2"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}}}
fantastico, ultimo sforzo! prova a disarmare mettendo DISARMED al posto di ARMED_HOME :pray:
Appena rientro provo molto volentieri.
Fatto funziona !
ho rilasciato una versione che include la gestione delle aree come separati alarm_control_panel
Puoi modificare la configurazione dell'addon/container docker mettendo il numero di aree nel nodo server (default è 1):
server:
areas: 4
Ciao sto provando la versiona nuova sembra avere qualche problema, crea i pannelli differenziati ma non legge lo stato delle aree se sono armate o no le da tutte disarmate, se provo ad armarle le arma posto un pezzo del log.
["GetLog"]: concurrent commands, delaying 200ms
["GetArea"]: concurrent commands, delaying 400ms
info: Caching ialarm/alarm/event until Fri Nov 05 2021 18:01:56 GMT+0100 (Central European Standard Time)
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
["GetAlarmStatus"]: concurrent commands, delaying 400ms
"GetByWay": concurrent commands, delaying 200ms
info: Caching ialarm/sensors/state until Fri Nov 05 2021 18:01:57 GMT+0100 (Central European Standard Time)
info: sending topic 'ialarm/sensors/state' : Array of 40 elements
info: Caching ialarm/sensors/zone_1 until Fri Nov 05 2021 18:01:57 GMT+0100 (Central European Standard Time)
info: sending topic 'ialarm/sensors/zone_1' : Object with 18 keys
["GetArea"]: concurrent commands, delaying 200ms
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
["GetAlarmStatus"]: concurrent commands, delaying 400ms
"GetByWay": concurrent commands, delaying 200ms
info: Caching ialarm/sensors/state until Fri Nov 05 2021 18:02:02 GMT+0100 (Central European Standard Time)
info: sending topic 'ialarm/sensors/state' : Array of 40 elements
info: Caching ialarm/sensors/zone_1 until Fri Nov 05 2021 18:02:02 GMT+0100 (Central European Standard Time)
info: sending topic 'ialarm/sensors/zone_1' : Object with 18 keys
["GetLog"]: concurrent commands, delaying 200ms
["GetArea"]: concurrent commands, delaying 400ms
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
["GetAlarmStatus"]: concurrent commands, delaying 400ms
"GetByWay": concurrent commands, delaying 200ms
["GetArea"]: concurrent commands, delaying 200ms
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
["GetAlarmStatus"]: concurrent commands, delaying 400ms
"GetByWay": concurrent commands, delaying 200ms
["GetLog"]: concurrent commands, delaying 200ms
["GetArea"]: concurrent commands, delaying 400ms
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
["GetAlarmStatus"]: concurrent commands, delaying 400ms
"GetByWay": concurrent commands, delaying 200ms
["GetArea"]: concurrent commands, delaying 200ms
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
["GetAlarmStatus"]: concurrent commands, delaying 400ms
"GetByWay": concurrent commands, delaying 200ms
["GetLog"]: concurrent commands, delaying 200ms
["GetArea"]: concurrent commands, delaying 400ms
mmmm sembra come se non riconosca la riposta del comando "GetArea" e quindi vada in fallback sullo stato GetAlarmStatus (quello solito).
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
Niente ora non va più si blocca su Get Net
mmmm sembra come se non riconosca la riposta del comando "GetArea" e quindi vada in fallback sullo stato GetAlarmStatus (quello solito).
warning: Your alarm is not exposing any areas with GetArea, use GetAlarmStatus instead
Credi ci possa essere una soluzione ?
Se faccio girare l'addon con questo problema c'è il rischio di friggere la centrale ?
Comunque non riesco a capire perchè prima non lo faceva ed ora invece si... prima l'area 1 sembrava funzionare, e comunque i comandi li prende anche ora cioè se provo ad armare o disrmare le zone lo fa...
ora infatti arm/disarm funzione, è il recupero dello stato attuale che non va. Sicuramente ho scritto io qualcosa che non va. Appena possibile ti faccio uno script come l'altra volta per testare GetAlarmStatus e, se riesco a capire come, anche le 128 zone.
qualche aggiornamento ?
Magari ti aiuterebbe sapere che quando avevo installado anche node-red con i nodi dell'allarme la tua integrazione mi vedeva tutti i sensori poi quando ho reinstallato home assistant la tua integrazione non va oltre le 40 zone...
@blakdog1978 continuiamo qui il problema delle Aree (https://github.com/maxill1/ialarm-mqtt/issues/36#issuecomment-1312402512)
Per info ... ho provato la nuova versione stabile, ma a me non funziona non aggiorna lo stato ei sensori, sembra non trovarli neanche tutti ... li da tutti chiusi e non riconosce neanche lo stato della centrale, ecco il log.
LOG
Uno dei problemi è sicuramente sulla lettura dello stato delle aree, me lo aspettavo una stringa quando non lo è:
error: error status.toLowerCase is not a function info
purtroppo sui messaggi GetArea vado a tentativi, la mia centrale non li espone e non riesco a capire che cosa torna. Ho aggiornato la versione di sviluppo dell'addon con dei log che spammano **** DEBUG *** quando arriva un messaggio GetArea, quando puoi installala e vedi cosa stampa. Grazie
ecco il log:
cont-init: info: /etc/cont-init.d/00-banner.sh exited 0
cont-init: info: running /etc/cont-init.d/01-log-level.sh
cont-init: info: /etc/cont-init.d/01-log-level.sh exited 0
s6-rc: info: service legacy-cont-init successfully started
s6-rc: info: service legacy-services: starting
services-up: info: copying legacy longrun ialarm-mqtt (no readiness notification)
s6-rc: info: service legacy-services successfully started
[13:52:46] INFO: Passing /data/options.json ialarm-mqtt@ 0.11.1 to with node-ialarm@ 0.6.1 on node v16.17.1
[13:52:46] INFO: Starting ialarm-mqtt...
Found arg --hassos with value /data/options.json
info: Trying to merge HASSOS options file (/data/options.json) with default config.json
warning: Config value "["name"]" missing on /data/options.json using default: "Alarm"
info: Starting up...
info: MQTT connecting to broker 192.168.8.208:1883 with cliendId ialarm-mqtt
(node:150) ExperimentalWarning: Importing JSON modules is an experimental feature. This feature could change at any time
(Use node --trace-warnings ...
to show where the warning was created)
info: MQTT connected to broker 192.168.8.208:1883 with cliendId ialarm-mqtt
warning: Feature bypass is disabled
info: subscribing to ["ialarm/alarm/discovery","ialarm/alarm/resetCache","ialarm/alarm/area/+/set"]
info: Starting TCP connection...
info: con-3868/2948: logged in to 192.168.5.81:18034 with response {"commandName":"Client","connectionId":"3868","transactionId":"2948","encrypted":"@ieM0071000100000}<<\}0r\b~rk}_B1\u0004yWDxd^dY'BpptGy64x\u001ehec|xa\u001d0^|-xqFI%Xc\u001ejk2\u0003QYa0\u0017\u001c!\rL\u00130000","xml":"
Nel log ancora non è arrivato al polling dello stato (GetArea) sta ancora facendo il discovery MQTT: Setting up Home assistant discovery
mi serve la parte in cui ti dava error: error status.toLowerCase is not a function info
, che avviene credo dopo un minutino.
Non ci arriva più, va avanti cosi
-rc: info: service legacy-services: starting services-up: info: copying legacy longrun ialarm-mqtt (no readiness notification) s6-rc: info: service legacy-services successfully started [14:46:21] INFO: Passing /data/options.json ialarm-mqtt@ 0.11.1 to with node-ialarm@ 0.6.1 on node v16.17.1 [14:46:21] INFO: Starting ialarm-mqtt... Found arg --hassos with value /data/options.json info: Trying to merge HASSOS options file (/data/options.json) with default config.json warning: Config value "["name"]" missing on /data/options.json using default: "Alarm" info: Starting up... info: MQTT connecting to broker 192.168.8.208:1883 with cliendId ialarm-mqtt (node:147) ExperimentalWarning: Importing JSON modules is an experimental feature. This feature could change at any time (Use
node --trace-warnings ...to show where the warning was created) info: MQTT connected to broker 192.168.8.208:1883 with cliendId ialarm-mqtt warning: Feature bypass is disabled info: subscribing to ["ialarm/alarm/discovery","ialarm/alarm/resetCache","ialarm/alarm/area/+/set"] info: Starting TCP connection... info: con-1872/8868: logged in to 192.168.5.81:18034 with response {"commandName":"Client","connectionId":"1872","transactionId":"8868","encrypted":"@ieM0071000100000}<<\\}0r\b~rk}_B1\u0004yWDxd^dY'BpptGy64x\u001ehec|xa\u001d0^|-xqFI%Xc\u001ejk2\u0003QYa0\u0017\u001c!\rL\u00130000","xml":"<Err>ERR|00</Err><Root><Pair><Client><Err></Err></Client></Pair></Root>","rawData":{"Root":{"Pair":{"Client":{"Err":{}}}},"Err":"ERR|00"}} info: logged in (1668260783089) info: Setting up first TCP command to retrieve mac address... info: First connection OK: alarm panel responded undefined info: Retrieving zone info ... info: Caching ialarm/alarm/availability until Sat Nov 12 2022 14:51:23 GMT+0100 (Central European Standard Time) info: Status polling every 3000ms info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: A request is in progress...we will wait for response before sending "GetZone" (undefined) info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: Caching ialarm/alarm/configStatus until Sat Nov 12 2022 14:51:23 GMT+0100 (Central European Standard Time) info: sending topic 'homeassistant/alarm_control_panel/ialarm/config' : info: sending topic 'homeassistant/sensor/ialarm/error/config' : info: Caching ialarm/alarm/error until Sat Nov 12 2022 14:51:23 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/alarm/error' : info: sending topic 'homeassistant/switch/ialarm/clear_cache/config' : info: sending topic 'homeassistant/switch/ialarm/clear_discovery/config' : info: sending topic 'homeassistant/binary_sensor/ialarm/connection/config' : info: sending topic 'homeassistant/switch/ialarm/clear_triggered/config' : info: sending topic 'homeassistant/alarm_control_panel/ialarm_1/config' : info: sending topic 'homeassistant/sensor/ialarm/events/config' : info: Setting up Home assistant discovery... info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: Caching ialarm/alarm/state until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/alarm/state' : Object with 1 keys info: Caching ialarm/sensors/state until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/state' : Array of 16 elements info: Caching ialarm/sensors/zone_1 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_1' : Object with 17 keys info: Caching ialarm/sensors/zone_2 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_2' : Object with 17 keys info: Caching ialarm/sensors/zone_3 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_3' : Object with 12 keys info: Caching ialarm/sensors/zone_4 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_4' : Object with 12 keys info: Caching ialarm/sensors/zone_5 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_5' : Object with 12 keys info: Caching ialarm/sensors/zone_6 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_6' : Object with 12 keys info: Caching ialarm/sensors/zone_7 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_7' : Object with 12 keys info: Caching ialarm/sensors/zone_8 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_8' : Object with 12 keys info: Caching ialarm/sensors/zone_9 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_9' : Object with 12 keys info: Caching ialarm/sensors/zone_10 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_10' : Object with 12 keys info: Caching ialarm/sensors/zone_11 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_11' : Object with 12 keys info: Caching ialarm/sensors/zone_12 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_12' : Object with 12 keys info: Caching ialarm/sensors/zone_13 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_13' : Object with 12 keys info: Caching ialarm/sensors/zone_14 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_14' : Object with 12 keys info: Caching ialarm/sensors/zone_15 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_15' : Object with 12 keys info: Caching ialarm/sensors/zone_16 until Sat Nov 12 2022 14:51:26 GMT+0100 (Central European Standard Time) info: sending topic 'ialarm/sensors/zone_16' : Object with 12 keys warning: Feature events is disabled info: sending topic 'homeassistant/switch/ialarm/clear_cache/config' : Object with 11 keys info: sending topic 'homeassistant/switch/ialarm/clear_discovery/config' : Object with 11 keys info: sending topic 'homeassistant/binary_sensor/ialarm/connection/config' : Object with 12 keys info: sending topic 'homeassistant/switch/ialarm/clear_triggered/config' : Object with 11 keys info: sending topic 'homeassistant/alarm_control_panel/ialarm_1/config' : Object with 13 keys info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2}
qualcosa il topic di stato la invia: info: sending topic 'ialarm/alarm/state'
, riesci a vedere da MQTT exporer o da home assistant il payload del topic quale è?
Dove cerco con Explorer ?
scarica http://mqtt-explorer.com/ quindi configuralo per collegarsi a mosquitto e naviga nel topic ialarm/alarm/state e leggi che cosa c'è nel payload
mi aspetterei un payload cosi per le centrali con GetAlarmStatus (una sola area, come la mia):
{
"status_1": "disarmed"
}
mentre quelle con GetArea (più aree, come la vostra):
{
"status_1": "disarmed",
"status_2": "disarmed",
"status_3": "disarmed",
"status_4": "disarmed"
}
Ok espone solo una area.
Domanda stupida ma leggitima: quante aree hai configurato sull'addon? Dovresti mettere 4 a mano perché ialarm-mqtt non identifica da solo le centrali che supportano GetArea
server:
areas: 4
Non mi aveva salvato le 4 zone... Scusa...
{"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]}
é cambiato anche il log...
nfo: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}] info: got 2 ' zones info' info: removeDisabledZones: filtering out zone 1 with typeId disabled {"id":1,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":1} info: removeDisabledZones: filtering out zone 2 with typeId disabled {"id":2,"name":"","type":"Disabilitata","typeId":0,"voiceId":2,"voiceName":"Ad impulsi","zone":2} info: ******** DEBUG ******* GetArea RAW: [{"Root":{"Host":{"GetArea":{"Total":{"value":"S32,4,4|4"},"Offset":{"value":"S32,0,0|0"},"Ln":{"value":"S32,0,4|4"},"L0":{"Status":{"value":"TYP,DISARM|1"}},"L1":{"Status":{"value":"TYP,DISARM|1"}},"L2":{"Status":{"value":"TYP,DISARM|1"}},"L3":{"Status":{"value":"TYP,DISARM|1"}},"Err":{}}}},"Err":"ERR|00"}] info: ******** DEBUG ******* GetArea formatted: {"areas":[{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]} error: error decoding status: status.toLowerCase is not a function on [{"id":1,"area":1,"status":1},{"id":2,"area":2,"status":1},{"id":3,"area":3,"status":1},{"id":4,"area":4,"status":1}]
Perfetto ho quello che mi occorre. Appena riesco aggiusto il tiro.
Ciao, qualche giorno fa ho rilasciato sulla versione dev dei potenziali fix. @blakdog1978 quando hai modo fammi sapere se risolve.
Ciao l'ho provata subito ma non cambia niente, il log è uguale e non rileva nessun sensore. Dici che provando a mantenere tutte le futures cambia? Perché lo sto provando con la stessa configurazione che uso sulla stable e ne ho rimosse un paio...
avrebbe dovuto gestire bene gli stati ARMED/DISARMED delle singole aree questa volta (perchè prima non li decodificavo). riguardo i sensori che non rileva, intendi che ci sono ma non cambia lo stato aperto/chiuso?
[...] mi rimane il problema che arma solo l'area 1 e la 2,3,4 non le vede... [...] Originally posted by @blakdog1978 in https://github.com/maxill1/ialarm-mqtt/issues/19#issuecomment-943017683