Создание сущности в службе с помощью IDAS и ContextBroker

Итак, у меня возникли проблемы с подключением виртуальных устройств к contextBroker и я думаю, что это из-за Fiware-Service. Я не хочу использовать OpenIoT (хотя у меня это тоже не сработало). Мне не удалось найти документацию о создании службы, и, возможно, я создаю ее неправильно.

Я сделал Python CreateService bus_auto 4jggokgpepnvsb2uv4s40d59ov и не уверен, что он возвращает мне 201. Я обновил файл config.ini для работы с МОИМ сервисом, но когда я отправляю наблюдения, он не меняет значение объекта в contextBroker.

сейчас запускаю

Мой файл config.ini:

[user]
# Please, configure here your username at FIWARE Cloud and a valid Oauth2.0 TOKEN for your user (you can use get_token.py to obtain a valid TOKEN).
username=
token=NULL

[contextbroker]
host=127.0.0.1
port=1026
OAuth=no
# Here you need to specify the ContextBroker database you are querying.
# Leave it blank if you want the general database or the IDAS service if you are looking for IoT devices connected by you.
fiware_service=bus_auto

[idas]
host=130.206.80.40
adminport=5371
ul20port=5371
OAuth=no
# Here you need to configure the IDAS service your devices will be sending data to.
# By default the OpenIoT service is provided.
fiware-service=bus_auto
fiware-service-path=/
apikey=4jggokgpepnvsb2uv4s40d59ov

[local]
#Choose here your System type. Examples: RaspberryPI, MACOSX, Linux, ...
host_type=CentOS
# Here please add a unique identifier for you. Suggestion: the 3 lower hexa bytes of your Ethernet MAC. E.g. 79:ed:af
# Also you may use your e-mail address.
host_id=db:00:ff

Я использую скрипт Python GetEntity.py:

python2.7 GetEntity.py bus_auto_2 

Я также попытался использовать скрипт Python, который я создал:

import json
import urllib
import urllib2

BASE_URL = 'http://127.0.0.1:1026'
QUERY_URL = BASE_URL+'/v1/queryContext'

HEADERS = {
    'Content-Type': 'application/json',
    'Accept': 'application/json'
}

QUERY_EXAMPLE = {
    "entities": [
        {
            "type": "bus_auto_2",
            "isPattern": "false",
            "id": "Room1"
        }
    ]
}


def post(url, data):
    """"""
    req = urllib2.Request(url, data, HEADERS)
    f = urllib2.urlopen(req)
    result = json.loads(f.read())
    f.close()
    return result

if __name__ == "__main__":
    print post(UPDATE_URL, json.dumps(UPDATE_EXAMPLE))
    print post(QUERY_URL, json.dumps(QUERY_EXAMPLE))

person Diogo Nunes    schedule 23.04.2015    source источник
comment
Не могли бы вы отредактировать свой вопрос, включив в него команду или механизм, который вы используете для проверки объекта в ContextBroker? Спасибо!   -  person fgalan    schedule 27.04.2015
comment
Ответ был отредактирован :)   -  person Diogo Nunes    schedule 27.04.2015


Ответы (2)


Я вижу, что служба хорошо создана, и на самом деле я вижу одно устройство, определенное в ней.

Я даже успешно отправил наблюдение (t|23) устройству bus_auto_2.

Позже я проверяю в ContextBroker этот объект: "thing:bus_auto_2" и вижу последнее отправленное мной наблюдение.

Вы обновили в файле config.ini FIWARE_SERVICE в разделах ContextBroker и IDAS?

Ваше здоровье,

person Carlos Ralli    schedule 27.04.2015
comment
Спасибо за ответ, но, как вы можете убедиться в моем отредактированном ответе, сервис хорошо написан :) - person Diogo Nunes; 27.04.2015
comment
Привет, Диего, я пробовал: › python SendObservation.py bus_auto_2 ‘p|1’1 › python GetEntity.py вещь: bus_auto_2 Я думаю, что вы запрашиваете не тот объект. - person Carlos Ralli; 27.04.2015
comment
Извините, я не совсем понимаю ваш вопрос. У меня есть contextBroker, работающий на моем локальном хосте (например, mongoDB). - person Diogo Nunes; 27.04.2015
comment
Диего, я нашел его. Все ваши сущности - это вещь:[entity_name]. Так что попробуйте с thing:autocarro и thing:bus_auto_2. Все объекты, созданные агентом IoT, добавляются с типом устройства и:, в вашем случае:. - person Carlos Ralli; 27.04.2015
comment
Я пробовал так, как вы просили, но он продолжает получать 404 :\ - person Diogo Nunes; 27.04.2015
comment
Диего, в файле config.ini IP-адрес брокера контекста должен быть 130.206.80.40, а не 127.0.0.1. Можете ли вы попробовать python GetEntity.py thing:bus_auto_2 с этой конфигурацией? - person Carlos Ralli; 27.04.2015
comment
Вот так Карлос! Спасибо. Но теперь, если я хочу настроить таргетинг на своего собственного контекстного брокера, что мне делать? - person Diogo Nunes; 28.04.2015
comment
Привет, Диего, на слайде 5 по адресу slideshare.net/FI-WARE/fiware-iotidasintroul20v2 у вас есть способ создать службу IDAS, указывающую на ваш ContextBroker. Вы можете добавить это как проблему в github FIGWAY, и я перепишу скрипт, чтобы поддерживать его в следующих спринтах ;-) - person Carlos Ralli; 28.04.2015
comment
Спасибо, Карлос, ты очень помог :) - person Diogo Nunes; 30.04.2015
comment
Диего, я только что изменил скрипт CreateService.py на github. com/telefonicaid/fiware-figway/tree/master/python-IDAS4/ . Теперь вы можете дополнительно добавить IP-адрес и ПОРТ для вашего частного экземпляра ContextBroker при создании службы IDAS. Удачи и спасибо за использование IDAS! - person Carlos Ralli; 04.05.2015
comment
Карлос, это определенно улучшит использование сервиса! Большое тебе спасибо. - person Diogo Nunes; 04.05.2015
comment
Извините, но используя ваш скрипт и предоставляя свой экземпляр ContextBroker (10.133.170.76 1026), когда я регистрирую устройство во вновь созданной службе, я не получаю создание объектов (также проверено с помощью GetEntities.py ALL). Я изменил файл config.ini для работы с сервисом (fiware_soul_2), также я открыл порт 1026 на брандмауэре. - person Diogo Nunes; 04.05.2015
comment
Привет, Диего, 10.x.y.z кажется частным IP-адресом. Если вы находитесь за NAT, вы должны указать общедоступный IP-адрес и порт и перенаправить в NAT это TCP-соединение на адрес 10.xyz и порт 1026. - person Carlos Ralli; 04.05.2015
comment
Что происходит, так это то, что даже если я запускаю сценарий, который вы предоставили, экземпляр Context Broker, к которому обращаются для хранения объектов, всегда находится в 130.206.80.40.. Я настроил config.ini как в CB, так и в IDAS для запуска созданного сервис, указывающий на мой собственный ContextBroker, но независимо от того, что он всегда придерживается 130.206.80.40 - person Diogo Nunes; 04.05.2015
comment
какой сервис вы сейчас пробуете? мы проверим, что делает IDAS и почему он идет к тому ContextBroker, а не к вам. - person Carlos Ralli; 05.05.2015
comment
Я попробовал несколько сервисов, но вы можете проверить fiware-soul-v3. - person Diogo Nunes; 05.05.2015
comment
Мы видим, что он перенаправляется на какой-то 188.1??.?2.??4:1026 адрес (я не включаю эти номера из соображений безопасности). Мы проверим, отправляются ли уведомления в ближайшее время. Тем временем, можете ли вы проверить, нет ли неправильной конфигурации брандмауэра/NAT? Спасибо - person Carlos Ralli; 05.05.2015
comment
Нет неправильной настройки брандмауэра. 1026 открыт :-) - person Diogo Nunes; 05.05.2015
comment
Diogo, я проверил журнал IDAS, и ваш ContextBroker отвечает ошибкой: неверный запрос — имя арендатора не принято — строка арендатора не должна быть длиннее 50 символов и может содержать только знаки подчеркивания и буквенно-цифровые символы. Я думаю, что ContextBroker не нравится - в сервисе FIWARE. Я бы попробовал с _ или даже без них. Если это так, вы можете сообщить о проблеме команде ContextBroker, но тогда мы все знаем об этом условии. - person Carlos Ralli; 05.05.2015
comment
Привет, Карлос, извините за задержку с ответом. Я попробовал то, что вы предложили, но, похоже, это не сработало :( Скажите мне что-нибудь, IP-адрес IDAS в файле config.ini все еще 130.206.80.40, верно? Единственное, что мне нужно изменить, это служба fiware? - person Diogo Nunes; 13.05.2015

Глядя на ваш скрипт, кажется, что вы не включаете заголовок Fiware-Service в свой запрос queryContext. Таким образом, запрос разрешается в «службе по умолчанию», а не в службе bus_auto.

Вероятно, изменение карты HEADERS следующим образом решит проблему:

HEADERS = {
    'Content-Type': 'application/json',
    'Accept': 'application/json',
    'Fiware-Service: 'bus_auto' 
}

РЕДАКТИРОВАНИЕ. В дополнение к вышеуказанному изменению обратите внимание, что BASE_URL указывает на локальный экземпляр Orion, а не на тот, который подключен к IDAS (который работает на том же компьютере, что и IDAS). Таким образом, я думаю, вам также необходимо изменить BASE_URL следующим образом:

BASE_URL = 'http://130.206.80.40:1026'
person fgalan    schedule 27.04.2015
comment
Я обновил скрипт, добавив новый заголовок, но он все еще не работает. Я зарегистрировал еще одно виртуальное устройство под названием autocarro и смоделировал Observation. Запрос contextBroker дает мне: 404 Элемент контекста не найден - person Diogo Nunes; 27.04.2015
comment
Возможно, BASE_URL тоже нужно скорректировать. Пожалуйста, смотрите мое последнее редактирование в сообщении с ответом. - person fgalan; 28.04.2015