отправка файлов скриптов в формате json в Python - PullRequest
0 голосов
/ 09 февраля 2019

Я работаю над приложением IOT IMB. В основном это позволяет отправлять команды или данные с одного устройства на другое в формате json.Я разработал скрипт на Python, который отправляет строку из одной системы и получает ее в другой системе.И это работает хорошо.Теперь я хочу иметь дело с файлом сценария вместо строки.Но дело в том, что IBM IOT поддерживает только формат json для вывода полезных данных.Есть ли способ конвертировать файлы в формат json?

   i wrote a script which tries converting files to json format, doesn't work that perfect ! is there any other way to do that?

код для преобразования файла скрипта в json

код вывод кода

Is there any way to make it work better?

вот код, который пытается отправить файл в другую систему в формате json

act =input("Enter the key->")
file_path = input("\nPlease enter the file path->")
payload1 ={"computer1" : act}
update_file= open(file_path,'rb')
payload ={}
payload['context'] = base64.b64decode( update_file.read())
client.publishEvent("status",json,payload1,payload)

print(act)

print("command sent")
time.sleep(2)

и на другом компьютере

 def commandcallback(event):
   filename = payload['recieved_one]
   filedata = base64.base64decode(payload['context'])
   update_file =open(filename,'wb')
   update_file.write(filedata)
   update_file.close()

1 Ответ

0 голосов
/ 10 февраля 2019

Вы можете реализовать собственный кодек сообщений для передачи содержимого файла любым способом, который вы выберете.

См. Раздел документации, посвященный использованию пользовательских форматов сообщений.https://ibm -watson-iot.github.io / iot-python / custommsg / ... Имейте в виду, что эти документы предназначены для ожидаемой версии 1.0 (wiotp-sdk, а не ibmiotf), ноэтот аспект работает примерно так же в выпуске 0.4 ibmiotf.

. Зависит от того, что вы хотите получить от этого, как я бы порекомендовал справиться с этим:

Вас интересуют только простые текстовые файлы?

Вы можете написать простой кодек, который будет отправлять данные в виде простой строки в utf-8 (или любой другой выбранной вами кодировке), зарегистрировать кодек для форматаstring utf8 И используйте это в качестве строки формата при отправке событий, чтобы клиенты знали, что именно так вы хотите кодировать и определять полезную нагрузку сообщения, что означает, что получаемые в приложении event.data будут закодированы в кодировке UTF-8.строка содержимого файла.

Вы хотите использовать это как способ передачи любого файла, независимо от типа содержимого?

Вы могли бы написать кодек такойчто он просто проходит сырой байтЛуч, подходящий для записи непосредственно в файл в приложении, обрабатывающем событие (например, с использованием строки формата raw), в этом случае event.data даст вам байтовый массив, который можно легко использовать для записи в файл принимающего приложения.

Надеюсь, это даст вам представление о том, что вы можете сделать с помощью поддержки пользовательских сообщений, встроенной в клиентскую библиотеку.Я посмотрю, как добавить их в качестве примеров в репо, когда вернусь в офис в понедельник.

...