MQTT Client Gateway / Node Controller / OTA
-
Did you try to swap the mega for an arduino uno? Or swap the w5100 shield? Just to see if there is any difference, so we can exclude any hw issues
@gohan - The only thing that be causing this is software as the 1.6 branch works perfectly on this setup with the same sketch but back when it was 1.6 development.
So, if i'm thinking correctly, even if there is a issue between software and hardware, it should be fixable through software, hope this makes sense to anyone other than myself. I don't have an UNO, the only other thing i have is a nano. I'm currently using a W5100 shield, not module, but i do have some modules here, but they were a pain to get working before and hence why i made the switch to the shield.
EDIT: I can confirm that the shield is working properly as i have ran a http test sketch and i'm able to communicate from my web browser to the arduino. So it must be a software issue.
-
Update: I have tried MySensors versions V2.0, V2.1.1 and even the development branch. From what I can work out, V1.6 when it was a development branch got released as V2.0. But that isn't working either, not sure what state it was in before I changed to V2.1.1 as i never monitored the gateway before i reinstalled the new version.
Either way, none are working, they're all giving me the same result. Therefor i'm attempting to find an issue else where on the network other than MySensors. I'm going to try a new MQTT broker, on a different machine. If this gives the same result then its time to troubleshoot my network. Then if that doesn't show anything i think its safe to revert back to looking through my Gateway software.
-
I can confirm that the issues is not MySensors, I've just created a virtual machine running Ubuntu and installed Mosquitto there. Connected the gateway and perfect functionality. Everything is working as intended with a nice silent serial output until a message is sent to the gateway.
-
I suppose this is on your own LAN, so there are no firewalls or anything that could block the MQTT traffic? Can you see anything in the mosquitto log?
@maghac - It is on the LAN, no firewalls that are stopping it unless they're on the ubuntu box themselves but i had a quick look at that at the start of my issues and the two ports were open for MQTT. So unless something is up with the allowance settings, then its not that. I'm about to find the location of the MQTT logs to check that now. I'm connected to the MQTT server with MQTT.fx and the log is filling with commands, can't see anything obvious right now. Will check the logs on the machine to see any issues recorded.
Would you expect to see anything in any of the logs specifically or just check them all? Do you happen to know where they're located?
-
UPDATE: The issue has been resolved.
I have no clue why it has only just became and issue because my OpenHAB hasn't been upgraded or modified since day one. But the issue was that the OpenHAB install was attempting to join the MQTT broker (on the same system) with the same ID as the MySensors Gateway. Once i changed my config of OpenHAB MQTT connection, its all working perfect now.
Please, if you see anyone having this issue, point them to this message. I may add it to the controller section or ask a MOD/ADMIN to add it to the OpenHAB controller page if they feel its something that maybe worth pointing out.
Thank you all for your continued help with this. Now, time to get back to the issue at heart. I will be testing the use of MyController today without having to disconnect OpenHAB at all.
-
UPDATE: The issue has been resolved.
I have no clue why it has only just became and issue because my OpenHAB hasn't been upgraded or modified since day one. But the issue was that the OpenHAB install was attempting to join the MQTT broker (on the same system) with the same ID as the MySensors Gateway. Once i changed my config of OpenHAB MQTT connection, its all working perfect now.
Please, if you see anyone having this issue, point them to this message. I may add it to the controller section or ask a MOD/ADMIN to add it to the OpenHAB controller page if they feel its something that maybe worth pointing out.
Thank you all for your continued help with this. Now, time to get back to the issue at heart. I will be testing the use of MyController today without having to disconnect OpenHAB at all.
-
@Samuel235 great that you found the problem, and thanks for reporting back.
@mfalkvidd - In the process of monitoring the network now to check everything is still normal behaviour. I may be getting a random message published, keeping an eye on this. I would say if I do have an issue, it has nothing to do with software though :)
I'm looking into MyController as we speak just for the OTA updates alone then returning to normal controller.
-
Update: I've got a MQTT/persistence error on MyController, so i'm waiting on a software developer for them to advise me on a solution.
-
Update: I've got a MQTT/persistence error on MyController, so i'm waiting on a software developer for them to advise me on a solution.
@Samuel235 What is the error are you facing? Did you report anywhere?
-
@Samuel235 What is the error are you facing? Did you report anywhere?
-
Still applying configuration on my OpenHAB and MyController setup. At the moment, it looks like its a very possible pairing to work for our needs. But I'm not completely installed together yet. In theory, it is working. Just applying that now :)
- Got them both installed.
- Got OpenHAB2 configured.
- Need to change my MyController port.
- Need to sort out the bootloader issue i'm having with MyBootloader not going to sketch properly in boot-up.
-
Everything working except for the node is not automatically rebooting on new firmware command. Will update on manual reboot.
-
@Samuel235 Great news! How does your final setup look like - how did you configure MyController? And what is the steps to follow when publishing an OTA update to the nodes?
Maybe the reboot issue can be solved by manually sending a message to the node to reboot it? Assuming there is such a functionality in the protocol of course.
-
@Samuel235 Great news! How does your final setup look like - how did you configure MyController? And what is the steps to follow when publishing an OTA update to the nodes?
Maybe the reboot issue can be solved by manually sending a message to the node to reboot it? Assuming there is such a functionality in the protocol of course.
@maghac - I have been speaking to a couple of people, one of which is Jkandasa himself, to my understanding, using MYSBootloader does not enable us to issue a firmware update and then to automatically reboot itself. However, as you suggested, there is a reboot option in MyController. As far as I understand (I may be slightly wrong here, but i don't think i am) every time a MYSBootloader enabled node boots up, it asks MyController if there is a firmware update for it (is there a linked firmware to me that i do not have?) and if so, it goes ahead and downloads it.
I'm happy to confirm i have this all working now.
A vague outline of what we have to do:
- Install MyController.
- Edit the conf files (On linux its: <MYCONTROLLER INSTALL LOCATION>/conf/mycontroller.properties) to change the port that it uses from 8443 to anything you wish, i have set mine to 9443 and save the changes to that conf file.
issue the start command inside of the /bin folder and then use your browser to go to https://<IPOFMYCONTROLLERMACHINE>:<PORTNUMBER> then you should be greeted with the login page for your mycontroller install. - log in with admin and admin (change these).
- Navigate to the Settings>MQTT Broker page and disable the MQTT broker functionality.
- Navigate to Resources>Gateway and then click Add gateway. This is where you enter the MQTT settings to enable MyController to find your gateway and nodes.
- Give the gateway a name, then select the MySensors type and MQTT. Add your details here for the MQTT server.
- Once added, you can select your gateway and in the drop down menu (top right above the list of gateways) you can select discovery, this should automatically discover your nodes.
To send a new firmware to the node, follow the guide on MySensors to create the hex file. then follow the section related to firmware on the user guide of MyController. Once you have saved a new firmware, you then go into the nodes list and associate that node with the new firmware by editing the settings on that node and there should be a firmware box that your able to drop down and select an uploaded firmware. Then you can select the node and issue a reboot from the drop down at the top right of the list of nodes. The version control of the firmware files that you upload is really awesome! I must thank @jkandasa for that!
If you have any issues at all, please ask more questions here, i'm willing to help. I may even write a little more in-depth guide for others to use. That way we can always link people to this thread for the information to do such.
I have a few little bits of config left to do in terms of security of the server and then i'm all set.
-
Wow, I was actually able to get this to work now. Like you I also noticed that the nodes do not reboot automatically, but since you can execute a reboot from the MyController UI, it's not such a big problem. I also learnt that you need to use smartSleep() rather than sleep() in your sketch, otherwise the node won't process the incoming reboot request.
It also takes a while for the firmware to upload, but that's OK. Still saves a lot of time compared to manually uploading new sketches.
Next step is to try this on some "real" battery-operated nodes. Currently I'm only testing it on one test node which doesn't do anything except blink the LED.
-
Wow, I was actually able to get this to work now. Like you I also noticed that the nodes do not reboot automatically, but since you can execute a reboot from the MyController UI, it's not such a big problem. I also learnt that you need to use smartSleep() rather than sleep() in your sketch, otherwise the node won't process the incoming reboot request.
It also takes a while for the firmware to upload, but that's OK. Still saves a lot of time compared to manually uploading new sketches.
Next step is to try this on some "real" battery-operated nodes. Currently I'm only testing it on one test node which doesn't do anything except blink the LED.
@maghac - yeah, i read about that smartsleep() function. I'm really glad that you managed to get this to work dude! I don't care how long the firmware takes to upload, as long as i know its doing it, and i monitor my MQTT server broker for this. Its not about saving time for me, its about the fact i couldn't get to some nodes that are in the ceiling, so this just saves literally having to rip floors up or lights down. Its awesome!
I'm yet to install it on any nodes in practical uses yet. But my latest board is running it and soon as tests have finished, i will be sure to use it in full time production.
-
@maghac - I have been speaking to a couple of people, one of which is Jkandasa himself, to my understanding, using MYSBootloader does not enable us to issue a firmware update and then to automatically reboot itself. However, as you suggested, there is a reboot option in MyController. As far as I understand (I may be slightly wrong here, but i don't think i am) every time a MYSBootloader enabled node boots up, it asks MyController if there is a firmware update for it (is there a linked firmware to me that i do not have?) and if so, it goes ahead and downloads it.
I'm happy to confirm i have this all working now.
A vague outline of what we have to do:
- Install MyController.
- Edit the conf files (On linux its: <MYCONTROLLER INSTALL LOCATION>/conf/mycontroller.properties) to change the port that it uses from 8443 to anything you wish, i have set mine to 9443 and save the changes to that conf file.
issue the start command inside of the /bin folder and then use your browser to go to https://<IPOFMYCONTROLLERMACHINE>:<PORTNUMBER> then you should be greeted with the login page for your mycontroller install. - log in with admin and admin (change these).
- Navigate to the Settings>MQTT Broker page and disable the MQTT broker functionality.
- Navigate to Resources>Gateway and then click Add gateway. This is where you enter the MQTT settings to enable MyController to find your gateway and nodes.
- Give the gateway a name, then select the MySensors type and MQTT. Add your details here for the MQTT server.
- Once added, you can select your gateway and in the drop down menu (top right above the list of gateways) you can select discovery, this should automatically discover your nodes.
To send a new firmware to the node, follow the guide on MySensors to create the hex file. then follow the section related to firmware on the user guide of MyController. Once you have saved a new firmware, you then go into the nodes list and associate that node with the new firmware by editing the settings on that node and there should be a firmware box that your able to drop down and select an uploaded firmware. Then you can select the node and issue a reboot from the drop down at the top right of the list of nodes. The version control of the firmware files that you upload is really awesome! I must thank @jkandasa for that!
If you have any issues at all, please ask more questions here, i'm willing to help. I may even write a little more in-depth guide for others to use. That way we can always link people to this thread for the information to do such.
I have a few little bits of config left to do in terms of security of the server and then i'm all set.
@Samuel235 great stuff ! :P Worked like a charm :) one question, when using with dualoptiboot, how to check if firmware upload is done ? now I have to stop the gateway and run it in debug mode, then i can see all the messages. In MYSController there is log with all the messages, is there any such log in the MyController ?
-
@maghac - I have been speaking to a couple of people, one of which is Jkandasa himself, to my understanding, using MYSBootloader does not enable us to issue a firmware update and then to automatically reboot itself. However, as you suggested, there is a reboot option in MyController. As far as I understand (I may be slightly wrong here, but i don't think i am) every time a MYSBootloader enabled node boots up, it asks MyController if there is a firmware update for it (is there a linked firmware to me that i do not have?) and if so, it goes ahead and downloads it.
I'm happy to confirm i have this all working now.
A vague outline of what we have to do:
- Install MyController.
- Edit the conf files (On linux its: <MYCONTROLLER INSTALL LOCATION>/conf/mycontroller.properties) to change the port that it uses from 8443 to anything you wish, i have set mine to 9443 and save the changes to that conf file.
issue the start command inside of the /bin folder and then use your browser to go to https://<IPOFMYCONTROLLERMACHINE>:<PORTNUMBER> then you should be greeted with the login page for your mycontroller install. - log in with admin and admin (change these).
- Navigate to the Settings>MQTT Broker page and disable the MQTT broker functionality.
- Navigate to Resources>Gateway and then click Add gateway. This is where you enter the MQTT settings to enable MyController to find your gateway and nodes.
- Give the gateway a name, then select the MySensors type and MQTT. Add your details here for the MQTT server.
- Once added, you can select your gateway and in the drop down menu (top right above the list of gateways) you can select discovery, this should automatically discover your nodes.
To send a new firmware to the node, follow the guide on MySensors to create the hex file. then follow the section related to firmware on the user guide of MyController. Once you have saved a new firmware, you then go into the nodes list and associate that node with the new firmware by editing the settings on that node and there should be a firmware box that your able to drop down and select an uploaded firmware. Then you can select the node and issue a reboot from the drop down at the top right of the list of nodes. The version control of the firmware files that you upload is really awesome! I must thank @jkandasa for that!
If you have any issues at all, please ask more questions here, i'm willing to help. I may even write a little more in-depth guide for others to use. That way we can always link people to this thread for the information to do such.
I have a few little bits of config left to do in terms of security of the server and then i'm all set.
@Samuel235 thanks for listing your steps. I cannot get my laptop to link to mqtt on pi gateway. Do you have to have mycontroller on the pi? I have all working on laptop, can log in and disable inbuilt mqtt broker, just unable to connect to mosquitto on pi. I use tcp://(ip of pi):1883 Thankyou for any help!