From b95b35f10cb3e47853199e7fe2d347548e5f164e Mon Sep 17 00:00:00 2001 From: Armilar <102996011+Armilar@users.noreply.github.com> Date: Sun, 27 Aug 2023 20:53:26 +0200 Subject: [PATCH] v4.2.1.3 - Add MQTT-Portcheck + Support Menu Item - Add MQTT-Port-Check (use with exec) --> function CheckMQTTPorts() - Add MQTT-Port-Check for ServiceMenu --- ioBroker/NsPanelTs.ts | 62 ++++++++++++++++++++++++++++++++++++++++--- 1 file changed, 58 insertions(+), 4 deletions(-) diff --git a/ioBroker/NsPanelTs.ts b/ioBroker/NsPanelTs.ts index 6fe36040..978b937d 100644 --- a/ioBroker/NsPanelTs.ts +++ b/ioBroker/NsPanelTs.ts @@ -1,5 +1,5 @@ /*----------------------------------------------------------------------- -TypeScript v4.2.1.2 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @Sternmiere / @Britzelpuf / @ravenS0ne +TypeScript v4.2.1.3 zur Steuerung des SONOFF NSPanel mit dem ioBroker by @Armilar / @TT-Tom / @Sternmiere / @Britzelpuf / @ravenS0ne - abgestimmt auf TFT 52 / v4.2.1 / BerryDriver 8 / Tasmota 13.1.0 @joBr99 Projekt: https://github.com/joBr99/nspanel-lovelace-ui/tree/main/ioBroker NsPanelTs.ts (dieses TypeScript in ioBroker) Stable: https://github.com/joBr99/nspanel-lovelace-ui/blob/main/ioBroker/NsPanelTs.ts @@ -155,9 +155,12 @@ ReleaseNotes: - 23.08.2023 - v4.2.0.2 Add CardGrid2 with maxItems = 8 - 23.08.2023 - v4.2.1 Upgrade TFT 52 / 4.2.1 - 23.08.2023 - v4.2.1.1 Add WINDOWOPEN to cardThermo (Thermostat) + - 25.08.2023 - v4.2.1.2 Add Parameter fontSize for v4.3.0 + - 27.08.2023 - v4.2.1.3 Add MQTT-Port-Check (use with exec) --> function CheckMQTTPorts() + - 27.08.2023 - v4.2.1.3 Add MQTT-Port-Check for ServiceMenu - Next Release od DEV (always implemented) - - 25.08.2023 - v4.3.0 Add Parameter fontSize (0-4) to cardGrid (with useValue) + Next Release with TFT DEV (always implemented) + - 25.08.2023 - v4.3.0 Add Parameter fontSize (0-4) to cardGrid (with useValue) *********************************************************************************************************** @@ -1022,7 +1025,8 @@ let NSPanel_Service = 'parent': NSPanel_Einstellungen, 'home': 'NSPanel_Service', 'items': [ - { id: AliasPath + 'Config.ScripgtDebugStatus', name: 'Debugmodus (aus/an)' ,icon: 'code-tags-check', offColor: HMIOff, onColor: HMIOn}, + { id: AliasPath + 'Config.ScripgtDebugStatus', name: 'Debugmode (aus/an)' ,icon: 'code-tags-check', offColor: HMIOff, onColor: HMIOn}, + { id: AliasPath + 'Config.MQTT.portCheck', name: 'Port-Check (aus/an)' ,icon: 'check-network', offColor: HMIOff, onColor: HMIOn}, ] }; @@ -1391,6 +1395,56 @@ onStop (function scriptStop () { if (scheduleInitDimModeNight!=null) clearSchedule(scheduleInitDimModeNight); }, 1000); +async function CheckMQTTPorts() { + try { + let instanceName: string = config.panelRecvTopic.substring(0,6); + + await createStateAsync(NSPanel_Path + 'Config.MQTT.portCheck', true, { type: 'boolean' }); + setObject(AliasPath + 'Config.MQTT.portCheck', {type: 'channel', common: {role: 'socket', name:'mqttPortCheck'}, native: {}}); + await createAliasAsync(AliasPath + 'Config.MQTT.portCheck.ACTUAL', NSPanel_Path + 'Config.MQTT.portCheck', true, { type: 'boolean', role: 'switch', name: 'ACTUAL' }); + await createAliasAsync(AliasPath + 'Config.MQTT.portCheck.SET', NSPanel_Path + 'Config.MQTT.portCheck', true, { type: 'boolean', role: 'switch', name: 'SET' }); + + if (getState(NSPanel_Path + 'Config.MQTT.portCheck').val) { + let adapterArray: any = []; + let portArray: any = []; + exec('iob l i --port --enabled', async (error, result, stderr) => { + if (error == null){ + if (result != undefined) { + console.log('Start MQTT-Port-Check -------------------------------------'); + let resultString1 = result.split('+'); + for (let i: number = 1; i < resultString1.length -1; i++) { + let resultString2: any = resultString1[i].split(':') + let adapterInstanceName: string = resultString2[0].substring(16); + let adapterInstancePort: string = resultString2[3].substring(1,5); + console.log('-- '+ adapterInstanceName + ' - ' + adapterInstancePort); + adapterArray[i] = adapterInstanceName.trim(); + portArray[i] = adapterInstancePort.trim(); + } + let mqttInstance = adapterArray.indexOf(instanceName); + for (let j: number = 1; j < portArray.length; j++) { + if (portArray[j] == portArray[mqttInstance] && adapterArray[j] == adapterArray[mqttInstance]) { + console.log('- MQTT-Port-Check OK: Instance of Adapter: ' + adapterArray[j] + ' is running on Port:' + portArray[j]); + } else if (portArray[j] == portArray[mqttInstance] && adapterArray[j] != adapterArray[mqttInstance]) { + console.warn('Instance of Adapter: ' + adapterArray[j] + ' is running on same Port:' + portArray[j] + ' as ' + adapterArray[mqttInstance]); + console.warn('Please Change Port of Instance: ' + adapterArray[j]); + } + } + console.log('End MQTT-Port-Check ---------------------------------------'); + } + + } else if (error.toString().substring(0,21) == 'exec is not available') { + console.warn('MQTT-Portcheck not possible - exec is not available. Please enable exec option in JS-Adapter instance settings'); + console.warn('MQTT-Portcheck nicht möglich - exec ist nicht verfügbar. Bitte Haken bei -- Kommando Exec erlauben -- in JS-Adapter-Instanz setzen'); + } + }); + } + } catch (err) { + console.warn('error at function CheckMQTTPorts: ' + err.message); + } +} + +CheckMQTTPorts(); + async function Init_Release() { const FWVersion = [41,42,43,44,45,46,47,48,49,50,51,52,53] const FWRelease = ['3.3.1','3.4.0','3.5.0','3.5.X','3.6.0','3.7.3','3.8.0','3.8.3','3.9.4','4.0.5','4.1.4','4.2.1','4.3.0']