Skip to content
  • MySensors
  • OpenHardware.io
  • Categories
  • Recent
  • Tags
  • Popular
Skins
  • Light
  • Brite
  • Cerulean
  • Cosmo
  • Flatly
  • Journal
  • Litera
  • Lumen
  • Lux
  • Materia
  • Minty
  • Morph
  • Pulse
  • Sandstone
  • Simplex
  • Sketchy
  • Spacelab
  • United
  • Yeti
  • Zephyr
  • Dark
  • Cyborg
  • Darkly
  • Quartz
  • Slate
  • Solar
  • Superhero
  • Vapor

  • Default (No Skin)
  • No Skin
Collapse
Brand Logo
  1. Home
  2. Troubleshooting
  3. [Solved] MQTT gateway problem

[Solved] MQTT gateway problem

Scheduled Pinned Locked Moved Troubleshooting
ethernetmysensors 2.0.0mqttmosquitto
13 Posts 5 Posters 7.2k Views 5 Watching
  • Oldest to Newest
  • Newest to Oldest
  • Most Votes
Reply
  • Reply as topic
Log in to reply
This topic has been deleted. Only users with topic management privileges can see it.
  • pinkkoffP Offline
    pinkkoffP Offline
    pinkkoff
    wrote on last edited by pinkkoff
    #1

    Hi all!
    I am not native english speaker, sorry for my text.
    I have:

    • arduino mega
    • ethernet shield
    • mosquitto on linux (192.168.1.75:1883)
    • mysensors 2.0
    • arduino ide 1.6.12
    • MQTT gateway

    Code of MQTT Gateway:

    /**
     * The MySensors Arduino library handles the wireless radio link and protocol
     * between your home built sensors/actuators and HA controller of choice.
     * The sensors forms a self healing radio network with optional repeaters. Each
     * repeater and gateway builds a routing tables in EEPROM which keeps track of the
     * network topology allowing messages to be routed to nodes.
     *
     * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
     * Copyright (C) 2013-2015 Sensnology AB
     * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
     *
     * Documentation: http://www.mysensors.org
     * Support Forum: http://forum.mysensors.org
     *
     * This program is free software; you can redistribute it and/or
     * modify it under the terms of the GNU General Public License
     * version 2 as published by the Free Software Foundation.
     *
     *******************************
     *
     * REVISION HISTORY
     * Version 1.0 - Henrik Ekblad
     * 
     * DESCRIPTION
     * The W5100 MQTT gateway sends radio network (or locally attached sensors) data to your MQTT broker.
     * The node also listens to MY_MQTT_TOPIC_PREFIX and sends out those messages to the radio network
     *
     * LED purposes:
     * - To use the feature, uncomment WITH_LEDS_BLINKING in MyConfig.h
     * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved
     * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
     * - ERR (red) - fast blink on error during transmission error or recieve crc error  
     * 
     * See http://www.mysensors.org/build/esp8266_gateway for wiring instructions.
     * nRF24L01+  ESP8266
     * VCC        VCC
     * CE         GPIO4          
     * CSN/CS     GPIO15
     * SCK        GPIO14
     * MISO       GPIO12
     * MOSI       GPIO13
     *            
     * Not all ESP8266 modules have all pins available on their external interface.
     * This code has been tested on an ESP-12 module.
     * The ESP8266 requires a certain pin configuration to download code, and another one to run code:
     * - Connect REST (reset) via 10K pullup resistor to VCC, and via switch to GND ('reset switch')
     * - Connect GPIO15 via 10K pulldown resistor to GND
     * - Connect CH_PD via 10K resistor to VCC
     * - Connect GPIO2 via 10K resistor to VCC
     * - Connect GPIO0 via 10K resistor to VCC, and via switch to GND ('bootload switch')
     * 
      * Inclusion mode button:
     * - Connect GPIO5 via switch to GND ('inclusion switch')
     * 
     * Hardware SHA204 signing is currently not supported!
     *
     * Make sure to fill in your ssid and WiFi password below for ssid & pass.
     */
    
    #include <SPI.h>
    
    // Enable debug prints to serial monitor
    #define MY_DEBUG 
    
    // Enables and select radio type (if attached)
    #define MY_RADIO_NRF24
    //#define MY_RADIO_RFM69
    
    #define MY_GATEWAY_MQTT_CLIENT
    
    // Set this nodes subscripe and publish topic prefix
    #define MY_MQTT_PUBLISH_TOPIC_PREFIX "ms_mqtt_gw-out"
    #define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "ms_mqtt_gw-in"
    
    // Set MQTT client id
    #define MY_MQTT_CLIENT_ID "mqtt_gw_1"
    
    // Security Signing
    #define MY_SIGNING_SOFT //!< Software signing
    //#define MY_SIGNING_ATSHA204 //!< Hardware signing using ATSHA204A
    // Enable node whitelisting
    //#define MY_SIGNING_NODE_WHITELISTING {{.nodeId = GATEWAY_ADDRESS,.serial = {0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01}}}
    // Enable this if you want destination node to sign all messages sent to this node.
    //#define MY_SIGNING_REQUEST_SIGNATURES
    
    // W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
    //#define MY_W5100_SPI_EN 4  
    
    // Enable Soft SPI for NRF radio (note different radio wiring is required)
    // The W5100 ethernet module seems to have a hard time co-operate with 
    // radio on the same spi bus.
    #if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
      #define MY_SOFTSPI
      #define MY_SOFT_SPI_SCK_PIN 54
      #define MY_SOFT_SPI_MISO_PIN 56
      #define MY_SOFT_SPI_MOSI_PIN 55
    #endif  
    
    // When W5100 is connected we have to move CE/CSN pins for NRF radio
    #ifndef MY_RF24_CE_PIN 
      #define MY_RF24_CE_PIN 5
    #endif
    #ifndef MY_RF24_CS_PIN 
      #define MY_RF24_CS_PIN 6
    #endif
    
    // Enable these if your MQTT broker requires usenrame/password
    //#define MY_MQTT_USER "username"
    //#define MY_MQTT_PASSWORD "password"
    
    // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP)
    #define MY_IP_ADDRESS 192,168,1,76
    
    // If using static ip you need to define Gateway and Subnet address as well
    #define MY_IP_GATEWAY_ADDRESS 192,168,1,1
    #define MY_IP_SUBNET_ADDRESS 255,255,255,0
    
    // MQTT broker ip address or url. Define one or the other. 
    //#define MY_CONTROLLER_URL_ADDRESS "m20.cloudmqtt.com"
    #define MY_CONTROLLER_IP_ADDRESS 192, 168, 1, 75
    
    // The MQTT broker port to to open 
    #define MY_PORT 1883     
    
     /*
    // Flash leds on rx/tx/err
    #define MY_LEDS_BLINKING_FEATURE
    // Set blinking period
    #define MY_DEFAULT_LED_BLINK_PERIOD 300
    
    // Enable inclusion mode
    #define MY_INCLUSION_MODE_FEATURE
    // Enable Inclusion mode button on gateway
    #define MY_INCLUSION_BUTTON_FEATURE
    // Set inclusion mode duration (in seconds)
    #define MY_INCLUSION_MODE_DURATION 60 
    // Digital pin used for inclusion mode button
    #define MY_INCLUSION_MODE_BUTTON_PIN  3 
    
    // Uncomment to override default HW configurations
    //#define MY_DEFAULT_ERR_LED_PIN 16  // Error led pin
    //#define MY_DEFAULT_RX_LED_PIN  16  // Receive led pin
    //#define MY_DEFAULT_TX_LED_PIN  16  // the PCB, on board LED
    */
    
    #include <Ethernet.h>
    #include <MySensors.h>
    
    void setup() { 
    }
    
    void presentation() {
      // Present locally attached sensors here    
    }
    
    
    void loop() {
      // Send locally attech sensors data here
    }
    
    

    And i have this trouble:

    0;255;3;0;9;Starting gateway (RNNGAS, 2.0.0)
    0;255;3;0;9;TSM:INIT
    0;255;3;0;9;TSM:RADIO:OK
    0;255;3;0;9;TSM:GW MODE
    0;255;3;0;9;TSM:READY
    IP: 192.168.1.76
    0;255;3;0;9;No registration required
    0;255;3;0;9;Init complete, id=0, parent=0, distance=0, registration=1
    IP: 192.168.1.76
    0;255;3;0;9;Attempting MQTT connection...
    IP: 192.168.1.76
    0;255;3;0;9;Attempting MQTT connection...
    IP: 192.168.1.76
    0;255;3;0;9;Attempting MQTT connection...
    0;255;3;0;9;TSP:SANCHK:OK
    IP: 192.168.1.76
    0;255;3;0;9;Attempting MQTT connection...
    IP: 192.168.1.76
    0;255;3;0;9;Attempting MQTT connection...
    IP: 192.168.1.76
    0;255;3;0;9;Attempting MQTT connection...
    IP: 192.168.1.76
    0;255;3;0;9;Attempting MQTT connection...
    

    I try to use mosquitto_sub and pub + mqtt-spy, and mqtt broker is work.
    I replase mega -> uno, one ethernet shield to another, nothing change.
    ping between client and brocker is ok.

    I don't know what else to do, can anybody help me?

    Y 1 Reply Last reply
    0
    • M Offline
      M Offline
      Martin Tellblom
      wrote on last edited by Martin Tellblom
      #2

      Can you connect to the MQTT server using MQTT-SPY?

      MySensors MQTT Client Gateway, Openhab, Dashing, Razberry, 1-wire

      pinkkoffP 1 Reply Last reply
      0
      • M Martin Tellblom

        Can you connect to the MQTT server using MQTT-SPY?

        pinkkoffP Offline
        pinkkoffP Offline
        pinkkoff
        wrote on last edited by
        #3

        @Martin-Tellblom Yes, it work normally, how it seems to me.

        1 Reply Last reply
        0
        • pinkkoffP pinkkoff

          Hi all!
          I am not native english speaker, sorry for my text.
          I have:

          • arduino mega
          • ethernet shield
          • mosquitto on linux (192.168.1.75:1883)
          • mysensors 2.0
          • arduino ide 1.6.12
          • MQTT gateway

          Code of MQTT Gateway:

          /**
           * The MySensors Arduino library handles the wireless radio link and protocol
           * between your home built sensors/actuators and HA controller of choice.
           * The sensors forms a self healing radio network with optional repeaters. Each
           * repeater and gateway builds a routing tables in EEPROM which keeps track of the
           * network topology allowing messages to be routed to nodes.
           *
           * Created by Henrik Ekblad <henrik.ekblad@mysensors.org>
           * Copyright (C) 2013-2015 Sensnology AB
           * Full contributor list: https://github.com/mysensors/Arduino/graphs/contributors
           *
           * Documentation: http://www.mysensors.org
           * Support Forum: http://forum.mysensors.org
           *
           * This program is free software; you can redistribute it and/or
           * modify it under the terms of the GNU General Public License
           * version 2 as published by the Free Software Foundation.
           *
           *******************************
           *
           * REVISION HISTORY
           * Version 1.0 - Henrik Ekblad
           * 
           * DESCRIPTION
           * The W5100 MQTT gateway sends radio network (or locally attached sensors) data to your MQTT broker.
           * The node also listens to MY_MQTT_TOPIC_PREFIX and sends out those messages to the radio network
           *
           * LED purposes:
           * - To use the feature, uncomment WITH_LEDS_BLINKING in MyConfig.h
           * - RX (green) - blink fast on radio message recieved. In inclusion mode will blink fast only on presentation recieved
           * - TX (yellow) - blink fast on radio message transmitted. In inclusion mode will blink slowly
           * - ERR (red) - fast blink on error during transmission error or recieve crc error  
           * 
           * See http://www.mysensors.org/build/esp8266_gateway for wiring instructions.
           * nRF24L01+  ESP8266
           * VCC        VCC
           * CE         GPIO4          
           * CSN/CS     GPIO15
           * SCK        GPIO14
           * MISO       GPIO12
           * MOSI       GPIO13
           *            
           * Not all ESP8266 modules have all pins available on their external interface.
           * This code has been tested on an ESP-12 module.
           * The ESP8266 requires a certain pin configuration to download code, and another one to run code:
           * - Connect REST (reset) via 10K pullup resistor to VCC, and via switch to GND ('reset switch')
           * - Connect GPIO15 via 10K pulldown resistor to GND
           * - Connect CH_PD via 10K resistor to VCC
           * - Connect GPIO2 via 10K resistor to VCC
           * - Connect GPIO0 via 10K resistor to VCC, and via switch to GND ('bootload switch')
           * 
            * Inclusion mode button:
           * - Connect GPIO5 via switch to GND ('inclusion switch')
           * 
           * Hardware SHA204 signing is currently not supported!
           *
           * Make sure to fill in your ssid and WiFi password below for ssid & pass.
           */
          
          #include <SPI.h>
          
          // Enable debug prints to serial monitor
          #define MY_DEBUG 
          
          // Enables and select radio type (if attached)
          #define MY_RADIO_NRF24
          //#define MY_RADIO_RFM69
          
          #define MY_GATEWAY_MQTT_CLIENT
          
          // Set this nodes subscripe and publish topic prefix
          #define MY_MQTT_PUBLISH_TOPIC_PREFIX "ms_mqtt_gw-out"
          #define MY_MQTT_SUBSCRIBE_TOPIC_PREFIX "ms_mqtt_gw-in"
          
          // Set MQTT client id
          #define MY_MQTT_CLIENT_ID "mqtt_gw_1"
          
          // Security Signing
          #define MY_SIGNING_SOFT //!< Software signing
          //#define MY_SIGNING_ATSHA204 //!< Hardware signing using ATSHA204A
          // Enable node whitelisting
          //#define MY_SIGNING_NODE_WHITELISTING {{.nodeId = GATEWAY_ADDRESS,.serial = {0x09,0x08,0x07,0x06,0x05,0x04,0x03,0x02,0x01}}}
          // Enable this if you want destination node to sign all messages sent to this node.
          //#define MY_SIGNING_REQUEST_SIGNATURES
          
          // W5100 Ethernet module SPI enable (optional if using a shield/module that manages SPI_EN signal)
          //#define MY_W5100_SPI_EN 4  
          
          // Enable Soft SPI for NRF radio (note different radio wiring is required)
          // The W5100 ethernet module seems to have a hard time co-operate with 
          // radio on the same spi bus.
          #if !defined(MY_W5100_SPI_EN) && !defined(ARDUINO_ARCH_SAMD)
            #define MY_SOFTSPI
            #define MY_SOFT_SPI_SCK_PIN 54
            #define MY_SOFT_SPI_MISO_PIN 56
            #define MY_SOFT_SPI_MOSI_PIN 55
          #endif  
          
          // When W5100 is connected we have to move CE/CSN pins for NRF radio
          #ifndef MY_RF24_CE_PIN 
            #define MY_RF24_CE_PIN 5
          #endif
          #ifndef MY_RF24_CS_PIN 
            #define MY_RF24_CS_PIN 6
          #endif
          
          // Enable these if your MQTT broker requires usenrame/password
          //#define MY_MQTT_USER "username"
          //#define MY_MQTT_PASSWORD "password"
          
          // Enable MY_IP_ADDRESS here if you want a static ip address (no DHCP)
          #define MY_IP_ADDRESS 192,168,1,76
          
          // If using static ip you need to define Gateway and Subnet address as well
          #define MY_IP_GATEWAY_ADDRESS 192,168,1,1
          #define MY_IP_SUBNET_ADDRESS 255,255,255,0
          
          // MQTT broker ip address or url. Define one or the other. 
          //#define MY_CONTROLLER_URL_ADDRESS "m20.cloudmqtt.com"
          #define MY_CONTROLLER_IP_ADDRESS 192, 168, 1, 75
          
          // The MQTT broker port to to open 
          #define MY_PORT 1883     
          
           /*
          // Flash leds on rx/tx/err
          #define MY_LEDS_BLINKING_FEATURE
          // Set blinking period
          #define MY_DEFAULT_LED_BLINK_PERIOD 300
          
          // Enable inclusion mode
          #define MY_INCLUSION_MODE_FEATURE
          // Enable Inclusion mode button on gateway
          #define MY_INCLUSION_BUTTON_FEATURE
          // Set inclusion mode duration (in seconds)
          #define MY_INCLUSION_MODE_DURATION 60 
          // Digital pin used for inclusion mode button
          #define MY_INCLUSION_MODE_BUTTON_PIN  3 
          
          // Uncomment to override default HW configurations
          //#define MY_DEFAULT_ERR_LED_PIN 16  // Error led pin
          //#define MY_DEFAULT_RX_LED_PIN  16  // Receive led pin
          //#define MY_DEFAULT_TX_LED_PIN  16  // the PCB, on board LED
          */
          
          #include <Ethernet.h>
          #include <MySensors.h>
          
          void setup() { 
          }
          
          void presentation() {
            // Present locally attached sensors here    
          }
          
          
          void loop() {
            // Send locally attech sensors data here
          }
          
          

          And i have this trouble:

          0;255;3;0;9;Starting gateway (RNNGAS, 2.0.0)
          0;255;3;0;9;TSM:INIT
          0;255;3;0;9;TSM:RADIO:OK
          0;255;3;0;9;TSM:GW MODE
          0;255;3;0;9;TSM:READY
          IP: 192.168.1.76
          0;255;3;0;9;No registration required
          0;255;3;0;9;Init complete, id=0, parent=0, distance=0, registration=1
          IP: 192.168.1.76
          0;255;3;0;9;Attempting MQTT connection...
          IP: 192.168.1.76
          0;255;3;0;9;Attempting MQTT connection...
          IP: 192.168.1.76
          0;255;3;0;9;Attempting MQTT connection...
          0;255;3;0;9;TSP:SANCHK:OK
          IP: 192.168.1.76
          0;255;3;0;9;Attempting MQTT connection...
          IP: 192.168.1.76
          0;255;3;0;9;Attempting MQTT connection...
          IP: 192.168.1.76
          0;255;3;0;9;Attempting MQTT connection...
          IP: 192.168.1.76
          0;255;3;0;9;Attempting MQTT connection...
          

          I try to use mosquitto_sub and pub + mqtt-spy, and mqtt broker is work.
          I replase mega -> uno, one ethernet shield to another, nothing change.
          ping between client and brocker is ok.

          I don't know what else to do, can anybody help me?

          Y Offline
          Y Offline
          Yveaux
          Mod
          wrote on last edited by
          #4

          @pinkkoff what version of mosquitto are you running?

          http://yveaux.blogspot.nl

          pinkkoffP 1 Reply Last reply
          0
          • Y Yveaux

            @pinkkoff what version of mosquitto are you running?

            pinkkoffP Offline
            pinkkoffP Offline
            pinkkoff
            wrote on last edited by
            #5

            @Yveaux
            mosquitto is an MQTT v3.1 broker.
            Version: 0.15-2ubuntu1

            Run on Odroid C1+ with ubuntu 14.04

            Y 1 Reply Last reply
            0
            • pinkkoffP pinkkoff

              @Yveaux
              mosquitto is an MQTT v3.1 broker.
              Version: 0.15-2ubuntu1

              Run on Odroid C1+ with ubuntu 14.04

              Y Offline
              Y Offline
              Yveaux
              Mod
              wrote on last edited by
              #6

              @pinkkoff iirr the mqtt implementation in mysensors is 3.1.1
              Try upgrading your mosquitto version

              http://yveaux.blogspot.nl

              pinkkoffP 1 Reply Last reply
              1
              • Y Yveaux

                @pinkkoff iirr the mqtt implementation in mysensors is 3.1.1
                Try upgrading your mosquitto version

                pinkkoffP Offline
                pinkkoffP Offline
                pinkkoff
                wrote on last edited by
                #7

                @Yveaux Thank you!!! It working!
                Problem is in version of mosquitto in ubuntu repository. If someone want to use mqtt, better way is follow step-by-step guide

                B 1 Reply Last reply
                0
                • pinkkoffP pinkkoff

                  @Yveaux Thank you!!! It working!
                  Problem is in version of mosquitto in ubuntu repository. If someone want to use mqtt, better way is follow step-by-step guide

                  B Offline
                  B Offline
                  blacey
                  Admin
                  wrote on last edited by
                  #8

                  @pinkkoff

                  FYI, I've had better luck using the mosquitto ppa. Tested on RPI2 and RPI3 running Ubuntu.

                  1 Reply Last reply
                  0
                  • ikkeTI Offline
                    ikkeTI Offline
                    ikkeT
                    wrote on last edited by ikkeT
                    #9

                    I'm also trying mqtt. somehow I can't see the messages:

                    MySensors $ ./configure --my-gateway=mqtt --my-controller-ip-address=192,168,1,32 --my-port=1883 --my-mqtt-client-id=22 --my-mqtt-publish-topic-prefix=mysensors-from --my-mqtt-subscribe-topic-prefix=mysensors-to --my-rf24-pa-level=RF24_PA_LOW 
                    MySensors $ sudo make install
                    ...
                    MySensors $ sudo mysGateway -d
                    ...
                    mysGateway: Attempting MQTT connection...
                    mysGateway: connected to 192.168.1.32
                    mysGateway: TSF:MSG:READ,8-8-0,s=255,c=3,t=15,pt=6,l=2,sg=0:0100
                    mysGateway: !TSF:MSG:SEND,0-0-8-8,s=255,c=3,t=15,pt=6,l=2,sg=0,ft=0,st=NACK:0100
                    mysGateway: TSF:MSG:READ,8-8-0,s=255,c=0,t=17,pt=0,l=10,sg=0:2.0.1-beta
                    mysGateway: TSF:MSG:READ,8-8-0,s=255,c=3,t=6,pt=1,l=1,sg=0:0
                    mysGateway: Attempting MQTT connection...
                    mysGateway: connected to 192.168.1.32
                    ...
                    

                    So GW attempts to send some stuff to mqtt server elsewhere, like that version string. But this on the server prints nothing:

                    $ mosquitto_sub -t mysensors-from/*

                    I also tried with # instead of *

                    I've verified mqtt works, if I pub that from mqtt client, it works.

                    1 Reply Last reply
                    0
                    • ikkeTI Offline
                      ikkeTI Offline
                      ikkeT
                      wrote on last edited by ikkeT
                      #10

                      so this works:

                      MySensors $ mosquitto_pub -h 192.168.1.32 -t mysensors-from/0/1 -m "MySensors MQTT hello world from raspi to odroid"

                      mqtt-host $ mosquitto_sub -t mysensors-from/#
                      MySensors MQTT hello world from raspi to odroid

                      1 Reply Last reply
                      0
                      • ikkeTI Offline
                        ikkeTI Offline
                        ikkeT
                        wrote on last edited by ikkeT
                        #11

                        My mosquitto is mosquitto 3.1 - 0.15-2ubuntu1 (from ppa) and mysensors is up to date devel branch from github.

                        1 Reply Last reply
                        0
                        • ikkeTI Offline
                          ikkeTI Offline
                          ikkeT
                          wrote on last edited by
                          #12

                          after upgrading to above mentioned 3.1.1 version from wheezy, the mysensors start to print out it sends stuff. can't see it on subs yet though.

                          1 Reply Last reply
                          0
                          • ikkeTI Offline
                            ikkeTI Offline
                            ikkeT
                            wrote on last edited by
                            #13

                            nevermind. now after all upgrades AND BATTERY CHANGE to sensebender it's all fine :)

                            1 Reply Last reply
                            0

                            Hello! It looks like you're interested in this conversation, but you don't have an account yet.

                            Getting fed up of having to scroll through the same posts each visit? When you register for an account, you'll always come back to exactly where you were before, and choose to be notified of new replies (either via email, or push notification). You'll also be able to save bookmarks and upvote posts to show your appreciation to other community members.

                            With your input, this post could be even better 💗

                            Register Login
                            Reply
                            • Reply as topic
                            Log in to reply
                            • Oldest to Newest
                            • Newest to Oldest
                            • Most Votes


                            18

                            Online

                            12.0k

                            Users

                            11.2k

                            Topics

                            113.4k

                            Posts


                            Copyright 2025 TBD   |   Forum Guidelines   |   Privacy Policy   |   Terms of Service
                            • Login

                            • Don't have an account? Register

                            • Login or register to search.
                            • First post
                              Last post
                            0
                            • MySensors
                            • OpenHardware.io
                            • Categories
                            • Recent
                            • Tags
                            • Popular