Красный узел получает JSON или CSV-фид в InfluxDB
Версии
- Node-RED v0.16.2
- InfluxDB v1.2.2
- Графана v4.2.0
- Ubuntu 16.04.2
Я хочу получить некоторые метеорологические наблюдения от моей местной официальной метеорологической станции. Я могу выбрать между CSV и JSON
- Я пытаюсь получить канал JSON с помощью Node-RED.
- Я использовал узел HTTP-запроса, который возвращает проанализированный объект JSON
Возвращает этот вложенный массив:
объект
- наблюдения: объект
- уведомление: массив [1]
- 0: объект
- copyright: "Copyright Commonwealth of Australia 2017, Бюро метеорологии. Для получения дополнительной информации см.: urlhere urlhere"
- copyright_url: "urlhere"
- disclaimer_url: "urlhere"
- feedback_url: "urlhere"
- заголовок: массив [1]
- 0: объект
- refresh_message: "Выпущено в 21:32 EST вторник, 2 мая 2017 года"
- ID: "IDV60801"
- main_ID: "IDV60800"
- название: "Аэропорт Мураббин"
- state_time_zone: "VIC"
- часовой пояс: "EST"
- product_name: "Наблюдения за погодой"
- Состояние: "Виктория"
- данные: массив [155]
- [0… 9]
- 0: объект
- sort_order: 0
- wmo: 94870
- название: "Аэропорт Мураббин"
- history_product: "IDV60801"
- local_date_time: "02/09: 30 вечера"
- local_date_time_full: "20170502213000"
- aifstime_utc: "20170502113000"
- широта: -38
- долг: 145,1
- visible_t: 5.4
- облако: "-"
- cloud_base_m: null
- cloud_oktas: null
- cloud_type: "-"
- cloud_type_id: null
- delta_t: 2,5
- gust_kmh: 19
- gust_kt: 10
- air_temp: 9
- росы: 3,2
- нажмите: 1025,8
- press_msl: 1025,8
- press_qnh: 1025,8
- press_tend: "-"
- rain_trace: "1.0"
- rel_hum: 67
- sea_state: "-"
- swell_dir_worded: "-"
- swell_height: null
- swell_period: null
- vis_km: "10"
- погода: "-"
- wind_dir: "ESE"
- wind_spd_kmh: 11
- * wind_spd_kt: ** 6
Мне нужен был только массив data: поэтому я использовал функциональный узел "Извлечение значения" со следующим кодом:
msg.payload = msg.payload.observations.data[0]
return msg;
Вышеуказанная функция вернула этот объект:
- sort_order: 0
- wmo: 94870
- название: "Аэропорт Мураббин"
- history_product: "IDV60801"
- local_date_time: "02/09: 30 вечера"
- local_date_time_full: "20170502213000"
- aifstime_utc: "20170502113000"
- широта: -38
- долг: 145,1
- visible_t: 5.4
- облако: "-"
- cloud_base_m: null
- cloud_oktas: null
- cloud_type: "-"
- cloud_type_id: null
- delta_t: 2,5
- gust_kmh: 19
- gust_kt: 10
- air_temp: 9
- росы: 3,2
- нажмите: 1025,8
- press_msl: 1025,8
- press_qnh: 1025,8
- press_tend: "-"
- rain_trace: "1.0"
- rel_hum: 67
- sea_state: "-"
- swell_dir_worded: "-"
- swell_height: null
- swell_period: null
- vis_km: "10"
- погода: "-"
- wind_dir: "ESE"
- wind_spd_kmh: 11
- wind_spd_kt: 6
Если я помещаю это в InfluxDB через узел хранения, я получаю эту ошибку:
Ошибка: Произошла ошибка 400 Bad Request: {"error":"невозможно проанализировать 'bom-obs-moorabbin-airport aifstime_utc=\"20170513070000\",air_temp=13.6, Очевидный_t=10,6, облако =\"-\",cloud_base_m= NULL,cloud_oktas= NULL,cloud_type=\"-\",cloud_type_id= нуль,delta_t=2,9,dewpt=7,6,gust_kmh=17,gust_kt=9,history_product=\"IDV60801\", ш =-38,local_date_time=\"13/05:00pm\",local_date_time_full=\"20170513170000\",lon=145.1,name=\"Аэропорт Мураббин \", нажмите =1023.5,press_msl=1023.5, нажмите_qnh=1023.5, нажмите_тенд =\"-\",rain_trace=\"0.0\",rel_hum=67,sea_state=\"-\", порядок_сортировки =0,swell_dir_worded=\"-\",swell_height= NULL,swell_period= NULL,vis_km=\"10\",weather=\"-\",wind_dir=\"SSW\",wind_spd_kmh=13,wind_spd_kt=7,wmo=94870': недопустимый номер "}
Если вместо этого я вставлю узел JSON между "Извлечь значение" и узлом хранения InfluxDB, то получу отладочный вывод:
"{" sort_order ": 0," wmo ": 94870," name ":" Moorabbin Airport "," history_product ":" IDV60801 "," local_date_time ":" 13/05: 00pm "," local_date_time_full ":" 20170513170000 " "aifstime_utc":"20170513070000","ш":-38,"долгота":145,1, "apparent_t": 10,6,"облако":"-","cloud_base_m": нулевой,"cloud_oktas": нулевой,"cloud_type":"-" "cloud_type_id": NULL,"delta_t":2.9,"gust_kmh":17,"gust_kt":9,"air_temp":13,6,"dewpt":7.6,"нажмите":1023,5,"press_msl":1023,5,"press_qnh":1023,5,"press_tend":"-" "rain_trace":"0.0","rel_hum":67,"sea_state":"-","swell_dir_worded":"-","swell_height": нулевой," swell_period ": нулевой,"vis_km":"10","погода":"-","wind_dir":"SSW","wind_spd_kmh":13,"wind_spd_kt":7}"
Когда я присоединяю этот узел JSON к узлу хранения InfluxDB, не выдается никаких ошибок, но нет никаких значений в InfluxDB, которые я мог бы просмотреть, отобразить на графике или представить в виде таблицы в Grafana.
Каков наилучший способ взять вышеуказанный канал с этого сайта и поместить его в InfluxDB, чтобы я мог просматривать его графически в Grafana?
1 ответ
Вы можете попробовать это:
return {
payload: {
data : msg.payload.observations.data[0]
}
};