') + ')', 'gi'); if (regex.test(text)) { found = true; var frag = document.createDocumentFragment(); var parts = text.split(regex); parts.forEach(function(part, i) { if (i % 2 === 0) { frag.appendChild(document.createTextNode(part)); } else { var span = document.createElement('span'); span.className = 'userscript-highlight'; span.textContent = part; frag.appendChild(span); } }); node.parentNode.replaceChild(frag, node); } }); } else if (node.nodeType === 1 && node.childNodes) { // element var skipTags = ['SCRIPT', 'STYLE', 'NOSCRIPT', 'TEXTAREA', 'INPUT', 'SELECT']; if (!skipTags.includes(node.tagName)) { Array.from(node.childNodes).forEach(highlight); } } } highlight(document.body); // Re-highlight on dynamic content var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1 || node.nodeType === 3) highlight(node); }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Highlight Search Terms]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Strip utm_, fbclid, gclid, etc. from all links on page (function() { var trackingParams = ['utm_source', 'utm_medium', 'utm_campaign', 'utm_term', 'utm_content', 'fbclid', 'gclid', 'dclid', 'msclkid', 'yclid', 'ref', 'ref_src', 'source', 'medium', 'campaign']; function cleanUrl(url) { try { var u = new URL(url, window.location.origin); var changed = false; trackingParams.forEach(function(p) { if (u.searchParams.has(p)) { u.searchParams.delete(p); changed = true; } }); return changed ? u.toString() : url; } catch (e) { return url; } } function cleanLinks() { document.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } cleanLinks(); var observer = new MutationObserver(function(mutations) { mutations.forEach(function(m) { m.addedNodes.forEach(function(node) { if (node.nodeType === 1) { if (node.tagName === 'A') cleanLinks(); node.querySelectorAll('a[href]').forEach(function(a) { var clean = cleanUrl(a.href); if (clean !== a.href) a.href = clean; }); } }); }); }); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:Remove Tracking Parameters from Links]', __e); } })(); (function(){ try { var __m = "youtube.com"; var __re = new RegExp('^' + "youtube\\.com" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Auto-enable theater mode on YouTube (function() { function tryTheater() { var btn = document.querySelector('button[aria-label="Theater mode"], ytd-player #player button[title="Theater mode"]'); if (btn && !btn.classList.contains('activated')) { btn.click(); } } // Try immediately tryTheater(); // Try after navigation (SPA) var lastUrl = location.href; setInterval(function() { if (location.href !== lastUrl) { lastUrl = location.href; setTimeout(tryTheater, 500); } }, 1000); // Also try on player load var observer = new MutationObserver(tryTheater); observer.observe(document.body, { childList: true, subtree: true }); })(); } } catch(__e) { console.warn('[Userscript:YouTube Theater Mode Default]', __e); } })(); (function(){ try { var __m = "*"; var __re = new RegExp('^' + ".*" + ', 'i'); if (__m === '*' || __re.test(location.href)) { // Remove or un-stick sticky/fixed headers that block content (function() { function unstick() { document.querySelectorAll('header, nav, [role="banner"], .header, .navbar, .sticky, .fixed-top, [style*="position: fixed"], [style*="position:sticky"]').forEach(function(el) { if (el.style.position === 'fixed' || el.style.position === 'sticky' || getComputedStyle(el).position === 'fixed' || getComputedStyle(el).position === 'sticky') { el.style.position = 'static'; el.style.top = 'auto'; el.style.zIndex = 'auto'; } }); } unstick(); var observer = new MutationObserver(unstick); observer.observe(document.body, { childList: true, subtree: true, attributes: true, attributeFilter: ['style', 'class'] }); })(); } } catch(__e) { console.warn('[Userscript:Kill Sticky Headers]', __e); } })(); })(); FarmingBoard · GitHub
Skip to content
@FarmingBoard

FarmingBoard

SmartFarm Project

Welcome to FarmingBoard 🌱

FarmingBoard is an IoT-based system that serves smart farms by providing a comprehensive platform for monitoring, managing, and optimizing farm operations. Our solution is designed to improve the efficiency of farm management through real-time data, automation, and user-friendly interfaces.

🌟 Key Modules

FarmingBoard consists of the following key components:

  1. ThingsBoard Cloud:
    An IoT platform that allows for real-time monitoring and control of farm equipment, sensors, and environmental data. It serves as the backend for handling IoT devices and their data.

  2. Farm Owner Website:
    A web-based platform designed for farm owners to monitor the status of their farms, receive alerts, and manage their farm’s operations remotely.

  3. Mobile Application:
    A mobile app for farm owners to access their farm's data, control devices, and stay updated on farm activities from anywhere, at any time.

  4. Device Module:
    This module handles the integration and management of IoT devices such as sensors, cameras, and control units for farm automation. It ensures seamless communication between the devices and the ThingsBoard Cloud for real-time monitoring and control.

📖 Documentation and Resources

To get started with FarmingBoard, check out the following resources:

💻 Contribution Guidelines

We welcome contributions from the community to help us improve and expand the system. Here's how you can get involved:

  • Fork the repository and submit a pull request.
  • Report bugs or suggest new features by creating an issue.
  • Help with writing documentation, improving code, or testing.

For more details, please see our contribution guidelines.

🙌 Get Involved

Join us on this journey to revolutionize farm management with IoT technology! Feel free to explore our code, contribute, and share your thoughts.

🛠️ Development

Tech Stack:

  • Backend: ThingsBoard IoT platform
  • Frontend: React.js for web applications, React Native for mobile applications
  • Database: PostgreSQL
  • API: MQTT for IoT communication, RESTful services, Websocket

📫 Contact Us

Have questions or need support? Feel free to reach out:

Popular repositories Loading

  1. farming_web farming_webPublic

    JavaScript

  2. farming_mobile farming_mobilePublic

    JavaScript

  3. .github .githubPublic

    IoT system serving smart agriculture

  4. template templatePublic

    C++

  5. farming_website farming_websitePublic

    TypeScript

  6. esp32-all-in-one esp32-all-in-onePublic

    C++

Repositories

Showing 10 of 10 repositories

Top languages

Loading…

Most used topics

Loading…