Reading addresses from the db works.
Monitoring loop works.
This commit is contained in:
		
							parent
							
								
									feb331d6f1
								
							
						
					
					
						commit
						08676075f8
					
				| @ -1,4 +1,7 @@ | |||||||
| import { Client, Database } from "node-appwrite"; | import { Client, Database } from "node-appwrite"; | ||||||
|  | import dotenv from 'dotenv' | ||||||
|  | 
 | ||||||
|  | dotenv.config({ override: false }) | ||||||
| 
 | 
 | ||||||
| const client: Client = new Client(); | const client: Client = new Client(); | ||||||
| client.setEndpoint(process.env.APPWRITE_ENDPOINT_URL) | client.setEndpoint(process.env.APPWRITE_ENDPOINT_URL) | ||||||
| @ -6,3 +9,4 @@ client.setEndpoint(process.env.APPWRITE_ENDPOINT_URL) | |||||||
|   .setKey(process.env.APPWRITE_API_KEY) |   .setKey(process.env.APPWRITE_API_KEY) | ||||||
| 
 | 
 | ||||||
| export const database = new Database(client) | export const database = new Database(client) | ||||||
|  | 
 | ||||||
|  | |||||||
							
								
								
									
										31
									
								
								src/index.ts
									
									
									
									
									
								
							
							
						
						
									
										31
									
								
								src/index.ts
									
									
									
									
									
								
							| @ -6,13 +6,36 @@ | |||||||
| 
 | 
 | ||||||
| import { readAddresses, readMessage, KNXMessage } from 'knx-lib' | import { readAddresses, readMessage, KNXMessage } from 'knx-lib' | ||||||
| import knx from 'knx'; | import knx from 'knx'; | ||||||
|  | import { database } from './appwrite' | ||||||
| import dotenv from 'dotenv' | import dotenv from 'dotenv' | ||||||
|  | import { DPT } from 'dptlib/lib/definitions'; | ||||||
|  | import { getDPTforAddress } from './processTelegram'; | ||||||
|  | import { mainModule } from 'process'; | ||||||
| 
 | 
 | ||||||
| // read the addresses and DPTs.
 | // read the addresses and DPTs.
 | ||||||
| // let addresses = readAddresses("")
 | // let addresses = readAddresses("")
 | ||||||
| 
 | 
 | ||||||
| dotenv.config({ override: false }) | dotenv.config({ override: false }) | ||||||
| 
 | 
 | ||||||
|  | // TODO: Create the map address -> DPT
 | ||||||
|  | // TODO: Automatic load addresses to DB
 | ||||||
|  | 
 | ||||||
|  | async function verify() { | ||||||
|  |   getDPTforAddress({ dest_addr: '3/5/6' }) | ||||||
|  | } | ||||||
|  | 
 | ||||||
|  | verify().then(() => console.log("---")).catch(e => console.log('Error: ', e)) | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | 
 | ||||||
|  | async function main(evt: string, src: string, dest: string, value: Buffer) { | ||||||
|  | 
 | ||||||
|  |   const dpt: DPT = (await getDPTforAddress({ dest_addr: dest })).dpt | ||||||
|  | 
 | ||||||
|  |   console.log("%s **** KNX EVENT: %j, src: %j, dest: %j, value: %j (DPT: %j}", | ||||||
|  |     new Date().toISOString().replace(/T/, ' ').replace(/\..+/, ''), | ||||||
|  |     evt, src, dest, dpt.decoder(value)); | ||||||
|  | } | ||||||
| 
 | 
 | ||||||
| // Create the connection
 | // Create the connection
 | ||||||
| const connection = new knx.Connection({ | const connection = new knx.Connection({ | ||||||
| @ -25,9 +48,11 @@ const connection = new knx.Connection({ | |||||||
|       console.log('Connected!'); |       console.log('Connected!'); | ||||||
|     }, |     }, | ||||||
|     event: function (evt: string, src: string, dest: string, value: Buffer) { |     event: function (evt: string, src: string, dest: string, value: Buffer) { | ||||||
|       console.log("%s **** KNX EVENT: %j, src: %j, dest: %j, value: %j", | 
 | ||||||
|         new Date().toISOString().replace(/T/, ' ').replace(/\..+/, ''), |       main(evt, src, dest, value).then(() => { }).catch(e => console.log('Error: ', e)) | ||||||
|         evt, src, dest, value); | 
 | ||||||
|  | 
 | ||||||
|  |       //readMessage(value,new Date(), )
 | ||||||
|     } |     } | ||||||
|   } |   } | ||||||
| }); | }); | ||||||
| @ -1,8 +1,11 @@ | |||||||
|  | import dotenv from 'dotenv' | ||||||
| import { Client, Database, Query } from 'node-appwrite' | import { Client, Database, Query } from 'node-appwrite' | ||||||
| import { DataPointType } from 'dptlib/lib/DataPointType' | import { DataPointType } from 'dptlib/lib/DataPointType' | ||||||
| import { DPT } from 'dptlib/lib/definitions' | import { DPT } from 'dptlib/lib/definitions' | ||||||
| import { database } from './appwrite' | import { database } from './appwrite' | ||||||
| 
 | 
 | ||||||
|  | dotenv.config({ override: false }) | ||||||
|  | 
 | ||||||
| // TODO: Get the map from a list of environment variables
 | // TODO: Get the map from a list of environment variables
 | ||||||
| const dptMap: { [index: string]: string } = { | const dptMap: { [index: string]: string } = { | ||||||
|   'DPT1.1': '61f46d9b81de70ac7ece', // percent
 |   'DPT1.1': '61f46d9b81de70ac7ece', // percent
 | ||||||
| @ -11,9 +14,9 @@ const dptMap: { [index: string]: string } = { | |||||||
| } | } | ||||||
| 
 | 
 | ||||||
| // TODO: add types
 | // TODO: add types
 | ||||||
| export async function getDPTforAddress(record: any) { | export async function getDPTforAddress(record: any): Promise<any> { | ||||||
|   let list = await database.listDocuments(process.env.APPWRITE_KNX_ADDRESS_COLLECTION, [ |   let list = await database.listDocuments(process.env.APPWRITE_KNX_ADDRESS_COLLECTION, [ | ||||||
|     Query.equal('project_id', process.env.APPWRITE_PROJECT_ID), |     Query.equal('project_id', process.env.APPWRITE_CONFIGURATION_ID), | ||||||
|     Query.equal('address', record.dest_addr) |     Query.equal('address', record.dest_addr) | ||||||
|   ]); |   ]); | ||||||
| 
 | 
 | ||||||
| @ -23,7 +26,10 @@ export async function getDPTforAddress(record: any) { | |||||||
|     throw 'The address is not unique!' |     throw 'The address is not unique!' | ||||||
|   } |   } | ||||||
| 
 | 
 | ||||||
|   record.dpt = DataPointType.TYPES[(list.documents[0] as any).dpt] |   // TODO: Move thematcher into the DPT lib as a static function
 | ||||||
|  |   const m = ((list.documents[0] as any).dpt).toUpperCase().match(/(?:DPT)?(\d+)(\.(\d+))?/); | ||||||
|  | 
 | ||||||
|  |   record.dpt = DataPointType.TYPES[`DPT${m[1]}`] | ||||||
|   record.addressId = list.documents[0]['$id'] |   record.addressId = list.documents[0]['$id'] | ||||||
|   return record |   return record | ||||||
| } | } | ||||||
|  | |||||||
		Loading…
	
		Reference in New Issue
	
	Block a user