مكتبة لـ Arduino لتصحيح مشاريع على WiFi ، مع تطبيق الويب أو عميل Telnet ، مع أوامر طباعة مثل Serial Monitor.


افتراضيًا ، فإن Arduino لديه فقط إمكانية تصحيح الأخطاء عبر المنفذ التسلسلي. هذا له بعض العيوب:
مع ESP8266 (NODEMCU) أو ESP32 ، لدينا الآن اتصال شبكة (WIFI) والتي يمكن استخدامها لدفق معلومات تصحيح الأخطاء في الوقت الفعلي.
هذه المكتبة جيدة لمشاريع إنترنت الأشياء ، أو الأتمتة المنزلية ، والروبوتات المحمولة (يمكن تصحيحها بالتنقل باستخدام كابل؟) أو مشاريع شبكة WiFi أخرى.
في الواقع ، ولدت هذه المكتبة من الحاجة إلى تصحيح مشروع إنترنت الأشياء لأتمتة المنزل. في هذا المشروع ، كانت هناك وحدة مركزية وثلاث وحدات مساعدة ، وكانت هذه بعيدة عن بعضها البعض. كان من الصعب الوصول إلى أحدهم ، تحت سطح المنزل. من المستحيل تصحيح هذا المشروع ، المصاحب لتبادل الرسائل في الوقت الفعلي ، بالطريقة التقليدية ، بواسطة كابل USB.
يعد MIP_ESP8266_Library وروبوت WiFi ESP32 مثالًا على المشاريع التي تستخدم RemotedEbug . شاهدها في: mip_esp8266_library و esplorer_v1
تم تحسين RemotedEbug مع التخزين المؤقت للعميل (هل آخر إرسال هو <= 10 مللي ثانية) ، لتجنب التأخير الغامض لشبكات WiFi على لوحات ESP32 و ESP8266
ملاحظة: إذا لم يستخدم مشروعك WiFi ، فيمكنك استخدام مكتبتي الأخرى ، مكتبة SerialDebug ، تعمل هذه المكتبة مع أي لوحة Arduino.
ملاحظة II: مكتبة RemotedeBug الآن فقط إلى لوحات الإسبريفيف ، مثل ESP32 و ESP8266 ، إذا لزم الأمر إلى لوحات شبكة WiFi أخرى ، فيرجى إضافة مشكلة حول هذا الأمر وسنرى ما إذا كان من الممكن تصنيع المنفذ للوحة الخاصة بك.
الصورة: في remotedeBugapp (تطبيق الويب)

الصورة: في عميل Telnet

youtube (RemotedEbug v2):
YouTube (3 اتصالات telnet مع remotedeBug) v1:
المساهمة في تطوير المكتبة هذه من خلال إنشاء حساب على Github.
يرجى إعطاء نجم ، إذا وجدت هذه المكتبة مفيدة ، وهذا يساعد شخص آخر ، واكتشافها أيضًا.
الرجاء إضافة مشكلة للمشاكل أو الاقتراح.
RemotedeBugapp بيتا
الآن لديك مستودع آخر ، RemotedeBugApp هو للنسخ المحلية من تطبيق الويب في الإنترنت. يتم تحديثه بأحدث إصدار من تطبيق الويب ، بعد نشره في خادم الويب: http://joaolopesf.net/remotedebugapp. قم بتنزيله ، للاستخدام عندما يكون الإنترنت غير متصل. نظرًا لأنها نسخة محلية ، سيقوم التطبيق بالتحقق من وجود إصدارات جديدة بشكل دوري.
تطبيق ويب HTML5 لاستخدامه في تصحيح تصحيح في متصفح الويب ، بدلاً من ذلك عميل Telnet ، الذي يستخدم Socket على الويب إلى comunicate.
الآن remotedebug v3 لديه خادم مقبس ويب أيضًا ، لدعم اتصال RemotedEbugApp.
RemotedEbugapp في الإصدار التجريبي ، إذا كان لديك أي مشاكل أو اقتراحات ، فيرجى إضافة مشكلة حول هذا الأمر.
يبقى اتصال Telnet ، أي يريد هذا ، أو استخدام الإنترنت غير متصل بالإنترنت.
الإصدار 2.1.1
الإصدار 2.0.0
الآن يمكن أن يكون لدى RemotedeBug نفس تصحيح الأخطاء البسيطة للبرامج ، تلك مكتبة SerialDebug . يتم ذلك ، وتثبيت مكتبة أخرى ، و remotedeBugger يقوم RemotedeBugger بمثابة إضافة إلى RemotedeBug . لدعم هذا الملحق ، فإن التغييرات في RemotedeBug ، هي الحد الأدنى ، فقط بضع عمليات استرداد لا يتم إجراءها حتى لا تضيف النفقات العامة الإضافية إلى المشاريع التي لا تحتاج إلى تصحيح الأخطاء. إلى مزيد من المعلومات ، يرجى الوصول إلى مستودع github remotededbugger .
الآن لديك نظام ألوان جديد ، باستخدام المزيد من الألوان ، كما حدث في SerialDebugapp
ملاحظة: بسبب مكتبة RemotedeBug ، يتم ترحيلها إلى تنسيق Arduino 1.5 ، مع المجلد "SRC" ، يرجى حذف المكتبة وإعادة تثبيتها لتجنب تكرار ملفات مصادر RemotedeBug.
الإصدار 1.5.*
في الإصدار 1.5.0 ، لدينا تصحيح وحدات الماكرو RDEBUG* (انظر أدناه) ، والتي وضعت تلقائيًا ، اسم الوظيفة المسمى ، والمعرف الأساسي (المعرف الأساسي فقط لـ ESP32)
SerialDebug أفضل من تصحيح الأخطاء الافتراضية Arduino بواسطة Serial.print:
كونه أو عدم تصحيح الأخطاء عبر كابل USB ، تتم معالجة أمر المسلسل. بمعنى آخر ، تتم معالجة أوامر التصحيح ، مع شخص متصل في المسلسل أم لا.
مع RemotedeBug ، تتم معالجة جميع ناتج الأخطاء فقط إذا كان هناك أي شخص يتصحيح تصحيح الأخطاء عبر اتصال تطبيق Telnet أو Web.
ومع مستويات تصحيح الموارد ، يتم تقليل حجم الرسائل المعروضة للمستويات الأعلى. على سبيل المثال ، معالجة جميع الرسائل فقط ، إذا كان المستوى هو الأدنى ، المطول ،
يتم تحطيم RemotedEbug لتقليل النفقات العامة ، في وحدة المعالجة المركزية والذاكرة وتشمل ميزة التخزين المؤقت للعميل.
أثناء التطوير ، يمكننا وضع الكثير من رسائل التصحيح ...
ولكن مع RemotedeBug ، يمكننا وضع مستوى في كل واحد.
بالنسبة لجميع الرسائل (باستثناء المستويات دائمًا (Debuga) أو الخطأ (debuge) ، تتم معالجة الرسالة فقط وإظهارها ، إذا كان مستوى التصحيح متساويًا أو أعلى من مستوى ذلك
RemotedeBug لديها 6 مستويات تصحيح ، حسب الأولوية:
أظهر كلواي:
خطأ : أخطاء حرجة
دائما : رسائل مهمة
مستويات أخرى (أظهر ما إذا كان المستوى متساويًا أو أعلى من ذلك الفعلي):
تحذير : شروط الخطأ ولكن ليست حاسمة
معلومات : رسائل المعلومات
تصحيح : معلومات إضافية
المطالبة : معلومات أكثر من المعتاد
حتى نتمكن من تغيير المستوى إلى المطوّل ، لرؤية جميع الرسائل. أو لتصحيح أن يرى التصحيح أو المستوى الأعلى فقط ، إلخ.
من الجيد جدًا تقليل كمية الرسائل التي يمكن أن ينشئها المشروع ، للمساعدة في تصحيح الأخطاء.
remotedeBug لديك محول للمساعدة في ترحيل رموز Arduino الخاصة بك ، من المسلسلات إلى هذه المكتبة.
RemotedeBugConverter
حتى لو كنت تريد القيام بذلك يدويًا ، فهذا أمر بسيط للغاية. يرجى الاطلاع على الموضوع باستخدام أعلاه.
تصحيح بسيط:
debugV ( " * Run time: %02u:%02u:%02u (VERBOSE) " , mRunHours , mRunMinutes , mRunSeconds );يمكن توليد هذا الإخراج في الشاشة التسلسلية:
(V p:3065 loop C1) * Run time: 00:41:23 (VERBOSE)
Where: V: is the level
p: is a profiler time, elased, between this and previous debug
loop: is a function name, that executed this debug
C1: is a core that executed this debug (and a function of this) (only for ESP32)
The remaining is the message formatted (printf)
بالنسبة لـ ESP32 ، يعد المعرف الأساسي في كل تصحيح جيد جدًا لبرمجة Multirosizer.
على سبيل المثال:
عرض المساعدة ( ؟ )
قم بتغيير مستوى التصحيح ( V ، D ، I ، W ، E ) ، لإظهار رسائل أقل أو أكثر.
انظر الذاكرة ( م )
إعادة تعيين اللوحة ( إعادة تعيين )
تعرف على أوامر RemotedEbug أدناه.
يمكنك إضافة أوامرك الخاصة ، انظر الأمثلة من فضلك
إذا كان مشروعك قد تم تثبيت RemotedEbugger ، فاحرص على أوامر جديدة ، على سبيل المثال ، استدعاء وظيفة ، انظر/تغيير المتغيرات ، ...
الآن remotedeBug (الإصدار> = 2.0.0) ، لديك تصحيح بسيط للبرنامج ، ومقرها في رموز مكتبة SerialDebug.
هذه مكتبة أخرى ، والتي تعمل كملحق إلى RemotedeBug .
يرجى acess مستودع RemotedeBugger لمزيد من المعلومات: RemotedeBugger
For release your device, just uncomment DEBUG_DISABLED in your project
Done this, and no more debug processing.
And better for DEBUG_DISABLED, __RemoteDebug__ have ZERO overhead,
due is nothing of this is compiled.
نظرًا لأن SerialDebug ، يوجد الآن تطبيق RemotedeBug (V3) ، وهو تطبيق RemotedEbugapp ، لتصحيحه في متصفح الويب.
هذا التطبيق عبارة عن تطبيق ويب HTM5 ، مع WebSocket to Comunicate إلى Arduino Board.
لذلك ، يحتوي RemotedEbug V3 على خادم مقبس ويب (يمكن تعطيله). استخدمت نسخة محلية من مكتبة Arduinowebsockets ، بسببها لا في مدير مكتبة Arduino.
كصفحة ويب كبيرة على خادم الويب ، يتم حفظ حل Arduino في تخزين ، مثل spiffs. ولكن ليس لديك تحديثات إصدار جديد تلقائيًا في البيانات المحفوظة بهذه الطريقة ، فإن بيانات spiffs جيدة للمشروع ولكن ليس للمكتبة.
بسبب ذلك ، لا يتم تخزين هذا التطبيق وخدمته من قبل اللوحة ، بدلاً من ذلك ، يكون التطبيق في الويب: http://joaolopesf.net/remotedebugapp ملاحظة: هذا لا يستخدم SSL (https) ، مقبس خادم الويب بسبب Arduino ، لا يدعم SSL (WSS). ولكن بعد تحميل الصفحة ، كل حركة المرور في الشبكة المحلية ، لا توجد بيانات على الإنترنت.
RemotedEbugapp هو HTML5 الحديث ويحتاج إلى متصفحات حديثة للعمل. يعد Internet Explorer 11 و Safari 10 أمثلة غير مدعومة. ولكن يمكنك استخدام الأمهات ، مثل الكروم ، الحافة ، Firefox.
تطبيق الويب في بيتا ، يرجى إضافة مشكلة ، للمشاكل أو الاقتراحات.
الآن لديك مستودع آخر ، RemotedeBugApp هو للنسخ المحلية من تطبيق الويب في الإنترنت. يتم تحديثه بأحدث إصدار من تطبيق الويب ، بعد نشره في خادم الويب: http://joaolopesf.net/remotedebugapp. قم بتنزيله ، للاستخدام عندما يكون الإنترنت غير متصل. نظرًا لأنها نسخة محلية ، سيقوم التطبيق بالتحقق من وجود إصدارات جديدة بشكل دوري ، لأنه يمكنك تنزيل إصدار جديد.
يظل Telnet يعمل ، عندما تريد هذا ، أو للفشل في تطبيق الويب.
Telnet هي وسيلة قياسية للاتصال عن بُعد بخادم ويتم دعمها في جميع أنظمة التشغيل (Windows ، Mac ، Linux ...).
لدى MacOSX و Linux عميل Telnet الأصلي.
بالنسبة لنظام التشغيل Windows ، فإن عميل Telnet النموذجي هو المعجون : المعجون.
احصل على أداة جيدة للهواتف المحمولة: الأصابع ، يرجى العثور عليها في متجر الهاتف المحمول الخاص بك. عرض جميع الأجهزة في الشبكة المحلية (WiFi) ، منافذ العرض التي تم فتحها ويمكنها تنفيذ عميل Telnet أيضًا (التطبيق الخارجي)
قم بتعيين RemotedEbug خادم Telnet الذي يستمع إلى أي عميل Telnet الذي يريد الاتصال. بعد الاتصال ، يتم دفق التسجيل إلى عميل Telnet.
RemotedeBug سهل الاستخدام للغاية ، بعد بضعة أسطر من رمز التهيئة ، يمكنك استخدام أوامر "الطباعة" المعروفة لدفق تسجيل الدخول إلى العميل البعيد.
يدعم RemotedeBug تصفية التسجيل بناءً على مستويات التصحيح :
عرض فقط على مستوى التصحيح الفعلي:
ملاحظة: هذه المستويات في ترتيب أكثر الغطس-> أقل تسد.
أو للظهور دائمًا (لا يعتمد على مستوى التصحيح الفعلي):
ملاحظة: تتم معالجة جميع الأخطاء ولا تظهر إلا إذا كان لديك اتصال عميل.
يمكن لعميل Telnet أو تطبيق الويب تعيين مستوى التصحيح عن طريق كتابة بعض الأوامر البسيطة.
يتضمن RemotedeBug مستندًا بسيطًا. يمكن تمكينه بواسطة العميل المتصل (Telnet أو Web App) أو رمز Arduino نفسه.
عند تمكينه ، يوضح الوقت بين عبارات تصحيح 2 ، باستخدام ألوان مختلفة اعتمادًا على الوقت المنقضي.
ومن الأمثلة المعتادة إدراج تسجيل الدخول قبل وبعد وظيفة يمكنك وبعدها معرفة مقدار ما يتم إنفاقه في الوظيفة.
تم تصميم RemotedEbug لإعطاء الحد الأدنى من النفقات العامة (متصلة أو لا) وتصحيح الأخطاء فقط ، إذا كان هناك عميل (تطبيق Telnet أو Web) متصل.
يدعم RemotedeBug الأوامر المخصصة التي يمكن إدخالها في العميل (Telnet أو Web App). هذه تؤدي إلى تنفيذ وظيفة مخصصة في رمز Arduino. على سبيل المثال ، يمكن استخدام هذا لإرسال حالة بناءً على طلب العميل.
لا يتضمن الإصدار الحالي من RemotedEbug أي مصادقة مشفرة ، ونص عادي فقط ويهدف فقط إلى التطوير ، وليس استخدامه في الإنتاج/الإصدار.
ستتضمن الإصدارات المستقبلية ، إن أمكن ، طريقة آمنة للمصادقة واختبار مزيد من الاختبارات لدعم بيئات الإنتاج.
- An app to RemoteDebug like SerialDebug have.
- Http page to begin/stop the telnet server or websocket server.
- Authentication as telnet support (kerberos, etc.) to support production environment
فقط قم بتنزيل أو استنساخ هذا المستودع.
أو بالنسبة إلى Arduino IDE ، يمكنك استخدام Manager Library لتثبيت المكتبة وتحديثها.
لتثبيت المساعدة ، يرجى النقر فوق هذا:
بالنسبة إلى IDE آخر ، أو عدم استخدام مدير المكتبة في Arduino IDE ، أقترح عليك استخدام تطبيق سطح المكتب Github لاستنساخه ، مما يساعد على الاستمرار في التحديث.
يرجى فتح المشاريع في مجلد المثال ، لرؤيتها تعمل.
# include " RemoteDebug.h " // https://github.com/JoaoLopesF/RemoteDebugdebug remotedebug ؛
في وظيفة الإعداد بعد تهيئة WiFi
// Initialize the server (telnet or web socket) of RemoteDebug
Debug.begin(HOST_NAME);
// OR
Debug.begin(HOST_NAME, startingDebugLevel);
// Options
Debug.setResetCmdEnabled( true ); // Enable the reset command
// Debug.showProfiler(true); // To show profiler - time between messages of Debug
ملاحظة: لتمكين مصحح الأخطاء ، بواسطة RemotedeBugger ، يرجى Acess هذا مستودع github: RemotedeBugger
في ذيل وظيفة الحلقة
// Remote debug over WiFi
Debug.handle();
// Or
debugHandle (); // Equal to SerialDebug
في أي مكان لك رمز:
# ifndef DEBUG_DISABLED
if (Debug.isActive(Debug.<level>)) {
Debug. printf ( " bla bla bla: %d %s " , number, str); // OR
Debug. printf ( " bla bla bla: %d %s " , number, str. c_str ()); // Note: if type is String need c_str() // OR
Debug. println ( " bla bla bla 2 ln " );
Debug. printf ( " float: %f n " , value); // Not works in ESP8266 :-(
// Note: to show floats with printf (ESP8266 only),
// you can use my ArduinoUtil library -> https://github.com/JoaoLopesF/ArduinoUtil
Debug. printf ( " float: %s n " , Util. formatFloat (value, 0 , 5 ). c_str ());
}
# endifملاحظة: باستخدام isactive ، تحتاج إلى المحيط بالرمز بواسطة حالة precompile debug_disable ، لتجنب تجميعها للإنتاج/الإصدار
أو طريق قصير (يساوي SerialDebug) (يفضل إذا كان تصحيح أخطاء واحد فقط في الوقت):
debugA ( " This is a any (always showed) - var %d " , var);
debugV ( " This is a verbose - var %d " , var);
debugD ( " This is a debug - var %d " , var);
debugI ( " This is a information - var %d " , var);
debugW ( " This is a warning - var %d " , var);
debugE ( " This is a error - var %d " , var);
debugV ( " This is a println " );أو إذا كان مشروعك يستخدم عدة أوامر Serial.print لإنشاء رسالة تصحيح واحدة على سبيل المثال:
Serial.print( " a = " );
Serial.print(a);
Serial.print( " b = " );
Serial.print(b);
Serial.print( " c = " );
Serial.println(c);يمكن استخدام الماكرو RDEBUG*:
rdebugV ( " a = " );
rdebugV (a);
rdebugV ( " b = " );
rdebugV (b);
rdebugV ( " c = " );
rdebugVln (c);ملاحظة: في المستقبل ، أقترح أن تقوم بترحيل هذا إلى أمر تصحيح واحد:
debugV (a = %d b = %d c = %d " , a, b, c);مثال على استخدام مستويات التصحيح: (بافتراض أن البيانات هي الكثير من الأحرف)
if (Debug.isActive(Debug.VERBOSE)) { // Debug message long
Debug. printf ( " routine: data received: %s n " , data. c_str ()); // Note: if type is String need c_str()
} else if (Debug.isActive(Debug.DEBUG)) { // Debug message short
Debug. printf ( " routine: data received: %s ... n " , data. substring ( 0 , 20 ). c_str ()); // %.20s not working :-|
}بدءًا من الإصدار 1.5.0 ، وحدات تصحيح التصحيح (Debug* و Rdebug*) ، وضعت تلقائيًا اسم الوظيفة التي تسمى الماكرو ، والمعرف الأساسي (المعرف الأساسي فقط لـ ESP32).
لذا:
void foo () {
uint8_t var = 1 ;
debugV ( " this is a debug - var %u " , var);
}
It will show in client (telnet or web app):
(V p:^0000ms) (foo)(C1) this is a debug - var 1
Where:
V -> verbose
p -> profiler time
(foo) -> this is a function name that calls the debug macro
(C1) -> It is running it Core 1 (only for ESP32)
مثال على استخدام التصحيح مع تمكين المسلسل
Useful to see messages if setup or
in cause the ESP8266/ESP32 is rebooting (client connection stop before received all messages)
Only for this purposes I suggest it
// Setup after Debug.begin
Debug.setSerialEnabled( true ); // All messages too send to serial too, and can be see in serial monitorلتقليل النفقات العامة ، يتم فصل العميل (Telnet أو Web App) ، إذا لم يكن نشطًا.
- Please press enter or any key if you need keep the connection
- The default is 5 minutes (You can change it in RemoteDebug.h)
- You can use mDNS to register each node with different name, it helps to connect without know the IP.
يرجى عدم نسيان استخدام IF pink مع debug.iscive (إذا لم تستخدم وحدات الماكرو لتصحيح الأخطاء)
---> This is very important to reduce overheads and work of debug levels
يرجى الاطلاع على العينات ، الأساسية أو المتقدمة ، لمعرفة كيفية الاستخدام
في عينة متقدمة ، استخدمت مكتبة WiFimanager و Arduinoota و MDNS ، يرجى رؤيتها.
- Ajustment on debugA macro, thanks @jetpax and @cmidgley to add this issue.
- All public configurations (#defines) have moved to RemoteDebugCfg.h, to facilitate changes for anybody.
- Changed examples, with warnings on change any #define in project,
with workarounds if it not work. (thanks to @22MarioZ for added this issue)
- Adjustments if web socket is disabled
- Adjustments in examples, added one for debugger
- Adjustments in silente mode
- Commands from RemoteDebugApp now is treated
- Adjusts to RemoteDebugger support connection by web sockets
- If not disabled, add a web socket server to comunicate with RemoteDebugApp (HTML5 web app)
- The standard telnet still working, to debug with internet offline
- Ajustment on debugA macro, thanks @jetpax to add this issue
- Add empty rprint* macros, if debug is disabled
- Create option DEBUG_DISABLE_AUTO_FUNC
- Create macros to be used for code converter: rprint and rprintln
RemoteDebug now have an code converters to help migrate codes
- Create precompiler DEBUG_DISABLED to compile for production/release,
equal that have in SerialDebug
- Adjustments in examples
- Adjustments for the debugger: it still disable until dbg command, equal to SerialDebug
- The callback will to be called before print debug messages now
- And only if debugger is enabled in RemoteDebugger (command dbg)
- Changed handle debugger logic
- Added support to RemoteDebug addon library: the RemoteDebugger, an simple software debugger, based on SerialDebug
- New color system
- Bug -> sometimes the command is process twice
- Workaround -> check time
- New macros to compatibility with SerialDebug (can use RemoteDebug or SerialDebug) thanks to @phrxmd
- Fixed bug for MAX_TIME_INACTIVE, thanks to @achuchev to add this issue
- Adjustments based on pull request from @jeroenst (to allow serial output with telnet password and setPassword method)
- Serial output is now not allowed if telnet password is enabled
- Few adjustments
- Few adjustment in write logic
- Serial output adjustments (due bug in password logic)
- Correct rdebug macro (thanks @stritti)
- New silent mode (command s)
- Auto function name and ESP32 core id for rdebug* macros
- begin method have a option for port number
- Few adjustments
- Added new rdebug?ln to put auto new line
- Simple text password request feature (disabled by default)
Notes:
It is very simple feature, only text, no cryptography,
and the password is echoed in screen (I not discovery yet how disable it)
telnet use advanced authentication (kerberos, etc.)
Such as now RemoteDebug is not for production (releases),
this kind of authentication will not be done now.
- Adjustments in precompiler macros
- Bug in write with latest ESP8266 SDK
- Port number can be modified in project Arduino (.ino file)
- Few adjustments as ESP32 includes
- Adjustments, as avoid ESP32 include errors
- Telnet port of server can be modified by project
Just put it in your .ino, before the include:
- Shortcuts and client buffering to avoid mysterious delay of ESP networking
- Adjustments and now runs in Esp32 too.
- Adjustments and improvements from Beta versions.
New features:
- Filter
- Colors
- Support to Windows telnet client
- First Beta
- Sometimes (rarely) the connection over telnet becomes very slow.
Especially right after uploading firmware.
Reset command in telnet connection or turn off/on can be resolve it.
But I need find why it occurs
First thanks a lot for Igrr for bring to us the Arduino ESP8266 and to Espressif to Arduino ESP32
Thanks to Links2004 for a good web server socket, used for web app connection.
For the logo: thanks to a freepik and pngtree sites for free icons that have in logo
Resources:
- Example of TelnetServer code in http://www.rudiswiki.de/wiki9/WiFiTelnetServer
- arduinoWebSockets library in https://github.com/Links2004/arduinoWebSockets
اضغط على العداد في هذا الملف ، بدءًا من 2019-03-03: