From bc05f1d688ad6600952dffe3b47fd3a8b060f781 Mon Sep 17 00:00:00 2001 From: Christian Ehlers Date: Wed, 12 Feb 2020 18:33:15 +0100 Subject: [PATCH 1/6] Update downgrade links to include Pybytes firmware (#229) * Update downgrade.md Add links to Pybytes specific firmware --- content/advance/downgrade.md | 13 ++++++++++++- 1 file changed, 12 insertions(+), 1 deletion(-) diff --git a/content/advance/downgrade.md b/content/advance/downgrade.md index aac60070..9d133e8c 100644 --- a/content/advance/downgrade.md +++ b/content/advance/downgrade.md @@ -13,7 +13,18 @@ The firmware upgrade tool usually updates your device to the latest available fi If you are using an Expansion Board 1.0 or 2.0, you will need to have a jumper connected between `G23` and `GND` to use either procedure below. You will also need to press the reset button before beginning. {{% /hint %}} -You can obtain previous firmware versions here: +Here you can download Pycom firmware: + +### Current and previous Pybytes firmware + +* [WiPy](https://software.pycom.io/downloads/pybytes/WiPy.html) +* [LoPy](https://software.pycom.io/downloads/pybytes/LoPy.html) +* [SiPy](https://software.pycom.io/downloads/pybytes/SiPy.html) +* [GPy](https://software.pycom.io/downloads/pybytes/GPy.html) +* [FiPy](https://software.pycom.io/downloads/pybytes/FiPy.html) +* [LoPy4](https://software.pycom.io/downloads/pybytes/LoPy4.html) + +### Legacy and previous development firmware * [WiPy](https://software.pycom.io/downloads/WiPy.html) * [LoPy](https://software.pycom.io/downloads/LoPy.html) From d311f456be88120301ce47df327cb38f849d0cf9 Mon Sep 17 00:00:00 2001 From: doniks Date: Thu, 20 Feb 2020 18:07:42 +0100 Subject: [PATCH 2/6] Small clarifications --- content/pybytes/networks/sigfox/_index.md | 10 ++++++---- 1 file changed, 6 insertions(+), 4 deletions(-) diff --git a/content/pybytes/networks/sigfox/_index.md b/content/pybytes/networks/sigfox/_index.md index 2a394d64..76262d69 100644 --- a/content/pybytes/networks/sigfox/_index.md +++ b/content/pybytes/networks/sigfox/_index.md @@ -9,24 +9,26 @@ Before you start you need to create Sigfox account. You need Pycom device with S ## Create Sigfox API credentials -Once you have you account setup and are logged in Sigfox backend, you need to create API credentials for Pybytes. +Once you have your account set up and are logged into [Sigfox backend](https://backend.sigfox.com), you need to create API credentials for Pybytes. Click on GROUP → <your\_company\_name> → API ACCESS → New ![](/gitbook/assets/pybytes/sigfox/apiaccess.png) -In the form chose arbitrary _name_, select `LIMITED_ADMIN` and Profile and click on Ok. +In the form chose a _Name_, e.g., _pybytes_. Then select the _Profile_ `LIMITED_ADMIN` and click on Ok. ![](/gitbook/assets/pybytes/sigfox/apiaccessscope.png) -Copy _Login_ and _Password_ to the clipboard. +From here you copy _Login_ and _Password_ ![](/gitbook/assets/pybytes/sigfox/apiaccesskeys.png) -In Pybytes go to Settings → Sigfox API or [follow this link](https://pybytes.pycom.io/settings/sigfox-credentials) then paste in the form. +and paste them in Pybytes Settings → [Sigfox API](https://pybytes.pycom.io/settings/sigfox-credentials). ![](/gitbook/assets/pybytes/sigfox/pybytessigfoxcredentials.png) +Now Pybytes will confirm that the Sigfox integration has been activated. + ## Sigfox contract types ### Sigfox DevKit contracts From d4d6075576e4b10b60a8cdb45fda3f1b56f9d532 Mon Sep 17 00:00:00 2001 From: jirikrepl Date: Wed, 26 Feb 2020 19:10:14 +0100 Subject: [PATCH 3/6] fix: bullet list on Azure page --- content/pybytes/integrations/azure.md | 20 +++++++++++--------- 1 file changed, 11 insertions(+), 9 deletions(-) diff --git a/content/pybytes/integrations/azure.md b/content/pybytes/integrations/azure.md index ecf9eaf9..14892f62 100644 --- a/content/pybytes/integrations/azure.md +++ b/content/pybytes/integrations/azure.md @@ -10,11 +10,12 @@ Whenever one of your integrated devices sends a signal to our broker, we republi ## Integrate your devices The first step requires you to create an [IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/). This is an Azure service that enables you to gather high volumes of telemetry data from your IoT devices. It then moves them into the cloud for storage or processing. In order to do that, [follow the offical documentation](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-create-through-portal). To summarise you'll need to: - - specify your [subscription plan](https://account.azure.com/subscriptions/) - - create or choose a [resource group](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-portal). This contains resources that share the same lifecycle, permissions and policies. The name can contain alphanumeric characters, periods, underscores, hyphens and parenthesis. It cannot end in a period. - - choose a [region](https://azure.microsoft.com/en-us/global-infrastructure/regions/) - - choose an IoT Hub name (its length must be between 3 and 50, and it can use only alphanumeric characters and hyphens). It won't be possible to change this name later. - - [specify tier scaling and units](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-scaling) + +* specify your [subscription plan](https://account.azure.com/subscriptions/) +* create or choose a [resource group](https://docs.microsoft.com/en-us/azure/azure-resource-manager/resource-group-portal). This contains resources that share the same lifecycle, permissions and policies. The name can contain alphanumeric characters, periods, underscores, hyphens and parenthesis. It cannot end in a period. +* choose a [region](https://azure.microsoft.com/en-us/global-infrastructure/regions/) +* choose an IoT Hub name (its length must be between 3 and 50, and it can use only alphanumeric characters and hyphens). It won't be possible to change this name later. +* [specify tier scaling and units](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-scaling) ![IoT Hub creation](/gitbook/assets/01_azure_integration.png) @@ -53,9 +54,10 @@ More information on the testing device's connectivity could be found [here](http ## Final considerations In order to see the data sent to Azure, you could do different things, depending on the scope of your work. Please refer to these official examples: -- [Visualize real-time sensor data from Azure IoT Hub using Power BI](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-live-data-visualization-in-power-bi) -- [Visualize real-time sensor data from your Azure IoT hub by using the Web Apps feature of Azure App Service](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-live-data-visualization-in-web-apps) -- [Read the telemetry from the hub with a back-end application (Node.js)](https://docs.microsoft.com/en-us/azure/iot-hub/quickstart-send-telemetry-node) -- [Configure message routing with IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/tutorial-routing) + +* [Visualize real-time sensor data from Azure IoT Hub using Power BI](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-live-data-visualization-in-power-bi) +* [Visualize real-time sensor data from your Azure IoT hub by using the Web Apps feature of Azure App Service](https://docs.microsoft.com/en-us/azure/iot-hub/iot-hub-live-data-visualization-in-web-apps) +* [Read the telemetry from the hub with a back-end application (Node.js)](https://docs.microsoft.com/en-us/azure/iot-hub/quickstart-send-telemetry-node) +* [Configure message routing with IoT Hub](https://docs.microsoft.com/en-us/azure/iot-hub/tutorial-routing) **Warning**: do not delete Azure devices directly from Azure user interface, otherwise the integration with Pybytes will stop working. Always use Pybytes interface to delete Azure devices. From e8a3fbdcc134f8667fe0446376f6502736a373a3 Mon Sep 17 00:00:00 2001 From: jirikrepl Date: Wed, 26 Feb 2020 19:19:55 +0100 Subject: [PATCH 4/6] feat: Azure - added screenshot how to copy connection string --- content/pybytes/integrations/azure.md | 4 +++- .../azure/azure-connection-string.png | Bin 0 -> 32349 bytes 2 files changed, 3 insertions(+), 1 deletion(-) create mode 100644 static/gitbook/assets/pybytes/integrations/azure/azure-connection-string.png diff --git a/content/pybytes/integrations/azure.md b/content/pybytes/integrations/azure.md index 14892f62..c3be5207 100644 --- a/content/pybytes/integrations/azure.md +++ b/content/pybytes/integrations/azure.md @@ -19,7 +19,9 @@ The first step requires you to create an [IoT Hub](https://docs.microsoft.com/en ![IoT Hub creation](/gitbook/assets/01_azure_integration.png) -Now copy and paste the connection string with the privilege to write into the registry by clicking on the relative button +Now copy and paste the connection string with the privilege to write into the registry. + +![copy-azure-connection-string](/gitbook/assets/pybytes/integrations/azure/azure-connection-string.png) Go to Pybytes and click on *Integrations* > *New Integration* and choose *Microsoft Azure*. diff --git a/static/gitbook/assets/pybytes/integrations/azure/azure-connection-string.png b/static/gitbook/assets/pybytes/integrations/azure/azure-connection-string.png new file mode 100644 index 0000000000000000000000000000000000000000..0c6190892e366a8b595d5a69d01143882f4f130c GIT binary patch literal 32349 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 Date: Thu, 5 Mar 2020 14:30:25 +0100 Subject: [PATCH 5/6] refactor: updated pycom favicon.ico (using new pycom logo) --- themes/doc-theme/static/favicon.ico | Bin 7406 -> 4286 bytes 1 file changed, 0 insertions(+), 0 deletions(-) diff --git a/themes/doc-theme/static/favicon.ico b/themes/doc-theme/static/favicon.ico index 54ff25bf045ab7b54430391959d5ea0d3ce5b3db..06d18fc5ce7cc53cedc7a0aa3fa5e04282ee012b 100644 GIT binary patch literal 4286 zcmc(jO-ma=7=WkLAJ9_;<3~gxlAOE<#xzkVdTBk0^fxq~yo#hAgb+h1y_DL6AN1fs z(wiEvl8uCZh!_Mt1tl#dLV|}VCfg9+&bwj5beWx6 zFTpL@c|yojLdXaWnj(`lFs~Kb_Bq^&R)UaxK2H=y=_-{rs-dhHvH z2Ai_1*B&0A*=$<&Gj>2W-e+vNI6H&$lM^;&S^u8NK(SD;>}Twt-{Wll+tCrME-u1f zRb|t{`tIf?tS1t}KDNwY3G~9uIs}8hytHU?^jl|`Tu2m8^T_%u>Z4x0eBUO!0+p8Z6Dn5__yUU9H-Nu?C%RBv$qF@ z%S&ynKgFW3uRd1x-~h@uH~;aC@89i42P(*Rd;Q_|`pfP0r`zlAH~9B}O9k2g04TUF AK>z>% literal 7406 zcmeHLcT7`z6#fuJKxI@cPUMPW9Y7hS$SMd3wjfnTMPAELp9qLE8l%w|SE6ymM2&I9 z#2uqX6Qd^XJ^pYc?wA<2(YW_|zw>MFD8-jY-b>V%o}}C}zH@tfZs|SW2YA2}S}oYo z8=L)rcmScHj@TQx&2j+&_PDAUFeez$Fbr!!IeSqbHy`_f|Mjr@J9q9xVqzjbe*B0h zPo7}r%$c}(^Cr%pKaT?k4q*HC?a0o~MnXaY-oJm3#ful?(W6J0F=GaJ^yw3ll9DiM)-2q*bqf}Y1vxo6`0(Ka9zTAJ8#iv?+_`gDvt|wSdOa2`T7-uW zAL7iJGpMYr#Hv-R@aD}M=yW>VzkeU2M~}v-Q>Rc~UXCqWw&2yPSBQ;`#r*m6F?H%x zoH%g;`T6-sOH0G|@81y}9gP<+Uf|B1J2-ai81nM+@b&9gq^71~*|KGbii*PAxpQ&h z!UY^Tas(!m373xH8|rr56KMPd*#DE;e!~ew4t2U{eWX+9 z8jPxP%K3M33SEOPiCM~ILEBVi=<1s)+bEO%y5`Ez)i+h^(iPdP%Gg$l(A70nYWwKr zbZBp_Q4z`o(KA)r!gIyIYE5mg{iBy0x_YKcjcriAoKMr*@(SvRlDBsL&HP{;p0 zUa)A${!EMP!SR~vb`3W;&QIrLW~;NdEzn za{g?C9WQ7~S~Sq$f=>@(H-OCIq4-)!oi2FKu8t2NXjJ7AOmbZC`GxiYv3JlkZ6e`B z#|2*#AmJ^w9YvUQbirHuNO(b$GEf3K99R4R882uC*VJop#%t@?+UJ-LpV6@7`uMKu z{;~-ptkxm5a_nmk^mJ~>%uOCCTXH|EwX8ypM~;k1aK^i%|K|i6zcINx{>upvPYq?S zH1?8sYEu@7=HRJ^4jsa}b?Z1coiJen=cmJm5107q+O=z)_$hHy;-yL+`ryF>OrJho z;-jZepXS_?IH<@!Po6x9va&KK{#jdFD{;?_8#i+9xqSI@iGNO>JQ>y1)trNh{4*sb z1xuGM<@_@;G7`6M-{#!YXf!%;PvV_BcI=S2=lJpCIqw`cY#83Xd&jva@y=`4u3_xh zu_!1gKxSs9#61@*Sit$`l`B^y&UyFlUD#|k?Af!2b514SymaZ3#5F~ZspOZ$Ek}$P zAx__YbWh-ym;lpGet(Pg5kG@Ztmr9^hMt9vuw@TrUi7nDwRX7L&L%ObI2vM9j`K$L zEiO?M9Il~P?@+tz(=3jD8tR#$AY9X*=L)+=<+i9-&CfR!grs`ev;E9QU-4ok9IJ=K z2lCJ(#MrUDRB$+~t~N%5QIwaZHn$p555Viq^*t=nIc?(9YIRo*l|fWjtNl__)t;?0 zjA~;>Q@KW-z0M%!^tJ;S)T|lk1d!`N-Ez$gm*xGVdP)%0jR}L407ZX^j_PW2P_P1^ zs26tPb+uoYhU;NoM(S6G^h%QffrG=D{>dz=U6>`y?iP9aOMoGXxgEF(0bxx_?QVzU zB&i;j!X6FWeDVwZMZb?!|BaoW{Ubzs3X|CRt|ILzj@^V`o5MeN@F3qGNdF~Wn>1(A zZAmYtonXU;4SZ*z-GKCC(tJr{-n3~G-$Ce^OjzXWt(8`@1LbOH4r3 zXls$oTAFC2K7Ze6l`5iZTQQ+-50$E;w!0YXT5ID~p*@o#90^^!Ft0wbK>;bv> zKCoNUl;CbXq}VgqqZND68>v*R?it)AF3>ZiQ%j1~F~Rz%4hhZm!M!_E+@ejmUwEY8 Q Date: Mon, 16 Mar 2020 15:09:23 +0100 Subject: [PATCH 6/6] Sigfox: print received message --- content/firmwareapi/pycom/network/sigfox.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/content/firmwareapi/pycom/network/sigfox.md b/content/firmwareapi/pycom/network/sigfox.md index a89955d1..2094f5dc 100644 --- a/content/firmwareapi/pycom/network/sigfox.md +++ b/content/firmwareapi/pycom/network/sigfox.md @@ -252,7 +252,8 @@ s.setsockopt(socket.SOL_SIGFOX, socket.SO_RX, True) s.send(bytes([1, 2, 3])) # await DOWNLINK message -s.recv(32) +r = s.recv(32) +print(ubinascii.hexlify(r)) ``` ## Sigfox FSK (Device to Device)