@@ -67,7 +67,6 @@ preferences {
67
67
input " prefDatabaseName" , " text" , title : " Database Name" , defaultValue : " " , required : true
68
68
input " prefDatabaseUser" , " text" , title : " Username" , required : false
69
69
input " prefDatabasePass" , " text" , title : " Password" , required : false
70
- input " preDatabasePooling" , " bool" , title : " Enable Pooling" , defaultValue : true , required : true
71
70
}
72
71
73
72
section(" Polling:" ) {
@@ -172,7 +171,6 @@ def updated() {
172
171
state. databaseName = settings. prefDatabaseName
173
172
state. databaseUser = settings. prefDatabaseUser
174
173
state. databasePass = settings. prefDatabasePass
175
- state. databasePool = settings. prefDatabasePooling
176
174
177
175
state. path = " /write?db=${ state.databaseName} "
178
176
state. headers = [:]
@@ -231,9 +229,6 @@ def updated() {
231
229
state. softPollingInterval = settings. prefSoftPollingInterval. toInteger()
232
230
manageSchedules()
233
231
234
- // Configure if we're pooling InfluxPooling
235
- state. poolData = " "
236
-
237
232
// Configure Subscriptions:
238
233
manageSubscriptions()
239
234
}
@@ -271,22 +266,29 @@ def handleModeEvent(evt) {
271
266
/**
272
267
* handleEvent(evt)
273
268
*
274
- * Builds data to send to InfluxDB.
269
+ * parseEvent() then post to InfluxDB.
270
+ **/
271
+ def handleEvent (evt ) {
272
+ logger(" handleEvent(): $evt . displayName ($evt . name :$evt . unit ) $evt . value " ," info" )
273
+ data = parseEvent(evt)
274
+ postToInfluxDB(data)
275
+ }
276
+
277
+ /**
278
+ * parseEvent(evt)
279
+ *
280
+ * Parses event data to send to InfluxDB.
275
281
* - Escapes and quotes string values.
276
282
* - Calculates logical binary values where string values can be
277
283
* represented as binary values (e.g. contact: closed = 1, open = 0)
278
284
*
279
- * Useful references:
280
- * - http://docs.smartthings.com/en/latest/capabilities-reference.html
281
- * - https://docs.influxdata.com/influxdb/v0.10/guides/writing_data/
282
285
**/
283
- def handleEvent (evt ) {
284
- logger(" handleEvent(): $evt . displayName ($evt . name :$evt . unit ) $evt . value " ," info" )
285
-
286
+ def parseEvent (evt ) {
286
287
// Build data string to send to InfluxDB:
287
288
// Format: <measurement>[,<tag_name>=<tag_value>] field=<field_value>
288
289
// If value is an integer, it must have a trailing "i"
289
290
// If value is a string, it must be enclosed in double quotes.
291
+ logger(" handleEvent(): $evt . displayName ($evt . name :$evt . unit ) $evt . value " ," info" )
290
292
def measurement = evt. name
291
293
// tags:
292
294
def deviceId = escapeStringForInfluxDB(evt. deviceId)
@@ -487,15 +489,7 @@ def handleEvent(evt) {
487
489
else {
488
490
data + = " ,unit=${ unit} value=${ value} "
489
491
}
490
-
491
- // Post data to InfluxDB pool requests if enabled.
492
- if (settings. preDatabasePooling) {
493
- poolInfluxDB(data)
494
- }
495
- else {
496
- postToInfluxDB(data)
497
- }
498
-
492
+ return data
499
493
}
500
494
501
495
@@ -520,15 +514,16 @@ def softPoll() {
520
514
521
515
// Iterate over each attribute for each device, in each device collection in deviceAttributes:
522
516
def devs // temp variable to hold device collection.
517
+ def eventsData = " "
523
518
state. deviceAttributes. each { da ->
524
519
devs = settings. " ${ da.devices} "
525
520
if (devs && (da. attributes)) {
526
521
devs. each { d ->
527
522
da. attributes. each { attr ->
528
523
if (d. hasAttribute(attr) && d. latestState(attr)?. value != null ) {
529
524
logger(" softPoll(): Softpolling device ${ d} for attribute: ${ attr} " ," info" )
530
- // Send fake event to handleEvent():
531
- handleEvent ([
525
+ // Build multiple event string to sent to InfluxDB
526
+ eventsData = eventsData + ' \n ' + parseEvent ([
532
527
name : attr,
533
528
value : d. latestState(attr)?. value,
534
529
unit : d. latestState(attr)?. unit,
@@ -541,7 +536,7 @@ def softPoll() {
541
536
}
542
537
}
543
538
}
544
-
539
+ postToInfluxDB(eventsData)
545
540
}
546
541
547
542
/**
@@ -598,31 +593,6 @@ def logSystemProperties() {
598
593
599
594
}
600
595
601
-
602
- /**
603
- * poolInfluxDB()
604
- **/
605
- def poolInfluxDB (data ) {
606
- state. poolData = state. poolData + ' \n ' + " ${ data} "
607
- // If 80% of state data max commit immediately
608
- if (state. poolData. size() >= 80000 ) {
609
- commitPoolToInfluxDB()
610
- }
611
- else {
612
- runIn(5 , commitPoolToInfluxDB)
613
- }
614
- }
615
-
616
- /**
617
- * commit Pool
618
- **/
619
- def commitPoolToInfluxDB () {
620
- logger(" commitPoolToInfluxDB(): ${ state.poolData.size()} bytes" , " info" )
621
- logger(" commitPoolToInfluxDB(): ${ state.poolData} " , " info" )
622
- postToInfluxDB(state. poolData)
623
- state. poolData = " "
624
- }
625
-
626
596
/**
627
597
* postToInfluxDB()
628
598
*
@@ -829,5 +799,4 @@ private getGroupName(id) {
829
799
else if (id == ' XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' ) {return ' Lounge' }
830
800
else if (id == ' XXXXXXXX-XXXX-XXXX-XXXX-XXXXXXXXXXXX' ) {return ' Office' }
831
801
else {return ' Unknown' }
832
- }
833
-
802
+ }
0 commit comments