পাই 3 এ স্বয়ংক্রিয়ভাবে ব্লুটুথ সংযোগগুলি গ্রহণ করুন


14

আমি আমার গাড়িটির জন্য এমন একটি প্ল্যাটফর্ম তৈরি করতে চাই যা ব্লুটুথের মাধ্যমে পাইয়ের সাথে সংযোগ দেওয়ার চেষ্টা করে এমন কোনও ডিভাইস স্বয়ংক্রিয়ভাবে সংযোগ করে। বর্তমানে এটির জন্য পিয়ার জুটি গ্রহণ দরকার তবে এ ক্ষেত্রে কোনও স্ক্রিন থাকবে না তাই এটি স্বয়ংক্রিয়ভাবে করা দরকার। আমি কীভাবে এটি সম্পাদন করতে পারি?


বাহিরের হার্ডওয়্যার ছাড়া ব্লুটুথের কেবল পাই 3 যেমন ক্যারিবি যেমন আপনার রয়েছে এমন কোনও পাই মডেলটি কী আপনি বর্ণনা করতে পারেন?
মোহাম্মদ আলী

রাস্পবেরি পাই 3 মডেল বি - ব্লুটুথ
অলিভার কুচিগুলি

সুতরাং আপনারা যে সমস্ত প্রত্যাশা করছেন তা হ'ল পাই ক্রমাগত সম্প্রচার করা এবং আপনার ফোন দ্বারা তৈরি করা কোনও জুড়ি সংযোগ গ্রহণ করা? আপনি কি সুরক্ষা প্রভাব বোঝেন? ঠিক আছে? এবং কাজটি গ্রহণযোগ্য সমাধান করার জন্য একটি ছোট পাইথন স্ক্রিপ্টও লিখছেন?
মোহাম্মদ আলী

হ্যাঁ তবে এটিকে আরও সুরক্ষিত করার জন্য আমি পুনরায় আবিষ্কারের আগে কীভাবে একটি সংযোগে সীমাবদ্ধ রাখতে হবে তা দেখানোর পরামর্শ দিই। এছাড়াও অন্যদের সাহায্য করতে :) উত্তর নিরাপত্তা প্রভাব যোগ করার জন্য বিনা দ্বিধায়
অলিভার Kuchies

উত্তর:


12

( দ্রষ্টব্য যে এই উত্তরটি আর আর রাস্পবিয়ান জেসির মতো কাজ করছে না, যেহেতু ব্লুজ ব্লুটুথ-এজেন্ট কমান্ডটি সরিয়ে দিয়েছে )

সুতরাং বর্তমানে আপনি উল্লেখ করেছেন যে আপনি পাইটির সাথে ঠিকঠাক সংযোগ করতে পারেন, তবে যুগল প্রক্রিয়াটির জন্য একটি মনিটর প্রয়োজন।

দ্রষ্টব্য: যে কোনও সংযোগ গ্রহণ করা একটি অবিশ্বাস্যরকম সুরক্ষিত ধারণা এবং আপনি যদি কেবলমাত্র একটি সীমিত ডিভাইস ব্যবহার করেন তবে এগুলিকে বিশ্বস্ত ডিভাইস হিসাবে সেট করা আরও অনেক বেশি অর্থবোধ করতে পারে কারণ এটি আপনার ম্যাক অ্যাড্রেসের সাথে সংযোগ সীমাবদ্ধ করে কিন্তু নতুনটির জন্য অনুমতি দেয় না একটি মনিটর ছাড়া ডিভাইস যোগ করা হবে

তবে যাইহোক, পাইগুলিতে তৈরি হওয়া সমস্ত সংযোগগুলি গ্রহণ করার জন্য, এটি আবিষ্কারযোগ্য করে তোলার জন্য এবং পূর্বাভাসযোগ্য পিন সেট করতে আপনার যে কমান্ডগুলি চালাতে হবে তা নীচে তালিকাভুক্ত করা হয়েছে:

দ্রষ্টব্য: hci0 আপনার ডিভাইসগুলির ব্লুটুথ নম্বরটিতে আপনার শূন্য পরিবর্তন করতে হতে পারে ।

hciconfig hci0 up
hciconfig hci0 sspmode 1
hciconfig hci0 piscan
sudo bluetooth-agent 1234

এখন এই কমান্ডগুলি চালনার পরে এবং তারা প্রত্যাশা অনুযায়ী কাজ করে কিনা তা দেখার পরে আমরা আপনার পাইয়ের বুট শুরু করার জন্য সেগুলি সেট আপ করতে এগিয়ে যেতে পারি।

  1. কমান্ডটি চালিয়ে আমরা একটি বাশ ফাইল তৈরি করে শুরু করি sudo nano mohammadIsAmazing.sh
  2. আমরা এখন সেই ফাইলটিতে নিম্নলিখিতটি প্রবেশ করি:

    #!/bin/sh
    sleep 20
    hciconfig hci0 up
    hciconfig hci0 sspmode 1
    hciconfig hci0 piscan
    sudo bluetooth-agent 1234
    
  3. এখন আমরা এই ফাইলটি ব্যবহার করে আমাদের ফাইলটি সংরক্ষণ এবং বন্ধ করি control key and x

  4. আমরা /etc/rc.localনিম্নলিখিত কমান্ডটি ব্যবহার করে ফাইলটি খুলি :

    Sudo nano /etc/rc.local
    
  5. এখন আমরা আমাদের বাশ স্ক্রিপ্টটি চালানোর জন্য কমান্ডটি প্রবেশ করলাম /etc/rc.local

    sudo /path/to/script/mohammadIsAmazing.sh &
    

    দ্রষ্টব্য: আপনাকে /etc/rc.local এ শেষ লাইনের আগে কমান্ডটি লিখতে হবে: exit 0

  6. আমরা এখন সেই ফাইলটি সংরক্ষণ এবং বন্ধ করি, তারপরে পাইটি পুনরায় বুট করব।

সাইড নোটে: সামান্যতম নিরাপত্তা বাড়ানোর জন্য একটি এলোমেলো পিনটি চয়ন করতে ভুলবেন না be

অন্য দিকে নোট: আপনি যদি ব্লুটুথ ডিভাইসের নাম পরিবর্তন করতে চান তবে আপনাকে এমন একটি ফাইল তৈরি করতে হবে /etc/machine-infoযা বলা উচিত:

PRETTY_HOSTNAME=device-name

তারপর চালানোর service bluetooth restartযে পরে


2
মনে রাখবেন যে &লাইন এর প্রান্তে rc.localফাইল - এটা ছাড়া RPi আপনার স্ক্রিপ্টের জন্য শেল অপেক্ষা করছে যেমন বুট করার শেষ নাও হতে পারে /path/to/script/mohammadIsAmazing.shআগে এটি চলতে নির্বাহ শেষ করতে - এবং যদি এটা বুট শেষ না হয় তবে আপনাকে সক্ষম হবেন না sshবা এটি জিনিস ঠিক করার জন্য ...!
স্লিএসভেন

হাই মোহাম্মদ। sudo ব্লুটুথ-এজেন্ট একটি স্বীকৃত কমান্ড
অলিভার কুচিজ

অলিভারকুচিরা apt-get install bluetooth bluezপ্রথমে দৌড়ানোর চেষ্টা করুন এবং তা আপনার জন্য কাজ করে কিনা তা আমাকে জানান।
মোহাম্মদ আলী

আমি দৌড়ানোর চেষ্টা করেছি bluetooth-agentএবং এটিও খুঁজে পাইনি। প্যাকেজ ইনস্টল করা এটি ঠিক করে নি।
গিলাদ নামান

@ গিলাদনামন ভাল করে ওস, আপনি কি ব্যবহার করছেন?
মোহাম্মদ আলী

0

আমি যা বুঝি তার ভিত্তিতে হ'ল দাস ব্লুটুথ মডিউল। আপনি জনপ্রিয় এইচসি -06 মডিউলটি ব্যবহার করতে পারেন এবং পাই এর টিএলএস এবং আরএক্স পিনের সাথে একটি লেভেল শিফটারের মাধ্যমে এটি রাস্পবেরি পাইয়ের সাথে সংযুক্ত করতে পারেন এবং সিরিয়াল ডেটা পড়ার জন্য পাইথন স্ক্রিপ্টটি ব্যবহার করতে এবং প্রয়োজনীয় হিসাবে এটি প্রক্রিয়া করতে পারেন


আমি ধরে নেব যে একটি অজগর মডিউল থাকবে যা একটি হার্ডওয়্যার সংযোগের চেয়ে ব্লুটুথ ডিভাইস সংযোগ করার সাথে সাথেই চালানো যেতে পারে? আমি পাইয়ের সাথে খুব নড়বড়ে নই, এখনও একটি শিক্ষানবিস তবে মনে হচ্ছে এটি একটি যৌক্তিক পন্থা হবে
অলিভার কুচিজ

@ অলিভারকুচিগুলি আমি লিনাক্সে কখনও কোনও ব্লুটুথ প্রোগ্রামিং (বা ব্যবহার!) করিনি তবে আপনি এমন এক ধরণের ডেমন পরিষেবা সন্ধান করছেন যা এ জাতীয় প্রতিক্রিয়া জানাবে। বিস্তারিত জানাতে: পাইথন মডিউলটি নিজে চলবে না, এটি ইতিমধ্যে চলছে এমন একটি প্রক্রিয়া ব্যবহার করতে হবে। এটি একটি ডেমন। "ব্লুটুথ লিনাক্স ডিমন" অনুসন্ধান করা কিছু জিনিস আপ করে দেয়। আমি মনে করি আমি লক্ষ্য করেছি যে systemdএটির একটি রয়েছে, আপনি সম্ভবত এটি নির্দিষ্ট পদ্ধতিতে আচরণ করার জন্য কনফিগার করতে হবে।
স্বর্ণলোকস


0

আমি সুরক্ষা জড়িত বা না আলোচনা করতে যাচ্ছি না তবে আমি এটি এইভাবে করি:

  1. নিম্নলিখিত সামগ্রীর সাথে অটো_কনেক্ট.শ নামে একটি স্ক্রিপ্ট তৈরি করুন:
#!/bin/bash
bt-adapter --set Powered 1
bt-adapter --set DiscoverableTimeout 0
bt-adapter --set Discoverable 1
bt-adapter --set PairableTimeout 0
bt-adapter --set Pairable 1
/path/to/python_script.py >/dev/nul 2>dev/nul &
list=""
bt-device -l | grep -E -o '[[:xdigit:]]{2}(:[[:xdigit:]]{2}){5}' | { while read line
do
       list="$list connect $line
"
done
bluetoothctl << EOF
$list
EOF
}
  1. নিম্নলিখিত বিষয়বস্তু সহ ফাইল /path/to/python_script.py তৈরি করুন:
#!/usr/bin/python3

from __future__ import absolute_import, print_function, unicode_literals

#import gobject
from gi.repository import GObject as gobject

import re
import dbus
import dbus.mainloop.glib
import subprocess

relevant_ifaces = [ "org.bluez.Adapter1", "org.bluez.Device1" ]

def property_changed(interface, changed, invalidated, path):
    iface = interface[interface.rfind(".") + 1:]
    for name, value in changed.iteritems():
        val = str(value)
        print("{%s.PropertyChanged} [%s] %s = %s" % (iface, path, name, val))

def interfaces_added(path, interfaces):
    for iface in interfaces:
        if not(iface in relevant_ifaces):
            continue
        try:
            found = re.search('dev\_(..\_..\_..\_..\_..\_..)', path).group(1)
        except AttributeError:
            found = '' # apply your error handling
            mac=found.replace("_",":")
            cmd='echo -e "trust '+mac+' \\nconnect '+mac+' \\nquit" | bluetoothctl'
            subprocess.call(cmd, shell=True)

def interfaces_removed(path, interfaces):
    for iface in interfaces:
        if not(iface in relevant_ifaces):
            continue
        print("{Removed %s} [%s]" % (iface, path))

if __name__ == '__main__':
    dbus.mainloop.glib.DBusGMainLoop(set_as_default=True)

    bus = dbus.SystemBus()

    bus.add_signal_receiver(interfaces_added, bus_name="org.bluez", dbus_interface="org.freedesktop.DBus.ObjectManager", signal_name="InterfacesAdded")

    bus.add_signal_receiver(interfaces_removed, bus_name="org.bluez", dbus_interface="org.freedesktop.DBus.ObjectManager", signal_name="InterfacesRemoved")

    mainloop = gobject.MainLoop()
    mainloop.run()
  1. আপনি যে ওএস ব্যবহার করছেন তার উপর নির্ভর করে আপনি নিজের বুটে অটো_কনেক্ট.শ চালাচ্ছেন তা নিশ্চিত করুন।

এটি সব কি করে:

  1. ডিভাইসটি সর্বদা আবিষ্কারযোগ্য হতে সেট করে।

  2. যখন কোনও ডিভাইস এতে যুক্ত হয়, এটি স্বয়ংক্রিয়ভাবে এটিকে বিশ্বস্ত ডিভাইসে চিহ্নিত করে এবং এর সাথে সংযোগ স্থাপন করে।

  3. প্রতিটি বুটে এটি পরিচিত ডিভাইসের তালিকার মাধ্যমে ভ্রমণপথ তৈরি করবে এবং তাদের সাথে সংযোগ স্থাপনের চেষ্টা করবে।

দয়া করে মনে রাখবেন যে এই পদ্ধতিটি যে কোনও ধরণের সুরক্ষার বিরুদ্ধে সরাসরি যায় তবে আপনি যখন এটি অর্জন করতে চান তখন ব্যবহারকারীর ক্ষেত্রেও থাকতে পারে।


-1

রাস্পবেরি পাই 3 মডেল বিতে ব্লুটুথ এবং ওয়াইফাইতে একটি বুলি রয়েছে। ওবিএক্স সার্ভার ব্যবহার করে আপনি প্রতিবার জোড় করার অনুরোধ না জিজ্ঞাসা করে অন্যান্য ডিভাইস থেকে ফাইলগুলি গ্রহণ করতে পারেন। আপনাকে সেই ডিভাইসের সাথে প্রথমবার জুটি করতে হবে এবং একটি ডিরেক্টরি তৈরি করতে হবে, এতে ফাইলগুলি সর্বদা প্রাপ্ত হয়।

কেবল নীচের লিঙ্কের পদক্ষেপটি অনুসরণ করুন।

https://www.raspberrypi.org/forums/viewtopic.php?p=963751#p963751


1
প্রশ্ন পড়েছেন? ওপিতে বিশেষভাবে জিজ্ঞাসা করা হয়েছে যে ম্যানুয়াল জুড়ি এড়ানো কীভাবে হবে কারণ কোনও স্ক্রিন থাকবে না, এবং আপনি পরামর্শ দিচ্ছেন যেভাবেই তাঁর জুড়ি তৈরি করা উচিত?
দিমিত্রি গ্রিগরিওয়েভ

আপনাকে এটিতে কেবল একবারে জুটি তৈরি করতে হবে তাই আপনি প্রথমবারের মতো জুটি বাঁধার জন্য প্রদর্শনের সাথে সংযুক্ত হতে পারেন।
মিহিত গান্ধী

আপনাকে কেবলমাত্র প্রতি ডিভাইসে এটি করতে হবে । এবং যদি নতুন কেউ এটি পেতে চায় তবে এর অর্থ এটি যেখান থেকেই এটি খনন করা এবং এটি একটি মনিটর এবং কীবোর্ডের দিকে ঝুঁকানো, যার কারণে সে এড়াতে কোনও উপায় সন্ধান করছে।
ভিন্ন
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.