پروتکل کنترلی بسیار ساده
پروتکل کنترلی بسیار ساده () (VSCP) یک پروتکل اتوماسیون رایگان مناسب برای تمام اقدامات خودکار سازی در اتوماسیون خانه و ساختمان می‌باشد.
مزیت اصلی آن این است که هر گره VSCP می‌تواند با اینکه بخشی از شبکه توزیعی سایر گره‌ها می‌باشد مستقل باشد. VSCP از لایه‌های فیزیکی (نظیر CANbus, Ethernet, RS-485، RS-232، MiWi) مستقل بوده و گره‌ها را به منظور ایجاد شبکه اتوماسیون به هم متصل می‌کند. در باس ممکن است گره‌هایی وجود داشته باشند که کلیدها، نورپردازی، پرده، پنجره یا صفحات نمایش، اعلام اندازه‌گیری‌های فیزیکی (نظیر دما، میزان نور، مصرف انرژی، ...)، کنترل چندرسانه‌ای، هشدارهای سرقت یا آتش‌نشانی، … را بررسی کنند.
زیرمجموعه‌ای از پروتکل (سطح ۱) وجود دارد که برای CAN bus و میکروکنترلرهای محدود به منابع مناسب می‌باشد. پروتکل‌های سطح دوم برای اترنت (UDP, TCP و Raw-Ethernet) و لایه‌های فیزیکی بدون سیم طراحی شده‌اند. تمام آنها زمینه‌های پیغام و چارچوب مشترکی را به اشتراک می‌گذارند و می‌توان آنها را از طریق ورودی‌ها به هم متصل کرد.
VSCP بر اساس رویدادها عمل می‌کند. هر بار که رویدادی رخ می‌دهد، به سمت تمام گره‌های دیگر منتقل می‌شود. هر گره در شبکه رویداد را دریافت کرده و در مورد اجرا یا عدم اجرای رویداد تصمیم می‌گیرد. مثال نشانه داده شده در نمودار، دکمه‌ای فشرده شده را نشان می‌دهد. این امر در گره ۱ منجر به یک پیغام می‌گردد که به دیگر باس‌ها ارسال شده و به آنها اطلاع می‌دهد که دکمه فشرده شده‌است. گره ۲ پیغام را دریافت کرده اما تصمیم می‌گیرد که دکمه نباید رویدادی را در گره دو اجرا کند. گره ۳ پیغام را دریافت می‌کند و تصمیم می‌گیرد که این دکمه باید لامپ ۲ را روشن کند. برای تمام اتفاقاتی که رخ می‌دهند رویدادی وجود دارد: یک رویداد می‌تواند فشردن دکمه، فعال شدن سنسور حضور یا غروب خورشید باشد. رویدادها می‌توانند به صورت دوره‌ای ارسال شوند، برای مثال دما هر دقیقه بررسی می‌شود. VSCP بسیاری از رویدادهایی را که باید انجام شوند از پیش تعیین می‌کند. رویدادها توسط انواع و رده‌ها تعریف می‌شوند. این که رویداد دریافتی اجرا شود یا نشود باید توسط ماتریس تصمیم یا به‌طور خلاصه DM تعیین گردد. DM در ادامه توضیح داده می‌شود.
رویدادها در رده‌های طبقه‌بندی می‌شوند. یک رده مجموعه‌ای از رویدادها است که به هم مربوط می‌باشند. رده‌های برای هشدار، اندازه‌گیری، کنترل، اطلاعات و … وجود دارند. در حال حاضر VSCP، ۲۵ رده را تعیین می‌کند اما برای یک مورد دیگر نیز ظرفیت دارد. هر رده به چند زیرمجموعه به نام نوع تقسیم می‌شود. یک نوع می‌تواند رویداد را در رده تعریف کند. برای مثال، رویدادهای رده 20 (0x14) رویدادهای اطلاعات می‌باشند. در این رده، زیرمجموعه 1 (0x01) می‌باشد و نشانگر فشرده شدن دکمه می‌باشد. در این رده اطلاعات نوع‌هایی وجود دارند که نشانگر روشن، خاموش، زیر محدوده و … می‌باشد. در این راستا، در اندازه‌گیری رده، انواعی وجود دارند که نشانگر دما، جریان، ولتاژ و … می‌باشد. داشتن تمام این رده‌ها و انواع تعریف شده منجر می‌شود که گره‌ها زبان یکسانی را سخن بگویند. برای لیست کامل رده‌های از پیش تعیین شده صفحه ویکی‌پدیای VSCP را مشاهده کنید.
رویدادهایی که اطلاع‌رسانی می‌شوند دارای مجموعه‌ای از زمینه‌ها برای ایجاد یک دیتاگرام VSCP می‌باشند. چگونگی نگاشت این زمینه به لایه فیزیکی برای تعدادی از پروتکل‌های لایه فیزیکی مانند CAN، اترنت، TCP و … تعیین شده‌است. برای موارد دیگر این موضوع فعلاً تعریف نشده‌است اما به‌طور کلی نگاشت این زمینه‌ها به پروتکل لایه فیزیکی دشوار نمی‌باشد. دو سطح پروتکل VSCP وجود دارند که با نام‌های سطح ۱ و سطح ۲ شناخته می‌شوند. آنها پروتکل‌های مشابهی می‌باشند اما برای زمینه‌های متفاوت اندازه متفاوتی دارند. سطح ۱ بر روی گره‌ها با منابع محدود و زمینه‌ها محافظه کار می‌باشند. سطح ۱ در واقع زیر مجموعه‌ای از سطح ۲ می‌باشد و با ورودی مناسب رویدادها می‌توانند بین شبکه‌های سطح ۱ و ۲ ارتباط برقرار کنند. سطح ۲ برای اجرا بر روی گره‌هایی ایجاد می‌شود که محدودیت منابع کمی دارند و می‌توانند به راحتی از عهده پیغام‌های حجیم برآیند.
زمانی که رویدادها توسط یک گره دریافت می‌شوند، گره باید تعیین شود. این امر با ارزیابی ماتریس تصمیم یا DM انجام می‌گیرد. ماتریس DM از مجموعه‌ای از شرایط IF … THEN تشکیل شده‌است. هر یک از شرایط IF/THEN یک خط نامیده می‌شود و مجموعه‌ای از خطوط ماتریس تصمیم را تشکیل می‌دهند. رده و نوع پیغام دریافتی همواره توسط خط DM ارزیابی می‌شود. ارزیابی رده و نوع با عبور دادن رده/نوع از ماسک و مقایسه آنها توسط فیلتر صورت می‌گیرد. این روش به رده/انواع چندگانه اجازه می‌دهد تا شرایط قابل قبولی را برای شرایط یک خط DM ایجاد کند. شرایط دیگر برای خط DM (GUID فرستنده، منطقه، مجموعه منطقه) به صورت دلخواه ارزیابی می‌شوند. در صورتی که خط DM معتبر باشد، ACTION اجرا می‌گردد. به همراه ACTION پارامترهای ACTION وجود دارند. این که کدام اقدامات توسط گره گیرنده ممکن می‌باشند توسط طراحی گره تعیین می‌شود. توسعه دهنده نرم‌افزار تعیین‌کننده اجرای اقدامات می‌باشد. با تعیین اقدامات ممکن در فایل‌های MDF, SW تعیین‌کننده اقدام می‌باشد. DM می‌تواند توسط تنظیمات گره مناسب تنظیم می‌شوند. روش مناسب برای این کار استفاده از VSCPWorksو تنظیمات SW می‌باشد.
رویداد ارسالی می‌تواند بار مفیدی داشته باشد. محتوا و سازمان این بار مفید به رده و نوع بستگی دارد. برای مثال یک رویداد رده ۱۰ (اندازه‌گیری) و نوع ۶ (دما) داده‌های دمایی را منتقل می‌کند. یک رویداد دکمه اطلاعاتی را در مورد دکمه و منطقه دکمه در بار مفید منتقل می‌کنند. برای هر رده یا نوع، پیکر بندی داده‌ها با توجخ به ویژگی‌های تعیین می‌شوند. برای اطلاعات بیشتر به ویکی‌پدیا مراجعه نمایید.
برخی رویدادها در بار مفید داده حاوی منطق و زیرمنطقه می‌باشند. این قابلیت به منظور امکان گروه‌بندی گره‌ها حاضر می‌باشد. برای مثال می‌توانیم تعیین کنیم که تمام دکمه‌های کنترل‌کننده یک لامپ بخشی از یک گروه می‌باشند. این امر DM را برای سناریوهای خاص ساده‌تر می‌سازد. به جای داشتن یک خط DM، گره لامپ برای هر دکمه (۱ خط به ازای دکمه: اگر دکمه Xفشرده شود، لامپ را روشن کن) می‌توانیم ۱ خط DM داشته باشیم (در صورتی که منطقه همسان باشد، لامپ را روشن کن). ایجاد دکمه‌های گره‌های چندگانه یک گروه توسط تنظیم گره‌ها انجام می‌گیرد و نرم‌افزار گره این قابلیت را پشتیبانی می‌کند.
یک گره باید قبل از اجرای وظیفه به‌طور مناسب تنظیم شود. هر گره VSCP مجموعه‌ای از تنظیمات را برای وظیفه مورد نظر اعمال می‌کند. گره دکمه می‌تواند منطقه‌ها و زیرمنطقه‌هایی که دکمه‌ها به آن مربوط می‌شوند را تیز تنظیم کند. گره دما می‌تواند مقادیر را تعیین کند. تنظیم ماتریس تصمیم بخشی از تنظیم گره می‌باشد.
پیکربندی یک گره توسط نوشتن ثبت انجام می‌گیرد. هر گره (سطح ۱) به ۲۵۶ ثبت دستیابی دارند. بالاترین ۱۲۸ ثبت برای وظایف اصلی VSCP ذخیره شده‌اند. در این ۱۲۸ ثبت، ما مواردی نظیر GUID, Nickname, MDF و ثبت صفحات را مشاهده می‌کنیم. ۱۲۸ ثبت پایین برای مصارف خاص آزاد می‌باشند. در صورتی که ۱۲۸ ثبت کافی نباشند احتمال صفحه بندی ۱۶ بیت وجود دارد. این امر منجر به ثبت 65536 x ۱۲۸ برای استفاده می‌باشد. نوشتن و خواندن این ثبت‌ها توسط رویدادهای رده ۰ انجام می‌گیرند. رویدادهای رده ۰ پیغام‌های قابلیت پروتکل VSCP می‌باشند که برای تنظیم و مدیریت گره‌ها به کار برده می‌شوند.
پیگیری اینکه کدام بخش چه هدفی را انجام می‌دهد می‌تواند چالشی بزرگ باشد. اما این‌جایی است که توصیف ماژول فایل یا MDF وارد عمل می‌شود. فایل MDF یک فایل XML قابل خواندن توسط سیستم می‌باشد که وظیفه هر یک از ثبت‌های ماژول را تعریف کرده و گزینه‌های تنظیم را برای آن ثبت ارائه می‌دهند. این فایل توسط نرم‌افزار پیکربندی (VSCP-Works) به منظور نشان دادن گزینه‌های پیکربندی مورد نیاز برای ماژول به کار برده می‌شوند. فایل MDF را می‌توان بر روی گره ذخیره کرد یا آن را توسط VSCP-Works به دست آورد اما فایل MDF یک فایل XML بر روی سرور وب خواهد بود. گره باید VSCPWorks را جایی که فایل XML پیدا می‌شود اطلاع دهد. این URL در ثبت‌های 0xE0-0xFF ذخیره شده برای VSCP موجود می‌باشد.
VSCPWorks ابزاری مبتنی بر لینوکس یا ویندوز می‌باشد که برای پیکربندی و مدیریت گره‌ها به کار برده می‌شود.VSCPWorks به ثبت‌ها اجازه می‌دهد که توسط فایل MDF به فرمتی که برای افراد آشنا است تبدیل شوند.
در صورتی که VSCP پروتکل باشد، VSCP & Friends برای نامیدن API نرم‌افزار، طرح و لایه اطراف VSCP به کار برده می‌شوند. VSCP & Friends منجر به لایه بندی ابزارها با استفاده از ابزارهایی که آنها را مشابه ابزارهای VSCP می‌سازند می‌گردد. این بدین معناست که هر گونه ابزار می‌تواند توسط چارچوب VSCP & Friends بررسی و کنترل شود. VSCP & Friends چهار مشکل رایج IoT و M2M را حل می‌کند.