티스토리 뷰
데이터출처 : 공공데이터포터
OpenAPI05
EPowerDataCollector
package com.yusen.i2b.openapi05
import android.util.Log
import org.json.JSONObject
class cEPowerDataCollector{
companion object{
const val TAG = "EPowerDataCollector"
const val REQUESTING = 11
const val RESPONDED = 12
const val NEXTREQUEST = 13
const val PROCESSCOMPLETED = 19
const val NOCOMMAND = 91
const val IDLING= 1
const val PREPARING = 2
}
private val Constants = cConstants()
val mHandler:UploadHandler = UploadHandler()
private val ServiceKey = Constants.ServiceKey_EPower5m // key#2
private val baseURL_requestEPowerData = Constants.BaseURL_requestEPowerData
private val baseURL_BilientServer = Constants.BilientServer
private val Params_requestEPowerData = JSONObject()
private val Params_loadEPowerData = JSONObject()
private val WebAccess = cWebAccess()
private var processID = NOCOMMAND
var IsUploaded = false
var UploadedString = "-"
constructor(){
SetParams_requestEPowerData()
SetParams_loadSeaStationData()
}
public fun CreateTables(){
val jSON1 = JSONObject()
Log.d("[EPower-22]", "Uploading EPower data ...")
val msg1 = mHandler.obtainMessage(UploadHandler.MSG_UPLOADWEATHERDATA)
jSON1.accumulate("RequestType", "createTables")
val RequestInfo = cRequestInfo(baseURL_BilientServer, jSON1)
// val RequestInfo = cRequestInfo(baseURL_uploadTest, JSON1)
msg1.obj = RequestInfo
mHandler.sendMessage(msg1)
}
public fun Start_requestEPowerData(){
processID = IDLING
this.WebAccess.ClearValues()
CheckProcess_requestEPowerData()
}
public fun CheckProcess_requestEPowerData():Int{
when(processID){
IDLING->{
this.WebAccess.ClearValues()
this.WebAccess.Request_GET(this.baseURL_requestEPowerData, Params_requestEPowerData)
this.processID = REQUESTING
Log.d("[EPower-01]", "Requesting E-Power data ...")
return 0
}
REQUESTING->{
if(!WebAccess.IsResponded) return 0
Log.d("[EPower-02]", "Responded")
processID = RESPONDED
return 0
}
RESPONDED->{
processID = IDLING
Log.d("[EPower-11]", WebAccess.ResponseString)
val ePowerData = ConvertResponse2EPowerData(WebAccess.ResponseString)
if(ePowerData == null) return -1
Log.d("[EPower-12]", ePowerData.ItemValues[0].getString("baseDatetime"))
UploadEPowerData(ePowerData.ItemValues)
IsUploaded = true
UploadedString = ePowerData.ItemValues[0].getString("baseDatetime")
return 1
}
PROCESSCOMPLETED->{
return 2
}
else->{
return -2
}
}
return 0;
}
private fun UploadEPowerData(ePowerData_JSON:ArrayList<JSONObject>){
for(JSON1 in ePowerData_JSON ){
//val JSON1 = JSONObject(WeatherData_JSON.get(Index1).toString())
if(JSON1 == null) return
Log.d("[EPower-22]", "Uploading EPower data ...")
val msg1 = mHandler.obtainMessage(UploadHandler.MSG_UPLOADWEATHERDATA)
JSON1.accumulate("RequestType", "uploadEPowerData")
val RequestInfo = cRequestInfo(baseURL_BilientServer, JSON1)
// val RequestInfo = cRequestInfo(baseURL_uploadTest, JSON1)
msg1.obj = RequestInfo
mHandler.sendMessage(msg1)
}
}
private fun ConvertResponse2EPowerData(ResponseString:String):cWeatherData?{
val DataManager = cDataManager()
val Response_XML = DataManager.String2XMLList(ResponseString, "response")
if(Response_XML == null){
return null
}
val EPowerHeader_XML = DataManager.FindtheNodeList(Response_XML, "header")
if(EPowerHeader_XML == null){
return null
}
val EPowerHeader_JSON = DataManager.XMLList2JSON(EPowerHeader_XML)
if(EPowerHeader_JSON == null){
return null
}
Log.d("[Header]", EPowerHeader_JSON.getString("resultCode")+", "+EPowerHeader_JSON.getString("resultMsg"))
when(EPowerHeader_JSON.getString("resultCode")) {
"00" -> {
val Items_XML = DataManager.FindtheNodeList(Response_XML, "items")
if (Items_XML == null) {
return null
}
val ItemNumber = Items_XML.length
val ItemArray_JSON = ArrayList<JSONObject>()
for (Index1 in 0..(ItemNumber - 1)) {
val Item1 = Items_XML.item(Index1)
if (Item1.nodeName == "item") {
val Items_JSON = DataManager.XMLList2JSON(Item1.childNodes)
if (Items_JSON == null) continue
ItemArray_JSON.add(Items_JSON)
}
}
return cWeatherData(EPowerHeader_JSON, ItemArray_JSON)
}
else->{
return null
}
}
}
private fun SetParams_requestEPowerData(){
Params_requestEPowerData.accumulate("serviceKey", this.ServiceKey)
}
private fun SetParams_loadSeaStationData(){
Params_loadEPowerData.accumulate("RequestType", "loadEPowerData")
}
}
반응형
'SWDesk > App' 카테고리의 다른 글
BluetoothChat + Arduino (1) | 2021.05.26 |
---|---|
[Android] Bluetooth Example (2) | 2021.04.25 |
지상 기상 데이터 수집 프로그램 소스 (0) | 2021.03.29 |
해상 기상 데이터 수집 프로그램 소스 (0) | 2021.03.22 |
[Python] Example for Google Drive API (0) | 2021.01.16 |
반응형
250x250
최근에 올라온 글
최근에 달린 댓글
- Total
- Today
- Yesterday
링크
TAG
- 둎
- Decorator
- Video
- 아두이노
- badp
- 절연형
- 치매
- Innovation&Hurdles
- BSC
- 혁신과허들
- 빌리언트
- Hurdles
- 오블완
- DYOV
- 심심풀이
- 심심풀이치매방지기
- 전압전류모니터링
- 전압
- 티스토리챌린지
- 허들
- bilient
- ServantClock
- image
- 배프
- Innovations&Hurdles
- 치매방지
- arduino
- 전류
- Innovations
- 혁신
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | 3 | ||||
4 | 5 | 6 | 7 | 8 | 9 | 10 |
11 | 12 | 13 | 14 | 15 | 16 | 17 |
18 | 19 | 20 | 21 | 22 | 23 | 24 |
25 | 26 | 27 | 28 | 29 | 30 | 31 |
글 보관함